초기 컴퓨터 시스템은 CPU 작업 중 입출력장치에 데이터를 통신할 일이 생기면 이를 직접 수행하는 폴링(Polling) 방식이었다. 이 때, CPU에서 입출력에 관여하는데 시간이 소요된다는 시간문제가 있었는데 이를 해결하기 위해 등장한 것이 바로 인터럽트(Interrupt)방식이다.
기존의 폴링 방식때에는 CPU만이 메모리나 주변장치에 대한 권한을 가지고 있었는데, 인터럽트 방식에서는 이 권한을 입출력 관리자에게 부여하고, CPU는 본래 역할(명령어 해석, 실행)에 충실하여 작업의 효율을 높혔다.
이 때, 입출력 관리자에게 부여한 권한을 직접 메모리 접근(DMA)라고 한다.
인터럽트 동작과정
(1) CPU에서 프로세스 실행중 I/O요청 발생시 해당 프로세스를 대기 상태로 변경. 다음 프로세스 수행
(2) 입출력관리자가 대기상태의 프로세스의 I/O 작업 수행 (DMA)
(3) (2)의 데이터 통신 완료시에 CPU에 알림 ==> 인터럽트
(4) 해당프로세스의 상태를 준비상태로 변경
* 또한, CPU에서 하나의 프로세스는 일정 시간의 작업 수행 권리를 가지게 되는데, 실행시간이 끝나고(timeout) 다시 준비 상태로 돌아가는 것도 인터럽트라고 한다.
* DMA의 동작과정에서 메모리에는 CPU가 사용하는 데이터들과 입출력장치가 사용하는 데이터가 같이 있게된다. 이 때 데이터들이 서로 섞이지 않게 메모리에 입출력 작업 영역을 분리하는 것을 메모리 매핑 입출력(MMIO) 한다.
* CPU와 DMA가 동시에 메모리에 접근하는 경우에는 어떻게 될까? 이 때는 비교적 작업속도가 느린 DMA가 메모리 사용권한을 가지게 되는데, 이를 CPU입장에서 사이클 훔치기 라고 표현한다.
'CS > OS' 카테고리의 다른 글
인터넷익스플로어와 크롬에서 멀티탭 기능 구현 차이 (0) | 2021.08.07 |
---|---|
[OS] 멀티태스킹, 멀티프로세싱, 멀티스레드 (0) | 2021.08.07 |
[OS] 프로세스의 통신 (IPC: Inter-Process Communication) (0) | 2021.07.29 |
[OS] 운영체제의 프로세스 관리 (0) | 2021.07.23 |
[OS] 운영체제가 도대체 뭘까? (0) | 2021.07.17 |