連續(xù)分配存儲(chǔ)管理方式產(chǎn)生的問(wèn)題:
變連續(xù)分配為離散分配,允許將作業(yè)離散放到多個(gè)不相鄰接的分區(qū)中。
空間劃分
內(nèi)存分配
已知邏輯地址求頁(yè)號(hào)和頁(yè)內(nèi)地址
給定1個(gè)邏輯地址空間中的地址為 A,頁(yè)面的大小為L(zhǎng),則頁(yè)號(hào) P 和頁(yè)內(nèi)地址 d(從 0 開(kāi)始編號(hào))可按下式求得:
其中,INT 是整除函數(shù),mod 是取余函數(shù)。
例:系統(tǒng)的頁(yè)面大小為 1 KB,設(shè) A = 2170 B,則由上式可以求得 P = 2,d = 122。
為了便于在內(nèi)存找到進(jìn)程的每一個(gè)頁(yè)面所對(duì)應(yīng)塊,分頁(yè)系統(tǒng)中為每一個(gè)進(jìn)程配置1張頁(yè)表,進(jìn)程邏輯地址空間中的每頁(yè),在頁(yè)表中都對(duì)應(yīng)有1個(gè)頁(yè)表項(xiàng)。
頁(yè)表寄存在內(nèi)存中,屬于進(jìn)程的現(xiàn)場(chǎng)信息。
用處:1.記錄進(jìn)程的內(nèi)存分配情況 2.實(shí)現(xiàn)進(jìn)程運(yùn)行時(shí)的動(dòng)態(tài)重定位。
訪問(wèn)1個(gè)數(shù)據(jù)需訪問(wèn)內(nèi)存 2 次 (頁(yè)表1次,內(nèi)存1次)。
頁(yè)表的基址及長(zhǎng)度由頁(yè)表寄存器給出。
若頁(yè)面較小
若頁(yè)面較大
在分頁(yè)存儲(chǔ)管理方式中,如果不具有頁(yè)面對(duì)換功能,不支持虛擬存儲(chǔ)器功能,這類存儲(chǔ)管理方式稱為純分頁(yè)或基本分頁(yè)存儲(chǔ)管理方式。
在調(diào)度作業(yè)運(yùn)行時(shí),必須將它的所有頁(yè)面1次調(diào)入內(nèi)存,但邏輯上連續(xù)的各個(gè)頁(yè)所對(duì)應(yīng)的內(nèi)存塊可以不連續(xù)。
特殊的固定分區(qū) + 離散分配
地址變換機(jī)構(gòu)
地址變換機(jī)構(gòu)種類
地址變換借助頁(yè)表來(lái)完成,頁(yè)表駐留內(nèi)存。
為了提高地址變換的速度,系統(tǒng)中設(shè)置1個(gè)頁(yè)表寄存器PTR (Page-Table Register)。
每一個(gè)進(jìn)程對(duì)應(yīng)1頁(yè)表,其信息(如長(zhǎng)度、始址)放在PCB 中,履行時(shí)將其裝入頁(yè)表寄存器。
在單處理機(jī)環(huán)境下,雖然系統(tǒng)中可以運(yùn)行多個(gè)進(jìn)程,但只需1個(gè)頁(yè)表寄存器。
當(dāng)進(jìn)程要訪問(wèn)某個(gè)邏輯地址中的數(shù)據(jù)時(shí),分頁(yè)地址變換機(jī)構(gòu)會(huì)自動(dòng)地將有效地址(相對(duì)地址)分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部份。
將頁(yè)號(hào)與頁(yè)表長(zhǎng)度進(jìn)行比較,如果頁(yè)號(hào)大于或等于頁(yè)表長(zhǎng)度,則表示本次所訪問(wèn)的地址已超出進(jìn)程的地址空間,產(chǎn)生地址越界中斷。
將頁(yè)表始址與頁(yè)號(hào)和頁(yè)表項(xiàng)長(zhǎng)度的乘積相加,得到該表項(xiàng)在頁(yè)表中的位置,因而可從中得到該頁(yè)的物理塊號(hào),將之裝入物理地址寄存器中。
將有效地址寄存器中的頁(yè)內(nèi)地址送入物理地址寄存器的塊內(nèi)地址字段中。
例:若在1分頁(yè)存儲(chǔ)管理系統(tǒng)中,某作業(yè)的頁(yè)表以下表所示,已知頁(yè)面大小為 1024B,試將10進(jìn)制邏輯地址 1011,2148,5012 轉(zhuǎn)化為相應(yīng)的物理地址。
設(shè)頁(yè)號(hào)為 P,頁(yè)內(nèi)位移為 W,邏輯地址為 A,內(nèi)存地址為 M,頁(yè)面大小為 L,則
P = int ( A / L )
W = A mod L
對(duì)邏輯地址 1011
P=int(1011/1024)=0
W=1011 mod 1024=1011
A=1011=(0,1011)
查頁(yè)表第 0 頁(yè)在第 2 塊,所以物理地址為 M=1024*2+1011= 3059。
對(duì)邏輯地址為 2148
P= int (2148/1024)=2
W=2148 mod 1024=100
A=2148=(2,100)
查頁(yè)表第 2 頁(yè)在第 1 塊,所以物理地
址為 M=1024*1+100=1124。
對(duì)邏輯地址 5012
P= int ( 5012/1024)=4
W=5012 mod 1024=916
頁(yè)號(hào)超過(guò)頁(yè)表長(zhǎng)度,該邏輯地址非法。
例:存儲(chǔ)器的用戶空間共有 32 個(gè)頁(yè)面,每頁(yè) 1KB,內(nèi)存16KB。假定某時(shí)刻系統(tǒng)為用戶的第 0、1、2、3 頁(yè)分別分配的物理塊號(hào)為 5、10、4、7,試將邏輯地址 0A5C 和093C 變換為物理地址。
基本的地址變換機(jī)構(gòu)存在的問(wèn)題
具有快表的地址變換機(jī)構(gòu)
有效訪問(wèn)時(shí)間(Effective Access Time ,EAT) 是指從給定邏輯地址,經(jīng)過(guò)地址變換,到在內(nèi)存中找到對(duì)應(yīng)物理地址單元并取出數(shù)據(jù)所用的總時(shí)間。
基本地址變換機(jī)構(gòu)
具有快表的地址變換機(jī)構(gòu)
例:有1頁(yè)式系統(tǒng),其頁(yè)表寄存在內(nèi)存中。(1)如果對(duì)內(nèi)存的1次存取需要 100ns,試問(wèn)實(shí)現(xiàn)1次頁(yè)面訪問(wèn)的存取時(shí)間是多少?(2)如果有快表,對(duì)快表的1次存取需要20ns, 平均命中率為 85%,試問(wèn)此時(shí)的存取時(shí)間為多少?
頁(yè)表放內(nèi)存中,則實(shí)現(xiàn)1次頁(yè)面訪問(wèn)需 2 次訪問(wèn)內(nèi)存。
所以實(shí)現(xiàn)1次頁(yè)面訪問(wèn)的存取時(shí)間為:100ns*2=200ns
系統(tǒng)有快表,則實(shí)現(xiàn)1次頁(yè)面訪問(wèn)的存取時(shí)間為:
0.85*(20ns+100ns)+(1-0.85)*(20ns+2*100ns)=135ns
若邏輯地址空間很大 (2^32 ∼2^64 ) ,則劃分的頁(yè)比較多,頁(yè)表就很大,占用的存儲(chǔ)空間大(要求連續(xù)) ,實(shí)現(xiàn)較困難。
例如,對(duì) 32 位邏輯地址空間的分頁(yè)系統(tǒng),如果規(guī)定頁(yè)面大小為 4 KB 即 2^12 B,則在每一個(gè)進(jìn)程頁(yè)表就由高達(dá)2^20 頁(yè)組成。設(shè)每一個(gè)頁(yè)表項(xiàng)占用1個(gè)字節(jié),每一個(gè)進(jìn)程僅僅頁(yè)表就要占用 1 MB 的內(nèi)存空間。
解決問(wèn)題的方法
將頁(yè)表再進(jìn)行分頁(yè),離散地將各個(gè)頁(yè)表頁(yè)面寄存在不同的物理塊中,同時(shí)也再建立1張外部頁(yè)表用以記錄頁(yè)表頁(yè)面對(duì)應(yīng)的物理塊號(hào)。
正在運(yùn)行的進(jìn)程,必須把外部頁(yè)表調(diào)入內(nèi)存,而動(dòng)態(tài)調(diào)入內(nèi)部頁(yè)表。只將當(dāng)前所需的1些內(nèi)層頁(yè)表裝入內(nèi)存,其余部份根據(jù)需要再陸續(xù)調(diào)入。
將外層頁(yè)表再進(jìn)行分頁(yè),也將各外層頁(yè)表頁(yè)面離散地寄存在不同的物理塊中,再利用第 2 級(jí)的外層頁(yè)表來(lái)記錄它們之間的對(duì)應(yīng)的關(guān)系。
解決問(wèn)題的方法
1般頁(yè)表的表項(xiàng)是按頁(yè)號(hào)進(jìn)行排序,頁(yè)表項(xiàng)中的內(nèi)容是物理塊號(hào)。
反置頁(yè)表是為每個(gè)物理塊設(shè)置1個(gè)頁(yè)表項(xiàng)并按物理塊號(hào)排序,其中的內(nèi)容是頁(yè)號(hào) P 及隸屬進(jìn)程標(biāo)志符 pid。
利用反置頁(yè)表進(jìn)行地址變換
頁(yè)的同享:各進(jìn)程把需要同享的數(shù)據(jù)/程序的相應(yīng)頁(yè)指向相同物理塊。
頁(yè)的保護(hù)
頁(yè)式存儲(chǔ)管理系統(tǒng)提供了兩種方式:
同享帶來(lái)的問(wèn)題
若同享數(shù)據(jù)與不同享數(shù)據(jù)劃在同1塊中,則:
實(shí)現(xiàn)數(shù)據(jù)同享的最好方法:分段存儲(chǔ)管理。
轉(zhuǎn)載自:楊森源