1. 程式人生 > >處理器之MMU(三)

處理器之MMU(三)

獨立 更新 系統 都沒有 內存管理 str 單元 硬件 模式

今天我們來看看嵌入式中的內存管理單元(MMU),它是現代處理器對內存進行高效管理的功能單元,操作系統利用內存管理單元能夠實現虛擬內存和內存保護。我們先來看個有意思的問題,下面的程序運行兩次後的輸出是否完全相同?為什麽呢?

技術分享圖片

我們先來分析下。理論上,不同進程在內存中的不同位置執行;因此,全局變量的地址是不同的。關系如下

技術分享圖片

我們來看看結果

技術分享圖片

我們看到兩次運行的結果的地址是相同的,也就是說我們之前的分析是錯誤的。我們在開發中經常被遺忘的事實:1、應用程序開發時,面對的內存為虛擬內存;2、虛擬內存模式下使用的內存地址為虛擬地址;3、每一個進程擁有獨立私有的虛擬地址空間

。換句話說,虛擬內存是與實際物理內存無關的,它是一個假想的足夠大的內存。那麽我們來思考下,內存需求總量為 1G 的應用程序是否能夠運行於硬件內存為 256M 的計算機呢?在現代肯定是支持的,通過虛擬內存來支持。虛擬內存的意義是能夠支持多個大的內存需求量的進程同時運行於較小的物理內存中,如下

技術分享圖片

舉個例子來說。我們在上小學時,老師都是將講義和書上的內容搬到黑板上進行講解。剛開始的時候黑板上啥都沒有,空間很大,老師可以隨意的寫內容。但是隨著時間的推移,在後半節的時候,這時黑板已經寫滿了內容。老師想要繼續寫,就得擦掉一些已經寫過的內容了以便寫新的內容。我們來看看虛擬內存的機制:a> 虛擬內存需要重新映射到物理內存;b> 虛擬地址映射到物理內存中的實地址;c> 每次只有進程的少量代碼在物理內存中運行;d> 大部分進程代碼位於存儲器中。

在虛擬內存管理中,它是以頁式內存管理的。頁式內存單位,指一定數量的內存(如 4K);虛擬內存和物理內存以頁為單位管理;進程的活動頁被載入內存時,記錄地址的映射關系。關系如下

技術分享圖片

頁式內存管理法將內存分為兩個部分:(p,d)。p 指的是地址高位,頁面號;d 指的是地址低位,頁內偏移量。如下

技術分享圖片

我們是通過頁映射表來進行物理地址和虛擬地址映射的。具體如下

技術分享圖片

它是進行 MMU 時,先是進行查找,根據查找到的對應關系然後進行對應的映射到虛擬內存的顯示。那如果沒有找到對應的關系呢?我們來看看具體的過程,如下

技術分享圖片

如果沒找到的話,便從物理內存中換出閑置的頁面,再更新頁映射表進而插入物理內存中。最後再進行地址的映射到物理內存中進行顯示。那麽我們來思考下,這幾種方式為何能提高電腦性能?1、更換主頻更高的處理器(同系列);2、增加物理內存大小;3、更換 SSD 固態硬盤。第一種的話換一個更高的處理器,也就意味著處理速度更快了,因此電腦性能就提升了。第二中的話,物理內存越大,也就意味著可以不用進行頁面的替換,這樣效率自然就提升了。第三種的話,更換 SSD 固態硬盤,在內存的處理速度就更快了,因而效率就越高了。

處理器之MMU(三)