Day 20. 인터럽트의 정의와 종류

태규 최·2022년 9월 30일
0

1day 1cs

목록 보기
16/17

컴퓨터를 사용하기 시작한 초기의 프로그래밍 방식은 순차적 프로그래밍 방식이었다.

  • 해당 액션을 확인 하려면 앞에있는 액션들을 확인을 해야하는 번거로움이 있다.
  • 오늘날에는 이런 단점때문에 이벤트 드리븐 방식을 사용

입출력을 요청하고 입출력이 완료되면 이벤트를 발생시켜 이를 알리게 되는데 이를 인터럽트라고 한다.

동기적 인터럽트 비동기적 인터럽트

동기적 인터럽트 : 프로세스가 실행 중인 명령어로 인해 발생하는 동기적 인터럽트 (사용자 인터럽트)

  • 프로그램상의 문제 때문에 발생하는 인터럽트(예 : 사용자의 메모리 영역에 접근하는 경우, 오버플로나 언더플로에 의해 발생하는 경우 등)

  • 컴퓨터 작업자가 의도적으로 프로세스를 중단하기 위해 발생시킨 인터럽트( 예 : Ctrl + c)

  • 입출력장치 같은 주변장치의 조작에 의한 인터럽트

  • 산술 연산 중 발생하는 인터럽트(예 : 어떤 수를 0으로 나눔)

비동기적 인터럽트 : 실행중인 명령어와 무관하게 발생하는 비동기적 인터럽트

  • 하드디스크 읽기 오류
  • 메모리 불량

하드웨어적인 오류로 발생하는 인터럽트

인터럽트 처리 과정

  • 인터럽트에는 번호(IRQ)와 번호에 붙어 있는 함수의 쌍으로 구성되어 있어서 해야 할 일이 정해져 있다.

인터럽트 벡터 :

  • 인터럽트의 집합
  • 인터럽트가 발생하면 벡터의 번호가 0 에서 1로 바뀐다.
  • 인터럽트 벡터에는 각 인터럽트를 처리하는 함수가 연결되어 있다.
  • 함수를 인터럽트 핸들러 라고 부른다.
  1. 인터럽트가 발생하면 현재 실행중인 프로세스는 일시 정지 상태가 되며, 재시작하기 위해 현재 프로세스 관련 정보를 임시로 저장한다.

  2. 인터럽트 컨트롤러가 실행되어 인터럽트의 처리 순서를 결정한다. 이때 여러 개의 인터럽트가 동시에 발생했다면 인터럽트의 우선순위를 고려하여 중요한 인터럽트부터 처리하도록 순서를 결정한다.

  3. 인터럽트가 결정되면 벡터에 등록된 인터럽트 핸들러가 실행된다.

  4. 인터럽트 벡터에 연결된 핸들러가 인터럽트 처리를 마치면 일시 정지된 프로세스가 다시 실행되거나 종료된다.

0개의 댓글