作业系统第八章记忆体管理课件

上传人:我*** 文档编号:141376216 上传时间:2020-08-07 格式:PPT 页数:64 大小:305KB
返回 下载 相关 举报
作业系统第八章记忆体管理课件_第1页
第1页 / 共64页
作业系统第八章记忆体管理课件_第2页
第2页 / 共64页
作业系统第八章记忆体管理课件_第3页
第3页 / 共64页
作业系统第八章记忆体管理课件_第4页
第4页 / 共64页
作业系统第八章记忆体管理课件_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《作业系统第八章记忆体管理课件》由会员分享,可在线阅读,更多相关《作业系统第八章记忆体管理课件(64页珍藏版)》请在金锄头文库上搜索。

1、1,作業系統,第八章 記憶體管理,2,第八章 記憶體管理,背景介紹 位址空間 位址連結 重疊 置換 連續配置 分頁 分段 摘要,3,目標與趨勢,目標 追蹤記憶體空間使用與否 配置記憶體給需要的行程 回收行程釋放出的記憶體 有效率的置換(swapping)方法 趨勢 程式成長的速度快於記憶體成長的速度 多媒體應用環境,使用更多的記憶體,4,位址空間,記憶體位址 邏輯位址,邏輯位址空間 實體位址,實體位址空間 執行程式時,邏輯與實體空間的位址轉換 載入器(loader):在主記憶體中尋找一塊可供使用的記憶體空間來載入程式 基底暫存器(base register):又名重定址暫存器,存放邏輯位址轉換

2、成實體位址的基底值 記憶體管理單元(memory management unit,MMU):負責將邏輯位址加上基底值,以轉換成實體位址,5,邏輯位址空間到實體位址空間的轉換,6,位址連結(1),當許多行程都要求將程式載入記憶體時: 行程均進入輸入佇列 依據排程器的排程結果選擇一個行程載入 行程執行時,從記憶體取得指令與資料執行結束後,會釋放所佔有的記憶體空間 位址轉換的步驟: 原始程式中的位址:以符號表示 編譯器或組譯器:將符號所指之位址連結(binding)到一可重新定址的相對位址 鏈結編譯器或載入器:將可重新定址的位址連結到記憶體中的絕對實體位址,7,位址連結(2),對於同一份資料或指令而

3、言,所謂位址是隨時間而變的 資料或指令連結到實體位址的動作可在下列任一階段完成 編譯階段 已確定程式要在記憶體的某個位址執行 當起始位址改變,程式必須重新編譯,以產生新的絕對位址的程式碼,8,位址連結(3),載入階段 不知道程式將在記憶體何處執行 程式需編譯成可重新定址的程式碼,當起始位址改變,程式碼只需重新載入 例:動態鏈結程式庫 執行階段 若在執行時,行程會從一記憶體區塊移動到另一區塊或是內含執行時才能確定的資料型態 例:大部分現代的作業系統中,動態產生行程或執行緒,9,程式執行前的處理過程,原始程式 printf.c,原始程式 main.c,目的模組 printf.o,目的模組 main

4、.o,編譯器或組譯器,鏈結編譯器,其他目的模組,載入模組 main,載入器,記憶體,10,重疊(1),目的:解決記憶體容量的限制 做法:在編譯時,將程式與資料分割成多個獨立區域在執行時,記憶體中只保留有需要的區段 重疊驅動器:載入目前要用的區段 若有區段可共用記憶體,新載入的區段會覆蓋舊區段,11,重疊(2),多重重疊:造成程式設計師的負擔,一般會避免使用,因為: 區段分割太多置換次數過多降低程式執行效能 區段分割太少可重疊的程式部分過少記憶體可能不夠,系統效能降低 除外:嵌入式系統(記憶體有限,沒有虛擬記憶體),12,重疊(3),主記憶體,程式依序執行,3,2,1,作業系統,重疊驅動器,未使

5、用的 空間,起始區段,運算區段,輸出區段,使用者程式與資料,13,置換(1),時機:系統無足夠空間容納所有行程 非執行中的行程暫時移到備份儲存體,要執行時再搬回記憶體中 備份儲存體:一般而言指磁碟 換出、置入過程 CPU排程器決定下一個執行的行程 分派程式到記憶體中尋找該行程 若不存在且無足夠記憶體空間先換出某些行程 在置入該行程時,需重新載入暫存器內容,將控制權交給該行程,14,置換兩個行程,15,置換(2),產生內文切換的額外負擔 時間浪費在資料傳遞上 為了提高效率 行程必須隨時告知作業系統行程對記憶體需求的變化 以便作業系統只置換實際所需的記憶體空間,節省置換所消耗的時間,16,置換(3

6、),發生記憶體存取的錯誤 原因:置換出不處於閒置狀態的行程(例:置換出的行程正在等待非同步的 I/O 操作) 解決方式: 任何企圖作I/O操作的行程不會被置換 只有進入作業系統緩衝區的行程才可作I/O操作,而作業系統與行程記憶體間的資料傳遞,只有在行程被置入時才可以進行,17,第八章 記憶體管理,背景介紹 連續配置 單一分割配置 多重分割配置 斷裂 分頁 分段 摘要,18,記憶體分割,一部分供作業系統常駐使用 放置位址常考量中斷向量的位址,因此作業系統常位於低位址 另一部分供使用者行程使用 配置方式: 單一分割配置(單一使用者) 多重分割配置(多元程式概念),19,單一分割配置,單一使用者 記

