操作系統內存管理
邏輯地址即虛擬地址,存在目的即爲了更充分地利用物理內存,對於一個32的操作系統,虛擬內存大小爲4G,所以每個程序都以爲自己有4G的內存,算是讓內存“無限大”。
爲了更好地利用內存空間,我們把內存進行分頁,即按照頁單位進行獲取內存,虛擬內存和物理內存都進行了分頁處理,爲了區分兩者,我們把虛擬內存的稱爲頁,而物理內存的稱爲幀。而我們需要根據虛擬內存找到對應的物理內存,這就是內存映射,用來存儲映射關係的,我們稱爲頁表,頁表裏有頁號和幀號的對應關係。而物理內存是有限的,所以我們需要一些額外的磁盤,這樣頁表中關於幀號這一欄可能存放的磁盤,那麼當我們找到磁盤時,這時就會發生缺頁中斷,觸發程序進入內核態,內核就把那一幀數據加載到內存,若此時內存已滿,這時就會採用一些頁的置換算法,把內存中的一幀和磁盤中的那一幀進行交換。
由於頁表也佔用內存,所以會導致內存浪費,且中間有查表操作,效率也會有降低,所以有內存映射的一些優化方法:(1)時間優化:採用快表 快表中存放的是最近經常用到一些內存,大小較小,可以直接加載到CPU中,所以提高速率;(2)空間優化 採用多級頁表;(3)分段 即虛擬內存進行分段
虛擬內存分段示意圖: