컴퓨터의 주요 작업을 꼽으면 계산과 I/O 작업을 들 수 있다
운영체제는 입출력 시 입출력 작업 및 입출력 장치를 관리하고 제어한다
I/O 란 device 와 컨트롤러의 버퍼 사이에서의 데이터 흐름이다 (CPU 는 컨트롤러의 버퍼와 메인 메모리를 오가며 데이터를 읽어낸다)
이때 컴퓨터에서 입출력 장치간 통신으로 많이 언급되는 용어인 폴링, 인터럽트, DMA 방식에대해 정리해보고자 한다
1. 폴링 (polling)
- 폴링은 CPU 가 자신과 연결 된 입출력 장치에서 무슨 일이 있는지를 주기적으로 확인하는 방식이다
- CPU 는 계속해서 입출력 장치의 상태를 확인한다. CPU 가 버퍼를 계속 확인 (=polling) 해야 하므로 비효율적이다
- 컨트롤러는 상태 레지스터의 비지 비트를 통해 자신의 상태를 나타낸다
- 호스트는 명령 레지스터의 명령 준비 완료 비트(command-read bit) 를 통해 입출력을 원한다는 신호를 한다
- CPU 가 상태 레지스터의 digit 비트가 0 이될때까지 검사
- 여기서 CPU 는 digit 비트가 소거될때 까지 루프를돌며 검사를 반복한다 (이과정을 Polling 이라고 한다)
사실 루프를 도는 시간이 길어지다보면 매우 비효율적이고,
몇몇 장치들은 호스트가 빨리 서비스 해주지 않으면 데이터는 계속 들어오지만 막상 CPU 는 하드웨어가 동작이 끝날 때까지 상태를 체크하여 다른 처리가 계속 미뤄지고 오버플로우를 일으키게된다
이런 비효율은 보완하기 위해 생겨난것이 Interrupt 이다
이는 입출력 장치가 CPU 에 자신의 상태 변화를 통보하는 하드웨어 기법이다
2. 인터럽트 (interrupt)
- 인터럽트란 CPU 가 처리중에 있을 때, 입출력 하드웨어 장치나 다른 예외적 상황의 발생으로 처리가 필요한 상황에 CPU 를 불러 처리하도록 하는 것이다
- 즉 포장 주문을 해놓고 그대로 기다리는것이 Polling 방식이라면 포장 음식이 만들어지는동안 다른 볼일을 보다가 음식점에서 연락이 오면 Interrrupt 해서 찾아가는 효율적인 방식이다
- 하지만 Polling 방식도 높은 처리량을 보이는 I/O 에 사용되기 때문에 Polling 과 Interrupt 가 함께 사용되기도 한다
- CPU 는 IRQ(Interrupt Request Line) 을 가지고 있는데, 하나의 명령어의 실행을 완료할 때마다 항상 이선을 검사한다
- 컨트롤러가 이 라인에 신호를 보내면 하던 일을 잠깐 멈추고 현재 작업 내용을 Context 에 잠깐 저장한 상태로 Interrupt handling 을 하게 된다
3. DMA (Direct Memory Access)
- Interrupt 를 적용해 Polling 의 단점은 CPU 가용 시간을 증가할 수 있는 장점이 있다고 하였다
- 하지만 인터럽트 방식은 1 word 를 처리할 때마다 CPU 에 인터럽트 신호를 전송하는 방식으로 여전히 CPU 의 가용 시간을 잡아먹고 있다
- 이런 문제를 해결하기 위해 CPU 가 하는 일을 DMA Controller 가 대신하고 있다
- DMA 를 이용하면 입출력 장치간 데이터를 주고 받는 과정이 끝났을 때에만 인터럽트가 발생하므로 CPU 의 역할을 현저히 줄일 수 있게된다
참고 : https://peterleeeeee.github.io/Intro-OS(2)/
OS(Operating System) - I/O, polling, Interrupt, DMA
Colorful
peterleeeeee.github.io
'운영체제' 카테고리의 다른 글
운영체제 - 프로세스 동기화 (2) | 2025.04.03 |
---|---|
운영체제 - CPU 스케줄링 (0) | 2025.03.27 |
운영체제 - 프로세스 & 쓰레드 (1) | 2025.03.20 |
운영체제 - 컴퓨터 시스템 자원관리 (0) | 2025.03.13 |
운영체제 (Operation System) (1) | 2025.03.13 |