엔지니어가 되고 싶은 공돌이
28. I/O System(2) 본문
14. 4 Device Characteristics - Polling vs Interrupt
- I/O요청이 처리되었다는 걸 CPU가 어떻게 알 수 있을까?
<Polled I/O>
- CPU가 polls을 요청해서 주기적으로 I/O에게 물어본다.
- 장점: 구현하기 쉽고, 소프트웨어를 쉽게 제어할 수 있다.
- 단점: CPU를 너무 많이 쓰게되고, 낮은 우선순위의 디바이스는 실행 되지 못할 수 있다.
<Interrupt driven I/O>
- I/O가 끝나면 interrupt를 CPU에게 보낸다.
- interrupt는 여러 device가 공유한다.
- 장점: CPU는 필요할 때만 장치를 처리할 수 있고, 일반적으로 Polling보다 효율적.
- 단점: 과도한 인터럽트는 오히려 실행을 방해. 전송된 바이트당 1개 인터럽트가 필요할수도
14. 5 Device Characteristics - Programmed I/O(PIO) vs DMA(Direct Memory Access)
- I/O device와 Memory 사이의 데이터 전송
<Programmed I/O>
- CPU가 관여. sepcial I/O instruction vs memory mapped I/O
<DMA>
- 고속 I/O device에 쓰이며, CPU 개입없이 수행된다.
- CPU는 dma controller(address, count, control를 포함)로 명령을 주고, 데이터 교환이 끝나면, dma controller가 CPU에게 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 |