操作系統員動態內存分配————分頁式存儲

4.3 知識點3:基本分頁存儲管理方式

4.3.1 要點歸納

1. 基本分頁存儲管理的原理

在分區存儲管理中,要求把作業放在一個連續的存儲區中,因而會產生許多碎片,固定分區會產生內部碎片,動態分區會產生外部碎片。儘管通過拼接技術可以解決碎片問題,但代價較高。分頁存儲管理允許將作業存放到許多不相鄰接的內存區域中,從而有效地解決了存儲器碎片問題(儘管會產生內部碎片,但相對進程來說是很小的)。

在基本分頁存儲管理(又稱簡單分頁、純分頁)中,用戶作業的地址空間被劃分成若干大小相等的區域,稱爲頁或頁面。頁面大小應該是2的整數冪,這樣方便地址變換。由於作業大小不會剛好都是頁面大小的整數倍,所以最後一個頁面往往會有空間浪費,稱爲頁內碎片,屬於內部碎片。

相應地,將內存的存儲空間也分成與頁大小相等的區域,稱爲塊或物理塊。在爲作業分配存儲空間時,總是以塊爲單位來分配,可以將作業中的任意一頁放到內存中的任意一個空閒塊中。在調度作業運行時,必須將它的所有頁面一次調入內存;若內存中沒有足夠的物理塊,則作業等待。

單詞Page Frame在國內操作系統教材中的翻譯方式很多,有物理塊(塊)、頁框、頁架、頁幀和幀等,讀者應加以注意,但它表示的都是與一個邏輯頁相對應的一個物理塊。

基本分頁存儲管理系統中的邏輯地址結構如圖4.22所示。它包含兩部分,前一部分爲頁號P,後一部分爲頁內偏移量W。如果邏輯地址空間是2m,頁面大小是2^n(字節),那麼邏輯地址的高m–n位是頁號,低n位是頁內偏移量。

在基本分頁存儲管理中,邏輯地址空間以頁爲單位劃分,而內存的分配是以內存塊爲單位分配的,頁面大小正好等於一個物理塊的大小。

圖4.22 分頁系統中的邏輯地址結構

上述地址結構中,兩部分的地址長度爲32位。其中0~11位(計12位)爲頁內偏移量,即每頁大小=2^12=4×2^10=4KB;12~31位(計20位)爲頁號,即最多的頁數=2^20= 1×2^10×2^10=1MB。頁內偏移量也稱爲頁內位移、頁偏移或頁內地址等。

爲了便於在內存中找到進程的每個頁面所對應的物理塊,系統爲每個進程建立一張頁面映像表,簡稱頁表,記錄頁面在內存中對應的物理塊號。頁表一般存放在內存中,圖4.23說明了頁表的作用。

頁面大小由機器的地址結構決定。在確定地址結構時,若選擇的頁面較小,一方面可以使頁內碎片較小並減少內存碎片的總空間量,有利於提高內存利用率;另一方面也會使每個進程要求較多的頁面,從而導致頁表過長,佔用大量內存,還會降低頁面調入/調出的效率。若選擇的頁面較大,雖然可以減少頁表長度,提高頁面調入/調出的效率,但又使頁內碎片增大。因此,頁面的大小應該選擇適中,一般在512B~8KB之間。

圖4.23 頁表的作用

2. 基本分頁存儲管理的存儲空間管理

可用位示圖構成主存分配表,位示圖的每一行用一個字來表示,其中每一位(其位置用字號和位號確定,假設字號和位號從0開始編號)與一個主存塊(其編號爲塊號)對應,0表示空閒,1表示已佔用,最後一個字節爲當前剩餘的空閒塊數。

主存分配時,計算塊號公式爲:

塊號=字號×字長+位號

主存第i塊歸還時,在位示圖中對應位置可按如下公式確定:

字號=塊號i DIV 字長,位號=塊號i MOD 字長

其中,DIV表示整除,MOD表示求餘數。

3. 基本分頁存儲管理的地址變換機構

