OS儲存器管理 二

2021-07-10 11:36:48 字數 2750 閱讀 6129

離散分配

分頁(paging),

分段,段頁式

一、分頁

乙個程序的實體地址可以是非連續的;

將物理記憶體分成固定大小的塊,稱為塊(frame);

將邏輯記憶體分為同樣大小的塊,稱為頁(page);

將連續的頁分配並存放到不連續的若干記憶體塊中;

建立頁表,記錄每一頁對應的儲存塊的塊號,將邏輯位址轉換為實體地址。

將產生內部碎片

位址轉換方法

cpu生成的位址分成以下兩部分:

1.頁號(p):頁號作為頁表中的索引。頁表中包含每頁所在物理記憶體的基位址。

2.頁偏移(d):與頁的基位址組合就形成了實體地址,就可送交物理單元。

邏輯記憶體和物理記憶體的分頁模型:

例如:

將邏輯位址轉換為實體地址需要暫存器來支援,位址轉換體系結構如下:

位址變換機構如下:

假定一頁大小為1k(1024b),考察邏輯位址2056,位址變換過程工作原理如下所示:

轉換過程分析:邏輯位址機內表示(以16位為例)

無需計算,只需用塊號代替高位的頁號,就可立即得到對應的實體地址

例如:

頁表的實現

1.頁表儲存在記憶體中

2.頁表基暫存器(ptbr)指向頁表

3.頁表長度暫存器(ptlr)指示頁表的大小

4.在這種方式下,每次資料/指令的訪問需要訪問兩次記憶體。一次訪問頁表,另一次訪問資料/指令

5.兩次記憶體訪問問題可以用特別的快速查詢硬體緩衝(tlb,稱為快表或聯想儲存器或關聯記憶體或翻譯後備緩衝器)來解決。

帶tlb的分頁硬體原理如下:

頁表結構:

①層次化分頁

②hash頁表

①層次化分頁

1.將邏輯位址空間分成多個頁表

2.一種簡單的方法是兩層分頁法

示意圖如下:

兩層分頁方法例項:

邏輯位址(32位機器,頁大小為4k)分成以下兩部分:頁號(20位),頁偏移(12位)

頁表又分成頁,所以頁號又進一步分成:10位頁號,10位頁偏移

因此,邏輯位址表示如下:

②hash頁表

1.處理超過32位位址空間的常用方法是使用hash頁表。

2.邏輯位址中的邏輯頁號被放入hash頁表中。hash頁表的每一項都包括乙個鏈結組的元素,這些元素hash成同一位置(碰撞)。

3.邏輯頁號與鍊錶中的每 乙個元素的第乙個域相比較。如果匹配,那麼對應的塊號就用來形成位置位址。如果不匹配,那麼就對鍊錶中的下乙個域進行頁碼比較。

hash頁表例項:

二、分段

支援使用者觀點的記憶體管理方法

程式是若干段的集合:主程式,子程式,函式,方法,物件,區域性變數,全域性變數,堆疊,符號表,陣列

使用者角度的程式:

段的邏輯視角:

段的體系結構:

邏輯位址由兩個元素組成:

《段號,偏移》

段表:將二維的使用者定義位址對映為一維實體地址。段表的每個條目都有段基位址和段界限。

界限:指定段的長度

段表基位址暫存器(stbr)指向記憶體中的段表的位置

段表長度暫存器(stlr)指示程式所用的段的個數

段號s小於stlr的時候才是有效的

段硬體實現:

分段例項:

三、交換

程序可以暫時從記憶體中交換出來到備份儲存上,當需要再執行時再調回到記憶體中。

備份儲存 —— 通常是快速磁碟。這必須足夠大,以便容納所有使用者的記憶體映象拷貝,它也必須提供對這些記憶體映象的直接訪問。

換入、換出 - 是交換策略的乙個變種,被用於基於優先權的排程演算法中。如果乙個更高優先順序程序來了且需要服務,記憶體管理可以交換出低優先順序的程序,以便可以裝入和執行更高優先順序的程序。當更高優先順序程序執行完後,低優先順序程序可以交換回記憶體以繼續執行。

交換時間的主要部分是轉移時間。總的轉移時間與所交換的記憶體空間直接成正比。

交換的修改版本在許多系統中被採用。(如unix, linux及windows)

交換示意圖:

部落格:欠扁的小籃子

二 儲存器管理

作業系統的功能包括 處理器管理 儲存器管理 檔案管理 裝置管理等。記憶體管理的功能有 1.記憶體空間的分配與 包括記憶體的管理和共享。2.位址轉換,把邏輯位址轉換成相應的實體地址。3.記憶體空間的擴充,利用虛擬儲存技術或自動覆蓋技術,從邏輯上擴充記憶體。4.儲存保護,保證各道作業在各自的儲存空間內執...

OS 處理器管理

今天的主題是處理器管理,具體的總結如下 現代計算機系統具有處理器與外圍裝置並行工作的能力。為了發揮這一能力,提高系統效率,多道程式應運而生,多道程式技術讓幾個程式同時裝入主儲存器並行執行。採用多道程式設計,能增加單位時間內的算題量,但對每道程式來說可能延長了執行時間。程序是個新概念,程序是乙個程式在...

學習筆記 OS虛擬儲存器

虛擬儲存器從邏輯上實現對記憶體容量的擴充,讓使用者感覺到的記憶體容量比實際記憶體容量大得多。於是便可讓比記憶體空間更大的程式執行,或者讓更多的使用者程式併發執行。要求將乙個作業全部裝入記憶體方可執行,會出現以下兩種情況 1 有的作業很大,記憶體空間超過記憶體總儲存量 2 有大量作業要求執行。1.常規...