7、憶體分隔成兩部分,一用來常駐作業系統,剩餘僅供一個使用者行程執行 缺點: 僅讓一個行程執行,造成記憶體空間的浪費 若行程執行 I/O 操作, CPU 閒置,使整體系統效能降低 若行程大小超過可用的記憶體空間,將導致程式無法執行(可能解決方法:重疊),20,單一分割配置(2),如何保護作業系統與使用者程式不會遭到對方不當修改? 利用基底暫存器與界線暫存器的輔助 基底暫存器:存放最小的記憶體實體位址 界線暫存器:存放邏輯位址範圍 每一個邏輯位址都須小於界線暫存器的邏輯位址範圍 邏輯位址基底暫存器內的數值記憶體的實體位址 CPU排程器選定一行程分派程式將正確的值載入到基底和界線兩暫存器中CPU每存取

8、一次邏輯位址都經由兩暫存器的核對轉換,確保作業系統與使用者程式不會互相影響,21,位址保護機制,22,多重分割配置 (1),多元程式概念 作業系統如何將可用的記憶體空間配置給正在輸入佇列中等待的多個使用者程式? 將記憶體劃分成許多固定大小的區域或分割 每個分割只能容納一個行程 分割數目的多寡會影響到同時放置的使用者行程數量 設計輸入佇列兩方法: 單一工作佇列:所有的分割都對應到同一個輸入佇列 記憶體使用率較高;程式的等待時間較一致 多重工作佇列:每個分割均有一個對應的輸入佇列 缺點:作業系統須針對每個程式找到適合的輸入佇列,會造成記憶體中雖有可用空間卻無法使用的情況,23,單一與多重佇列,24

9、,多重分割下的系統保護,25,多重分割配置(2),記憶體劃分成固定大小的分割之問題: 若程式小於分割大小的行程,會造成記憶體空間的浪費 而程式大於分割大小的行程,則因為需要跨越分割,增加系統額外的負擔 解決方法:動態分割法 依照程式執行時的大小,在記憶體中找到夠大的可用區塊給此行程使用 需在作業系統維護一個表格,隨時記錄記憶體中哪些區塊使用中、哪些區塊空閒,26,多重分割配置(3),作業系統以動態分割法載入程式時,依據 3 種策略: 最先符合法(First Fit):從第一個可用的區塊開始循序找起,只要找到夠大的空間,就把程式載入。 最佳符合法(Best Fit):找到一個與載入程式大小最為接

10、近的區塊,再把程式載入。 最差符合法(Worst Fit):找到最大的區塊,再把程式載入。,27,多重分割配置(4),根據電腦模擬分析 最先符合法與最佳符合法在搜尋時間和記憶體空間的使用率都優於最差符合法 最先符合法的執行速度通常比最佳符合法與最差符合法要快 若不考慮搜尋時間,行程大小變化較大的適合最佳符合法;反之,則適合最差符合法。 行程執行結束後,作業系統將會 釋放此行程所佔用的記憶體區塊 檢查此被釋放區塊是否可與可用的相鄰區塊合併 同時作業系統檢查輸入佇列中是否有程式正等待配置記憶體如果有,則檢查此新合併的區塊大小是否夠該行程所用。,28,斷裂,29,斷裂,有記憶體空間卻無法用(記憶體區

11、塊太小) 外部斷裂 因為行程持續地被載入與置換,使得可用的記憶體空間被分割成許多不連續的區塊 雖然記憶體所剩空間總和足夠讓此行程執行,卻因為空間不連續,導致程式無法載入執行 內部斷裂 發生在以固定分割方式配置的記憶體 當一個程式載入到固定大小的分割,假如程式小於此分割,則此分割剩餘空間無法被使用 不能使用的空間散佈在各個分割內,造成輸入佇列中的程式無法順利載入執行,造成浪費,30,內部斷裂,31,聚集,解決外部斷裂的問題 將記憶體中可用的不連續空間聚集成一大塊連續空間 程式必須都可重新定位 代價高,因為要搬動許多行程的實體記憶體空間,0,P2,P3,100K,作業系統,200K,400K,70

