本文結構如下:
首先我們知道計算機的記憶體是分很多層次的,不同層次之間訪存速度相差很大,(甚至達到幾個數量級)
mmu 工作原理介紹
where exactly l1, l2 and l3 caches located in computer?
上面是關於mmu和l1,l2 cache 的介紹,先留坑,有興趣可以看看
分段分頁和段頁是都會在非連續記憶體分配中介紹,重定位先留坑待補
實體地址空間就是真實的計算機記憶體(e.g.: 4g ,0-4g-1)
邏輯位址空間cpu看執行程序看到的位址,也稱虛擬位址
將指令與資料繫結到記憶體位址有如下幾種情況:
*編譯時編譯時寫死,生成絕對位址**
*載入時編譯時生成可重定位**,載入時進行位址繫結
*執行時執行時進行位址繫結,這種方式更加靈活,執行時可以從乙個記憶體段移到另乙個記憶體段
顧名思義,作業系統為每個程序分配一塊連續的記憶體區域,作業系統需要維護乙個表,記錄哪些記憶體塊被占用了,哪些沒有。這樣做很明顯會產生
兩個問題
1. 外碎片 (相鄰兩塊之間不能用的)
2. 內碎片 (分配的記憶體中用不完的)
特點
1. 載入時分配
2. 位址連續
一種解決外部碎片的方法是緊縮(compaction),就是移動記憶體,最暴力的就是將所有占用記憶體移到一邊。but緊縮並不是總是可以的必須是在位址繫結時是執行時生成才行。另外一種策略就是下一節要講的非連續記憶體分配
交換這種策略是os在程序空閒時將所占用的資料段換出到硬碟中去,也可以搶占。
它的直觀表現是這樣的
每一塊記憶體都是2的冪次,需要注意的是由於分配是連續的,所以依然存在外部碎片
作業系統 5 物理記憶體管理 連續記憶體分配
目錄5.5 碎片整理 5.6 夥伴系統 buddy system 在該表中,明顯處理器中的l1快取是最快的,有3.6ghz的訪問速度,l2快取較快。其中l1,l2為快取記憶體。以上為硬體mmu控制的記憶體。在快取記憶體未命中時,就需要去記憶體中查詢。若缺頁,則需要到外存,也就是虛擬內卒中查詢。這一切...
作業系統 記憶體分配
1.系統要用什麼樣的資料結構記錄記憶體的使用情況。2.當多個記憶體分割槽滿足要求時,應該選擇哪個分割槽進行分配。3.如何進行分割槽的分配與 操作。程序中的塊稱為頁 page 記憶體中的塊稱為頁框 page frame 外存也可以同樣的單位進行劃分,稱為塊。頁表,為了便於在記憶體中找到程序的每個頁面所...
作業系統記憶體分配
作業系統的記憶體一部分給系統核心,一部分給使用者核心,對windows來說,32位4g時,低位2g給使用者,高位2g給系統,64位256t時,高位的248t給系統,低位8t給使用者。linux則是32位4g時,低位3g給使用者,高位1g給系統,64位256t時,高位的128t給系統,低位128t給使...