linux 記憶體管理 自學報告

2021-06-05 15:10:53 字數 582 閱讀 4037

核心把頁劃分為不同的區(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結構,這個結構就貼在每個程序的核心棧的末端。

Vi的自學報告

vi是所有的unix like系統都自帶的編輯器,而其他文字編輯器則不一定存在,所以我們用的較多的還是vi。vi具有程式編輯的能力,能以字型的顏色來辨別語法的正確性。而且它雖然歷史悠久,但功能豐富,其中由它發展而來的vim則更是能力強大,如 補全 編譯以及錯誤跳轉等等。所以我就在這裡介紹一下vi v...

設計思維自學報告

推動著這個世界前進的不僅僅只有馬斯克,愛因斯坦那些站立於人類史上頂峰的科學奇才,也不能僅僅依靠幾位傑出的革命家,領導人。在如今這個身邊已經沒有戰火硝煙的年代,技術的進步,科技的發展才是推動整個人類文明前進的方法。然而創新並不是那些擁有出眾才智的人的事情,也是我們每個人可以做的。正所謂 三個臭皮匠,賽...

第八單元 自學報告

include int main include void swap int a,int b int main if p min min p if p max max p swap a 0 min swap a 9 max for int p a p10 p printf d p return 0 ...