如圖4.24所示,給出了分頁存儲管理系統中的地址變換機構,其中邏輯地址到物理地址的變換要藉助頁表來實現,頁表通常存放在內存中。

爲了實現上的方便,系統中設置了一個頁表寄存器(PTR),其中存放頁表在內存的起始地址F和頁表的長度M。進程未執行時,頁表的起始地址和長度存放在進程控制塊中。當進程執行時,纔將頁表起始地址和長度存入頁表寄存器中。

假設頁面大小爲L,頁表長度爲M,邏輯地址A通過地址變換得到物理地址E的過程如下:

計算頁號P=(int)(A/L);頁內偏移量W=A % L(W也稱爲頁內地址)。

比較頁號P和頁表長度M,若P≥M,則產生越界中斷,否則轉到下一步執行。

頁表中頁號P對應的頁表項地址=頁表起始地址F+頁號P×頁表項大小,取出該頁表項內容b,即爲物理塊號。

計算E=b×L+W。

用得到的物理地址E去訪問內存。

以上整個地址變換過程都是由硬件自動完成的。

圖4.24 分頁存儲管理系統的地址變換機構

例如,若頁面大小L爲1KB,頁號2對應的物理塊爲b=8,計算邏輯地址A=2500的物理地址E的過程如下:P=(int)(2500/1KB)=2,W=2500 % 1KB=452,查找得到頁號2對應的物理塊的塊號爲8,E=8*1024+452=8644。

【例4.2】在分頁存儲管理系統中,邏輯地址的結構長度爲18位,其中11~17位表示頁號,0~10位表示頁內偏移量。若有一個作業的各頁依次放入2、3、7號物理塊中,試問:

(1)進程邏輯地址空間最大可爲多少KB?分爲多少頁?每頁有多大?

(2)邏輯地址1500應在幾號頁內?對應的物理地址是多少?

解:在該頁表中,有3個頁表項,分別爲(0,2)、(1,3)、(2,7)。

(1)由於邏輯地址共有18位,所以最大的邏輯地址空間爲218B=256KB。採用0~10位表示頁內偏移量,所以頁面大小L=211B,每塊大小=頁面大小=211B,則頁面總數=218/211=128頁。

(2)邏輯地址A=1500,對應頁號=(int)(1500/211)=0,頁內偏移量W=1500。查找頁表可知對應的物理塊號爲2,所以,對應的物理地址E=2×211+1500=5596。

4. 具有快表的地址變換機構

從上面介紹的地址變換過程可知,若頁表全部放在內存中,則要存取一個數據或一條指令至少要訪問兩次內存,一次是訪問頁表,確定所存取的數據或指令的物理地址,第二次才根據該地址存取數據或指令。顯然,這種方法比通常執行指令的速度慢了一倍。

爲了提高內存訪問的速度,可以在地址變換機構中增設一個具有並行查找能力的高速緩衝存儲器(又稱聯想存儲器TLB、快表),通常是在快表中存放正在運行作業當前訪問的那些頁表項,以加速地址變換過程,主存中的頁表有時也稱爲慢表。配有快表的地址變換機構,如圖4.25所示。

引入快表以後的地址變換過程如下:

當CPU給出邏輯地址後,地址變換機構自動地將邏輯地址分爲頁號和頁內偏移量兩部分。

將頁號與聯想存儲器中的所有頁號進行並行比較,若其中有與此匹配的頁號,則表示所要訪問的頁表項在聯想存儲器中,於是取出該頁對應的塊號,與頁內偏移量拼接形成物理地址。若聯想存儲器中的所有頁號與所查找頁號不匹配,則還需要再訪問內存中的頁表,從頁表中取出物理塊號,與頁內偏移量拼接形成物理地址,還應將這次所查到的頁表項存入快表中。

用物理地址訪問內存。

在分頁系統中增加了快表後,在快表中找出所需頁表項的概率稱爲平均命中率。據統計,快表中如含有8個頁表項時,平均命中率爲85%,含有16個頁表項時,平均命中率爲97%,因此在配備快表的分頁存儲管理系統中,多一級地址變換不會明顯減慢程序的執行速度。

