Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  Exception 과 Interrupt 
작성일시 : 2007. 11. 6. 13:41 | 분류 : Windows Server/Kernel

Trap : exception 및 interrupt 발생시 실행 thread 를 잡아 정해진 위치의 제어에 전달하는 프로세스 메카니즘, Windows 에서는 특정 interrupt나 exception을 처리하는 함수 Trap handler로 제어 전달


Interrupt : 프로세서의 실행과 관계 없는 비동기 이벤트 (I/O 장치, 프로세스 클럭등...)
Exception : 특정 명령 실행으로 인한 동기적 조건 (메모리 엑세스 위반, 특정 디버거 실행, 0으로 나누기 `1등...)

구체 적으로 인터럽트란 이벤트가 발생했음을 하드웨어에 알려 일시적으로 다른 코드를 처리한다. 즉 인터럽트가 발생하면 특정 주소의 명령어를 실행하고 실행이 끝나면 다시 이전에 처리하던 프로그램을 처리하게 된다.

하드웨어는 인터럽트의 종류를 식별하기 위해 '인터럽트 번호'를 할당하고, 실제 인터럽트가 발생했을때 해당 번호에 대응하는 인터럽트 처리기의 실행을 시작한다.

CPU가 각각의 인터럽트 처리기의 주소를 얻어올 때는 메모리에 있는 IDT (인터럽트 디스크립터 테이블)이라는 영역을 참조한다.여기에는 인터럽트 처리기가 존재하는 주소를 나타내는 셀렉터 값과 오프셋 속성을 저장한 인터럽트 디스크립터가 인터럽트 번호 순서 대로 나열 되어 있다.

운영체제는 시작 시 이 테이블을 생성해서 선두 주소를 IDTR 레지스터에 저장해 두고, 인터럽트가 발생하면 CPU는 이 레지스터를 참조해 인터럽트 디스크립터 테이블 주소를 얻고, 인터럽트 번호에 대응하는 엔트리에서 인터럽트 처리기 주소를 구한다.

Exception : 특정 명령 실행으로 인한 동기적 조건 (메모리 엑세스 위반, 특정 디버거 실행, 0으로 나누기 `1등...) 소프트웨어에 의해 발생한다.

|