BIOS โหลดตารางขัดจังหวะโดยอัตโนมัติหรือไม่

ฉันเคยเห็นโปรแกรมเช่น bootloaders ซึ่งทำการขัดจังหวะเช่น int 10, int 13 เป็นต้น แน่นอนว่ารายการเหล่านี้ไม่ได้มีอยู่เสมอไป BIOS จึงโหลดมันขึ้นมาใช่ไหม หากเป็นเช่นนั้น BIOS จะโหลดอินเทอร์รัปต์ตัวใด นอกจากนี้ เป็นไปได้ไหมที่จะเขียนทับรายการเหล่านี้ อย่างไรก็ตาม ทั้งหมดนี้คือ Intel x86


person user3724492    schedule 17.09.2014    source แหล่งที่มา
comment
en.wikipedia.org/wiki/BIOS_interrupt_call   -  person NPE    schedule 17.09.2014
comment
คำถามประเภทนี้ไม่เกี่ยวข้องอย่างสิ้นหวังในทุกวันนี้ BIOS ที่ทันสมัยที่รองรับ UEFI ทำงานในโหมดป้องกัน   -  person Hans Passant    schedule 17.09.2014
comment
ขอบคุณ ฮันส์ แต่ Linux จะไม่ลบการขัดจังหวะของ BIOS และแทนที่ด้วยตัวมันเองใช่หรือไม่   -  person user3724492    schedule 13.01.2015


คำตอบ (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

person amaneureka    schedule 19.10.2014