圖4.25 配有快表的地址變換機構

━━━━━━━求解方法提示:基本分頁管理方式中有效訪問時間的計算法━━━━━━

所謂有效訪問時間(Effective Access Time,簡稱EAT),是指給定邏輯地址找到內存中對應物理地址單元中的數據所花的總時間。

在基本分頁系統中,如果沒有快表,訪問內存一次需要的時間爲t,有效訪問時間分爲:查頁表找到對應的頁表項所花時間t、通過對應的物理地址訪問一次內存所花時間t,所以:EAT=t+t=2t。

若有快表,設快表TLB的查找需要時間爲e,訪問內存一次需要的時間爲t,命中率爲a,則有效訪問時間分爲:查頁表項的平均時間爲ea+(t+e)(1-a)、通過對應的物理地址訪問一次內存所花時間爲t,所以:EAT=ea+(t+e)(1-a)+t=2t+e-ta。

例如,若有快表,且命中率爲80%,查找TLB需要20ns,訪問內存一次需要100ns,則:EAT=2×100+20-100×80%=140ns。這樣,比內存訪問時間慢了40%(從100ns上升到了140ns)。又例如,若命中率爲98%,其他條件不變,則:EAT=2×100+20-100×98%=122ns。這個命中率僅產生了22%(從100ns上升到了122ns)的訪問時間延遲。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【例4.3】假設一個分頁存儲管理系統中具有快表,多數活動頁表項都可以存在其中。如果頁表放在內存中,內存訪問時間是1?s,若快表的命中率爲85%,則有效訪問時間是多少?若快表的命中率爲50%,則有效訪問時間是多少?

解:有效訪問時間是指通過邏輯地址訪問對應物理地址中的數據所花的時間。有快表時,先查找快表(由於速度很快,所花時間忽略不計),若找到了對應的頁表項,取出物理塊號並拼成物理地址,再訪問內存,只須訪問內存1次;若在快表中沒有找到,再在頁表中查找,需要訪問內存2次。

若快表的命中率爲85%,則有效訪問時間=2×1μs+0-1μs×85%=1.15μs。

若快表的命中率爲50%,則有效訪問時間=2×1μs+0-1μs×50%=1.5μs。

由於快表的訪問時間相對很短,若題目中沒有給出快表訪問時間,通常可以看成快表訪問時間爲0。

5. 兩級和多級頁表

當頁表很大時,可以採用多級頁表形式,即構建兩級或多級頁表。兩級頁表是將基本分頁存儲管理中的邏輯地址結構由(頁號P,頁內偏移量W)改爲如下形式:

外層頁號P1 外層頁內地址P2(或內層頁號) 頁內偏移量W

如圖4.26所示是兩級頁表的示意圖。

圖4.26 兩級頁表示意圖

在進行地址變換時,先用外層頁號P1在外部頁表上查找,找出的單元內容是對應二級頁表的首地址,該首地址加上外層頁內地址P2就是對應二級頁表項的地址,取出該頁表項的內容就是物理塊號,該物理塊號拼接頁內偏移量W就得到了物理地址。

兩級頁表解決了大頁表佔用大的連續存儲空間的問題。多級頁表依次類推,不再介紹。

【例4.4】爲滿足264地址空間的作業運行,採用多級分頁存儲管理方式,假設頁面大小爲4KB,在頁表中的每個頁表項需要佔8個字節,則爲了滿足系統的分頁管理至少應採用多少級頁表?

解:頁面大小=4KB=2^12字節,每個頁表項爲8字節=2^3字節,所以一個頁面中可以存放2^12/2^3=29個頁表項。設有n層分頁,則64位邏輯地址形式爲:

第1層頁號 第2層頁號 … 第n層頁號 頁內偏移量

其中,頁面大小爲212字節,所以頁內偏移量佔12位。剩下64-12=52位,由於每層指向一個物理塊,其中可放下29個表項,所以?52/9?=6(向上取整數)。

