離散分配
分頁(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.常規...