作業系統 儲存器管理

2022-08-21 08:45:15 字數 3579 閱讀 8085

第四章 儲存器管理

*儲存器的層次結構

儲存器的三層結構,cpu暫存器(暫存器),主存(快取記憶體,主儲存器,磁碟快取),輔存(固定磁碟,可移動儲存介質);

處理機都是從主儲存器中取得指令和資料,將取得指令放入指令暫存器中,資料放入資料暫存器中;暫存器存放運算元,作位址暫存器加快位址轉換速度;快取記憶體用以緩和記憶體與處理機之間的矛盾;磁碟快取用於暫時存放頻繁使用的一部分磁碟資料和資訊,以減少訪問磁碟的次數

*程式的裝入和銜接

編譯程式產生的目標模組->鏈結程式->裝入模組->裝入程式->記憶體

程式的裝入

絕對裝入方式,程式經編譯後,要知道程式將駐留在記憶體的什麼位置;可重定位裝入方式,裝入時根據所定位的記憶體位址去修改每個重定位位址項,新增相應偏移量;動態執行時的裝入方式,把位址轉換推遲到程式真正要執行時才將相對位址轉換為絕對位址

程式的鏈結

靜態鏈結方式,在生成可執行檔案時進行,在目標模組中記錄符號位址,而在可執行檔案中改寫為指令直接使用的數;裝入時動態鏈結,將使用者源程式編譯後,在裝入記憶體時,邊裝入邊銜接;執行時動態鏈結,凡在執行過程中未被用到的目標模組都不會被調入記憶體和被鏈結到裝入模組上,這樣不僅可加快程式的裝入過程,而且可節省大量的記憶體空間

*連續分配儲存管理方式

單一連續分配,只能用於單使用者,單任務的作業系統;固定分割槽分配,把記憶體分為一些大小相等或不等的分割槽,每個應用程序占用乙個或幾個分割槽,作業系統占用乙個區;動態分割槽分配,可變式分割槽中的分割槽的大小和分割槽的個數都是可變的,根據作業的大小和多少動態地劃分

固定分割槽存在內碎片,分割槽總數固定,限制併發執行程式數,分割槽表---記錄分割槽的大小和使用情況

動態分割槽存在外碎片,空閒分割槽表---為尚未分配的分割槽設定表項(分割槽號,分割槽大小,分割槽位址,狀態),空閒分割槽鏈---實現空閒分割槽的分配和鏈結

基於順序搜素的動態分割槽分配演算法

首次適應演算法ff,空閒分割槽表(空閒區鏈)中的空閒分割槽要按位址由低到高排序,保留了大分割槽,保留了高址部分的大空閒區,但低位址區間留下難於使用的空閒分割槽且每次從低址開始查詢;玄幻首次適應演算法nf,從上次找到的空閒區的下乙個空閒區開始查詢,空閒分割槽分布得更均勻,查詢開銷小,但缺乏大空閒分割槽;最佳適應演算法bf,空閒分割槽按從小到大排序,外碎片變得盡量小,使得剩餘空閒最小;最壞適應演算法wf,從所有未分配的分割槽中挑選最大的且大於和等於作業大小的分割槽分給要求的組員;空閒分割槽按大小由大到小排序,剩餘的空閒區最大,缺乏大空閒分割槽

基於索引搜素的動態分割槽分配演算法

快速適應(quick fit)演算法根據所需記憶體長度,在管理索引表中找到最適合的空閒鍊錶;夥伴系統(buddy system)已分配分割槽或空閒分割槽大小均為2的k此冪,1024表劃分申請與**;雜湊演算法建立雜湊函式,構造一張以空閒分割槽大小未關鍵字的雜湊表。表中每一項對應乙個空閒分割槽鍊錶的頭指標

動態可重定位分割槽分配

緊湊,使用者程式在記憶體中發生了改變需重定位;動態重定位,動態執行時裝入,位址轉化在指令執行時進行,需獲得硬體位址變換機制的支援,處理機提供相對位址,儲存器提供重定位暫存器;動態重定位分割槽分配演算法,在動態分割槽分配演算法的基礎上增加了緊湊

*對換系統把所有的使用者作業存放在磁碟(外存)上,每次只能調入乙個作業進入記憶體,當該作業的乙個時間片用完時,將它調至記憶體的後備佇列山等待,再從後備佇列調入另乙個作業進入記憶體執行

對換的型別整體對換,處理機中級排程實際上就是儲存器的對換功能,解決記憶體緊張問題;頁面對換,是實現請求分頁和請求分段儲存管理的基礎

程序的換出(掛起)與換入(啟用)1.選擇被換出的程序,選擇阻塞狀態或睡眠狀態的程序,若有多個,則選擇優先順序最低的換出程序;2.程序換出過程,只能換出非共享的程式和資料段,申請對換空間,申請成功後啟動磁碟,將程序的程式和資料傳送到磁碟的對換區上

檢視pcb集合中所有程序狀態,找出就緒狀態但已換出的程序,若有多個,則選擇其中已換出到磁碟上時間最久的程序作為換入程序,並申請記憶體

