ฉันเคยเห็นโปรแกรมเช่น bootloaders ซึ่งทำการขัดจังหวะเช่น int 10, int 13 เป็นต้น แน่นอนว่ารายการเหล่านี้ไม่ได้มีอยู่เสมอไป BIOS จึงโหลดมันขึ้นมาใช่ไหม หากเป็นเช่นนั้น BIOS จะโหลดอินเทอร์รัปต์ตัวใด นอกจากนี้ เป็นไปได้ไหมที่จะเขียนทับรายการเหล่านี้ อย่างไรก็ตาม ทั้งหมดนี้คือ Intel x86
BIOS โหลดตารางขัดจังหวะโดยอัตโนมัติหรือไม่
คำตอบ (1)
ใช่ BIOS จะโหลดตาราง Interrupts ของตัวเองเมื่อระบบถูกบูท โดยมีความเฉพาะเจาะจงมากขึ้น เฉพาะเมื่ออยู่ในโหมดจริงเท่านั้น ที่เรียกว่า IVT (Interrupt vector table) มีการแปลเป็นภาษาท้องถิ่นในหน่วยความจำ RAM KB แรกสุด
ตอนนี้คำถามของคุณว่า BIOS ขัดจังหวะตัวไหน? มันขึ้นอยู่กับผู้ผลิต BIOS โดยสิ้นเชิง เมื่อแนวคิดเรื่องการขัดจังหวะของ BIOS ถูกนำมาใช้ครั้งแรก ผู้ผลิตหลายรายตัดสินใจใช้การเรียก BIOS กว่า 1,000 ครั้ง แต่มีเพียงไม่กี่อันเท่านั้นที่เป็นมาตรฐานมากและรวมอยู่ใน BIOS ทั้งหมด บางส่วนอยู่ด้านล่าง
0x10 --> Video
0x13 --> Disk
0x14 --> Serial Port
0x16 --> Keyboard
ข้อมูลอ้างอิง: http://en.wikipedia.org/wiki/BIOS_interrupt_call#Interrupt_table
IDT ในโหมดที่ได้รับการป้องกันนั้นเหมือนกับ IVT ซึ่งจะบอก CPU ว่า ISR อยู่ที่ใดใน RAM การเขียนทับ IVT ในโหมดจริงนั้นใช้ได้จนกว่าคุณจะชี้ไปยังตำแหน่งที่ถูกต้อง ไม่เช่นนั้นจะทำให้เกิดข้อผิดพลาดสามเท่าและรีเซ็ต CPU