邏輯地址、線性地址、物理地址

一、CPU段式內存管理,邏輯地址轉換爲線性地址:


首先,給定一個完整的邏輯地址[段選擇符:段內偏移地址], 

1、看段選擇符的T1=0還是1,知道當前要轉換是GDT中的段,還是LDT中的段,再根據相應寄存器,得到其地址和大小。我們就有了一個數組了。

2、拿出段選擇符中前13位,能在這個數組中,查找到對應的段描述符,這樣,他的Base,即基地址就知道了。

3、把Base + offset,就是要轉換的線性地址了。還是挺簡單的,對於軟件來講,原則上就需要把硬件轉換所需的信息準備好,就能讓硬件來完成這個轉換了。

二、CPU的頁式內存管理,線性地址轉爲物理地址:



1、從cr3中取出進程的頁目錄地址(操作系統負責在調度進程的時候,把這個地址裝入對應寄存器); 

2、根據線性地址前十位,在數組中,找到對應的索引項,因爲引入了二級管理模式,頁目錄中的項,不再是頁的地址,而是個頁表的地址。(又引入了一個數組),頁的地址被放到頁表中去了。

3、根據線性地址的中間十位,在頁表(也是數組)中找到頁的起始地址;

4、將頁的起始地址和線性地址中最後12位相加,得到最終我們想要的物理地址;


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