Linux2.6使用者空間堆棧區的分配與回收

來源:互聯網
上載者:User

1.sys_brk(新邊界的線性地址)

(1)地址檢查,地址不低於程式碼片段的終點

(2)與頁面大小對齊

(3)新地址 < 老邊界 -----> 釋放空間(見2)

  新地址 > 老邊界 -----> 申請空間(見8)

2.釋放空間

(1)線性地址 -> 區間地址

(2)預備一個新的區間結構(回收一個區間的一部分,可能導致一個區間變成兩個區間)

(3)把所有涉及到的區間移到一個暫存佇列

(4)解除映射,釋放頁面(見3)

(5)對vm_area_struct和mm_struct作出調整

(6)釋放頁面表

3.依次處理PGD中所有的頁目錄項所指向的頁目錄表,處理方法(見4)

4.依次處理頁目錄表中的所有頁面項所指向的頁面,處理方法(見5)

5.釋放某一頁面

(1)將頁面的頁面表項清0

(2)解除記憶體頁面及盤上頁面的使用(見6)

6.解除記憶體頁面及盤上頁面的使用

(1)若頁面在記憶體中且為髒,則移入髒隊列

(2)若頁面在記憶體中,則解除對記憶體頁面的使用(見7)

(3)解除對“交換裝置”盤上頁面的使用

7.解除對記憶體頁面的使用

(1)將頁面從換入/掏出隊列中脫離

(2)將頁面從某個LRU隊列中脫離

(3)將隊列從雜湊隊列中脫離

(4)釋放頁面

8.申請空間

(1)許可權檢查,越界檢查,衝突檢查,各種檢查

(2)申請一個新的區間,如果能合并,就合并

(3)為新區間建立起對記憶體的映射

聯繫我們

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