폴링, 인터럽트, DMA

라마·2023년 7월 5일

운영체제

목록 보기
5/32

※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.

CPU 가 어떤 작업을 수행하던 도중 외부에서 들어오는 작업 요청을 처리하는 방법

외부 장치들은 무언가 입력이 있거나 작업의 완료, 예외 상황 등이 발생하면 CPU 에게 자신의 상태에 대해 알려줍니다.

예시

  • 키보드 / 마우스 조작
  • 네트워크의 패킷 수신, 저장 장치 입력 완료
  • USB 장치 연결 알림 등

CPU 는 자신이 할일을 아래와 같은 방식들로 처리를 합니다.

  • Polling : CPU 가 입력을 가지러 감
    • 예시 : 우편함에 우편을 두고 가면, 알아서 시간날 때 가져감
  • Interrupt : CPU 에 입력을 넣어줌
    • 예시 : 택배가 오면, 택배를 받으러 가야함

Polling ( Programmed I/O )

CPU 가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식을 Polling 이라고 합니다.

CPU 가 외부 상태를 주기적으로 검사하며 요청 ( Request ) 이 있으면 처리하는 방식입니다.

여기서, 처리해야할 메시지는 CPU 가 poll 할 때 까지 기다려야 합니다.

Polling 에는 주기가 있는데, 높을 수록 메시지 응답속도가 높고, 낮을수록 실시간성이 떨어진다는 특징이 있습니다.

Interrupt

각 자원들이 능동적으로 자신의 상태변화를 CPU 에게 알리는 방식을 Interrupt 라고 합니다.

즉, CPU 에게 어떤 작업을 실행하라고 작업물을 던져주는 것이 Interrupt 라고 볼 수 있습니다.

  • 외부 장치가 CPU 를 사용해야 할 때, IRQ ( Interrupt ReQuest ) 을 전송

언제 작업을 처리해야하는지 알려주기 때문에, CPU 는 필요할 때만 외부 장치와 통신하고 남는 시간동안은 다른 작업을 처리합니다.

즉, 일반적으로 CPU 의 활용율을 높일 수 있지만, 너무 많은 인터럽트가 발생하게 되면 CPU 가 해야할 일을 제대로 처리하지 못해 오히려 효율이 떨어질 수 있습니다.

폴링과 인터럽트에 대해 살펴보았는데, 폴링이던, 인터럽트던 모두 CPU 가 주관하며, 데이터를 처리한다! 라는 공통점이 있습니다.

결국 CPU 가 데이터를 처리하려고 이동하는데 걸리는 시간이 존재하게 되며, 이는 곧 데이터 이동 처리에 시간을 낭비하게 된다라는 뜻입니다.

이 문제점을 해결하고자, DMA ( Direct Memory Access, 직접 메모리 접근 제어기 ) 가 등장하게 되었습니다.

DMA ( Direct Memory Access )

DMA 는 CPU 개입 없이 메모리와 하드웨어 장치 간 데이터 전송을 하기 위해 만들어진 별도의 공간 입니다.

DMA 컨트롤러가 버스를 제어하고, I/O 와 메모리간 전송을 제어합니다.

  • 프로그램 수행 중 인터럽트의 발생 횟수를 줄일 수 있음
  • 시스템 효율성을 높일 수 있음

이후 DMA 동작이 끝나고 나면, DMA 컨트롤러가 인터럽트를 발생시켜 작업이 완료되었음을 CPU 에게 알려줍니다.

덕분에 CPU 는 자신이 해야할 일들을 더 많이 처리할 수 있게 되었습니다.

0개의 댓글