一步步编写操作系统 58 门、调用门与RPL序 3
接前文:
并不是任何當前特權級都可以使用門結構, 在使用門結構之前,處理器要例行公事做特權級檢查,參與檢查的不只是CPL和DPL,還有RPL,為了說清楚這個檢查過程,咱們得先介紹下RPL。
RPL,即請求特權級,為了解釋清楚,咱們得多花點工夫好好說道說道。
我們本節始終在說特權級轉移,處理器從一個特權級轉移到另一個特權級,任意時刻處理器所處的特權級稱為當前特權級。重復敘述的目的是強調當前特權級是對處理器而言的概念,并不是對代碼段而言。當前特權級CPL是指處理器任意時刻的身份地位,其變化的原因是處理器從某一特權級的代碼段轉移到另一特權級的代碼段上運行,代碼段的特權級DPL是未來處理器的CPL。
各種門結構存在的目的就是為了讓處理器提升特權級,這樣處理器才能夠做一些低特權級下無法完成的工作。比如,當用戶程序想讀取硬盤文件時,由于處理器在執行用戶程序時所處的特權級為3,一般情況下操作系統不允許用戶程序操作硬盤。此時必須由用戶代碼指揮處理器使用某種門結構(如調用門)進入0特權級,在提升了處理器的CPL之后才能控制硬盤、讀取文件。是不是說的有些抽象?其實就是用戶程序進行系統調用使處理器進入內核態執行內核服務。
當處理器提升為0特權級時,任何事情都能做,是最強大同時也是最危險的狀態,如果用戶程序通過某種門結構使處理器進入到0特權級,它很有可能會被3特權級的用戶程序利用,這樣用戶程序就有機會訪問0特權級下的數據。
調用門是一個描述符,稱為門描述符,其中記錄的是內核服務程序所在代碼段的選擇子及在代碼段中的偏移地址。門描述符是定義在全局描述符表GDT和局部描述符表LDT中,所以,要想使用調用門,就要通過門描述符的選擇子,這一點和訪問數據段類似,總之,保護模式下離不開描述符,有描述符就離不開選擇子。
我們平時很少有人直接和調用門打交道,大多數程序員甚至都不知道調用門是怎么回事,所以在接觸調用門時通常會感到有些吃力,這是由三方面造成的:
綜上所述,調用門是在匯編語言中使用,能發揮其特長的場所是多段模型,若沒有此方面的編程經驗,大家先提前有個印象,也沒什么復雜的,僅僅是大家很少接觸而已。
總結
以上是生活随笔為你收集整理的一步步编写操作系统 58 门、调用门与RPL序 3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将C语言翻译成汇编语言,如何把汇编语
- 下一篇: 一步步编写操作系统 62 函数调用约定