본문 바로가기

컴퓨터구조

인터럽트

→   인터럽트 : cpu의 정상적인 작업을 방해하는 신호

  • 동기 인터럽트 (Exception) : CPU에 의해 발생하는 인터럽트이다
  • 비동기 인터럽트 (하드웨어 인터럽트) : 주로 입출력 장치에 의해 발생한다.
    • 효율적인 작업을 위해 입출력 장치가 일을 하는 동안 cpu는 다른 작업을 하고 있고 입출력 장치의 작업이 완료되면 인터럽트를 발생시킨다. 그러면 cpu가 입출력장치의 작업을 확인한다. (cpu의 작업속도 > 입출력장치의 작업속도)

 

하드웨어 인터럽트 처리순서 

  1.  입출력 장치가 cpu에게 인터럽트 요청 신호를 보낸다.
  2.  cpu는 항상 명령어를 인출하기 전에 인터럽트 여부를 확인한다.
  3.  요청을 확인하고 인터럽트 플래그(flag register에 있다)를 통해 현재 인터럽트를 받아들일 수 있는지를 확인한다.
  4.  인터럽트를 받아들일 수 있으면 cpu는 현재까지의 작업을 백업한다.
  5.  인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 수행한다.

 

 다만 인터럽트 플래그값이 인터럽트를 현재 처리할 수 없는 상태일지라도 하드웨어 인터럽트의 우선순위가 높으면 그 인터럽트를 가장 먼저 수행한다. (이처럼 막을 수 없는 인터럽트를 non maskable interrupt라고 한다.)

 

 인터럽트 백터 : 인터럽트 서스 루틴을 식별하기 위한 정보이다. 메모리 위에 올라가 있는 인터럽트 서비스 루틴의 시작주소를 알 수 있다. 

 인터럽트 백터 테이블 : 인터럽트 백터들을 테이블형식으로 모아놓은 것이다.

 

인터럽스 서비스 루틴 (인터럽트 핸들러라고도 부른다) : 인터럽트가 발생했을 경우 인터럽트를 처리하기 위한 프로그램이다. (이 서비스 루틴도 메모리에 올라가 있다.)

 

 인터럽트가 발생 → 인터럽트 요청 신호와 인터럽트 백터를 보냄 → IF전 인터럽트 여부 확인 → 인터럽트 플래그 확인 → 인터럽트를 처리할 수 있으면 현재까지의 작업 백업 → 인터럽트 백터를 참조하여 인터럽트 서비스 루틴 수행 → 백업해 놓은 작업 복구 

 

폴트 : 예외를 처리한 직 후 예외가 발생한 코드부터 실행하는 것

트랩 : 예외가 발생한 명령어의 다음 명령어부터 실행하는 것 (디버깅시 사용)

중단 : 프로그램 강제종료 (심각한 오류)

  

 

 

 

 

 

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 명령어 파이프라인  (0) 2023.06.12
코어와 멀티코어  (0) 2023.06.02
CPU의 구성  (0) 2023.05.25
명령어  (0) 2023.04.24
헷갈리는 데이터 단위 정리  (0) 2023.04.19