*分頁儲存管理方式

無須緊湊,便可充分地利用記憶體空間,三種離散分配:分頁儲存管理方式,分段儲存管理方式,段頁式儲存管理方式

頁面:分頁儲存管理將程序的邏輯位址空間分成若干個頁,為各頁加以編號從0開始;位址結構:頁號p+位移量w;頁表:實現從頁號到物理塊號的位址對映

兩級和多級頁表兩級頁表對頁表施行離散分配的方法,雖然解決了對於大頁表無需大片連續儲存空間的問題,但並未解決較少的記憶體空間去存放大頁表的問題;

對於64位的機器,不適合用二級頁表

反置頁表減少頁表占用記憶體空間,每乙個物理塊(頁框)設定乙個頁表項,並按物理塊排序;根據程序的標識和頁號,檢索反置頁表。若匹配,則該頁表項中的序號i標識該頁所在的物理塊號

*分段儲存管理方式

分段系統的基本原理每個段都從0開始編址,並採用一段連續的位址空間。段的長度由相應的邏輯資訊組的長度決定,因此各段的長度並不相等。在系統中,類似於分頁系統,需為每個程序建立一張段對映表,即段表,村芳在一組暫存器中,以利於提高轉換速度;

分頁和分段的區別1.頁是資訊的物理單位;2.頁的大小固定且由系統決定;3.分頁使用者程式位址空間是一維的;分段則段是資訊的邏輯單位,包含一組意義相對完整的資訊,段的長度不固定,分段系統中,使用者程式的位址空間是二維的,既要段名,又要段位址

資訊共享段是資訊的邏輯單位,因此分段系統的乙個突出的優點是易於實現段的共享。即允許若干個程序共享乙個或多個段,而且對段的保護也十分簡單。在分頁系統中,雖然也能實現程式和資料共享

本章習題小結

4.1為什麼要配置層次式儲存器?

設定多個儲存器可以使儲存器兩端的硬體能並行工作;採用多級儲存結構,特別是cache技術,是減輕儲存器頻寬對系統效能影響的最佳結構方案;在微處理機內部設定各種緩衝儲存器,減輕對儲存器訪問的壓力。增加cpu中暫存器數量大大緩解對儲存器壓力。

4.7為什麼要引入動態重定位?如何實現?

在程式執行過程中,每當訪問指令或資料時,將要訪問的程式或資料的邏輯位址轉換成實體地址,引入了動態重定位;具體實現方法實在系統中增加乙個重定位暫存器,用來裝入程式在記憶體中的啟示位址,程式執行時,真正訪問的記憶體位址時相對位址與重定位暫存器中的位址相加之和,從而實現動態重定位。

4.9在採用首次適應演算法**記憶體時,可能出現哪幾種情況?應怎樣處理這些情況?

**記憶體的時候,我們把將要**的記憶體區的首址拿到空閒分割槽鍊錶中比對找出插入點(按照空閒分割槽鏈的構建演算法),如果將要**的記憶體和插入點的左、右或者兩者都相鄰,那就把相鄰的區合併成乙個區,去過不相鄰那就單獨作為乙個區插入進去,並修改相關的資料結構中的值。

4.21在分頁系統中時如何實現位址變換的?

首先,程序執行時從程序的pcb中把頁表始址和頁表長度放入頁表暫存器中,當程序要訪問某個邏輯位址中的資料的時候,分頁位址變址機構會自動的將有效位址(邏輯位址)分為頁號和業內位址。頁號和頁表寄存去中的頁表相比,如果頁號比較大則說明訪問越界,丟擲中斷。否則利用頁號、頁表始址和頁表項長度計算出相應的頁表中的位置,從而得到物理塊號。把物理塊號和頁內位址同時送入實體地址暫存器中,相結合得到實體地址。

作業系統 儲存器管理

程式的裝入和鏈結 連續分配方式 基本分頁儲存管理方式 基本分段儲存管理方式 虛擬儲存器的基本概念 請求分頁儲存管理方式 頁面置換演算法 請求分段儲存管理方式 使用者程式要在系統中執行,必須先將它裝入記憶體,然後由編譯程式 compiler 對使用者源程式進行編譯,形成若干個目標模組 object m...

作業系統 儲存器管理

使用者程式要在系統中執行的話,就必須裝入記憶體,然偶後將其轉變為乙個可執行的程式。程式的鏈結 程式的裝入 程式裝入記憶體的問題解決了,但是記憶體又是怎麼為程式分配記憶體的?連續分配 分配演算法 基於索引搜尋 分配操作 事先規定最小的剩餘分割槽大小size,當需要分配u.size大小記憶體的時候,從空...

作業系統之儲存器管理

儲存器的層次如下圖 上圖中,暫存器和主儲存器稱為可執行儲存器。快取記憶體的作用是緩和cpu與記憶體之間的速度差異,主要由硬體實現。磁碟快取的出現是由於記憶體容量不夠,需要引入磁碟,然而磁碟的i o速度遠低於主存的訪問速度,為了緩和兩者之間在速度上的差異,設定了磁碟快取。磁碟快取與快取記憶體不同,它本...