記憶體描述符:描述程序的位址空間,mm_struct定義在中,包括記憶體物件的位址、使用該位址的程序、頁表等資訊,自身鏈結在雙向鍊錶中。首元素init_mm記憶體描述符,代表init程序的位址空間,操作時使用mmlist_lock鎖防治併發。task_struct結構體mm存放記憶體描述符。
分配記憶體描述符:複製父程序的記憶體描述符,結構體由fork.c中從slab快取分配。(對於執行緒設定clone標誌來共享記憶體,不需要分配結構體,至真直接指向介面)
撤銷記憶體描述符:程序退出時exit_mm
虛擬記憶體區域vmas
vm_area_struct結構體描述,定義在zhong,代表不同型別的記憶體區域。每個記憶體區域作為單獨的記憶體物件管理,擁有一致的屬性和操作。
記憶體描述符中通過mmap和mm_rb訪問記憶體區域物件。是兩種vm_area_struct結構體智商真不同的組織方式,鍊錶按位址增長方向排序,適合便利;紅黑樹方式適合查詢。
工具:通過/proc//maps檢視給定程序的記憶體空間和所含記憶體區域
記憶體區域操作:
給定記憶體位址找到記憶體區域find_vma
reference
Linux核心設計與實現讀書筆記 1
我現在要做的科研專案涉及到核心程式設計的知識,所以在學校的圖書館借了一本 linux核心設計與實現 英文名 linux kernel development 打算通過這本書來了解一下linux核心各部分的原理。我選擇這本書的原因很簡單 薄。全書只有二百多頁,但內容還是很全面的。翻譯質量還可以,譯者還...
linux核心設計與實現讀書筆記 記憶體管理
一 頁 記憶體管理的基本單位 頁。核心中用struct page表示物理頁,位於,屬性包括flag頁狀態 count頁的引用計數,virtual頁虛擬位址。目的在於描述物理記憶體本身而非其中的資料。1 獲得頁 核心 alloc pages gft t gft mask,order 連續分配2n個連續...
《Linux核心設計與實現》讀書筆記 程序排程
程序排程程式負責決定將哪個程序投入執行,何時執行以及執行多長時間。在執行態程序之間分配有限的處理器時間資源。多工系統分為搶占式和非搶占式。linux使用搶占式。大部分現代系統都是搶占式 io消耗型 處理器消耗型程序 把大多時間用於執行 的程序。程序優先順序 nice值 20 19,值越大優先順序越低...