컴퓨터 시스템 구조

← 컴퓨터 / 입출력 장치 →

동기식 입출력과 비동기식 입출력
동기식 입출력 (synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 →
CPU 낭비
, I/O 장치 낭비
- 구현방법 1)
- I/O 가 끝날 때까지 CPU 를 낭비시킴 → CPU 낭비
- 매시점 하나의 I/O 만 일어날 수 있음 → I/O 장치 낭비
- 구현방법 2)
- I/O 가 완료될 때까지 해당 프로그램에게서 CPU 를 빼앗음 → CPU 낭비 방지
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
- 다른 프로그램에게 CPU 를 줌 → I/O 장치 낭비 방지
비동기식 입출력 (asynchronous I/O)
- I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
- 두 경우 모두 I/O 의 완료는 인터럽트로 알려줌

DMA(Direct Memory Access)
- 한번의 입출력 장치 요청마다 CPU 에게 인터럽트를 보내면 CPU 는 너무 많은 오버헤드를 발생시키게 된다
- CPU 에게 전달되는 인터럽트를 줄이는 용도로 DMA 가 사용된다
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- CPU 의 중재 없이 device controller 가 device 의 buffer storage 의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴

서로 다른 입출력 명령어
- I/O 를 수행하는 special instrunction 에 의해
- Memory Mapped I/O 에 의해
