엔지니어가 되고 싶은 공돌이

28. I/O System(2) 본문

Computer Science/Operating System

28. I/O System(2)

Geca 2021. 5. 26. 15:50

14. 4 Device Characteristics - Polling vs Interrupt

- I/O요청이 처리되었다는 걸 CPU가 어떻게 알 수 있을까?

<Polled I/O>

- CPUpolls을 요청해서 주기적으로 I/O에게 물어본다.

- 장점: 구현하기 쉽고, 소프트웨어를 쉽게 제어할 수 있다.

- 단점: CPU를 너무 많이 쓰게되고, 낮은 우선순위의 디바이스는 실행 되지 못할 수 있다.

<Interrupt driven I/O>

- I/O가 끝나면 interruptCPU에게 보낸다.

- interrupt는 여러 device가 공유한다.

- 장점: CPU는 필요할 때만 장치를 처리할 수 있고, 일반적으로 Polling보다 효율적.

- 단점: 과도한 인터럽트는 오히려 실행을 방해. 전송된 바이트당 1개 인터럽트가 필요할수도

 

14. 5 Device Characteristics - Programmed I/O(PIO) vs DMA(Direct Memory Access)

- I/O deviceMemory 사이의 데이터 전송

<Programmed I/O>

- CPU가 관여. sepcial I/O instruction vs memory mapped I/O

<DMA>

- 고속 I/O device에 쓰이며, CPU 개입없이 수행된다.

- CPUdma controller(address, count, control를 포함)로 명령을 주고, 데이터 교환이 끝나면, dma controllerCPU에게 interrupt를 보낸다.

 

14. 6 Device Characteristics - Blocking vs Non-blocking

<Blocking I/O>

- 프로세스가 I/O가 완료될때까지 중단.

- 사용하기 쉽고, 이해하기 쉽다. / 하지만 리소스 낭비가 심하다.

- read(), write()

<Non-Blocking I/O>

- I/O가 수행되는 동안 프로세스는 중단되지 않는다.

- I/O가 요청되면, I/O의 진행상황과 상관없이 바로 결과값이 반환된다.

데이터가 아직 준비가 안되었으면, 결과 메시지(ewouldblock)을 반환.

- multi-threading으로 구현

- select()를 사용해서 데이터가 준비되었는지 확인.

'Computer Science > Operating System' 카테고리의 다른 글

30. Storage System(1)  (0) 2021.05.29
29. I/O System(3)  (0) 2021.05.27
27. I/O System (1)  (0) 2021.05.25
26. Virtual Memory - Advanced VM Functionality  (0) 2021.05.24
25. Virtual Memory - Thashing, Working Set, PFF  (0) 2021.05.23
Comments