CPU 작업과 I/O 작업은 어떻게 병행될 수 있는가 ?

다음 3개의 요인을 통해 CPU와 I/O 작업이 병행될 수 있음. 1. Interrupt 1.1 Device가 RAM에 요청된 데이터를 Load하는 작업이 끝나면 1.2 CPU에 Load작업이 완료되었다는 I/O Interrupt를 보냄. 1.3 CPU는 다시 RAM에 적재된 데이터를 통해 작업을 마저 수행할 수 있음. 2. DMA Controller DMA를 지원하는 환경이라면 - DMA를 통해 CPU의 도움 없이 직접 RAM에 접근 가능하다. - Device driver와 RAM이 직접 통신한다. 3. Device driver = 장치 드라이버 - OS와 Hardware 사이의 통신을 담당하는 소프트웨어. - Hardware의 ROM에 내장된 Firmware를 구동한다. - 제조사의 마이크로 프로세서에 하드웨어를 제어하는 명령들을 담은 firmware가 탑재되어 나오는데 CPU의 도움 없이 device specific한 작업을 수행할 수 있음. - 대형 운영체제들은 여러 겹의 Layer를 사용하는데 Firmware들에 대응할 수 있게 추상화된 레이어라고 볼 수 있다. 병행 작동 예 Device driver 상위 Layer에는 OS와 Application이 위치한다. OS는 Kernel로서 RAM에 적재되어 돌아가고 Application 데이터도 RAM에 적재되고 RAM에서 해제된다. 애플리케이션 코드가 수행되다가 필요한 데이터가 I/O장치에 있을 때는 API를 통하여 시스템 콜을 통해 OS가 대신 데이터를 애플리케이션에 전달한다. 이해를 돕기 위해 I/O 장치에 P1(프로세스1)을 기입한 것이고 실제 I/O에서 프로세스를 수행하는 것이 아님 ! [그림 참고] CPU가 작업 P1를 수행하다가 I/O 장치의 데이터가 필요해서 인출 작업을 I/O 영역에 맡긴다. CPU는 대기하고 있는 것이 아니라 P2라는 다른 작업을 수행한다. I/O장치는 P1과 관련된 데이터 인출 작업을 수행하고 인출 및 적재가 끝나면 CPU에 ...