4KB的塊可以存2^12/2^3=2^9即512個頁表項,
64位,4kb的頁內編址需要12位。其餘給多級頁表,剩餘52位,每級頁表9位。52/9取上得6.所以是6級頁表。
實際上不管win還是linux,都只開放一部分尋址空間,所以實際上不會用到6級頁表這種變態又耗時間的方法。

6. 基本分頁存儲管理的內存保護

分頁環境下的內存保護由關聯到每個物理塊的保護位完成。這些位通常保存在頁表中。一個位可以定義一個頁是讀寫還是隻讀屬性。每次引用內存都要通過頁表來找到正確的物理塊號,同時也要計算物理地址。可以檢查保護位來確定有沒有對一個只讀頁進行寫操作,對只讀頁的寫操作將產生操作系統的硬件自陷或內存保護錯誤。

通常頁表的每項還附屬一個位:有效/無效(valid/invalid)位。當這個位被設爲valid時,它指明相關聯的頁處於該進程的地址空間中;如果這個位是invalid,它指明這個頁不在進程的邏輯地址空間中。利用有效/無效位可以使對非法地址的訪問產生自陷。

進程很少會使用它所有的地址空間,許多進程僅僅使用自己的很小一部分地址空間。在這種情況下,在頁表中爲地址空間中的每一頁都創建一個表項是很浪費的。這個表的大部分都不會被用到,但卻佔用了寶貴的內存空間。有些系統提供了硬件,以頁表長度寄存器的形式指明頁表的大小。將這個值與每個邏輯地址進行檢查以驗證這個地址是否在進程的有限地址空間內。如果這個測試失敗,就將向操作系統產生一個錯誤中斷。

7. 基本分頁存儲管理方式的優缺點

優點如下:

存在頁內碎片,但碎片相對較小,內存利用率較高。

實現了離散分配,消除了程序浮動。

便於存儲訪問控制,有利於代碼共享。

無外部碎片。

缺點如下:

需要專門的硬件支持,尤其是快表。

內存訪問的效率下降。

不支持動態鏈接,不能實現真正的共享。

有內部碎片。

4.3.2 例題解析

1. 單項選擇題

【例4-3-1】在分頁存儲管理中,主存的分配是 。

A. 以塊爲單位進行 B. 以作業的大小分配

C. 以物理段進行分配 D. 以邏輯記錄大小進行分配

解:在分頁存儲管理中,將內存劃分與頁大小相等的區域,即物理塊,在爲作業分配存儲空間時,總是以塊爲單位來分配,可以將作業中任一頁分配到內存任意空閒塊中。本題答案爲A。

【例4-3-2】分頁式存儲管理的主要特點是 。

A. 要求處理缺頁中斷 B. 要求擴充主存容量

C. 不要求作業裝入到主存的連續區域 D. 不要求作業全部同時裝入主存

解:分頁式存儲管理是一種離散分配方法,作業的每個頁面裝入到一個主存塊中,主存塊之間不一定是連續區域。本題答案爲C。

【例4-3-3】在分頁式存儲管理中用作存儲保護的是 。

A. 頁表長度 B. 頁表始址 C. 頁長 D. 重定位寄存器

解:A。

【例4-3-4】 存儲管理方式提供一維地址結構。

A. 分段 B. 分頁 C. 分段和段頁式 D. 都不是

解:分頁存儲管理方式中所有地址都是一致的,而分段存儲管理方式中每個段都有自已的地址,段之間是獨立的,通過段號和段內地址實現地址變換。所以將分頁存儲管理方式中的地址結構看成是一維地址結構,分段存儲管理方式中的地址結構看成是二維地址結構。本題答案爲B。

【例4-3-5】下列 存儲管理方式能使存儲碎片儘可能少,而且使內存利用率較高。

A. 固定分區 B. 可變分區 C. 分頁管理 D. 段頁式管理

解:分頁管理方式頁內碎片相對較小,內存利用率高。本題答案爲C。

【例4-3-6】以下解決主存碎片問題較好的存儲器管理方式是 。

A. 可變式分區 B. 分頁管理 C. 分段管理 D. 單一連續區管理

