인터럽트(interrupt)

양성훈·2022년 3월 4일
0

CS 스터디

목록 보기
3/4

인터럽트란?

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

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

인터럽트의 종류

  1. 외/내부 인터럽트: cpu의 하드웨어 신호로부터 발생
  2. 소프트웨어 인터럽트: 명령어의 수행에 의해 발생

외부 인터럽트

입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 부터 발생
ex> 전원 이상, 기계 착오, 외부 신호, 입출력

내부 인터럽트

Trap이라고 부르며, 잘못된 명령어나 데이터를 사용할 때 발생
ex> 제로디비전, 오버플로우, 잘못된 명령어

소프트웨어 인터럽트

프로그램 처리 중 명령어의 요청으로 인해 발생
ex> 사용자가 프로그램을 실행시킬 때

인터럽트 발생 처리 과정

주 프로그램을 실행 중 인터럽트가 발생했을 때

실행 중인 프로그램을 중단하고, 상태 레지스터와 pc(프로그램 카운터)를 스택에 잠시 저장한 후에 인터럽트 서비스 루틴으로 간다.

*상태 레지스터: 다양한 산술 연산 결과의 상태를 알려주는 플래그 비트들이 모인 레지스터

*pc(프로그램 카운터): cpu내부에 있는 레지스터, 다음 실행할 명령어 주소를 가지고 있다.

*인터럽트 서비스 루틴(ISR): == 인터럽트 핸들러, 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴

인터럽트가 없었다면?(컨트롤러의 입력 받는 방법)

인터럽트가 없었다면, 컨트롤러는 어떤일을 할지 지속적으로 체크를 해야함, 이를 폴링이라고 함

폴링

사용자가 명령어를 사용해 입력 핀의 값을 읽어 변화를 알아내는 방식

인터럽트 요청 플래그를 차례로 비교하여 가장 우선순위가 높은 인터럽트 자원을 찾아 이에맞는 수행을 거친다

폴링 중에는 하던 일을 제대로 할 수 없어 기능을 제대로 수행하지 못하게 된다는 단점이 있다.

인터럽트

MCU 자체가 하드웨어 적으로 변화를 체크하여 변화시에만 일정한 동작을 하는 방식

  • 연결 방식: daisy chain, 병렬 우선순위 부여

*MCU: cpu 기능을 포함하여, 일정한 용량의 메모리, 입출력 인터페이스, 주변장치 컨트롤러 회선까지 칩 하나에 내장한 반도체, 즉 pc의 메인보드 전체를 칩 하나에 내장한 것

*daisy chain: 연속적으로 연결되어 있는 하드웨어 장치 구성, a→b연결 b→c 연결

*병렬 우선순위 부여: 인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결, 각 장치의 인터럽트의 요청에 따라 각 비트가 개별적으로 set 될 수 있는 mask register 사용, 우선순위는 mask register의 비트 위치에 따라 결정

profile
시야를 넓히자

0개의 댓글