Linux核心原始碼情景分析-記憶體管理

來源:互聯網
上載者:User

標籤:

    使用者空間的頁面有下面幾種:

    1、普通的使用者空間頁面,包括進程的程式碼片段、資料區段、堆棧段、以及動態分配的“儲存堆”。

    2、通過系統調用mmap()映射到使用者空間的已開啟檔案的內容。

    3、進程間的共用記憶體區。

    這些頁面的的周轉有兩方面的意思。

    1、頁面的分配,使用,回收。如進程壓棧時新申請的頁面,這類頁面不進行盤區交換,不使用時釋放得以回收。

    這部分通過一個情境來解釋:

    Linux核心原始碼情景分析-記憶體管理之使用者堆棧的擴充。

    2、盤區交換。如要執行硬碟上的對應程式碼片段。把硬碟上的程式碼片段換入記憶體才能執行。

    這部分通過三個情境來解釋:

    Linux核心原始碼情景分析-記憶體管理之使用者頁面的換入。

    Linux核心原始碼情景分析-記憶體管理之使用者頁面的分配。

    Linux核心原始碼情景分析-記憶體管理之使用者頁面的定期換出。


    核心空間的頁面有下面幾種:

    1、核心代碼和核心中全域量所佔的記憶體頁面既不需要經過分配也不會被釋放。這部分空間是靜態。

    2、核心通過kmalloc後者vmalloc分配、用作某些臨時性使用和為管理目的而設的資料結構,如vma_area_struct資料結構等,這些資料結構一旦使用完畢便無儲存價值,所以立即便可釋放。不過由於一個頁面中往往有多個同種資料結構,所以要到整個頁面都空閑時才能把頁面釋放。

    3、核心中通過調用alloc_pages(),為某些臨時使用和管理目的而分配的頁面,例如,每個進程的核心棧所佔的兩個頁面、從核心空間複製參數時所使用的頁面等等。這些頁面也是一旦使用完畢便無儲存價值,所以立即釋放。

    4、在核心中還有一種頁面,雖然使用完畢,但其內容仍有儲存價值,因此,並不立即釋放。這類頁面“釋放”之後進入一個LRU隊列,經過一段時間的緩衝讓其“老化”。如果在此期間又要用到其內容了,就又將其投入使用,否則便繼續讓其老化,直到條件不再允許時才加以回收。這種用途的核心頁面大致有以下這些: · 檔案系統中用來緩衝儲存一些檔案目錄結構dentry的空間 · 檔案系統中用來緩衝儲存一些索引節點inode的空間 · 用於檔案系統讀/寫操作的緩衝區。

Linux核心原始碼情景分析-記憶體管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.