입출력 관리

Haiseong Jeong·2022년 11월 3일
1
post-thumbnail

입출력 시스템

시스템의 입출력 장치와 모듈을 포함한 것을 뜻한다. 입출력 장치는 실제 입출력을 수행하는 물리적인 장치를 뜻한다. 마우스, 키보드, 모니터, 스피커 등이 여기에 속한다. 입출력 모듈은 프로세서를 대신하여 입출력과 관련된 일을 수행하는 부분이다. 입출력 모듈은 앞서 말한 입출력 장치와 컴퓨터의 하드웨어를 연결해주는 장치이다.

운영체제의 입출력 관리방법

폴링

폴링은 CPU가 자신과 연결 된 입출력 장치에서 무슨 일이 있는지를 주기적으로 확인하는 방식이다. CPU는 1초에 수 많은 연산을 처리할 수 있는 성능을 가지고 있지만 I/O는 그렇지 않다 따라서 계속해서 마우스의 상태를 확인하면 CPU의 성능을 모두 활용하지 못하는 문제가 발생한다.

폴링은 연결되어 있는 입출력 장치의 개수가 증가하면 할수록 CPU를 점유하는 시간이 증가한다. 따라서 성능이 하락하는 큰 문제점이 있다.

인터럽트

I/O가 자신들이 필요할 때마다 CPU에게 인터럽트 신호를 전송해서 필요한 순간만 사용하는 방식이다. CPU 입장에서는 필요할 때만 입출력 장치와 통신하고 남는 시간동안 다른 일을 할 수 있어 성능이 우수하다.

인터럽트는 예전에도 많이 다뤘기 때문에 링크를 남기겠다.
인터럽트

하지만 인터럽트 방식은 1 word를 처리할 때마다 CPU에 인터럽트 신호를 전송하는 방식이다. 따라서 여전히 CPU의 가용 시간을 잡아먹는다. 이는 작은 데이터는 효과적으로 처리할 수 있지만 큰 데이터의 경우 계속해서 cpu를 점유해 버리기 때문에 효과적이지 못하다.

Direct Memory Access

DMA는 위의 문제를 해결하기 위한 방법이다. CPU대신 DMA Controller가 입출력 처리를 대신하는 방식이다. DMA를 이용하면 입출력 장치간 데이터를 주고 받는 과정이 끝났을 때에만 인터럽트가 발생한다. 따라서 CPU의 역할을 현저히 줄일 수 있다.

CPU는 전송할 자료와 장소에 대한 위치를 나타내는 포인터와 전송 될 바이트 크기를 DMA에 전송한다. DMA는 해당 정보를 바탕으로 자신과 연결되어 있는 입출력 장치의 요구사항을 처리할 수 있다. 따라서 CPU의 가용시간이 증가한다.

profile
나는 개발자다. 5000만큼 코딩한다.

0개의 댓글