개발/CS

인터럽트

쪼르뚜 2025. 5. 27. 00:04
728x90
반응형

 

⭐ 이 포스팅은 위 책의 Chapter02 컴퓨터 구조 - CPU (70p ~ 78p) 분량의 내용을 바탕으로 정리했습니다.

 

인터럽트

인터럽트는 CPU의 작업을 방해하는 신호입니다.

동기 인터럽트(예외)

CPU가 프로그래밍 오류와 같은 예외적인 상황을 마주쳤을 때 발생하는 인터럽트입니다. 예외(exception)라고도 부릅니다.

  1. 폴트(fault)
    • 예외를 처리한 직후에 예외가 발생한 명령어부터 실행을 재개하는 예외
  2. 트랩(trap)
    • 예외를 처리한 직후에 예외가 발생한 명령어의 다음 명령어부터 실행을 재개하는 예외
  3. 중단(abort)
    • CPU가 실행 중인 프로그램을 강제로 중단
  4. 소프트웨어 인터럽트
    • 시스템 콜이 발생했을 때 발생하는 예외

비동기 인터럽트(하드웨어 인터럽트)

주로 입출력장치에 의해 발생하는 인터럽트로 알림의 역할을 합니다.

CPU는 효율적으로 명령어를 처리하기 위해 비동기 인터럽트를 사용합니다.

반대로 작업 완료 여부를 계속해서 확인하는 것은 '폴링'이라는 기법입니다.

 

일반적으로 CPU가 비동기 인터럽트를 처리하는 순서는 다음과 같습니다.

 

  1. 입출력장치 [인터럽트 요청 신호]👉 CPU
  2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 인터럽트 여부 확인
  3. 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부 확인
    • 인터럽트 플래그로 막을 수 있는 인터럽트(maskable interrupt)
    • 인터럽트 플래그로 막을 수 없는 인터럽트(NMI, non maskable interrupt)
  4. 받아들일 수 있다면 CPU가 지금까지의 작업을 백업
    • 메모리 내 스택에 백업
  5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
    • 인터럽트 벡터(interrupt vector) : 인터럽트 서비스 루틴을 식별하기 위한 정보
    • 인터럽트 서비스 루틴(ISR, Interrupt Service Routine) : 인터럽트를 처리하기 위한 프로그램으로 어떤 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보
  6. 인터럽트 서비스 루틴 실행이 끝나면 백업해 둔 작업을 복구하여 실행 재개

 

CPU가 인터럽트를 처리한다 = 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 되돌아온다.
728x90
반응형