在為多個程序分配記憶體空間時,由於記憶體的大小固定,所以如何分?分多少?量不夠?等問題都會影響到記憶體的利用效率
涉及三個問題:
1)最小物理塊的確定,乙個程序有多個頁組成,在記憶體中完全儲存有可能需要很多個塊,但是在cpu中一次執行一條指令,所以停留在記憶體中的很多頁面都不是必要的,只需要在記憶體中保留最必要的幾個頁的內容就可以了,所以會出現最小物理塊確定的問題。
最小物理塊的確定是指能保證程序正常執行所需的最小物理塊數,當系統為程序分配的物理塊數少於此值時,程序無法執行。程序應該獲得最小物理塊數與計算機的硬體結構有關,取決於指令的格式、功能和定址方式。單位址指令且直接定址的話,最少物理塊為2.乙個用於儲存指令,乙個用來儲存資料
2)物理塊的分配策略
2.1 固定分配區域性置換
基於程序的型別,或根據程式設計師、程式管理員的建議,為每個程序分配一定數目的物理塊,在整個執行期間都不再改變
如果程序在執行中發現缺頁,則只能從該程序的n個頁面中選出乙個頁換出,然後再調入一頁,以保證分配給該程序的記憶體空間不變
困難在於應該為每個程序分配多少個物理塊難以確定,若太少,會頻繁地出現缺頁中斷,降低了系統的吞吐量,若太多,又必然使記憶體中駐留的程序數目減少,進而造成cpu 空閒或其他資源空閒的情況,而且在實際對換中,會花費更多的時間
2.2 可變分配全域性置換
先為系統中的每個程序分配一定數目的物理塊,而os本身也保持乙個空閒物理塊佇列
當某程序發現缺頁時,由系統從空閒物理塊佇列中取出乙個物理塊分配給該程序,這樣凡產生缺頁終端的過程,都將獲得新的物理塊。僅當空閒物理塊佇列用完時,os才能從記憶體中選擇一頁調出,該頁可能是系統中的任意程序的頁
2.3 可變分配區域性置換
基於程序的型別或根據程式設計師的要求,為每個程序分配一定數目的物理塊,但當某程序發現缺頁時,只允許從該程序在記憶體的頁面中選出一頁換出,這樣就不會影響其他程序
如果程序在執行中頻繁發生缺頁中斷,則系統需再為該程序分配若干附加的物理塊,直至該程序的缺頁率減少到適當的程度為止
反之,若乙個程序在執行過程中的缺頁率特別低,則此時可適當減少分配給程序的物理塊數,但不引起缺頁率的明顯增加
3)物理塊的分配演算法
平均分配演算法
按比例分配演算法
按優先順序分配演算法
記憶體分配策略和分配演算法
在為程序分配記憶體時,將涉及到3個問題 1 最小物理塊數的確定 2 物理塊的分配策略 3 物理塊的分配演算法。1 最小物理塊數的確定 這裡所說的最小物理塊數,是指能保證程序正常執行所需的最小物理塊數。當系統為程序分配的物理塊數小於此值時,程序將無法執行。程序應獲得的最少物理塊數與計算機的硬體結構有關...
記憶體分配和管理
1.分配記憶體的底層函式1.1 頁 include linux mm type.h struct page lru nr lru lists structzone reclaim statreclaim stat unsigned long pages scanned since last recl...
記憶體分配 Go記憶體管理 記憶體分配一
go作為乙個比較新晚 新 的語言,自然借鑑前輩們的優點,比如說語言本身負責記憶體管理 對協程和高併發的高優支援 簡單高效的語法等。本篇及後續的幾篇要講的就是還沒提到的比較複雜的記憶體管理。學習記憶體管理 分配 前,如果有jvm的記憶體管理的基礎,會變得非常簡單,如果是第一次接觸記憶體管理,在看完go...