2013-06-05 1 views

답변

1

X86 아키텍처에서 인터럽트 처리기는 인터럽트 설명자 테이블 (IDT)에 정의되어 있습니다.

읽기 모드에서 IDT는 256 개의 4 바이트 리얼 모드 포인터로 구성됩니다. 시스템 시작시 BIOS는이 IDT를 초기화하여 리얼 모드 프로그램 (예 : DOS 코드/OS 부팅 코드)에 대한 기본 서비스를 제공합니다. 핸들러는 모두 BIOS에 정의되어 있습니다.

나중에 OS 부팅 코드가 프로세서를 보호 모드로 전환하고 새로운 IDT를로드 할 수 있습니다. 이번에 IDT는 메모리에 저장된 8 바이트 디스크립터의 배열이다. 이 시점부터 OS는 BIOS 대신 인터럽트를 처리하기 시작합니다.

따라서 첫 번째 int 0x10이 BIOS 서비스를 리얼 모드에서 호출 한 다음 해당 처리가 보호 모드에서 예외를 처리하기 위해 OS에 전달 된 이후 모순이 없습니다.

+0

Thx. 당신의 대답은 나에게 매우 좋다. –

관련 문제