解:分頁管理方式中沒有外部碎片,內存利用率高,而分段管理方式中難以找到連續的空閒區放入整段,相對內存利用率不高。本題答案爲B。

【例4-3-7】 存儲管理支持多道程序設計,算法簡單,但存儲碎片多。

A. 段式 B. 頁式 C. 固定分區 D. 段頁式

解:固定分區可用於多道程序系統,相對於其他選項算法簡單,沒有外部碎片,但不能實現多進程共享一個主存區,主存利用率低,存在較多的內部碎片。本題答案爲C。

【例4-3-8】操作系統採用分頁存儲管理方式,要求 。

A. 每個進程擁有一張頁表,且進程的頁表駐留在內存中

B. 每個進程擁有一張頁表,但只有執行進程的頁表駐留在內存中

C. 所有進程共享一張頁表,以節約有限的內存空間,但頁表必須駐留在內存中

D. 所有進程共享一張頁表,只有頁表中當前使用的頁面必須駐留在內存中,以最大限度地節省有限的內存空間

解:在多個進程併發執行時,所有進程的頁表大多數駐留在內存中,在系統中只設置一個頁表寄存器PTR,在其中存放頁表在內存的起始地址和頁表的長度。平時,進程未執行時,頁表的起始地址和頁表長度存放在本進程的PCB中,當調度到某進程時,纔將這兩個數據裝入頁表寄存器中。本題答案爲A。

【例4-3-9】在一個分頁存儲管理系統中,頁表內容如表4.2所示。若頁的大小爲4KB,則地址轉換機構將邏輯地址0轉換成的物理地址爲 。

A. 8192 B. 4096 C. 2048 D. 1024

解:在分頁存儲管理系統中,物理地址爲頁面對應的物理塊號與頁內地址拼接的結果,邏輯地址0的頁號爲0,頁內位移也爲0,故物理地址爲2?4KB=8192B。本題答案爲A。

表4.2 一個頁表

頁號 塊號

0 2

1 1

2 6

3 3

4 7

【例4-3-10】在分頁管理系統中,分頁是由 完成的。

A. 程序員 B. 硬件 C. 編譯軟件 D. 都不對

解:在分頁管理系統中,分頁和地址轉換過程都是由硬件完成的。本題答案爲B。

【例4-3-11】分頁系統中的頁面是 。

A. 用戶感知的 B. 操作系統感知的

C. 編譯程序感知的 D. 鏈接裝配程序感知的

解:在分頁管理系統中,分頁是由操作系統指揮硬件完成的,頁面是由操作系感知的。本題答案爲B。

【例4-3-12】位示圖法可用於 。

A. 頁式虛擬存儲管理中頁面置換

B. 可變式分區存儲管理中空閒區的管理

C. 分頁式存儲管理中主存空閒塊的管理

D. 文件目錄的查找

解:位示圖是一種存儲空間管理方法,可用於主存和磁盤空間的管理,要求管理的基本單位大小是固定的,所以可用於分頁式存儲管理中主存空閒塊的管理。本題答案爲C。

【例4-3-13】以下有關外層頁表的敘述中錯誤的是 。

A. 反映在磁盤上頁面存放的物理位置

B. 外層頁表是指向頁表的頁表

C. 爲不連續(離散)分配的頁表再建立一個頁表

D. 有了外層頁表則需要一個外層頁表寄存器就能實現地址變換

解:外層頁表並不是反應磁盤上頁面存放的物理位置,而是在頁表較大時將頁表進行分頁,再建立的頁表的頁表。本題答案爲A。

【例4-3-14】在基本分頁存儲管理中,設有8頁的邏輯空間,每頁有1024個字節,它們被映射到32塊的物理存儲區中,則邏輯地址的有效位是 ① 位,物理地址至少是 ② 位。

A. 10 B. 13 C. 14 D. 15

解:對於邏輯地址結構,8頁=23頁,每頁1024個字節=210個字節,所以邏輯地址有效位數=3+10=13位。對於物理地址結構,每塊大小=每頁大小=210,共有32塊=25個塊,所以物理地址有效位數至少=5+10=15位。本題答案爲:①B ②D。

