linux核心原始碼學習(3)關於一些資料結構和一個理解 錯誤

來源:互聯網
上載者:User

2009-08-13 01:16我發表於百度空間,今天轉過來,呵呵

                                 linux核心原始碼學習(3)關於一些資料結構和一個理解 錯誤
                                                                                                                                                                 ---flyli
現來說說那個理解錯誤吧,前面看到PGD和PTE在記憶體映射的過程中,分別佔用的是10位的大小,然後組成一個20位的基址,加上一個12位的位移量就可以找到4G記憶體內的任意一處。
然而,今天看到所《linux核心原始碼情景分析》的第41頁的時候,發現表項是如此定義的
==================== include/asm-i386/page.h 36 50 ====================
36  /*
37   * These are used to make use of C type-checking..
38   */
39  #if CONFIG_X86_PAE
40  typedef struct { unsigned long pte_low, pte_high; } pte_t;
41  typedef struct { unsigned long long pmd; } pmd_t;
42  typedef struct { unsigned long long pgd; } pgd_t;
43  #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
44  #else
45  typedef struct { unsigned long pte_low; } pte_t;
46  typedef struct { unsigned long pmd; } pmd_t;
47  typedef struct { unsigned long pgd; } pgd_t;
48  #define pte_val(x) ((x).pte_low)
49  #endif
50  #define PTE_MASK   PAGE_MASK
===========================
這我一下就不明白了,以pmd和pte本來分別之佔用10位的空間,為什麼在定義他們的時候採用的最少也是32位的資料結構呢?為什麼不用16位的呢?用於引索的華我覺得16位的下標完全夠了
於是我上網開始查閱,發現網上沒人關心這個問題,怎麼可能呢?裡來以節省資源著稱的linux會開這麼打的空間難道是為了方便?或者是為了一致性?不現實吧
在網上沒找到答案,我開始翻閱自己的小書庫,在《自己動手寫作業系統》(這個是我買的正版書哦,當然網上也有pdf的,希望大家購買正版哈,寫的還是不錯的),關於pde和pte的一張中發現一個問題。
原來定義這些資料結構並不是進行軟體管理的,這是CPU建立記憶體映射的基本步驟,要不為什麼需要再定義PMD這個雞肋呢?
其實pgd,pte,還有pmd這些表項本來都只是在mmu建立記憶體映射的時候必須要有的,而且他可不是在軟體使用的時候用來控制的(假如只是軟體使用的華,這些值定義成引索下標的話,不但速度快還節省空間的阿),而是定義成了指標,一個32位的指標假如採用36位地址的話,就直接使用64位來定義了。。。
終於高明白了!!!!!!!!!!!1

罪過啊,罪過,今天看了好久竟然只是搞清這麼點問題,才理解了樹上2頁的內容。

不過只要人每天都在進步就是好的了,不過每天進步無論多少都是好的嗎?那是相對不進步而言的,
“當今社會是逆水行舟不進則退啊,起使進慢了也是退,因為別人都走到你前面了,你相對不就退步了嗎?”

另外今天還瞭解了一個全域量mem-map,是一個指向page結構的數組的指標,因此這個全域量的前20位有著相當作用的意義,對於軟體,作為下標就可以找到相應物理也面的page結構,作為硬體mmu來說,就是一個物理頁面的起使地址啊(後12位補0)

相關文章

聯繫我們

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