操作系統實驗四:保護模式之局部任務(LDT)初探

      通過前幾次實驗,對於實模式與保護模式間的跳轉已經有了充分認知。此次實驗與接下來的實驗主要集中在認識保護模式下的一些特性,

如多任務的基礎(局部任務LDT)、分頁機制、中斷、異常、I/O等。爲了儘可能將實驗設計的簡單,我儘量將以上實驗壓縮在引導扇區的

512字節內。爲了節省空間,我將pm16.c精簡了許多,它只負責跳轉到保護模式(程序限制在80字節以內),在pm32.c裏會重新加載新

的GDT(程序加載到內存0x7c50處)。


此次實驗內容爲:

    (pm16.c部分)

    1.清屏,並跳轉到保護模式(pm32.c,內存地址0x7c50)

    (pm32.c部分)

    1.加載新的GDT

    2.爲GDT中局部任務描述符設置LDT的基地址

    3.顯示字符串This is protect model.

    4.跳轉到局部任務

    5.顯示字符串This is local model.

    6.進入死循環

 

 

實驗代碼如下:

code:run.c(因爲重新設置了pm32.c的內存分佈,所以需要修改run.c中的幾個數據,下面是修改好了的run.c代碼

 

code:pm.h

 

code:pm16.c

 

code:pm32.c

 

 

想要實驗以上代碼的朋友請注意:

1.到楊曉兵大大的博客上下載安裝yc09編譯器,安裝只需一分鐘左右。

2.將此次試驗中的run.c、pm.h、pm16.cpm32.c代碼拷貝到某個實驗用的文件夾內。

3.在安裝yc09的目錄YC09/example文件夾內找到bochs.exe、BIOS-bochs-latest、VGABIOS-elpin-2.40、x11-pc-us.map四個文件拷貝到試驗用的文件夾內。

4.使用yc09編譯運行run.c

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章