iOS 공부하는 감자

인터럽트와 트랩 본문

운영체제

인터럽트와 트랩

DongTaTo 2022. 6. 29. 12:58
반응형

인터럽트란 어떤 신호가 들어왔을 때 인터럽트를 처리하기 위해 CPU를 잠깐 정지시키는 것을 말한다.

인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다.

각 인터럽트는 우선순위가 있고, 우선순위에 따라 핸들러 함수가 실행된다.

인터럽트 핸들러 함수?
인터럽트가 발생했을 때 이를 핸들링(처리)하기 위한 함수로, 커널 내부의 IRQ를 통해 호출된다.

 

인터럽트가 발생하는 이유

  1. 키보드 마우스 등 I/O 디바이스와 디스크에서 발생
  2. 0으로 숫자를 나누는 산술 연산에서의 발생
  3. 프로세스의 오류로 인한 발생

 

인터럽트는 "하드웨어 인터럽트", "소프트웨어 인터럽트" 두 가지로 구분된다.

 


 

하드웨어 인터럽트

키보드와 마우스의 연결 등 I/O 디바이스에서 발생하는 것을 포함하여 프로그램 외부에서 발생하는 인터럽트를 말하며, 일반적으로 그냥 인터럽트라고 하면 하드웨어 인터럽트를 의미한다.

이때 인터럽트 라인이 설계된 이후 순차적인 인터럽트 실행을 중지하고, 운영체제에 시스템콜을 요청해서 원하는 디바이스로 향해 디바이스에 있는 작은 로컬 버퍼에 접근하여 일을 수행한다.

 

 

소프트웨어 인터럽트

트랩(trap)이라고도 부르며, 프로그램 내부에서 발생되는 인터럽트를 말한다.

시스템 콜 또는 예외상황에서 발생한다.

  1. 시스템 콜 : 사용자가 의도적으로 발생시킨 인터럽트
  2. 예외 : 메모리 참조 오류, 0으로 나누기, Overflow 등 프로세스 오류로 발생되는 인터럽트

 

 

 

 

 

 

반응형