코드와이
[CS 이론] 운영체제(3) 본문
동기식 입출력 & 비동기식 입출력
- 동기식 입출력
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현방법 1
- I/O 가 끝날 때까지 CPU 를 낭비시킴
- 매시점 하나의 I/O만 일어날 수 있음
- 구현 방법 2
- I/O 가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
- 다른 프로그램에게 CPU를 줌
- 비동기식 입출력
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
두 경우 모두 I/O 의 완료는 인터럽트로 알려줌
[간단 설명]
Synchronous : 실제 하드웨어를 통해 I/O 작업이 완료된 걸 확인한 후 다음 작업을 하는 것
- 구현방법 1 을 사용한다면 CPU 와 I/O 장치가 낭비된다.
- 구현방법 2 는 CPU 와 I/O 를 놀게 두지 않을 수 있다.
Asynchronous : 사용자 프로그램이 I/O 작업을 요청만 해놓고 바로 CPU 자원을 얻어 다음 작업을 하는 것
DMA
모든 작업을 CPU 에서 맡으면 크고 작은 Interrupt 로 너무 비효율적이 된다.
그래서 있는 것이 'DMA'!
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- CPU 의 중재 없이 device controller 가 device 의 buffer storage 의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴
저장장치 계층 구조
- Registers
- Cache Memory
- Main Memory
- Magnetic Disk
- Optical Disk
- Magnetic Tape
*Caching
- 당장 필요한 것만 밑에서 위로 올려서 사용한다. 재사용을 목적으로 빠른 매체를 통해 정보를 복사해 놓는다.
위로 갈수록 속도가 빠르고 Cost 가 비싸고 용량이 적고 Volatility(휘발성) 이다.
보통 1~3 이 휘발성 매체, 4~6 이 비휘발성 매체이다.
프로그램 실행(메모리 load)
file 형태로 하드 디스크에 저장되어 있고 그 파일을 실행하게 되면 메모리에 올라가서 process가 된다.
물리적인 메모리에 바로 들어가는 것이 아니라 virtual memory 로 들어가게 된다.
프로그램이 실행하게 되면 그 프로그램의 주소 공간이 생성이된다. 그 프로그램만의 독자적인 공간이 만들어지는 것이다. 각 프로그램마다 만들어지는 주소공간은 코드 데이터 스택이라는 구조이다.
지금 당장에 필요한 프로그램들만 가상 메모리에서 물리적인 메모리로 이동되어 사용된다.
Address transaction : 가상 메모리에 있는 주소가 물리적인 메모리로 이동하면서 바뀌는 것이다.
커널 주소 공간의 내용
- code
- 시스템콜, 인터럽트 처리 코드
- 자원 관리를 위한 코드
- 편리한 서비스 제공을 위한 코드
- data
- 운영체제가 사용하는 여러 자원들에 대한 정보(자료구조)
- PCB(Process Control Block) : 프로그램을 관리하기 위한 자료구조
- CPU
- mem
- disk
- stack
- 각 Process 의 커널 스택
프로그램의 실행
Program begin!!
<user mode> : A 의 주소공간
System call!!
<kernel mode> : kernel 의 주소공간
Return from kernel!!
<user mode> : A 의 주소공간
System call!!
<kernel mode> : kernel 의 주소공간
Program ends!!
'CS이론 > 운영체제' 카테고리의 다른 글
[CS 이론] 운영체제(2) (0) | 2021.07.15 |
---|---|
[CS 이론] 운영체제(1) (0) | 2021.07.14 |