Linux記憶體管理之三 頁的分配和釋放

來源:互聯網
上載者:User

Linux對記憶體區內的頁框的分配和釋放,採用的演算法是夥伴系統。


如,Linux分配頁時,只能分配2^n個頁。核心維護MAX_ORDER個鏈表,每個鏈表記錄著連續的空閑頁。第一個鏈表中的每一項為1個空閑頁,第二個鏈表中的每一項為2個空閑頁,第三個鏈表中的每一項為4個空閑頁。。。,依次類推。分配頁時,從對應的鏈表上摘除空閑頁;釋放頁時,將對應的頁歸還到對應的鏈表。分配釋放頁的過程中,可能伴隨著記憶體頁的拆分和合并。比如要分配16個空閑頁,但是對應的鏈表為空白,這時如果32個空閑頁對應的鏈表如果不為空白,則從鏈表中摘除32個空閑頁,並將其一分為二,其中16個頁用於記憶體配置,剩餘16個頁則插入到16個頁對應的鏈表中。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.