LINUX記憶體管理之頁式管理之頁表項標記位的理解__LINUX

來源:互聯網
上載者:User

頁表項的高20位指向記憶體頁基址,低12位設定頁面狀態和許可權。

如果頁表項的present位為1,表示對應的頁或者頁表已經載入到記憶體頁框。反之,如果為0,對此頁的訪問會觸發缺頁異常。而缺頁異常處理函數會產生配套的頁或者頁表,並重新整理present標記位為1。

typedef struct { unsigned long pte_low; } pte_t;typedef struct { unsigned long pgd; } pgd_t;typedef struct { unsigned long pgprot; } pgprot_t;//擷取寫標誌位;從字面理解以為是寫操作呢,囧static inline int pte_write(pte_t pte)      { return (pte).pte_low & _PAGE_RW; }#define pte_present(x)  ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))//深入理解linux核心p65裡面介紹的頁目錄項和頁表項裡面的欄位#define _PAGE_PRESENT   0x001#define _PAGE_RW    0x002#define _PAGE_USER  0x004#define _PAGE_PWT   0x008#define _PAGE_PCD   0x010#define _PAGE_ACCESSED  0x020#define _PAGE_DIRTY 0x040對於PAE模式來說,長度變成了64#ifdef CONFIG_X86_PAEtypedef struct { unsigned long pte_low, pte_high; } pte_t;typedef struct { unsigned long long pmd; } pmd_t;typedef struct { unsigned long long pgd; } pgd_t;typedef struct { unsigned long long pgprot; } pgprot_t;//擷取addr在頁全域目錄表的索引#define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))//線性地址在pgd裡面的對應的線性地址#define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))//核心頁全域目錄某個項的線性地址#define pgd_offset_k(address) pgd_offset(&init_mm, address)//找到頁描述符地址#define pgd_page(pgd)               (pud_page((pud_t){ pgd }))    =>#define pud_page(pud)             (pmd_page((pmd_t){ pud }))        =>#define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))            =>#define pfn_to_page __pfn_to_page                =>#define __pfn_to_page(pfn)    (mem_map + ((pfn) - ARCH_PFN_OFFSET))

Linux核心中的記憶體管理淺談 https://blog.csdn.net/acs713/article/details/8575421

聯繫我們

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