2. 填空題

【例4-3-15】在分頁存儲管理中,要求程序中的邏輯地址可以分頁,頁的大小與 大小一致。

解:本題答案爲:物理塊。

【例4-3-16】作業的頁表中包含邏輯地址中的 ① 與主存中 ② 的對應關係。

解:本題答案爲:①頁號 ②塊號。

【例4-3-17】分頁系統中信息的邏輯地址到物理地址的變換由 決定。

解:本題答案爲:頁表。

【例4-3-18】在基本分頁存儲管理中,地址變換公式爲:物理地址= ① ×塊長+ ② 。

解:本題答案爲:①塊號 ②頁內地址。

【例4-3-19】在基本分頁存儲管理中主存分配情況可用一個 表示,其中某位爲0表示對應塊爲空閒。

解:本題答案爲:位示圖。

【例4-3-20】在基本分頁存儲管理中,按給定的邏輯地址讀寫時,要訪問兩次主存,第1次是 ① ,第2次是 ② 。

解:本題答案爲:①查頁表按頁號讀出對應的塊號 ②按計算出來的物理地址進行讀寫。

【例4-3-21】分頁存儲管理做重定位時,實際上是把 ① 作爲物理地址的高位地址,而 ② 作爲它的低地址部分。

解:本題答案爲:①塊號 ②頁內地址。

【例4-3-22】在某基本分頁存儲管理中,邏輯地址爲24位,其中8位表示頁號,則允許的最大頁面大小是 字節。

解:邏輯地址由頁號和頁內地址兩部分組成,頁內地址的位數=24-8=16,頁面大小爲216字節。本題答案爲:216。

【例4-3-23】在基本分頁存儲管理系統中,把一段時間內總是經常訪問的某頁表項存放在 中,可實現快速查找並提高指令執行速度。

解:本題答案爲:快表。

【例4-3-24】某分頁存儲管理中,頁表如表4.3所示,頁長爲4KB,則地址轉換機構將邏輯地址12293轉換成物理地址 。

表4.3 一個頁表

頁號 塊號

0 2

1 5

2 6

3 8

4 3

5 11

解:12293=3×4KB+5,對應3號頁的物理塊塊號爲8,所以物理地址=8×4KB+5=32773。本題答案爲:32773。

【例4-3-25】某分頁存儲管理中,頁面大小爲4KB,某進程的頁號0~8對應的物理塊號分別爲8、9、10、15、18、20、21、22、23。則該進程的邏輯地址05AF8H對應的物理地址是 。

解:頁面大小4KB=212B,05AF8H對應的二進制爲0000 0101 1010 1111 1000(後12位爲頁內地址),對應5號頁的物理塊塊號爲20(對應的二進制數10100),所以物理地址=10100||1010 1111 1000=10100||1010 1111 1000=14AF8H(||表示地址拼接)。本題答案爲:14AF8H。

3. 判斷題

【例4-3-26】判斷以下敘述的正確性。

(1)在分頁存儲管理中,用戶應將自己的程序劃分成若干相等的頁。

(2)在分頁存儲管理中,頁的大小是可以不相等的。

(3)在分頁存儲管理中,作業裝入主存後,其地址是連續的。

(4)在分頁存儲管理中,作業的頁面大小和內存物理塊大小可以不相同。

(5)在基本分頁存儲管理中,一個作業必須全部裝入內存才能運行。

(6)在基本分頁存儲管理中,一個作業的邏輯地址爲12位,則邏輯地址空間的容量爲212B。

(7)在基本分頁存儲管理中,一個作業的邏輯地址由頁號和頁內地址兩部分組成。

(8)快表位於內存的一個特殊區域中。

解:(1)錯誤。分頁存儲管理中,分頁過程是由操作系統完成的,用戶不能干預。

(2)錯誤。在分頁存儲管理中,所有頁的大小是相等的。

