處理器之MMU(三)
我們先來分析下。理論上,不同進程在內存中的不同位置執行;因此,全局變量的地址是不同的。關系如下
我們來看看結果
我們看到兩次運行的結果的地址是相同的,也就是說我們之前的分析是錯誤的。我們在開發中經常被遺忘的事實:1、應用程序開發時,面對的內存為虛擬內存;2、虛擬內存模式下使用的內存地址為虛擬地址;3、每一個進程擁有獨立私有的虛擬地址空間
舉個例子來說。我們在上小學時,老師都是將講義和書上的內容搬到黑板上進行講解。剛開始的時候黑板上啥都沒有,空間很大,老師可以隨意的寫內容。但是隨著時間的推移,在後半節的時候,這時黑板已經寫滿了內容。老師想要繼續寫,就得擦掉一些已經寫過的內容了以便寫新的內容。我們來看看虛擬內存的機制:a> 虛擬內存需要重新映射到物理內存;b> 虛擬地址映射到物理內存中的實地址;c> 每次只有進程的少量代碼在物理內存中運行;d> 大部分進程代碼位於存儲器中。
頁式內存管理法將內存分為兩個部分:(p,d)。p 指的是地址高位,頁面號;d 指的是地址低位,頁內偏移量。如下
我們是通過頁映射表來進行物理地址和虛擬地址映射的。具體如下
它是進行 MMU 時,先是進行查找,根據查找到的對應關系然後進行對應的映射到虛擬內存的顯示。那如果沒有找到對應的關系呢?我們來看看具體的過程,如下
如果沒找到的話,便從物理內存中換出閑置的頁面,再更新頁映射表進而插入物理內存中。最後再進行地址的映射到物理內存中進行顯示。那麽我們來思考下,這幾種方式為何能提高電腦性能?1、更換主頻更高的處理器(同系列);2、增加物理內存大小;3、更換 SSD 固態硬盤。第一種的話換一個更高的處理器,也就意味著處理速度更快了,因此電腦性能就提升了。第二中的話,物理內存越大,也就意味著可以不用進行頁面的替換,這樣效率自然就提升了。第三種的話,更換 SSD 固態硬盤,在內存的處理速度就更快了,因而效率就越高了。
處理器之MMU(三)