-
[운영체제] 입출력(I/O) 제어 - 폴링, 인터럽트, DMA운영체제 2023. 11. 8. 22:57
입출력 작업 시
시스템 자원을 효율적으로 확용하려면?컴퓨터에서 CPU는 수많은 입.출력 장치와 연결되어 정보를 주고 받는다. 예시에서는 간단하지만 실제 컴퓨터에는 수많은 입출력 장치가 연결되어 있으며, 이로 인해 우리는 간편하게 컴퓨터를 사용할 수 있다. 그러나 입출력 작업은 프로그램 실행 중에 외부 장치와의 데이터 전송을 포함하며, 시간이 오래 걸리거나 예측하기 어려운 경우가 많다. 이 경우 자원의 이용률이 낮아지는 문제가 있는데, 컴퓨터 시스템의 자원을 효율적으로 활용하기 위한 방법들이 있다.
폴링(Polling)
CPU를 다른 프로세스에게 넘기지 않고 연결된 디바이스가 동작을 완료할 때까지 상태를 수시로 확인하여 명령을 처리하는 방식을 의미한다. 이 방식은 구현이 간단하다는 장점이 있지만 입축력 장치의 개수가 증가할 수록 CPU 이용률이 낮아져 성능 저하 문제가 있다.
인터럽트(Interrupt)
I/O를 요청한 프로세스를 블록시키고 CPU를 다른 프로세스에게 양도한 후 입출력 이벤트가 발생했을 때 CPU에 이를 알려 처리하도록 하는 것을 말한다. CPU 입장에서는 필요할 때만 입출력 장치와 통신하고 남는 시간동안 다른 일을 할 수 있으므로 일반적으로 폴링 방식에 비해 성능이 좋다.
운영체제는 I/O를 요청한 프로세스를 블록시키고 CPU를 다른 프로세스에게 양도한다. 장치가 작업을 끝마치면 하드웨어 인터럽트를 발생시키고 CPU는 운영체제가 미리 정의해 놓은 인터럽트서비스루틴(ISR) 또는 인터럽트핸들러(Interrupt Handler)를 실행한다. 인터럽트핸들러는 입출력요청, I/O를 대기중인 프로세스 깨우기 등을 하여 프로세스가 작업을 계속할 수 있도록 한다.
이 처럼 인터럽트를 사용하면 CPU연산과 I/O장치 작업을 중첩시켜서 수행할 수 있게 된다. 때문에 인터럽트를 통해 I/O처리를 하는 것이 폴링을 하는 것보다 CPU 사용률을 높일 수 있는 방법이다. 하지만 무조건 인터럽트가 폴링보다 좋다고 할 수는 없다. 인터럽트를 사용하게 되면 현재 실행중인 프로세스를 다른 프로세스로 문맥교환(Context Switching)하게 되고 이 때 많은 비용이 수반된다. 그렇기 때문에 빠른 하드웨어 장치라면 폴링이 더 효율적이고 느린 하드웨어장치라면 인터럽트가 더 효율적이라고 할 수 있다.
DMA (Direct Memory Access)
CPU의 개입 없이 주변장치와 시스템 메모리 간의 데이터 전송을 가능한 방식이다. DMA는 대량의 데이터를 이동하거나 빠른 입출력을 요구하는 작업에서 유용하며, 입출력 성능을 향상시키고 시스템의 효율성을 높입니다.
폴링과 인터럽트 방식은 기억장치와 I/O 장치간의 데이터 이동에 CPU가 직접 개입한다. 인터럽트 방식은 폴링에 비해 CPU 가용율을 높였으나 이벤트 발생 시점에 즉시 CPU에 신호를 전송하는 방식으로 여전히 CPU 가용 시간을 사용하고 있다. 이를 해결하기 위해 대행자를 만들었는데 그것이 DMA 컨트롤러이다. 하나의 DMA에는 여러 개의 입출력 장치를 연결할 수 있으며, DMA를 이용하면 입출력 장치간 데이터를 주고 받는 과정이 끝났을 때에만 인터럽트가 발생하므로 CPU의 역할을 현저히 줄일 수 있다.
https://jaebworld.tistory.com/27
폴링(Polling) / 인터럽트(Interrupt) / DMA(Direct Memory Access)
/* 본 내용은 학교 수업내용을 바탕으로 하고 OSTEP(Operating Systems: Three Easy Pieces) 교재를 참고하여 정리한 내용입니다. */ 폴링과 인터럽트를 보기 전 간단하게 컴퓨터구조와 하드웨어의 구성을 보
jaebworld.tistory.com
https://peterleeeeee.github.io/Intro-OS(2)/
OS(Operating System) - I/O, polling, Interrupt, DMA
Colorful
peterleeeeee.github.io
https://hyeo-noo.tistory.com/320
[컴퓨터 구조] 인터럽트와 DMA를 이용한 I/O
인터럽트를 이용한 I/O 인터럽트란? CPU가 어떤 프로그램을 순차적으로 수행하는 도중에 외부로부터 인터럽트 요구가 들어오게 되면, CPU는 원래의 프로그램 수행을 중단하고, 요구된 인터럽트를
hyeo-noo.tistory.com
'운영체제' 카테고리의 다른 글
[운영체제] Scheduler와 Dispatcher (0) 2023.11.16 [운영체제] 프로그램, 프로세스, 스레드 비교 (0) 2023.11.10 [운영체제] 동기(sync) vs 비동기(async), 블로킹(Blocking) vs 논블로킹(Non-Blocking) (0) 2023.11.08 [운영체제] 시스템 콜 (System Call) (0) 2023.11.06 [운영체제] 컴퓨터 시스템 자원관리 - 다중프로그래밍, 시분할시스템 비교 (0) 2023.11.06