(3)錯誤。在分頁存儲管理中,作業裝入主存後,分配在不同的頁面中,頁之間不一定連續,所以作業的地址不一定是連續的。

(4)錯誤。在在分頁存儲管理中,爲了便於實現,通常作業的頁面大小和內存物理塊大小相等。

(5)正確。

(6)正確。

(7)正確。

(8)錯誤。快表是一種特殊的相聯存儲器,不屬於內存,其存取速度比內存快。

4. 問答題

【例4-3-27】某分頁系統的邏輯地址爲16位,其中高6位爲頁號,低10位爲頁內偏移量,則在這樣的地址結構中,請回答:

(1)一頁有多少個字節?

(2)邏輯地址可有多少頁?

(3)一個作業最大的地址空間是多少字節?

解:(1)由於邏輯地址中低10位爲頁內偏移量,所以每頁的大小=210字節。

(2)由於邏輯地址中高6位爲頁號,所以共有26個頁面。

(3)由於邏輯地址共有16位,所以一個作業最大的地址空間是216字節。

【例4-3-28】在某個分頁管理系統中,某一個作業有4個頁面,被分別裝入到主存的第3、4、6、8塊中,假定頁面和塊大小均爲1024字節,當作業在CPU上運行時,執行到其地址空間第500號處遇到一條傳送命令:

MOV 2100,3100

請計算出MOV指令中兩個操作數的物理地址。

解:在頁表中,邏輯頁(0,1,2,3)對應物理塊(3,4,6,8),頁面大小L爲1024字節。

邏輯地址A1=2100,頁號P1=(int)(2100/1024)=2,頁內偏移量W1=2100-2×1024=52,對應的物理塊號爲6,則A1對應的物理地址E1=6×1024+52=6196。

邏輯地址A2=3100,頁號P2=(int)(3100/1024)=3,頁內偏移量W2=3100-3×1024=28,對應的物理塊號爲8,則A2對應的物理地址E2=8×1024+28=8220。

【例4-3-29】對一個將頁表存放在內存中的分頁系統,請回答:

(1)如果訪問內存需要0.2?s,一個數據的有效訪問時間是多少?

(2)如果加一個快表,且假定在快表中找到頁表項的命中率爲90%,則訪問一個數據的有效訪問時間又是多少(假定查快表需要花費的時間爲0)?

解:(1)在分頁系統中,訪問一個數據需要2次內存訪問,所以有效訪問時間爲:2×0.2=0.4us。

(2)在增加快表後,訪問一個數據時先在快表中查找,若未找到再在頁表中查找。快表命中只需0.2us,快表未命中需0.4us,則有效訪問時間爲90%×0.2us +10%×0.4us=0.22us。

【例4-3-30】已知某分頁系統,主存容量爲64KB,頁面大小爲1KB,對於一個4頁的作業,其0、1、2、3頁分別被分配到主存的2、4、6、7塊中。

(1)將十進制的邏輯地址1023、2500、3500、4500轉換成物理地址。

(2)以十進制的邏輯地址1023爲例,畫出地址變換過程圖。

解:(1)對上述邏輯地址,可先計算出它們的頁號和頁內偏移量(邏輯地址除以頁面大小,得到的商爲頁號,餘數爲頁內偏移量),然後通過頁錶轉換成對應的物理地址。

對於邏輯地址1023:計算(int)1023/1KB,得到頁號P1=0,頁內偏移量W1=1023,查頁表找到對應的物理塊號爲2,故物理地址E1=2×1KB+1023=3071。

對於邏輯地址2500:計算(int)2500/1KB,得到頁號P2=2,頁內偏移量W2=452,查頁表找到對應的物理塊號爲6,故物理地址E2=6×1KB+452=6596。

對於邏輯地址3500:計算(int)3500/1KB,得到頁號P3=3,頁內偏移量W3=428,查頁表找到對應的物理塊號爲7,故物理地址E3=7×1KB+428=7596。

對於邏輯地址4500:計算(int)4500/1KB,得到頁號P4=4,頁內偏移量W4=404,因頁號不小於頁表長度,故產生越界中斷。