12、0K,900K,300K,1200K,P5,1000K,0,P2,P3,作業系統,200K,400K,600K,800K,400K,1200K,P5,32,第八章 記憶體管理,背景介紹 連續配置 分頁 基本方法 分頁表的結構 多層分頁法 反轉分頁表 分段 摘要,33,基本方法(1),程式可被不連續放置,沒有外部斷裂的問題 將載入的程式分割成固定大小的分頁 主記憶體也分割成固定大小的頁框,大小與分頁相同 執行程式時,把程式所有的分頁載入記憶體任何可用的頁框中 每個程式有一個分頁表,存有每分頁在記憶體中的起始位址。當程式的分頁被載入到主記憶體時,程式分頁表中記錄該分頁被載入至主記憶體的哪一個頁框中

13、 頁框表:作業系統須知道主記憶體中頁框使用與否、系統中總頁框數目有多少等資訊,34,分頁法,35,基本方法(2),CPU 產生的邏輯位址分成兩部分: 分頁碼為指向分頁表的索引 頁偏移表示與該分頁起始位址的距離 在分頁表中找到此分頁在實體記憶體中對應的基底位址後,再和頁偏移組合定義出實體記憶體位址 分頁法仍有內部斷裂的問題 如果一個程式所需要的記憶體大小不能被頁框大小整除,最後一個頁框就不會全部被使用而形成內部斷裂 若使分頁大小縮小,就可節省因內部斷裂而產生記憶體空間浪費;但須更大空間儲存分頁表(分頁的數量增加) 每個程式平均會有 1/2 分頁的內部斷裂,36,分頁邏輯位址空間與實體位址空間的轉

14、換,37,分頁表的結構(1),儲存分頁表:若儲存在主記憶體中,系統需作兩次記憶體存取,效率低 解決方法:將分頁表放在關聯式記憶體(也稱位址查閱緩衝)中 每筆資料有分頁碼,頁框編號兩欄位。關聯式記憶體以分頁碼為索引,平行地在相對的頁框中找尋 很短的時間就可找尋到,時間複雜度為 O(1),38,分頁表的結構(2),實際上的做法(因關聯式記憶體昂貴):使用主記憶體建立分頁表,將關聯式記憶體當成快取記憶體,只保存分頁表的部分內容 若頁框編號在關聯式記憶體中找得到,就直接與頁偏移相加得到實體記憶體位址,否則再到分頁表中找尋 在更新關聯式記憶體時,如果關聯式記憶體已經存滿,則系統必須置換掉其中一筆記錄(參

15、考第 9 章的分頁置換規則),39,使用 TLB 硬體支援的分頁法,40,分頁表的結構(3),使用關聯式記憶體來儲存分頁表的效率: 如果要尋找的分頁碼已經在關聯式記憶體中,則稱為命中,否則稱為失誤 命中率的定義為命中次數 /( 命中次數 + 失誤次數) 100% 例:假設存取關聯式記憶體的時間為 20 奈秒,直接存取主記憶體的時間為 100 奈秒。假設在關聯式記憶體內命中率為 95%,則所需的時間為:,41,分頁表的結構(4),0.95 120 ns + 0.05 220 ns = 125 ns 其中 120 奈秒的 20 奈秒花費在關聯式記憶體中找尋(命中),100 奈秒花費在存取主記憶體的

16、資料;而 220 奈秒中的 20 奈秒花費在關聯式記憶體中找尋(失誤),100 奈秒花費在主記憶體中找尋,另外 100 奈秒花費在存取主記憶體的資料 適當地使用關聯式記憶體,可以降低主記憶體的存取時間,也可以節省成本,42,分頁表的結構(5),分頁的環境中,記憶體的保護可以使用分頁上面的保護位元來完成(通常保存在分頁表) 保護位元可以定義某一分頁是可讀、可寫或者兩者皆可 每次的位址轉換均會去參考相對應的保護位元;企圖以非保護位元所提供的動作來存取此分頁,將會引發例外中斷,43,分頁表的結構(6),效用位元: 當此位元被設定為有效(v)時,表示所對應的分頁目前在主記憶體中;如果此位元被設定成無效(i),則表示所對應的分頁在輔助記憶體中 作業系統會設定每分頁的有效位元,以核對該分頁的存取動作;當系統進行位址轉換時,也會去檢查此位元,若企圖存取無效的分頁也會引發例外中斷,44,分頁表中的效用位元,45,兩個使用者共用頁框,使用分頁法另一項好處 簡單達到程式碼共用,46,多層分頁法(1),不希望分頁表佔用連續的記憶體空間想把分頁表分成較小的單位儲存 多層式分

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号