linux 記憶體管理 自學報告

來源:互聯網
上載者:User

物理頁作為核心管理的基本單位。主要的三個用途:1,頁緩衝使用(mapping域指向和這個頁關聯的address_space對象);2,作為私用資料(由private指向);3,進程頁表的映射。用sturct page表示。這個資料結構的目的在於描述實體記憶體的一個頁本身,而不描述包含在其中的資料。使用者可能是1,使用者空間進程,2,動態分配的核心資料,3,靜態核心代碼,4,頁快取。

核心把頁劃分為不同的區(zone).使用區對具有相似特性的頁進行邏輯分組。(DMA,NORMAL,HIGHMEM(高於896M=1G-128M,分配只有page,沒有邏輯地址),後面有加了一個removal)。

核心分配可以用alloc_page,get_zoroed_page或者kmalloc(函數)。gfp_mask標記,是申請核心的標記。可分為三類:1,行為修飾符,2,區修飾符及3,類型。行為修飾符表示核心應當如何分配所需的記憶體。比如__GFP_WAIT,__GFP_NOFAIL。 區修飾符表示從哪個一個區分配記憶體。類型標誌組合了行為修飾符和區修飾符,將各種可能用到的組合歸納為不同類型,簡化了修飾符的使用。

vmalloc分配的記憶體虛擬位址是連續的,但是物理地址無需連續,需要“修正”頁表,可能比直接記憶體映射大得多的tlb抖動。

slab分配器扮演了通用資料結構緩衝層的角色。每個快取都存放著不同類型的對象。由一個或多個物理上連續記憶體組成。一般不能低於1頁。

每個進程的核心棧大小既取決於體繫結構,也與編譯時間的選項有關,曆史上,每個進程都有兩個頁的核心棧。也可以設定單頁核心棧。當核心棧溢出時,首先面臨考驗的是thread_info結構,這個結構就貼在每個進程的核心棧的末端。

相關文章

聯繫我們

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