作业系统第八节记忆体管理.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作業系統 第八章 記憶體管理 第八章 記憶體管理 背景介紹 位址空間 位址連結 重疊 置換 連續配置 分頁 分段 摘要 目標與趨勢 目標 追蹤記憶體空間使用與否 配置記憶體給需要的行程 回收行程釋放出的記憶體 有效率的置換(swapping)方法 趨勢 程式成長的速度快於記憶體成長的速度 多媒體應用環境,使用更多的記憶體 位址空間 記憶體位址 邏輯位址,邏輯位址空間 實體位址,實體位址空間 執行程式時,邏輯與實體空間的位址轉換 載入器(loader):在主記憶體中尋找一塊可供使用的記憶體空間來載入程式 基底暫存器(base register):又名重定址暫存器,存放邏輯位址轉換成實體位址的基底值 記憶體管理單元(memory management unit,MMU):負責將邏輯位址加上基底值,以轉換成實體位址 邏輯位址空間到實體位址空間的轉換 位址連結(1) 當許多行程都要求將程式載入記憶體時: 行程均進入輸入佇列 依據排程器的排程結果選擇一個行程載入 行程執行時,從記憶體取得指令與資料﹔執行結束後,會釋放所佔有的記憶體空間 位址轉換的步驟: 原始程式中的位址:以符號表示 編譯器或組譯器:將符號所指之位址連結(binding)到一可重新定址的相對位址 鏈結編譯器或載入器:將可重新定址的位址連結到記憶體中的絕對實體位址 位址連結(2) 對於同一份資料或指令而言,所謂「位址」是隨時間而變的 資料或指令連結到實體位址的動作可在下列任一階段完成 編譯階段 已確定程式要在記憶體的某個位址執行 當起始位址改變,程式必須重新編譯,以產生新的絕對位址的程式碼 位址連結(3) 載入階段 不知道程式將在記憶體何處執行 程式需編譯成可重新定址的程式碼,當起始位址改變,程式碼只需重新載入 例:動態鏈結程式庫 執行階段 若在執行時,行程會從一記憶體區塊移動到另一區塊﹔或是內含執行時才能確定的資料型態 例:大部分現代的作業系統中,動態產生行程或執行緒 程式執行前的處理過程 重疊(1) 目的:解決記憶體容量的限制 做法:在編譯時,將程式與資料分割成多個獨立區域﹔在執行時,記憶體中只保留有需要的區段 重疊驅動器:載入目前要用的區段 若有區段可共用記憶體,新載入的區段會覆蓋舊區段 重疊(2) 多重重疊:造成程式設計師的負擔,一般會避免使用,因為: 區段分割太多?置換次數過多?降低程式執行效能 區段分割太少?可重疊的程式部分過少?記憶體可能不夠,系統效能降低 除外:嵌入式系統(記憶體有限,沒有虛擬記憶體) 重疊(3) 置換(1) 時機:系統無足夠空間容納所有行程 非執行中的行程暫時移到備份儲存體,要執行時再搬回記憶體中 備份儲存體:一般而言指磁碟 換出、置入過程 CPU排程器決定下一個執行的行程 分派程式到記憶體中尋找該行程 若不存在且無足夠記憶體空間?先換出某些行程 在置入該行程時,需重新載入暫存器內容,將控制權交給該行程 置換兩個行程 置換(2) 產生內文切換的額外負擔 時間浪費在資料傳遞上 為了提高效率 行程必須隨時告知作業系統行程對記憶體需求的變化 以便作業系統只置換實際所需的記憶體空間,節省置換所消耗的時間 置換(3) 發生記憶體存取的錯誤 原因:置換出不處於閒置狀態的行程(例:置換出的行程正在等待非同步的 I/O 操作) 解決方式: 任何企圖作I/O操作的行程不會被置換 只有進入作業系統緩衝區的行程才可作I/O操作,而作業系統與行程記憶體間的資料傳遞,只有在行程被置入時才可以進行 第八章 記憶體管理 背景介紹 連續配置 單一分割配置 多重分割配置 斷裂 分頁 分段 摘要 記憶體分割 單一分割配置 單一使用者 記憶體分隔成兩部分,一用來常駐作業系統,剩餘僅供一個使用者行程執行 缺點: 僅讓一個行程執行,造成記憶體空間的浪費 若行程執行 I/O 操作, CPU 閒置,使整體系統效能降低 若行程大小超過可用的記憶體空間,將導致程式無法執行(可能解決方法:重疊) 單一分割配置(2) 如何保護作業系統與使用者程式不會遭到對方不當修改? 利用基底暫存器與界線暫存器的輔助 基底暫存器:存放最小的記憶體實體位址 界線暫存器:存放邏輯位址範圍 每一個邏輯位址都須小於界線暫存器的邏輯位址範圍 邏輯位址+基底暫存器內的數值?記憶體的實體位址 CPU排程器選定一行程?分派程式將正確的值載入到基底和界線兩暫存器中?CPU每存取一次邏輯位址都經由兩暫存器的核對轉換,確保作業系統與使用者程式不會互相影響 位址保護機制 多重分割配置 (1) 多元程式概念 作業系統如何將可用的記憶體空間配置給正在輸入佇列中等待的多個使用者程式? 將記憶體劃分成許多固定大小的區域或分割 每個分割只能容納一個行程 分割數目的多寡會影響到同時放置的使用者行程數量

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档