(2)邏輯地址1023的地址變換過程如圖4.27所示。

圖4.27 邏輯地址1023的地址變換過程

【例4-3-31】某系統採用分頁存儲管理方式,設計如下:頁面大小爲4KB,允許用戶虛地址空間最大爲16頁,允許系統物理內存最多爲512個內存塊。試問該系統虛地址寄存器和物理地址寄存器的長度各是多少位?

解:頁面大小L=4KB=212字節,即頁內偏移量佔12位。由於物理塊大小等於頁面大小,所以物理塊大小爲212字節,物理塊位數佔12位。

允許用戶虛地址空間最大爲16頁=24頁,即頁號佔4位。

允許系統物理內存最多爲512個內存塊=29個內存塊,即內存塊位數佔9位。

虛地址寄存器位數=頁號位數+頁內偏移量位數=4+12=16位。

物理地址寄存器位數=物理塊位數+內存塊位數=12+9=21位。

【例4-3-32】在一個分頁存儲管理系統中,頁的大小爲2KB。設主存容量爲512KB,描述主存分配的位示圖如圖4.28所示,0表示未分配,1表示已分配,此時系統要將一個9KB的作業裝入內存,回答以下問題:

(1)爲作業分配內存後,請給出該作業的頁表(分配內存時首先分配內存的低地址端)。

(2)分頁存儲管理有無碎片存在?若有,會存在什麼碎片?爲該作業分配內存後,會產生零頭嗎?如果產生,碎片大小爲多少?

(3)若某系統採用分頁存儲管理,內存容量爲64MB,也採用位示圖管理內存,頁面大小爲4KB,該位示圖佔用多大內存?

解:(1)因作業大小爲9KB,所以需要5(9KB/2KB上取整=5)個物理塊,查位示圖,從上向下、從左向右找值爲0的塊的塊號,依次分配給0~4頁,對應的頁表如表4.4所示。

1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1

物理塊

裝入時刻

1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0

21

250

0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1

9

140

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

11

300

1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 0

5

160

...

32

270

圖4.28 內存位示圖

表4.4 一個頁表

頁號 塊號

0 6

1 18

2 22

3 23

4 27

(2)分頁存儲管理有碎片存在,分頁存儲管理存在內部碎片,爲該作業分配內存會產生大小爲1KB的內部碎片。

(3)64MB的內存中有64MB/4KB=16KB個物理塊,每塊使用1位二進制,所以位示圖大小爲16K位,即16K位/8=2KB。

【例4-3-33】爲何引入多級頁表?多級頁表是否影響速度?

解:早期的內存空間和進程空間都比較小,一個進程的頁表長度也較小,可以在內存分配一個連續的存儲區域保存進程的頁表。但隨着內存空間和進程空間的快速增長,頁表越來越大,單級頁表的存放遇到困難。例如,對於長度爲232B的邏輯地址空間,頁面長度定義爲212(4KB),則一個進程最多可以擁有220個頁面,也就是說系統需要提供長度爲220項的連續頁表存儲區,這是很困難的。爲此常將頁表分爲多級進行存放,例如對於上述例子,將220分爲210×210兩級,一級稱爲外頁表,另一級稱爲內頁表,此時外頁表和內頁表的長度都在210以內。可以很自然地把二級頁表擴展爲多級頁表.顯然,多級頁表會降低地址映射的速度,但通過快表仍可以將效率保持在合理的範圍內。

例如對於4級頁表,假定快表的命中率爲98%,快表與內存的訪問時間分別爲20ns和100ns,那麼,當快表命中時,需訪問一次快表,得到主存地址後再訪問一次主存得到該地址的數據,有效訪問時間爲20ns+100ns;當快表未命中時,需訪問一次快表,未命中,然後訪問4級頁表(4次訪問主存)得到主存地址,最後訪問一次主存得到該地址的數據,有效訪問時間爲20ns+500ns。所以在這樣的頁表組織中平均有效訪問時間爲:EAT=98%×(20+100)+2%×(20+500)=128ns,額外的開銷是128-100=28ns。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章