Linux核心驅動(四):1、進程地址空間

來源:互聯網
上載者:User

一、核心記憶體配置

        1、與應用程式中的malloc函數相對,在Linux核心中,通常使用kmalloc來動態分配記憶體

                 (1)原型: void  *  kmalloc(size_t size,int flags);

                 (2)參數:

                                     i、size:要分配的記憶體大小

                                     ii、flags:分配標誌,它控制kmalloc的行為。flags的取值可以是:

                                                   a、GFP_ATOMIC,用來在進程上下文之外的代碼(包括中斷處理)中分配記憶體,從不睡眠。(16M-896M)

                                                   b、GFP_KERNEL,在進程上下文中分配記憶體。可能睡眠(16M-896M)

                                                   c、__GFP_DMA,這個標誌要求分配能夠DMA傳輸的記憶體區。(物理地址在16M以下的頁幀)

                                                   d、__GFP_HIGHMEM,這個標誌表示分配的記憶體位於高端記憶體。(869M以上)

        2、按頁分配(如果模組需要分配大塊的記憶體,那使用面向頁的分配技術會更好)

              (1)get_zeroed_page(unsigned int flags);返回指向新頁面的指標,並將分頁清空

              (2)__get_free_page(unsigned int flags);和get_free_page類似,但不清零頁面

              (3)__get_free_pages(unsigned int flags,unsigned int order);分配若干個連續的頁面,返回指向該記憶體地區的指標,但也不清零這段記憶體地區

        3、釋放,

                   I、當程式用完這些頁,可以使用下列函數之一來釋放他們

                          (1)void free_page(unsigned long addr)

                          (2)void  free_pages(unsigned long addr,unsigned long order)

                   II、如果使用的是kmalloc分配的記憶體,則使用kfree來釋放

        4、

        

      系統記憶體的使用方式可以分為3種形式(流程圖分別用藍、紅、黑表示)

      (1)來自使用者空間app的記憶體配置請求(藍色流程圖),注意,此時系統只是給這個請求返回一段虛擬位址區間,並沒有實際為它分配實體記憶體空間。只有當應用程式要訪問這段記憶體空間時,才會產生一個缺頁異常,然後通過get_free_page(s) 函數去系統的空閑頁框中實實在在的獲得一個記憶體單元

      (2)來自核心的Kmalloc記憶體配置請求(紅色流程圖);這種請求機制中,有一個很重要的slab管理器。它的作用是:首先從系統空閑頁框中分出一部分物理頁框。然後再將這部分的物理頁框分成若干個小的(會有不同的尺寸大小)儲存單元並用鏈錶鏈接起來。這樣,kmalloc發出記憶體配置請求時,直接向slab去索取記憶體空間

      (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.