(ps:個人課下整理的作業系統筆記,onenote直接拷貝過來的,看不了就將就一下,配合張偉老師的ppt看效果更好)
一、背景
1.記憶體(main memory)是cpu唯一能直接訪問的大容量儲存機構
2.記憶體由很大一組字或者位元組組成,每個字或者位元組有他們自己的位址,cpu根據程式計數器的值在記憶體中取指令,這些指令可能引起更進一步的取址
3.每個程序在記憶體中的分配空間大小取決於:基址暫存器(base register)和長度暫存器(limit register)
字元位址——可重定位/邏輯/虛位址——絕對位址
多道程式系統中,將使用者源程式變為記憶體中可執行程式分為3步驟——編譯、鏈結、載入
5.位址繫結(binding)——將指令和資料繫結到記憶體位址,
可以發生在以下
3個階段: 絕對
**可重定位
**執行時:如果程序在執行時
可以從乙個記憶體到另乙個記憶體
,那麼**要延遲到執行時執行。
(外部碎片の解決方法の緊縮要求在這一階段完成)
6.邏輯位址與實體地址的區別
邏輯位址——cpu生成的位址
實體地址——記憶體單元能看到的位址
編譯和載入時生成相同的邏輯位址和實體地址,執行時位址**方案會導致邏輯位址和實體地址不同7.
記憶體管理單元(memory
-management unit
,mmu)
——執行時,從邏輯位址到實體地址的對映
8.動態載入(dynamic loading)(由於程序的大小受記憶體大小的限制,為獲得更好的空間利用率,可使用動態載入)
9.動態鏈結(dynamic linking)——將鏈結延遲到執行時 10
.//常考——cpu可以暫時從記憶體中交換出來放在後備儲存上,當需要時再換回記憶體中
二、記憶體管理機制之一——連續空間分配(contiguous allocation)
1.框架搭建:
2.記憶體通常分為兩個區域:
駐留作業系統的低位址區域(其實作業系統也可以在高位址,但是中斷向量一般在低位址,所以通常也將作業系統放在低位址記憶體)
駐留使用者程序的區域
4.可變分割槽分配(variable-partition allocation)
內部(internal)碎片:固定大小單元塊分配的問題
二、記憶體管理機制之二——非連續空間分配(non-contiguous allocation)
1.框架回顧:
2.分頁(paging),該方案允許程序實體地址空間非連續
共2^m個bit,每一頁裝2^n個bit,一共需要2^(m-n)個頁
p是頁表左邊的數(0123),通過p找到對應右邊頁表中的數(1437),即實體地址中的幀,幀+偏移量d就找到了絕對位址
需要35個頁,和1096b, 共需要36個幀,2048-1096=952 b 內部碎片。
3.頁表的實現
暫存器(在頁表比較小的時候)
當頁表非常大時,將頁表放在記憶體中,並用頁表基暫存器(page
table
base
register
,ptbr)指向頁表,每次改變頁表只需改變該暫存器即可,但是每次需要訪問記憶體兩次,造成無法忍受的延遲;
頁表長度(length)暫存器(ptlr)來表示頁表的大小,該暫存器的值可用於檢查每個邏輯位址以驗證其是否位於程序的有效範圍內。如果檢查無法通過,會被作業系統捕捉到。
轉換表緩衝器(table lookaside buffer,tlb),小而貴,專用快速的硬體緩衝,tlb只包括頁表的一小部分,能顯著提高訪問查詢速度
tlb其實就是乙個小頁表,跟買彩票差不多,沒命中還是去查頁表
記住頁表是一維陣列,tlb是二維的
例:如果有80%的tlb命中率,需要20ns去訪問tlb,100ns去訪問記憶體,
則平均訪問時間=0.8*120+0.2*(20+100訪問記憶體中的頁表+100訪問記憶體)
4.分頁環境下的記憶體保護
在分頁環境下,記憶體保護是通過與每個幀相關聯的保護位來實現的。通常這些位儲存在頁表中,任何一位都能定義乙個頁是可讀、可寫或只可讀。有效無效位與頁表中的每一條目相關聯:(用在虛擬記憶體中)
5.頁表結構(多層、雜湊、反向頁表)
6.分段(segmentation)——分段是支援使用者觀點的記憶體管理方案。
base和limit是段表本身內部的屬性
stbr和stlr是描述段表的屬性
記住段表是二維陣列
例如我要引用段s號的字長d,我先比較d是否在limit長度範圍內,如果符合再用base+d
將段與對其的保護相關聯
**資料的共享
章末例題:
記憶體管理1《第三章》
儲存器管理 連續分配方式可分為 4 類 1 單一連續分配 最簡單 2 固定分割槽分配,3 動態分割槽分配 可變分割槽分配 4 動態可重定位分割槽分配。動態分割槽分配工作原理 記憶體不是系統預先劃分好的,而是當程式裝入時,根據程式的實際 需求和記憶體空間的使用情況來決定是否分配。若有足夠的空間,則按需...
第三章 記憶體管理
一 概述 1.記憶體管理的領域 1.管理物理記憶體頁 2.分配開啟記憶體的夥伴系統 3.分配小記憶體的slab slub slob分配器 4.分配非連續記憶體快的vmalloc 5.程序的位址空間 核心將虛擬位址空間分為兩個部分,底部較大,用於使用者空間,上部用於核心,在發生程序切換時,底部會變化,...
第三章 記憶體管理
報考的是三系老師 不是搞硬體的 但由於自己考研時選的科目有作業系統,所以 大致看一下了解即可 1 程式裝入和連線 裝入 將裝入模組裝入記憶體執行 3 連續分配管理方式 分頁儲存管理 分割槽大小固定 分段儲存管理 分割槽大小不固定 5 基本分頁儲存管理 6 基本分段儲存管理 7 段頁式儲存管理 1 區...