인터럽트

김민성·2023년 3월 4일
0

Operating System

목록 보기
4/7

: 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단하고 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것

→ 지금 수행 중인 일보다 더 중요한 일이 발생하면 그 일을 먼저 처리하고 하던 일 처리함

외부 인터럽트

: CPU의 하드웨어 신호에 의해 발생

→ 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생

→ 전원 이상, 기계 착오, 외부 신호, 입출력

내부 인터럽트

: CPU의 하드웨어 신호에 의해 발생

→ Trap이라 부르며, 잘못된 명령이나 데이터를 사용할 때 발생

→ 0으로 나누기, 오버플로우, 명령어 잘못 사용한 경우

소프트웨어 인터럽트

: 프로그램 처리 중 명령의 요청에 의해 발생한 것 (SVC 인터럽트)

→ 사용자가 프로그램을 실행시킬 때 발생

→ 소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작 수행

인터럽트 발생 처리 과정


1. 주 프로그램 실행 중 인터럽트 발생
2. 현재 수행 중인 프로그램 중지, 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 감

만약 인터럽트 기능이 없다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크 해야 함 (폴링(Polling)이라 함)

→ 폴링을 하는 시간에는 원래 하던 일에 집중할 수 없기 때문에 기능 제대로 동작 못하는 단점

컨트롤러가 입력을 받아들이는 방법(우선순위 판별 방법)

  • 폴링 방식 : 사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식 → 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴 수행 → 하드웨어에 비해 속도 느림
  • 인터럽트 방식 : MCU(마이크로컨트롤러) 자체가 하드웨어적으로 변화를 체크하여 변화 시에만 동작 → Daisy Chain → 병렬 우선 순위 부여

인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응

실시간 대응이 필요할 때는 필수적

→ 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법

0개의 댓글