1. 程式人生 > >作業系統員動態記憶體分配————分頁式儲存

作業系統員動態記憶體分配————分頁式儲存

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。