Linux對內存區內的頁框的分配和釋放,採用的算法是夥伴系統。
儘管頁的分配算法是簡單的,但是實際過程卻非常複雜。這是因爲分配頁式必須考慮一下幾點:
1 備用內存區。當從一個內存區無法得到內存時,系統會從同一內存節點的其它內存區或者從另一個內存節點中的內存區中獲取內存。
2 頁的換入和換出,在沒有足夠多的空閒頁時,可能需要將頁換出以獲取空閒內存。
3 頁的回收,對一些緩衝區的不再使用的頁進行回收,以獲取空閒頁。
4 系統中必須保持一定“水位”的空閒頁,以應付對內存的緊急分配。如果系統將頁分配完,在急需內存時,再進行頁的回收或換出,無疑是非常糟糕的設計。系統中必須保持一定量的內存頁。
5 不同的分配策略。不同的分配策略可能採用的方法有區別。
總之,頁的分配和釋放需要考慮許多因素,儘量滿足內存分配的同時,要保證系統的穩定性和健壯性。