天天看點

内零頭與外零頭

作業系統在配置設定記憶體時,有時候會産生一些空閑但是無法被正常使用的記憶體區域,這些就是記憶體碎片,或者稱為記憶體零頭。

這些記憶體零頭一共分為兩類:内零頭和外零頭。

内零頭

是指程序在向作業系統請求記憶體配置設定時,系統滿足了程序所需要的記憶體需求後,還額外還多分了一些記憶體給該程序,也就是說額外多出來的這部分記憶體歸該程序所有,其他程序是無法通路的。

外零頭

是指記憶體中存在着一些空閑的記憶體區域,這些記憶體區域雖然不歸任何程序所有,但是因為記憶體區域太小,無法滿足其他程序所申請的記憶體大小而形成的記憶體零頭。

頁式存儲管理

是以頁為機關(頁面的大小由系統确定,且大小是固定的)向程序配置設定記憶體的。

例如:

假設記憶體總共有100K,分為10頁,每頁大小為10K。現在程序A提出申請56K記憶體,因為頁式存儲管理是以頁為機關程序記憶體配置設定的,是以系統會向程序A提供6個頁面,也就是60K的記憶體空間,那麼在最後一頁中程序隻使用了6K,進而多出了4K的記憶體碎片,但是這4K的記憶體碎片系統已經配置設定給程序A了,其他程序是無法再通路這些記憶體區域的。

這種記憶體碎片就是内零頭。

段式存儲管理

以段(段的大小是程式邏輯确定,且大小不是固定的)為機關向程序進行記憶體配置設定的,程序申請多少記憶體,系統就給程序配置設定多少記憶體,這樣就不會産生内零頭,但是段式配置設定會産生外零頭。

繼續閱讀