簡體   English   中英

linux內核如何防止BIOS系統調用?

[英]how does linux kernel prevents the BIOS system calls?

BIOS調用在Linux OS中不可用。 我想知道內核如何阻止執行包含對BIOS子例程的調用的指令?

BIOS通常以16位模式提供,而不是運行Linux的x86的32位或64位模式。

Linux進程使用虛擬內存用戶模式下運行,它具有自己的虛擬地址空間

某些機器指令(尤其是用於進入BIOS的INT )具有特權,因此無法在用戶模式下運行。 如果嘗試在用戶模式下運行它們,則處理器會產生機器異常,內核會通過發送一些信號來處理它。 (某些INT也用於系統調用,但首選SYSENTER指令)。

應用程序使用syscall與內核交互(也許通過VDSO )。

閱讀組裝方法

INT n指令生成對使用目標操作數指定的中斷或異常處理程序的調用。 目的操作數指定一個從0到255的中斷向量號,編碼為8位無符號中間值。 每個中斷向量號為IDT中的門描述符提供一個索引。

所選中斷描述符又包含指向中斷或異常處理程序過程的指針。 在保護模式下(Linux僅在保護模式下工作),IDT包含一個8字節描述符數組,每個描述符是一個中斷門,陷阱門或任務門。

該IDT由操作系統設置。 Linux對其進行了設置,以便描述符指向其自己的處理程序,而不是指向BIOS處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM