嵌入式Linux系統 基礎知識 虛擬記憶體與物理記憶體

2021-10-01 10:39:00 字數 1243 閱讀 2185

在很久以前,還沒有虛擬記憶體概念的時候,程式定址用的都是實體地址。程式能定址的範圍是有限的,這取決於cpu的位址線條數。比如在32位平台下,定址的範圍是2^32也就是4g。並且這是固定的,如果沒有虛擬記憶體,且每次開啟乙個程序都給4g的物理記憶體,就可能會出現很多問題:

於是針對上面會出現的各種問題,虛擬記憶體就出來了。

每乙個程序執行時都會得到4g的虛擬記憶體。這個虛擬記憶體你可以認為,每個程序都認為自己擁有4g的空間,這只是每個程序認為的,但是實際上,在虛擬記憶體對應的物理記憶體上,可能只對應的一點點的物理記憶體,實際用了多少記憶體,就會對應多少物理記憶體。

程序得到的這4g虛擬記憶體是乙個連續的位址空間(這也只是程序認為),而實際上,它通常是被分隔成多個物理記憶體碎片,還有一部分儲存在外部磁碟儲存器上,在需要時進行資料交換。

每次我要訪問位址空間上的某乙個位址,都需要把位址翻譯為實際物理記憶體位址;

所有程序共享這一整塊物理記憶體,每個程序只把自己目前需要的虛擬位址空間對映到物理記憶體上;

程序需要知道哪些位址空間上的資料在物理記憶體上,哪些不在(可能這部分儲存在磁碟上),還有在物理記憶體上的**,這就需要通過頁表來記錄;

頁表的每乙個表項分兩部分,第一部分記錄此頁是否在物理記憶體上,第二部分記錄物理記憶體頁的位址(如果在的話);

當程序訪問某個虛擬位址的時候,就會先去看頁表,如果發現對應的資料不在物理記憶體上,就會發生缺頁異常;

缺頁異常的處理過程,作業系統立即阻塞該程序,並將硬碟裡對應的頁換入記憶體,然後使該程序就緒,如果記憶體已經滿了,沒有空地方了,那就找乙個頁覆蓋,至於具體覆蓋的哪個頁,就需要看作業系統的頁面置換演算法是怎麼設計的了。

我們的cpu想訪問虛擬位址所在的虛擬頁(vp3),根據頁表,找出頁表中第三條的值.判斷有效位。 如果有效位為1,drma快取命中,根據物理頁號,找到物理頁當中的內容,返回。

若有效位為0,引數缺頁異常,呼叫核心缺頁異常處理程式。核心通過頁面置換演算法選擇乙個頁面作為被覆蓋的頁面,將該頁的內容重新整理到磁碟空間當中。然後把vp3對映的磁碟檔案快取到該物理頁上面。然後頁表中第三條,有效位變成1,第二部分儲存上了可以對應物理記憶體頁的位址的內容。

缺頁異常處理完畢後,返回中斷前的指令,重新執行,此時快取命中,執行1。

將找到的內容對映到告訴快取當中,cpu從告訴快取中獲取該值,結束。

嵌入式Linux系統 基礎知識

1 計算機系統 運算器 控制器 儲存器 輸入裝置 輸出裝置 cpu 處理器 運算器 控制器 暫存器 內部匯流排 mpu 微處理器 cpu mcu 微控制器 cpu 儲存器 外圍電路 mpu 通常代表乙個 cpu 處理器 而 mcu 則強調把 處理器 儲存器和外圍電路整合在乙個晶元中。早期,微控制器被...

嵌入式系統基礎知識 了解嵌入式系統

嵌入式系統用於大量電子裝置,它們的設計涉及到硬體和軟體技術。隨著計算機技術的進步,其技術也越來越多地嵌入到越來越多的電子產品中。嵌入式系統提供的功能是使電子裝置具有比僅使用硬體技術時更大的能力。因此,嵌入式系統可用於各種電子裝置和小工具中。從電子計時器等專案中的少量處理,到遊戲控制台甚至主要工廠和其...

嵌入式系統基礎知識 了解嵌入式系統

嵌入式系統用於大量電子裝置,它們的設計涉及到硬體和軟體技術。隨著計算機技術的進步,其技術也越來越多地嵌入到越來越多的電子產品中。嵌入式系統提供的功能是使電子裝置具有比僅使用硬體技術時更大的能力。因此,嵌入式系統可用於各種電子裝置和小工具中。從電子計時器等專案中的少量處理,到遊戲控制台甚至主要工廠和其...