瀏覽單個文章
RogerShih
*停權中*
 
RogerShih的大頭照
 

加入日期: Nov 2000
您的住址: Taipei,ROC
文章: 573
引用:
Originally posted by latw
既然都聊到這了,那小弟我就講詳細點好了,免的有說跟沒說一樣
在Intel的保護模式下的定址分為兩階段,其中一個是Linear Address一個是Physical Address
若沒有開啟分頁功能(即cr0的第31bit設定為0),則Linear Address即為Physical Address
這時候,CPU能使用的MEM就是機器上面所擁有的MEM了.
若是開啟分頁模式,則進入保護模式以後,若要存取某個segment的位置,先透過Sector內的內容,再由GDT或是LDT中定義的segment位置取出其Linear Address
在取出之後,則會參考cr3的內容找到分頁目錄(PDE),再由分頁目錄中找到對應的分頁表(PGE)
將Linear Address對應的physical Address取出,這個才是真正要放入在真實記憶體的位置.
Pentinum pro中可以設定cr0,cr4這兩個register設定成Page始可定址36bit的Physical Address,可惜386並沒有cr4(pentinum以後才有),請問如何定址超過4G?(參考IA 32的pdf,第3-20頁,
PAGE TRANSLATION USING 32-BIT PHYSICAL ADDRESSING)
保護模式的部分參考,80486/Pentinum 保護模式原理與實務(施威銘研究室 著)


386 有 CR0~CR3, 至於 CR4 你上面沒提到, 只提到 CR3, 如果你上面無誤, CR0 跟 CR3 , 386 都有.

補充一下: 找的到的話, 可以看看 侯俊傑 寫的 記憶體管理與多工, 如果只說實際訂只能力, 386 的確是 4 GB, 但這只是一個 offset, 配合 8k GDT以及 8k LDT, 每個節區可達 4GB , 虛擬定址能力可達 64TB (需配合 page swaping機制). 277 頁.

PS: 還好, 十年的書沒丟
舊 2004-05-09, 11:34 PM #33
回應時引用此文章
RogerShih離線中