日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OS学习笔记】三十一 保护模式九:页目录、页表和页三者的关系详解

發布時間:2023/12/10 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OS学习笔记】三十一 保护模式九:页目录、页表和页三者的关系详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章學習了:保護模式九:段頁式內存管理機制概述

本篇文章接著學習以下內容:

  • 頁目錄概念
  • 頁表概念
  • 頁目錄、頁表與頁之間的關系
  • 虛擬地址(線性地址)到物理地址的具體變換過程。

1、頁目錄、頁表和頁的對應關系

第一個支持分頁式內存管理的是Intel80386處理器。

我們知道,在上一篇文章學習的頁映射表,是一個具有1048576個頁表項的一維表格。又因為每個表項占4字節,所以,映射表的大小是4MB。是的,它很大!!!

為了解決這個占用內存過大的頁映射表,分頁機制采用了層次化的分頁結構。具體實際上就是不采用單一的頁映射表,而是將一個巨大的頁映射表分成兩個層次。如下圖:

如上圖,我們可以讓一個頁目錄指向1024個頁表。然后讓這1024個頁表中的頁表項再指向所對應的物理內存空間的具體頁。

  • 每個頁表可以指向1024個頁,因為每個頁表項是4字節的,所以每個頁表的大小是4KB,剛好是一個頁面的大小。
  • 頁目錄可以指向1024個頁表,同樣也是4KB,剛好是一個頁面的大小。
  • 因為頁目錄和頁表都剛好是一個頁面的大小,所以頁目錄和頁表都可以被當成普通的頁存放于物理內存的頁中。
  • 注意,頁在頁表內的分布是隨機的。老任務不停的關閉,新任務不停的開始,頁面的回收和再分配沒有什么規律可言。

以上的層次化結構是每個任務都有的。或者說,每個任務都有自己的頁目錄,頁表。

如下圖,在處理器內部有一個控制寄存器CR3,存放著當前任務頁目錄的物理地址。故又叫做頁目錄基址寄存器(PDBR)。

每個任務都有自己的任務狀態段TSS。它是任務的標志性結構,存放了和任務相關的各種數據,其中就包括CR3寄存器域,存放了任務自己的頁目錄物理地址。

當任務切換時,處理器切換到新任務執行,而CR3寄存器的內容也要被更新,以指向新任務的頁目錄地址。相應的頁目錄又指向一個個頁表,這就使得每個任務都只在自己的地址空間內運行。

從上圖中可以看出,頁目錄和頁表也是普通的物理頁,混跡于全部的物理頁中。它們和普通的頁的唯一不同就是功能不同。當任務撤銷后,它們和任務所占用的普通物理頁一樣會被回收,并分配給其他任務。

下面我們看一下在多任務環境下,頁目錄表和頁表映射示意圖:

需要注意的就是全局地址空間,所有的任務的頁目錄對應的全局地址空間的那些頁目錄項,都是一樣的,因為所有任務共享全局地址空間。

2、虛擬地址(線性地址)到物理地址的具體變換過程

現在有了分頁,最簡單和最基本的機制就是:CR3寄存器給出了頁目錄的物理基地址;頁目錄給出了所有頁表的物理地址;而每個頁表給出了它所包含的頁的物理地址。

上面該清楚的都清楚了,唯一不明白的是,應該如何使用這種層次化結構來把線性地址轉換成物理地址。

如下圖:

  • 假設現在段部件給出的線性地址是0x00801050
  • 處理器將段部件送過來的線性地址分成三段,高10位:中間10位:低12位。高10位用于索引頁目錄;中間10位用于索引頁表;低12位則是頁內偏移地址
  • 最終我們得到真實的物理地址0x0000C050。這就是處理器要訪問的真實的物理地址

上述圖示很清晰,我們這里不再贅述詳細的轉換過程。

我們唯一需要注意的是:這種變換不是無緣無故的。而是事先安排好的。這其實還是一個反過程:

  • 首先當任務加載時,操作系統先創建虛擬的內存段,并根據段地址的高20位決定它要用到哪些頁目錄項和頁表項。
  • 然后尋找空閑的頁,將原本應該寫入段(因為是虛擬段,所以這里說原本)的數據,寫到一個或者多個物理頁中,并將頁的物理地址填寫到相應的頁表中。
  • 只有這樣提前將頁表填好,在程序真正執行的時候,才能以相反的順序,從頁表中再取出之前填好的頁的物理地址,去相應的物理內存中取指令執行或者找到相應的數據。
  • 這就是一個反過程。在上一篇文章中也有類似的過程。

3、總結

本文學習了:

  • 頁目錄、頁表和頁之間的關系
  • 虛擬地址(線性地址)到物理地址的轉換過程

詳細的內容還是要參考原書籍,這里只是做一個簡單的總結。

學習探討加個人:
qq:1126137994
微信:liu1126137994

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【OS学习笔记】三十一 保护模式九:页目录、页表和页三者的关系详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。