1. 程式人生 > >深入淺出記憶體管理--頁描述符(Page)

深入淺出記憶體管理--頁描述符(Page)

核心中採用struct page來描述實體記憶體頁,它的主要成員如下(非全部成員):

  • unsigned long flags;
    標誌位,核心中每個page的狀態可以由此標誌位來表示,列舉幾個標誌位:
PG_locked 頁被鎖定,比如在磁碟I/O操作中涉及到的頁,不能被頁框回收演算法回收。
PG_reserved 頁留給核心程式碼或者沒有使用,這種頁是不受記憶體管理系統用於分配的,所以不能被回收演算法回收。
PG_dirty 表示頁已經被修改
PG_lru 頁在活動或者非活動頁連結串列中
PG_active 頁在活動頁連結串列中
  • atomic_t _count;
    頁被引用的計數器,如果為-1代表該頁空閒,每被一個程序引用該計數器就加1。
  • atomic_t _mapcount;
    頁框中的頁表項計數,該成員在頁框回收時會用到,用於反向對映查詢並釋放對應的頁表項。
  • struct address_space* mapping;
    當頁被作為“對映頁”或者作為匿名頁時使用。
  • struct list_head lru;
    這是一個連結串列頭,用於把該頁加入都lru(最近最少使用)連結串列中,作為頁面回收時使用。