Skip to content

interrupt

mjbin edited this page May 8, 2026 · 1 revision

인터럽트

인터럽트와 예외

인터럽트와 예외

차이점 인터럽트: 외부 디바이스에 의해 발생하여 프로세서에 전달되는 이벤트 예외: 프로세서 내부에서 페이지 폴트/잘못된 명령 등으로 인한 오류로 발생하는 이벤트

두가지 이벤트 모두 처리하는 함수가 존재한다; 인터럽트 or 예외 핸들러 이하부터는 통칭핸들러로 통일한다.

os 모드별 핸들러 구현방식

  1. 리얼모드: IVT(Interrupt Vector Table) 활용 세그먼트:어드레스 형태로, 0x0000:0x0000 에 위치한다.

  2. 보호모드: IDT(Interrupt Descritp Table) 활용

    • 태스크 게이트: 인터럽트/예외 발생시 특정 태스크로 전환하여 처리
    • 인터럽트 게이트: 핸들러가 처리중일때 lock, 특정 핸들러를 이용하여 처리
    • 트랩 게이트: 핸들러가 처리중일때 다른 핸들러 호출가능, 특정 핸들러를 이용하여 처리
  3. IA-32e모드:

    • 인터럽트 게이트:
    • 트랩 게이트:
    • IST(Interrupt Stack Table): 핸들러를 위한 별도의 스택공간 할당

IST: IA-32e모드에서만 지원하는 기능으로, 현재 함수가 사용중인 스택 공간이 충분치 않을수 있으므로, 핸들러를 위한 별도의 스택공간을 할당한다.

Clone this wiki locally