http://www.kocw.net/home/search/kemView.do?kemId=1046323 의 강의를 정리한 글입니다.
동기식 입출력(synchronous I/O)
- I/O 요청 후 입출력 작업이 완료되어야 CPU의 제어가 사용자 프로그램으로 넘어간다.
비동기식 입출력(asynchronous I/O)
- I/O 작업이 시작된 후 입출력 작업의 완료를 기다리지 않고 CPU의 제어가 사용자 프로그램으로 넘어간다.
저장장치 계층 구조
- Primary Memory : CPU가 직접 접근이 가능하다.(➡️ 바이트 단위로 접근이 가능하다)
- Secondary Memory : CPU가 직접 접근이 불가능하다.
- 위로 갈수록 빠르지만 비싸다. 그렇기 때문에 용량이 작고 휘발성 메모리이다.
➡️ 작은 용량으로 인해 메모리에 모든 데이터를 올려놓고 사용하지 못한다.
그래서 지금 당장 사용하거나 사용빈도가 높은 것들만 먼저 캐시 메모리에 올려두고 사용한다.- 캐싱(Caching) : 데이터를 더 빠른 메모리로 올리는 것
- 휘발성이다 : 데이터를 디스크에 저장하지 않은 상태에서 전원이 꺼질 경우 모두 날아감... Secondary Memory는 비휘발성
프로그램의 실행
- 메모리 로드(Memory Load) - 프로그램이 어떻게 실행이 되는가 :
컴퓨터 프로그램은 실행파일의 형태로 디스크에 저장이 되어 있는데 그 실행파일을 실행하게 되면 가상 메모리를 거쳐
물리 메모리로 올라가서 프로세스가 된다. - 가상 메모리 단계 : 프로그램을 실행하면 해당 프로그램만의 주소 공간(Address Space)이 만들어진다.
- 주소 공간은 stack, data, code 영역으로 구분된다.
- code ─ CPU에서 실행할 기계어 코드를 담고 있는 영역이다.
- data ─ 전역 변수 등 프로그램이 사용하는 자료구조를 담고 있는 영역이다.
- stack ─ 함수를 호출하거나 리턴할때 사용하는 영역이다.
- 주소 공간은 stack, data, code 영역으로 구분된다.
- 주소공간의 메모리를 전부 물리적인 메모리에 올리는 것이 아니라, 당장 필요한 부분만을 메모리에 올린다.
(현재 A코드를 실행한다면, A코드를 실행할 때 필요한 함수 등만 메모리에 올린다.) - 특정 프로그램의 주소 공간은 해당 프로그램이 종료되면 물리적인 메모리상에서 지워진다.(단, 커널은 상주한다.)
- 당장 필요하지 않는 부분은 디스크의 Swap area에 보관해둔다.
- Swap area는 메모리의 연장선상에 위치하는 디스크 공간으로 메모리 용량을 보조하는 역할을 한다.(휘발성)
- Address transition은 하드웨어의 지원을 받아서 가상 메모리 상의 주소를 물리적인 메모리 상의 주소로 변환하는 것을 말한다.
- 커널 주소 공간의 내용
- 코드 : 아래와 같은 코드들이 존재한다.
- 시스템콜, 인터럽트 처리를 위한 코드
- 자원을 효율적으로 관리하기 위한 코드
- 사용자에게 편리한 서비스를 제공하기 위한 코드
- 데이터 : CPU, MEMORY, DISK등의 하드웨어를 관리하기 위해 운영체제가 사용하는 자료구조들과 프로세스를 관리하기 위한 PCB(Process Control Block)가 정의되어 있다.
- 스택 : 운영체제도 함수 구조로 코드가 작성되어 있기 때문에 스택이 존재한다. 단, 사용자 프로그램마다 커널 스택을 따로 둔다.
- 코드 : 아래와 같은 코드들이 존재한다.
함수
- 사용자 정의 함수 : 내가 프로그램에서 정의한 함수
- 라이브러리 함수 : 누군가가 정의해 놓은 함수를 가져다 쓰는 함수
- 커널 함수 : 운영체제 프로그램의 함수로 커널함수의 호출 ➡️ 시스템 콜
- 사용자 정의함수와 라이브러리 함수는 컴파일 후 실행파일을 만들면 실행파일 안에 함수가 포함되어 있다.
(둘 다 사용자 프로그램의 코드영역 안에 있기 때문에 그냥 사용이 가능하다.) - 하지만 사용자 프로그램이 커널함수를 호출하는 경우에는 사용자 프로그램 안에 들어 있는 함수가 아니라 커널 코드에 있기 때문에 시스템 콜을 통해 CPU의 제어권을 넘겨준 후 호출이 가능하다.
- 사용자 정의함수와 라이브러리 함수는 컴파일 후 실행파일을 만들면 실행파일 안에 함수가 포함되어 있다.
'컴퓨터 구조와 운영체제' 카테고리의 다른 글
프로세스 관리 (0) | 2022.08.29 |
---|---|
쓰레드(Thread) (0) | 2022.08.22 |
프로세스 (0) | 2022.08.20 |
컴퓨터 시스템 구조(1) (0) | 2022.08.16 |
운영체제란 (0) | 2022.08.16 |