計算機操作系統基礎筆記 操作系統有哪些狀態( 七 )


伙伴系統進程請求大小為n的存儲空間時,
首先計算一個 i 值,使 2 i-1 < n ≤ 2 i ;
在空閑分區大小為 2 i 的空閑分區鏈表中查找 。if 找到,即把該空閑分區分配給進程 。else 在分區大小為2 i+1 的空閑分區鏈表中尋找; //表明長度為2 i 的空閑分區已經耗盡 if 找到大小為2 i+1 的空閑分區 把該空閑分區分為相等的兩個分區(一對伙 伴),其中一個用于分配,另一個加入分區大 小為 2 i 的空閑分區鏈表中 。else 查找大小為2 i+2 的空閑分區……
哈希算法利用哈??焖俨檎业膬烖c,以及空閑分區在可利 用空間表中的分布規律,建立哈希函數,構造一 張哈希表,以空閑分區大小為關鍵字,每一個表 項記錄了一個對應的空閑分區鏈表表頭指針 。
當進行空閑分區分配時,根據所需空閑分區大小,通過哈希函數計算,即得到在哈希表中的位置,從中得到相應的空閑分區鏈表,實現最佳分配策 略 。
可重定位分區分配緊湊解決零頭問題的辦法,將內存中的所有作業進行移動,使它們全都相鄰接,這樣,可把原來分散的多個小分區合成一個大分區 。這種技術稱為存儲器的“緊湊” 。
動態重定位在動態運行時裝入的方式中,作業裝入內存后的所有地址都仍然是相對地址,將相對地址轉換為物理地址的工作,被推遲到程序指令要真正執行時進行 。
動態重定位分區分配法是利用分區的“拼接”(對空白區而言)或“緊湊”(作業程序而言)技術 解決“零頭” 。
對換對換指把內存中暫不能運行的進程或暫時不用和程序和數據,換到外存上,以騰出足夠的內存空間,把已具備運行條件的進程,或進程所需要的程序和數據,換入內存 。
對換是系統行為,是提高內存的利用率的有效措施 。
– 整體對換(進程對換)
– 頁面對換(分段對換)
為實現對換,系統需要三方面的功能:
對換空間的管理
進程的換入
換出
對換空間的管理外存被分為兩部分,文件區和對換區,文件區用于存放文件,它采取離散分配方式 。對換(續) 即一個文件可根據當前外存的使用情況 ,被分成多塊 ,分別存儲到不鄰接的多個存儲區域中 ,用指針相連 。對換區存放從內存換出的進程 ,它們在外存的存放時間較短,換入 、換出頻繁 。對對換區的管理,采用連續分配方式。
分配算法可以是首次適應算法、循環首次適應算 法和最佳適應算法 。
進程的換出和換入1、換出(swap out)
①選擇:首先選擇阻塞或睡眠狀態的進程,若有多個,按優先級由低到高進行選擇 。若沒有此狀態進程,則選擇就緒狀態的,仍然按優先級由低到高進行選擇 。
②為避免某進程被頻繁的換入換出,還應考慮進程在內存中的駐留時間,優先選擇駐留時間長的進程 。
2、換入(swap in)
①從 PCB集合中查找“就緒且換出”的進程,有多個,則選擇換出時間最長的 。
②根據進程大小申請內存,成功則讀入,否則要先執行換出,再換入 。
③若還有可換入進程,則轉向① 。直至無“就緒且換出”進程或無法獲得足夠內存空間為止 。
離散分配方式程序在內存中不一定連續存放 。
1)離散的基礎
? 分頁(Pages):將程序地址空間分頁
? 分塊(Frames):將內存空間分塊
2)離散分配的體現
? 內存一塊可以裝入程序一頁
? 連續的多個頁不一定裝入連續的多個塊中 ?
注:系統中頁塊的大小是不變的 。
根據離散時的基本單位不同,可分為三種:
分頁存儲管理
分段存儲管理
段頁式存儲管理
優點:沒有外零頭,僅有小于一個頁面的內零頭
分頁存儲管理注意:
頁面或頁,是邏輯空間的概念
物理塊或頁框,是內存空間/物理空間的概念
頁表,每個進程對應 1 個頁表,描述該進程的各頁面在內存中對應的物理塊號 。包括頁號、物理塊號,存放在主存的系統專用區 。( 平時存于PCB中,要運行時才裝入PTR中)
作業表,整個系統1張,記錄作業的頁表情況,包含進程號、頁表長度、頁表始址等信息 。
空閑塊表,整個系統1張,記錄主存當前空閑塊 。
Δ\” role=\”presentation\” style=\”box-sizing: border-box; position: relative;\”>ΔΔ地址變換過程(非快表)(1)根據邏輯地址,計算出頁號和頁內偏移量;

推薦閱讀