Linux之分段機制和分頁機制

2021-08-07 02:09:25 字數 899 閱讀 4375

通用作業系統的設計原則:盡量縮短系統的平均響應時間並提高系統的吞吐率,在單位時間內為盡可能多的為使用者請求提供服務。如對於整個系統來說,注重所有任務的平均響應時間而不關心單個任務的響應時間,對於某個單個任務來說,注重每次執行的平均響應時間而不關心某次特定執行的響應時間。(比如記憶體管理中的lru替換策略,可以確保大部分的資料在較短的時間內被訪問,減少平均訪問時間;cache等也是遵循這個原則),所以linux屬於通用作業系統

段機制(虛擬位址轉換成線性位址),「段」是虛擬位址空間的基本單位,一般情況下虛擬位址的表示方法為段基址:偏移量,但是有些平台不支援段機制,只支援分頁機制,為了增加linux的可移植性,linux創造性的提出了段基址為0,此時偏移量 == 線性位址。所以linux中也儲存了段機制,增加了可移植性。在linux中虛擬位址==線性位址。

分頁機制(線性位址轉換成實體地址)頁頁面

頁表把線性位址分為若干大小相等的片稱為「頁」

把實體地址空間分成與頁大小相等的若干儲存塊稱為「頁面」

「頁表」是把線性位址對映成實體地址的一種資料結構

大小為4k

大小為4k

大小為4byte《位元組》稱為頁表項

線性位址到實體地址的轉換

pe方式00

實模式,8080操作01

保護模式,但不允許分頁10

出錯11允許分頁的保護模式

* cr1是未定義的控制暫存器,供將來的處理器使用

* cr2是缺頁線性位址暫存器,儲存最後一次出現缺頁的全32位線性位址

* cr3是頁目錄基址暫存器,儲存頁目錄的實體地址,頁目錄總是放在以4k為單位的儲存器邊緣上,因此,其位址的低12位一直是0,即使寫上內容也不會被理會。

linux分段分頁機制

mmu使用分段單元硬體把邏輯位址轉換為虛擬位址,再使用分頁單元硬體把虛擬位址轉換為實體地址。因為這兩部分表示乙個獨一無二的邏輯位址,虛擬位址作為這個段位址另一種形式,當然也需要這兩個部分作為轉換的 原材料。這裡涉及乙個叫做段的暫存器,它的作用是放段選擇符 識別符號 共有六種 cs 儲存指向 的段的選...

Linux記憶體定址之分段機制

最近在學習linux核心,讀到 深入理解linux核心 的記憶體定址一章。原本以為自己對分段分頁機制已經理解了,結果發現其實是一知半解。於是,查詢了很多資料,最終理順了記憶體定址的知識。現在把我的理解記錄下來,希望對核心學習者有一定幫助,也希望大家指出錯誤之處。相信學過作業系統課程的人都知道分段分頁...

Linux 記憶體定址之分段機制

最近在學習linux核心,讀到 深入理解linux核心 的記憶體定址一章。原本以為自己對分段分頁機制已經理解了,結果發現其實是一知半解。於是,查詢了很多資料,最終理順了記憶體定址的知識。現在把我的理解記錄下來,希望對核心學習者有一定幫助,也希望大家指出錯誤之處。相信學過作業系統課程的人都知道分段分頁...