폴링, 인터럽트, DMA

유진신·2024년 9월 3일

stm

목록 보기
1/3
post-thumbnail

polling vs interrupts

출처 | 링크텍스트

폴링 (polling)

  • 대상을 주기적으로 감시하며 상황 발생 시 해당 처리 루틴을 실행해 처리함
  • 직접 입출력 장치에서 데이터를 가져오는 방식
  • 주기적으로 마이크로프로세서가 상태를 파악하기 위해 장치의 레지스터를 읽음

특징

CPU 자원 소모: CPU가 주기적으로 장치 상태를 확인하기 때문에 CPU 자원이 소모됩니다.
실시간성 부족: 주기적으로 상태를 확인하기 때문에 즉각적인 반응은 어려울 수 있습니다.
단순한 구현: 복잡한 상황에서는 비효율적일 수 있으나, 단순한 작업에서는 구현이 간단합니다.

장점단점
구현이 쉬움, 우선 순위 변경이 용이함CPU가 직접 일하기 때문에 입출력 하는 동안 다른 일은 못함-> 입출력 처리되는데 오래걸려 작업 효율이 떨어짐

인터럽트(inturrupts0

  • 주변 장치들의 입출력이나 하드웨어 문제, 프로그램에서 예외 등이 발생할 시 CPU에게 이를 알려주는 방식

특징

효율적 자원 사용: 폴링과 달리, CPU가 유휴 상태에서 작업을 기다리지 않고 다른 작업을 수행할 수 있습니다.
실시간 반응: 이벤트가 발생하면 즉시 대응할 수 있어 실시간 응답이 필요할 때 유리합니다.
복잡한 구현: 인터럽트 처리는 우선순위 관리와 중첩 처리 등의 문제가 발생할 수 있어 구현이 복잡해질 수 있습니다.

장점단점
CPU 자원 효율적 사용, 실시간 응답 가능복잡한 구현, 인터럽트 과부하 시 시스템 안정성 저하 가능

종류

-하드웨어 인터럽트: 입출력 장치에서 발생하는 물리적 신호에 의해 발생. 주로 하드웨어 장치에서 발생한다. 키보드나 마우스 버튼을 누르는 등의 상황에서 발생함.

소프트웨어 인터럽트

프로그램 실행 중 발생하는 예외 상황이나 소프트웨어적으로 발생시키는 인터럽트. 주로 예외 상황, 오류 처리, 시스템 호출 드에 사용됨. 예를 들어 0으로 나누기 같은 오류 조건 발생 시 소프트웨어 인터럽트를 통해 처리할 수 있음.

외부 인터럽트

주로 컵퓨터 외부에서 발생함. 전원 이상, 시스템 시계 변경, 외부신호에 의한 인터럽트 같은 상황에서 발생함.

인터럽트 우선순위

여러 개의 인터럽트가 동시에 발생했을 때, 우선순위에 따라 처리된다. 우선순위가 높은 인터럽트는 먼저 처리되며, 낮은 우선순위의 인터럽트는 대기 상태에 놓인다.

인터럽트 중첩

인터럽트 처리 도중에 더 높은 우선순위의 인터럽트가 발생하면, 현재 처리 중인 인터럽트를 중단하고 새로운 인터럽트를 처리한다. 이 과정이 적절하게 관리되지 않으면 시스템의 안정성에 문제가 생길 수 있다.

폴링 vs 인터럽트 선택 기준

폴링은 간단한 시스템, CPU가 유휴 상태일 때 사용한다.
인터럽트는 실시간 응답이 필요하거나, 여러 장치에서 동시 다발적인 작업이 이루어질 때 사용된다.

DMA(direct memory access)

DMA는 데이터를 주변 장치와 메모리 간 빠르게 전송하기 위한 기술 및 하드웨어 컨트롤러이다. CPU의 개입 없이 데이터 전송이 가능해, 시스템 성능을 향상시키고 데이터 전송을 효율적으로 처리할 수 있게 한다.

특징

  1. 효율성 향상: CPU가 데이터 전송을 처리하는 대신, DMA 컨트롤러가 메모리와 주변 장치 간의 데이터 전송을 관리하여 CPU는 다른 작업을 수행할 수 있습니다. 이를 통해 전체 시스템의 효율성이 향상됩니다.

  2. 고속 데이터 전송: 대용량 데이터를 전송할 때 CPU가 직접 개입하지 않기 때문에 데이터 전송 속도가 빠릅니다.

  3. CPU 부하 감소: DMA는 CPU가 데이터를 이동하는 데 시간을 소모하지 않게 하므로, CPU는 더 중요한 연산 작업에 집중할 수 있습니다.

  4. 다양한 활용: DMA는 주로 디스크 드라이브, 네트워크 카드, 그래픽 카드 등 대용량 데이터를 처리해야 하는 주변 장치와 메모리 간의 데이터 전송에 많이 사용됩니다.

동작 방식

  1. DMA 요청: 주변 장치가 DMA 요청을 보내면, DMA 컨트롤러가 이 요청을 받아들입니다.
  2. CPU 중재: DMA 컨트롤러는 CPU에 버스 제어권을 요청하고, CPU는 잠시 버스 제어권을 넘겨줍니다.
  3. 데이터 전송: DMA 컨트롤러가 메모리와 주변 장치 간의 데이터 전송을 처리합니다.
  4. 버스 반환: 데이터 전송이 완료되면, DMA 컨트롤러는 CPU에게 버스 제어권을 반환합니다.

0개의 댓글