상세 컨텐츠

본문 제목

인터럽트(Interrupt)

CS

by heueun 2024. 6. 28. 04:46

본문

인터럽트란?

인터럽트란 프로그램 실행 도중 예기치 않은 상황이 발생했을 때 현재 실행중인 작업을 잠시 중단하고, 발생한 상황을 우선 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다.


인터럽트의 종류

인터럽트는 크게 두 가지로 나눌 수 있다.

 

1) 소프트웨어 인터럽트( = 내부 인터럽트, Trap)

프로세스 내부에서 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트를 의미한다.

  • 0으로 나누는 등 비정상적인 작업을 시도하는 경우
  • 잘못된 메모리에 접근하는 경우
  • 시스템 콜을 호출하는 경우

소프트웨어가 인터럽트 요청 라인에 직접 신호를 보낸다.
즉, 실행 중인 프로그램스스로 인터럽트를 발생시킨다고 보면 된다.

 

2) 하드웨어 인터럽트( = 외부 인터럽트)

입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생하는 인터럽트를 의미한다.

  • 전원 이상 인터럽트 : 정전이나 전원이 이상이 있는 경우
  • 기계 고장 인터럽트 : CPU등의 기능적인 동작 오류가 발생한 경우
  • 타이머 인터럽트 : 프로세스에 할당된 시간이 지난 경우
  • 입출력 인터럽트(I/O Interrupt) : 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 경우
    • ex. 마우스를 더블 클릭한 경우
      1. 마우스를 더블클릭하면 CPU에 전기신호(인터럽트)를 보내준다.
      2. CPU가 인터럽트를 감지하면 현재 작업을 중단한다.
      3. 그리고 OS내부에 있는 Mouse Interrupt Service Routine으로 점프한다.
      4. Mouse Interrupt Service Routine은 커서가 더블클릭한 좌표에 있는 아이콘(프로그램)을 실행한다.
      5. 즉, 디스크에서 찾은 다음 메모리에 올린다.

하드웨어 장치가 인터럽트 요청 라인에 신호를 보내면서 처리된다.


인터럽트가 필요한 이유

 

예를 들어 컴퓨터에 프린터를 연결하여 사용한다 했을 때, 프린터는 출력을 위해 컴퓨터에서 보내는 정보를 받아들일 준비가 필요하다.

 

프린터가 준비 됐는지 컴퓨터가 어떻게 알 수 있을까?

 

CPU는 프린터가 준비 될 때까지 무작정 대기할 수도 있고 다른일을 하고 있을 수도 있다.

무작정 대기한다면 대기하는 시간은 그냥 낭비되는 것이 되기 때문에 비효율적이다.

이때, 다른일을 하고 있다가 프린터의 준비가 완료되면 컴퓨터에게 알려주는 것이 인터럽트이다.

결과적으로 인터럽트가 필요한 이유는 불필요한 자원낭비를 막아 CPU 효율을 극대화 하기 위해서이다.


인터럽트의 동작 과정

 

1. 인터럽트 발생

ex) 키보드 키가 눌리거나 타이머가 만료되었을 때

 

2. 인터럽트 신호 감지

CPU가 실행 중인 명령어를 멈춘다.

 

3. 현재 작업 중단 및 상태 저장

인터럽트 처리가 끝난 후에 중단된 작업을 다시 이어서 실행할 수 있도록 CPU가 현재 작업의 상태를 PCB(Process Control Block)에 저장한다.

 

4. 인터럽트 벡터 테이블 참조

각 인터럽트에는 고유한 번호가 할당되어 있는데, CPU는 이 번호를 사용하여 인터럽트 벡터 테이블을 참조한다. 이 테이블은 인터럽트 종류마다 번호를 정해서, 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조 이다.

 

5. 인터럽트 핸들러 실행

인터럽트 벡터 테이블에서 참조한 주소로 이동하여 해당 인터럽트 핸들러를 실행한다. 인터럽트 핸들러는 인터럽트가 발생한 원인을 처리하고, 필요한 작업을 수행한다. 예를 들어, 키보드 입력 인터럽트의 경우 눌린 키 값을 읽고 이를 처리한다.

인터럽트 핸들러(interrupt handler) = 인터럽트 처리 루틴(ISR : Interrupt service routine)

 

6. 인터럽트 처리 완료 및 복원

인터럽트 핸들러의 작업이 완료되면, CPU는 이전에 저장한 상태를 복원한다. 이 단계에서 CPU의 현재 상태를 나타내는 정보(프로그램 카운터와 레지스터 값 등)가 복원된다.

 

7. 중단된 작업 재개

CPU는 원래 중단된 작업으로 돌아가서 계속 실행한다. 인터럽트 처리 과정이 완료되었으므로, 시스템은 중단된 지점부터 정상적으로 작업을 이어나간다.

관련글 더보기