3. 基本分頁存儲管理方式
u本部分討論不具備對換功能的純分頁模式,作業運行需要全部裝入內存。
u比較連續分配方式
n作業邏輯地址空間有M大,就需要向內存申請一個M大的連續區域。
n分頁的目的是更細粒度的處理空間,減少粗放管理的浪費或開銷問題。
1)頁面的概念
u內存劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。
①物理劃分塊的大小= 邏輯劃分的頁的大小
②頁面大小要適中。
? 太大,(最后一頁)內碎片增大,類似連續分配的問題。
? 太小的話,頁面碎片總空間雖然小,提高了利用率,但每個進程的頁面數量較多,頁表過長,反而又增加了空間使用。
2)頁表的概念
u為了找到被離散分配到內存中的作業,記錄每個作業各頁映射到哪個物理塊,形成的頁面映射表,簡稱頁表。
u每個作業有自己的頁表
u頁表的作用:
? 頁號到物理塊號的地址映射
u要找到作業A
? à關鍵是找到頁表(PCB)
? à根據頁表找物理塊
3)地址的處理
u連續方式下,每條指令用基地址+偏移量即可找到其物理存放的地址。
規律
?作業相對地址在分頁下不同位置的數有一定的意義結構:
? 頁號+頁內地址(即頁內偏移)
?關鍵的計算是:根據系統頁面大小找到不同意義二進制位的分界線。
?從地址中分析出頁號后,地址映射只需要把頁號改為對應物理塊號,偏移不變,即可找到內存中實際位置。
4)地址變換機構
u地址變換過程
? 分頁系統中,進程創建,放入內存,構建頁表,在PCB中記錄頁表存放在內存的首地址及頁表長度。
1.運行某進程A時,將A進程PCB中的頁表信息寫入PTR中;
2.每執行一條指令時,根據分頁計算原理,得到指令頁號X和內部偏移量Y;
3.CPU高速訪問PTR找到頁表在哪里;
為防止錯誤檢索,增加預先的判斷:
? 計算得到的頁號是否大于頁表長度(即頁表項數)
?一個5頁的進程,頁面編號0-4,若地址計算出的頁號不在該范圍,一定產生了越界錯誤。
4.查頁表數據,得到X實際對應存放的物理塊,完成地址映射計算,最終在內存找到該指令。
5)引入快表——針對訪問速度問題
問題:基本分頁機制下,一次指令需兩次內存訪問,處理機速度降低1/2,分頁空間效率的提高以如此的速度為代價,得不償失。
改進:減少第1步訪問內存的時間。增設一個具有“并行查詢”能力的高速緩沖寄存器,稱為“快表”,也稱“聯想寄存器”(Associative
memory),IBM系統稱為TLB(Translation Look aside Buffer)。
快表放什么?:正在執行進程的頁表的數據項。
6)兩級、多級頁表,反置頁表
——針對大頁表占用內存問題
②多級頁表
u64位操作系統下,兩級仍然不足以解決頁表過大問題時,可按同樣道理繼續分頁下去形成多級頁表。
③反置頁表
每個進程一張頁表→ 一張OS 反置頁表 + 每進程一張外部頁表
u反置頁表(Inverted
Page Tale):站在物理塊的角度,記錄占用它的已調入內存的進程標識和頁號。系統中只需一張該表即可。一個64MB內存,若頁面大小4KB(64M/4K=2^16=16K個物理塊),反置頁表占用64KB(16K*4B)
u進程外部頁表(External
Page Table):每個進程一張,記錄進程不在內存中的那些頁面所在的外存物理位置。
u如何提高檢索反置頁表速度:內存容量大時,反置頁表的頁表項還是會很大,利用進程標識符和頁號去檢索一張大的線性表很費時,可利用hash算法提高檢索速度。
4.基本分段存儲管理方式
u從提高內存利用率角度;
n固定分區 à動態分區à分頁
u從滿足并方便用戶(程序員)和使用上的要求角度:
n分段存儲管理:作業分成若干段,各段可離散放入內存,段內仍連續存放。
^方便編程:如匯編中通過段:偏移確定數據位置
^信息共享:同地位的數據放在一塊方便進行共享設置
^信息保護
^動態增長:動態增長的數據段事先固定內存不方便
^動態鏈接:往往也是以邏輯的段為單位更方便
1)分段系統的基本原理
v程序通過分段(segmentation)劃分為多個模塊,每個段定義一組邏輯信息。如代碼段(主程序段main,子程序段X)、數據段D、棧段S等。
v誰決定一個程序分幾段,每段多大?
v編譯程序(基于源代碼)
u段的特點
n每段有自己的名字(一般用段號做名),都從0編址,可分別編寫和編譯。裝入內存時,每段賦予各段一個段號。
n每段占據一塊連續的內存。(即有離散的分段,又有連續的內存使用)
n各段大小不等。
3)分頁和分段的主要區別
1.需求:分頁是出于系統管理的需要,是一種信息的物理劃分單位,分段是出于用戶應用的需要,是一種邏輯單位,通常包含一組意義相對完整的信息。
一條指令或一個操作數可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
2.大小:頁大小是系統固定的,而段大小則通常不固定。分段沒有內碎片,但連續存放段產生外碎片,可以通過內存緊縮來消除。相對而言分頁空間利用率高。
3.邏輯地址:分頁是一維的,各個模塊在鏈接時必須組織成同一個地址空間;
???????????????????? 分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間。
4.其他:通常段比頁大,因而段表比頁表短,可以縮短查找時間,提高訪問速度。分段模式下,還可針對不同類型采取不同的保護;按段為單位來進行共享
4)信息共享
分段系統的突出優點:
易于實現共享:
在分段系統中,實現共享十分容易,只需在每個進程的段表中為共享程序設置一個段表項。
比較課本圖。對同樣的共享內容的管理上,很明顯分段的空間管理更簡單。分頁的圖涉及太多的頁面劃分和地址記錄的管理。
易于實現保護:
代碼的保護和其邏輯意義有關,分頁的機械式劃分不容易實現。