하드디스크
그래픽카드
멀티코어 프로세서
위에 언급된 모두 해당
입출력 장치가 데이터를 주고받을 준비가 되었는지 CPU가 지속적으로 폴링(polling)하며 확인한다.
입출력 장치와 메모리가 같은 주소 버스(address bus)를 사용한다.
입출력 장치가 데이터를 주고받을 준비가 되었을 때 CPU가 인터럽트(interrupt)를 받는다.
CPU 외에 입출력 장치로부터 데이터를 읽어오기 위한 장치가 있다.
Wire
CPU
Bus
Buffer
Port
Node
하드웨어를 제어하기 위한 인터페이스를 제공하는 프로그램이다.
커널 모드로 실행되기도 한다.
사용자 모드로 실행되기도 한다.
동기(Synchronous) 방식으로만 작동한다.
1 비트(bit)씩 전송한다
1 바이트(byte)씩 전송한다
1 블록(block)씩 전송한다
위에 언급된 모두 해당 안됨
Non-maskable
Maskable
Synchronous
Asynchronous
Maskable 인터럽트보다 우선순위가 낮다.
마스킹이 불가능한 인터럽트이다.
일반적으로 외부 장치가 아니라 내부 시스템에서 발생된다.
디버깅(debugging)에 쓰인다.
Blocking
Interrupt
Busy waiting
프로세스의 실행을 중지시킨다
프로세스의 실행을 중지시키지 않는다
인터럽트를 발생시킨다
인터럽트를 발생시키지 않는다
응답이 느리다
콜백(callback)을 사용할 수 있다
호출이 끝난 시점에 I/O도 완료된다
© Seunggon Kim