亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

x86分頁是如何工作的?

x86分頁是如何工作的?

x86分頁是如何工作的?這個問題是為了填補關于這個問題的免費信息的空白。我相信一個好的答案將適合于一個大的,所以答案,或至少在幾個答案。主要目標是給完整的初學者提供足夠的信息,這樣他們就可以自己掌握手冊,并且能夠理解與分頁相關的基本OS概念。建議的準則:答案應該是初學者友好的:具體的,但可能是簡化的例子是非常重要的。歡迎應用上述概念。引用有用的資源是好的歡迎介紹OSS如何使用分頁功能。歡迎Pae和PSE解釋。歡迎進入x86_64的小版本相關的問題,以及為什么我認為它們不是欺騙:x86頁表是如何工作的?標題幾乎與這一問題相同,但該機構提出與CR3和TLB有關的具體問題。這個問題是這個問題的一個子集。x86虛擬化是如何工作的?*身體只要求消息來源。
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

以下是一個非常簡短、高層次的答案:

x86處理器以幾種可能的模式之一工作(大致是:真實的、受保護的、64位的)。每種模式都可以使用幾種可能的內存尋址模型中的一種(但不是每一種模式都可以使用每個模型),即:實模式尋址、分段尋址和平行線尋址。

在現代世界中,只有保護模式或64位模式下的平坦線性尋址是相關的,這兩種模式本質上是相同的,主要的區別是機器字的大小,因此內存的可尋址量。

現在,內存尋址模式賦予機器指令的內存操作數(如mov DWORD PTR [eax], 25,存儲32位(又名dword)將值25的整數放入內存中,該內存的地址存儲在eax32位寄存器)。在平坦線性尋址中,這個數字在eax允許在一個連續的范圍內運行,從零到最大值(在我們的例子中是2)。32?1)。

然而,平坦的尋址可以是傳呼未傳呼..在不分頁的情況下,地址直接引用物理內存。帶著分頁,處理器的內存管理單元(或MMU)透明地為所需地址(現在稱為虛擬地址)進入查找機制,即所謂的頁表,并獲得一個新值,該值被解釋為物理地址。最初的操作現在運行在物理內存中的這個新的轉換地址上,即使用戶只看到虛擬地址。

分頁的主要好處是頁表由操作系統管理。因此,操作系統可以任意修改和替換頁面表,例如“切換任務”時。它可以保存一個完整的頁表集合,每個“進程”一個,每當它決定某個特定進程要在給定的CPU上運行時,它就會將進程的頁表加載到該CPU的MMU中(每個CPU都有自己的一組頁表)。結果是每個進程都看到了自己的虛擬當操作系統不得不為其分配內存時,無論哪個物理頁面是空閑的,地址空間看起來都是一樣的。它永遠不知道任何其他進程的內存,因為它不能直接訪問物理內存。

頁表是嵌套的樹狀數據結構,存儲在普通內存中,由操作系統編寫,但由硬件直接讀取,因此格式是固定的。通過設置一個特殊的CPU控制寄存器指向頂層表,它們將被“加載”到MMU中。CPU使用一個稱為TLB的緩存來記住查找,因此對相同幾個頁面的重復訪問比分散的訪問要快得多,這是因為TLB丟失的原因以及通常的數據緩存原因。經常會看到術語“TLB條目”用于指頁表條目,即使它們沒有緩存在TLB中。

如果您擔心某個進程可能只是禁用分頁或嘗試修改頁表:這是不允許的,因為x86實現了特權級別(稱為“循環”),用戶代碼執行的權限級別太低,無法修改CPU的頁表。


查看完整回答
反對 回復 2019-07-10
  • 2 回答
  • 0 關注
  • 730 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號