第四章 存儲管理
1、存儲管理的基本概念
1)邏輯地址與物理地址
在具有地址變換機構的計算機中,允許程序中編排的地址和信息實際存放在內存中的地址有所不同。前者叫邏輯(相對)地址,後者叫物理(絕對)地址。
2)重定位:將邏輯地址轉換爲物理地址。
3)三級存儲器結構
輔存<-->主存<-->高速緩存爲三級存儲器結構,從輔存到高速緩存,存儲器容量減小,存取時間減少,速度增加,但每位存儲器成本增加了。
4)虛擬存儲管理
虛存是由操作系統調度,採用內外存的交換技術,各道程序在必需使用時調入內存,不用的調出內存,這樣好像內存容量不受限制。
虛存的特點:
(1)虛存容量不是無限的,極端情況受內存和外存可利用的總容量限制;
(2)虛存容量還受計算機總線地址結構限制;
(3)速度和容量的“時空”矛盾,虛存量的“擴大”是以犧牲CPU工作時間以及內外存交換時間爲代價的。
5)存儲管理的任務和功能
任務是方便用戶,提高內存資源的利用率,實現主存共享。
功能主要有主存的分配和回收、地址映射、主存擴充、內存的共享和保護技術
2、分區分配存儲管理
分爲固定分區、可變分區、可重定位分區、多重分區。
內存“擴充”技術:
1)交換:由操作系統做,用戶不知道。
2)覆蓋:由用戶控制,操作系統提供覆蓋機制。
內存保護技術:保護系統工作區和用戶作業區,特別是如何防止系統區被破壞。方法有存儲保護鍵、界限寄存器
3、請求頁式存儲管理
1)頁式存儲管理實現原理
基於程序在運行時不需要一開始都裝入內存(局部性原理),更不應該把最近較長一段時間內不用的程序裝入內存。
2)頁表的作用是將邏輯頁號轉換爲物理塊號。
3)頁面淘汰算法
先進先出算法(FIFO)、循環檢測法、最近最少使用頁面先淘汰(LRU)、最不經常使用的頁面先淘汰(LFU)、最近沒有使用頁面先淘汰(NUR)、最優淘汰算法(OPT)等。
4)頁式存儲管理的優、缺點
優點:
(1)虛存量大,適合多道程序運行,用戶不必擔心內存不夠的調度操作;
(2)內存利用率高,不常用的頁面儘量不留在內存;
(3)不要求作業連續存放,有效地解決了“碎片”問題。與分區式相比,不需移動作業;與多重分區比,無零星碎片產生。
缺點:
(1)要處理頁面中斷、缺頁中斷處理等,系統開銷較大;
(2)有可能產生“抖動”;
(3)地址變換機構複雜,爲提高速度採用硬件實現,增加了機器成本。
4、段式、段頁式存儲管理
分頁式存儲管理系統和分段式存儲管理系統的主要區別:
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放。但在概念上兩者完全不同,主要表現在以下幾個方面:
1)頁是信息的物理單位,分頁是爲了實現非連續分配,以便解決內存碎片問題,或者說分頁是由於系統管理的需要。段是信息的邏輯單位,它含有一組意義相對完整的信息,分段的目的是爲了更好地實現共享,滿足用戶的需要。
2)頁的大小固定,由系統確定,將邏輯地址劃分爲頁號和頁內地址是由機器硬件實現的。而段的長度卻不固定,決定於用戶所編寫的程序,通常由編譯程序在對源程序進行編譯時根據信息的性質來劃分。
3)分頁的作業地址空間是一維的。分段的地址空間是二維的。
段式、頁式存儲管理的對比表參考教材117頁。
段頁式存儲管理特點:
1)每一段分若干頁,再按頁式管理,頁之間不要求連續;
2)用分段方法分配管理作業,用分頁方法分配管理內存;
3)兼有段式和頁式管理的優點,系統複雜和開銷增大,一般在大型機器上才使用。
5、例題解析
例1 採用可變分區管理存儲空間時,若主存中按地址順序依次有五個空閒區,大小分別爲15K、28K、10K、226K、110K。現有五個作業J1到J5,它們所需的主存空間依次是10K、15K、102K、26K、180K。問如果採用首次適應分配算法,能否把這五個作業按J1到J5的次序全部裝入主存。使用哪種分配算法裝入這五個作業,可使主存的利用率最高?
解:按首次適應分配算法,不能把這五個作業全部依次裝入主存。這時J1、J2裝入第1、2個空閒區,J3、J4裝入第4、5個空閒區,J5有180K,無法裝入僅有的10K空閒區。
能使主存利用率最高的是採用最佳適應分配算法。這時,這五個空閒塊分別裝入作業J2、J4、J1、J5、J3。
例2 考慮一個由8個頁面,每頁有1024個字節組成的邏輯空間,把它裝入到有32個物理塊的存儲器中,問:
(1)邏輯地址需要多少二進制位表示?
(2)物理地址需要多少二進制位表示?
【分析】 在分頁存儲管理中,邏輯地址結構如下圖所示。
它由兩個部分組成:前一部分表示該地址所在頁面的頁號p;後一部分表示頁內地址(頁內位移)d。頁號的地址位數決定了頁的多少,假設頁號有20位,則地址空間中最多可容納的頁面數爲2^20,即1MB個頁面。頁內地址位數確定了每頁的大小,若頁內地址爲12位,則每頁大小爲2^12,即2KB。
同理,物理地址中塊號的地址位數決定了塊的數量。由於頁式存儲管理內存空間塊的大小與頁面大小相同,所以物理地址中塊內地址與邏輯地址中的頁內地址位數相同。
解:因爲頁面數爲8=2^3,故需要3位二進制數表示。每頁有1024個字節,1024=2^10,於是頁內地址需要10位二進制數表示。32個物理塊,需要5位二進制數表示(32=2^5)。
(1)頁的邏輯地址由頁號和頁內地址組成,所以需要3+10=13位二進制數表示。
(2)頁的物理地址由塊號和頁內地址的拼接,所以需要5+10=15位二進制數表示。
例3 若在一分頁存儲管理系統中,某作業的頁表如下所示。已知頁面大小爲1024字節,試將邏輯地址1011,2148,4000,5012轉化爲相應的物理地址。
頁號 物理塊號
0 2
1 3
2 1
3 6
【分析】 頁式存儲管理的地址結構是一維的,即邏輯地址(或物理地址)只用一個數值即可表示。若給定邏輯地址A,頁面的大小爲L,則頁號p和頁內地址d可按照下式求得:
p=int [A/L] d=A mod L
其中,int是取整函數(取數值的整數部分),mod是取餘函數(取數值的餘數部分)。
下圖顯示了頁式管理系統的地址轉換機構。
頁表的作用是實現從頁號到物理塊號的地址映射。以邏輯地址的頁號檢索頁表,得到該頁的物理塊號;同時將頁內地址d直接送入物理地址寄存器的塊內地址字段中。這樣物理塊號和塊內地址拼接成了實際訪問內存的地址,從而完成了從邏輯地址到物理地址的轉換。
所以物理地址的計算公式爲:
物理地址=塊的大小(即頁的大小L)*塊號f+頁內地址d
解:本題中,爲了描述方便,設頁號爲p,頁內位移爲d,則:
1)對於邏輯地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查頁表第0頁在第2塊,所以物理地址爲1024*2+1011=3059。
2)對於邏輯地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查頁表第2頁在第1塊,所以物理地址爲1024+100=1124。
3)對於邏輯地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查頁表第3頁在第6塊,所以物理地址爲1024*6+928=7072。
4)對於邏輯地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因頁號超過頁表長度,該邏輯地址非法。
例4 某虛擬存儲器的用戶編程空間共32個頁面,每頁爲1KB,內存爲16KB。假定某時刻一用戶頁表中已調入內存的頁面的頁號和物理塊號的對照表如下:
頁號 物理塊號
0 5
1 10
2 4
3 7
請計算邏輯地址0A5C(H)所對應的絕對地址。
【分析】在分頁存儲管理方式中,邏輯地址結構爲:
如果給定的邏輯地址是A,頁面大小爲L,則頁號p和頁內地址d可按下式求得:
p=int [A/L] d=[A] mod L 其中,int表示取結果的整數部分,mod表示取結果的餘數部分。頁號的位數表示地址空間中最多可容納的頁面個數,頁內地址的位數表示每頁的大小,頁表的作用是實現從頁號到物理塊號的地址映射。在頁式存儲管理中,邏輯空間頁的大小與主存地址空間中塊的大小相同。
解:頁式存儲管理的邏輯地址分爲兩部分:頁號和頁內地址。由已知條件“用戶編程空間共32個頁面”,可知頁號部分佔5位;由“每頁爲1KB”,1K=2^10,可知內頁地址佔10位。由“內存爲16KB”,可知有16塊,塊號爲4位。
邏輯地址0A5C(H)所對應的二進制表示形式是:000 1010 0101 1100 ,根據上面的分析,下劃線部分爲頁內地址,編碼 “000 10” 爲頁號,表示該邏輯地址對應的頁號爲2。查頁表,得到物理塊號是4(十進制),即物理塊地址爲:01 00 ,拼接塊內地址10 0101 1100,得01 0010 0101 1100,即125C(H)。
例5 某採用頁式存儲管理的系統,接收了一個共7頁的作業,作業執行時依次訪問的頁爲:1、2、3、4、2、1、5、6、2、1、2、3、7。當內存塊數量爲4時,請分別用先進先出(FIFO)調度算法和最近最少使用(LRU)調度算法,計算作業執行過程中會產生多少次缺頁中斷?寫出依次產生缺頁中斷後應淘汰的頁。(所有內存開始時都是空的,凡第一次用到的頁面都產生一次缺頁中斷。要求寫出計算過程)
解:(1)採用先進先出(FIFO)調度算法,頁面調度過程如下:
頁面次序 |
1 |
2 |
3 |
4 |
2 |
1 |
5 |
6 |
2 |
1 |
2 |
3 |
7 |
主存 頁面 情況 |
1 |
1 |
1 |
1 |
|
|
5 |
5 |
5 |
5 |
|
3 |
3 |
|
2 |
2 |
2 |
|
|
2 |
6 |
6 |
6 |
|
6 |
7 |
|
|
|
3 |
3 |
|
|
3 |
3 |
2 |
2 |
|
2 |
2 |
|
|
|
|
4 |
|
|
4 |
4 |
4 |
1 |
|
1 |
1 |
【分析】使用FIFO置換算法時,淘汰最先進入內存的頁面。例如,當加灰頁面5要換入內存時,此時內存中的頁面情況是1、2、3和4(加灰的部分),其中頁面4是最近新換入的,頁面3比頁面2換入的時間晚(參考加框部分的演示),所以按照該置換算法,需淘汰最早進入內存的頁面1,換入頁面5。
所以,共產生10次缺頁中斷,依次淘汰的頁是1、2、3、4、5、6。
(2)採用最近最少使用(LRU)調度算法,頁面調度過程如下:
頁面次序 1 2 3 4 2 1 5 6 2 1 2 3 7 主存
頁面
情況 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 5 5 3 3 4 4 6 6 7 【分析】 使用LRU置換算法時,淘汰最近最少使用的頁面。例如,當加灰頁面5要換入內存時,此時內存中的頁面情況是1、2、3和4(加灰的部分),我們考查加灰頁面5之前的頁面序列,分別是1,2,4,3 ……(參考加框部分的演示),可見在內存中的頁面3是最近用得最少的,所以按照該置換算法,需淘汰頁面3,換入頁面5。
因此,共產生8次缺頁中斷,依次淘汰的頁是3、4、5、6。
CSDN博文地址:http://blog.csdn.net/lwlliang/archive/2011/02/28/6212262.aspx
官方博文地址:http://www.17core.com/blog/html/201102/196.html