第4章 儲存器管理
1 程式的裝入和鏈結
2 連續分配儲存管理方式
3 分頁儲存管理方式
4 分段儲存管理方式
5 虛擬儲存器、請求分頁/分段、頁面置換演算法
2、連續分配方式
為乙個使用者程式分配乙個連續的記憶體空間
20世紀
六、七十年代的os中,分類:
單一連續分配
固定分割槽分配
動態分割槽分配
動態重定位分割槽分配
其他(1)單一連續分配
記憶體分為系統區和使用者區兩部分:
系統區:僅提供給os使用,通常放在記憶體低址部分
使用者區:除系統區以外的全部記憶體空間,提供給使用者使用。
最簡單的一種儲存管理方式,只能用於單使用者、單任務的作業系統中。
優點:易於管理。
缺點:對要求記憶體空間少的程式,造成記憶體浪費;程式全部裝入,很少使用的程式部分也占用記憶體。
(2)固定分割槽分配
把記憶體分為一些大小相等或不等的分割槽(partition),每個應用程序占用乙個分割槽。作業系統占用其中乙個分割槽。
提高:支援多個程式併發執行,適用於多道程式系統和分時系統。最早的多道程式儲存管理方式。
劃分為幾個分割槽,便只允許幾道作業併發
具體實現:
1)如何劃分分割槽大小
2)需要的資料結構
3)分配**操作
1)如何劃分分割槽大小:
分割槽大小相等:只適合於多個相同程式的併發執行(處理多個型別相同的物件)。缺乏靈活性。
分割槽大小不等:多個小分割槽、適量的中等分割槽、少量的大分割槽。根據程式的大小,分配當前空閒的、適當大小的分割槽。
2)需要的資料結構
建立一記錄相關資訊的分割槽表(或分割槽鍊錶),表項有:
| 起始位置 | 大小 | 狀態 |
分割槽表中,表項值隨著記憶體的分配和釋放而動態改變
3)程式分配記憶體的過程:
也可將分割槽表分為兩個**:空閒分割槽表/占用分割槽表。從而減小每個**長度。
檢索演算法:空閒分割槽表可能按不同分配演算法採用不同方式對表項排序(將分割槽按大小排隊或按分割槽位址高低排序)。
過程:檢索空閒分割槽表;找出乙個滿足要求且尚未分配的分割槽,分配給請求程式;若未找到大小足夠的分割槽,則拒絕為該使用者程式分配記憶體。
固定分配的不足:
內碎片(乙個分區內的剩餘空間)造成浪費
分割槽總數固定,限制併發執行的程式數目。
(3)動態分割槽分配
分割槽的大小不固定:在裝入程式時根據程序實際需要,動態分配記憶體空間,即——需要多少劃分多少。
空閒分割槽表項:從1項到n項:
記憶體會從初始的乙個大分割槽不斷被劃分、**從而形成記憶體中的多個分割槽。
動態分割槽分配
優點:併發程序數沒有固定數的限制,不產生內碎片。
缺點:有外碎片(分區間無法利用的空間)
具體實現:
1)分割槽分配中的資料結構
2)分割槽分配演算法
3)分割槽分配操作
1)資料結構
1.空閒分割槽表:
記錄每個空閒分割槽的情況。
每個空閒分割槽對應乙個表目,包括分割槽序號、分割槽始址及分割槽的大小等資料項。
2.空閒分割槽鏈:
每個分割槽的起始部分,設定用於控制分割槽分配的資訊,及用於鏈結各分割槽的前向指標;
分割槽尾部則設定一后向指標,在分割槽末尾重複設定狀態位和分割槽大小表目方便檢索。
2)分割槽分配演算法
動態分割槽方式,分割槽多、大小差異各不相同,此時把乙個新作業裝入記憶體,更需選擇乙個合適的分配演算法,從空閒分割槽表/鏈中選出一合適分割槽
首次適應演算法ff
迴圈首次適應演算法
最佳適應演算法
最差適應演算法
快速適應演算法
①首次適應演算法ff(first-fit)
空閒分割槽排序:以位址遞增的次序鏈結。
檢索:分配記憶體時,從鏈首開始順序查詢直至找到乙個大小能滿足要求的空閒分割槽;
分配:從該分割槽中劃出一塊作業要求大小的記憶體空間分配給請求者,餘下的空閒分割槽大小改變仍留在空閒鏈中。
若從頭到尾檢索不到滿足要求的分割槽則分配失敗
優點:優先利用記憶體低址部分,保留了高位址部分的大空閒區;
缺點:但低址部分不斷劃分,會產生較多小碎片;而且每次查詢從低址部分開始,會逐漸增加查詢開銷。
②迴圈首次適應演算法 (next-fit)
空閒分割槽排序:按位址
檢索:從上次找到的空閒分割槽的下乙個空閒分割槽開始查詢,直到找到乙個能滿足要求的空閒分割槽。為實現演算法,需要:
設定乙個起始查尋指標
採用迴圈查詢方式
分配:分出需要的大小
優點:空閒分割槽分布均勻,減少查詢開銷
缺點:缺乏大的空閒分割槽
③最佳適應演算法 (best-fit)
總是把能滿足要求、又是最小的空閒分割槽分配給作業,避免「大材小用」。
空閒分割槽排序:所有空閒分割槽按容量從小到大排序成空閒分割槽表或鏈。
檢索:從表或鏈的頭開始,找到的第乙個滿足的就分配
分配:分出需要的大小
缺點:每次找到最合適大小的分割槽割下的空閒區也總是最小,會產生許多難以利用的小空閒區(外碎片)
④最差適應演算法/最壞匹配法(worst-fit):基本不留下小空閒分割槽,但會出現缺乏較大的空閒分割槽的情況。
⑤快速適應演算法
根據程序常用空間大小進行劃分,相同大小的串成乙個鏈,需管理多個各種不同大小的分割槽的鍊錶。程序需要時,從最接近大小需求的鏈中摘乙個分割槽。類似的:夥伴演算法
能快速找到合適分割槽,但鍊錶資訊會很多;實際上是空間換時間。
3)分割槽分配操作
分配記憶體
找到滿足需要的合適分割槽,劃出程序需要的空間
if s<=size,將整個分割槽分配給請求者
if s> size,按請求的大小劃出一塊記憶體空間分配出去,餘下部分留在空閒鏈中,將分配區首址返回給呼叫者。
**記憶體
程序執行完畢釋放記憶體時,系統根據**區首址a,在空閒分割槽鏈(表)中找到相應插入點,根據情況修改空閒分割槽資訊,可能會進行空閒分割槽的合併:
ps:空閒分割槽的大小m.size,
使用者需要的大小u.size
s=m.size- u.size
size為系統規定不再切割的分割槽大小
**分割槽
(1)**區(首址a)與乙個分割槽f1末尾(首址b+大小)鄰接:將**區與f1合併,修改f1的表項的分割槽大小
(2)**區(首址a+大小)與乙個分割槽f2的首址b鄰接:將**區與f2合併,修改f2的表項的首址、分割槽大小
(3) (1)(2)兩種情況都有,則將**區與前後兩個分割槽f1、f2鄰接:將三個分割槽合併,使用f1的表項和f1的首址,取消f2的表項,大小為三者之和
(4) **區沒有鄰接的分割槽:為**區單獨建立新表項,填寫**區的首址與大小,根據其首址插到空閒鏈中的適當位置
(4)動態重定位分割槽分配
——有緊湊功能的動態分割槽分配
使用者程式在記憶體中移動,將空閒空間緊湊起來提高空間利用率。但必然需要位址變化,增加「重定位」工作。
位址變換過程是在程式執行過程期間(相對位址與重定位暫存器中的位址相加),隨著對每條指令的訪問自動進行,稱為動態重定位。
動態重定位分割槽分配演算法與動態分割槽分配演算法基本相同,差別在於增加了緊湊的功能。
夥伴系統
分割槽大小有規定,且分割槽動態變化
1無論已分配還是空閒分割槽,大小都為2的k此冪。若整個可分配空間大小為2m,則1≤k≤m.
2隨著系統執行,記憶體被不斷劃分,形成若干不連續的空閒分割槽。對每一類具有相同大小的空閒分割槽設定一雙向鍊錶,即會有k個鍊錶,鍊錶中的分割槽大小都是2m。
3程序申請n個大小的空間時,計算n= 2i。則找i對應的鍊錶。若i大小的鍊錶沒有,則找i+1的鍊錶。找到的分割槽對半劃分後,一半用於分配,一半鏈結到較小一級的煉表裡去。
4一次分配和**都可能對應多次的劃分和合併。
(5)記憶體空間管理之對換
當記憶體空間還是滿足不了需求時,引入「對換」思想:
把記憶體中暫時不能執行、或暫時不用的程式和資料調到外存上,以騰出足夠的記憶體;把已具備執行條件的程序和程序所需要的程式和資料,調入記憶體。
按對換單位分類:
整體對換(或程序對換):以整個程序為單位(連續分配)
頁面對換或分段對換:以頁或段為單位(離散分配)
實現程序對換,系統必須具備的功能:
對換空間的管理
程序的換出、換入操作
對換空間的管理
外存上 儲存內容 駐留時間 主要目標 分配方式
檔案區 檔案 較長久
不頻繁 提高檔案儲存空間的利用率 離散
對換區 從記憶體換出的程序 短暫
頻繁 提高程序換入和換出的速度 連續
逆向 第四章 記憶體
暫存器與記憶體的區別 1.暫存器位於cpu內部,執行速度快 2.記憶體速度相對慢,但是成本低,所以可以做得很大 3.暫存器和記憶體沒有本質區別,都是儲存資料的容器,都是定寬的 4.暫存器常用的八個 eax,ecx,edx,ebx,esp,ebp,esi,edi 5.計算機中的幾個常用計量單位 byt...
第四章 績效管理
1 答 績效面談按照具體內容可以劃分為 1 績效計畫面談。即在績效管理初期,上級主管與下屬就本期內績效計畫的目標和內容,以及實現目標的措施 步驟和方法所進行的面談。2 績效指導面談。即在績效管理活動的過程中,根據下屬不同階段上的實際表現,主管與下屬圍繞思想認識 工作程式 操作方法 新技術應用 新技能...
第四章 使用者管理
一 使用者管理概念 1 使用者管理的範圍 使用者帳號管理 組帳號管理 使用者 組帳號的許可權管理 使用者帳號的環境設定 2 linux 系統使用者管理特點 多使用者平台 alt f1 12 單使用者模式中無需使用者 管理方法有兩種 命令 圖形工具 二 使用者帳號的管理 1 使用者帳號的分類 超級使用...