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들에 대응할 수 있게 추상화된 레이어라고 볼 수 있다.
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에 Interrupt를 통해 작업이 끝났음을 통지한다.
CPU는 P1 작업에 필요한 데이터가 적재됨을 확인하고
P1 작업을 마저 진행할 수 있다.
댓글
댓글 쓰기