㈠ 基本分頁存儲管理方式的頁面與頁表
1) 頁面和物理塊
分頁存儲管理是將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁,並為各頁加以編號,從0開始,如第0頁、第1頁等。相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框(frame),也同樣為它們加以編號,如0#塊、1#塊等等。在為進程分配內存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。由於進程的最後一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為「頁內碎片」。
2) 頁面大小
在分頁系統中的頁面其大小應適中。頁面若太小,一方面雖然可使內存碎片減小,從而減少了內存碎片的總空間,有利於提高內存利用率,但另一方面也會使每個進程佔用較多的頁面,從而導致進程的頁表過長,佔用大量內存;此外,還會降低頁面換進換出的效率。然而,如果選擇的頁面較大,雖然可以減少頁表的長度,提高頁面換進換出的速度,但卻又會使頁內碎片增大。因此,頁面的大小應選擇適中,且頁面大小應是2的冪,通常為512 B~8 KB。 分頁地址中的地址結構如下:
對於某特定機器,其地址結構是一定的。若給定一個邏輯地址空間中的地址為A,頁面的大小為L,則頁號P和頁內地址d可按右圖所示公式求得:
其中,INT是整除函數,MOD是取余函數。例如,其系統的頁面大小為1 KB,設A = 2170 B,則由上式可以求得P = 2,d = 122。 頁表的功能可以由一組專門的寄存器來實現。一個頁表項用一個寄存器。由於寄存器具有較高的訪問速度,因而有利於提高地址變換的速度;但由於寄存器成本較高,且大多數現代計算機的頁表又可能很大,使頁表項的總數可達幾千甚至幾十萬個,顯然這些頁表項不可能都用寄存器來實現,因此,頁表大多駐留在內存中。在系統中只設置一個頁表寄存器PTR(Page-Table Register),在其中存放頁表在內存的始址和頁表的長度。平時,進程未執行時,頁表的始址和頁表長度存放在本進程的PCB中。當調度程序調度到某進程時,才將這兩個數據裝入頁表寄存器中。因此,在單處理機環境下,雖然系統中可以運行多個進程,但只需一個頁表寄存器。
當進程要訪問某個邏輯地址中的數據時,分頁地址變換機構會自動地將有效地址(相對地址)分為頁號頁內地址兩部分,再以頁號為索引去檢索頁表。查找操作由硬體執行。在執行檢索之前,先將頁號與頁表長度進行比較,如果頁號大於或等於頁表長度,則表示本次所訪問的地址已超越進程的地址空間。於是,這一錯誤將被系統發現並產生一地址越界中斷。若未出現越界錯誤,則將頁表始址與頁號和頁表項長度的乘積相加,便得到該表項在頁表中的位置,於是可從中得到該頁的物理塊號,將之裝入物理地址寄存器中。與此同時,再將有效地址寄存器中的頁內地址送入物理地址寄存器的塊內地址欄位中。這樣便完成了從邏輯地址到物理地址的變換。右圖示出了分頁系統的地址變換機構。 由於頁表是存放在內存中的,這使CPU在每存取一個數據時,都要兩次訪問內存。第一次是訪問內存中的頁表,從中找到指定頁的物理塊號,再將塊號與頁內偏移量W拼接,以形成物理地址。第二次訪問內存時,才是從第一次所得地址中獲得所需數據(或向此地址中寫入數據)。因此,採用這種方式將使計算機的處理速度降低近1/2。可見,以此高昂代價來換取存儲器空間利用率的提高,是得不償失的。
為了提高地址變換速度,可在地址變換機構中增設一個具有並行查尋能力的特殊高速緩沖寄存器,又稱為「聯想寄存器」(Associative Memory),或稱為「快表」,在IBM系統中又取名為TLB(Translation Lookaside Buffer),用以存放當前訪問的那些頁表項。此時的地址變換過程是:在CPU給出有效地址後,由地址變換機構自動地將頁號P送入高速緩沖寄存器,並將此頁號與高速緩存中的所有頁號進行比較,若其中有與此相匹配的頁號,便表示所要訪問的頁表項在快表中。於是,可直接從快表中讀出該頁所對應的物理塊號,並送到物理地址寄存器中。如在塊表中未找到對應的頁表項,則還須再訪問內存中的頁表,找到後,把從頁表項中讀出的物理塊號送地址寄存器;同時,再將此頁表項存入快表的一個寄存器單元中,亦即,重新修改快表。但如果聯想寄存器已滿,則OS必須找到一個老的且已被認為不再需要的頁表項,將它換出。右圖示出了具有快表的地址變換機構。
㈡ 分頁式存儲管理決定頁面大小的主要因素有哪些
主要因素是用戶主存空間
主存空間大則用大頁面
否則會帶來頁表佔用空間過大的問題
——————好好上課啊kora
㈢ 分頁和分段存儲管理有何區別
演示機型:華為MateBookX系統版本:win10APP版本:Word20201、單位不同:頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。
2、大小不同:頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。
3、作業地址空間不同:分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
㈣ 分頁式存儲管理的主要區別是 ( ).
分頁式存儲管理系統和分段式存儲管理系統的主要區別:
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:
(1)頁是信息的物理單位,分頁是為了實現非連續分配,以便解決內存碎片問題,或者說分頁是由於系統管理的需要.段是信息的邏輯單位,它含有一組意義相對完整的信息,分段的目的是為了更好地實現共享,滿足用戶的需要.
(2)頁的大小固定,由系統確定,將邏輯地址劃分為頁號和頁內地址是由機器硬體實現的.而段的長度卻不固定,決定於用戶所編寫的程序,通常由編譯程序在對源程序進行編譯時根據信息的性質來劃分.
(3)分頁的作業地址空間是一維的.分段的地址空間是二維的.
㈤ 簡單分頁存儲管理和簡單分段存儲管理了的區別
1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。
2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。段的長度卻不固定,決定於用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據信息的性質來劃分。
3、分頁的作業地址空間是維一的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。
㈥ 頁表的基本分頁存儲管理方式
用固定大小的頁(Page)來描述邏輯地址空間,用相同大小的頁框(Frame)來描述物理內存空間,由操作系統實現從邏輯頁到物理頁框的頁面映射,同時負責對所有頁的管理和進程運行的控制。
㈦ 分頁式存儲管理中,內存塊的大小與頁面大小的關系
1、內存塊大:將要執行的頁面裝入分頁內存,裝入多少頁面,不同系統演算法不同。
2、內存太小:將非活動進程的頁面,移入虛擬內存,裝入要執行的頁面,.NET系統會同時進行垃圾回收。
㈧ 操作系統頁式存儲管理的問題
存儲管理的基本原理內存管理方法 內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。 下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。 1. 連續分配存儲管理方式 連續分配是操作系統頁式存儲管理的問題
㈨ 在頁式系統中,用戶程序中的頁面大小可以不同是對的嗎
存儲管理的基本原理內存管理方法 內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。 下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。 1. 連續分配存儲管理方式 連續分配是指為一個用戶程序分配連續的內存空間。連續分配有單一連續存儲管理和分區式儲管理兩種方式。 (1)單一連續存儲管理 在這種管理方式中,內存被分為兩個區域:系統區和用戶區。應用程序裝入到用戶區,可使用用戶區全部空間。其特點是,最簡單,適用於單用戶、單任務的操作系統。CP/M和DOS 2.0以下就是採用此種方式。這種方式的最大優點就是易於管理。但也存在著一些問題和不足之處,例如對要求內存空間少的程序,造成內存浪費;程序全部裝入,使得很少使用的程序部分也佔用-定數量的內存。 (2)分區式存儲管理 為了支持多道程序系統和分時系統,支持多個程序並發執行,引入了分區式存儲管理。分區式存儲管理是把內存分為一些大小相等或不等的分區,操作系統佔用其中一個分區,其餘的分區由應用程序使用,每個應用程序佔用一個或幾個分區。分區式存儲管理雖然可以支持並發,但難以進行內存分區的共享。 分區式存儲管理引人了兩個新的問題:內碎片和外碎片。前者是佔用分區內未被利用的空間,後者是佔用分區之間難以利用的空閑分區(通常是小空閑分區)。為實現分區式存儲管理,操作系統應維護的數據結構為分區表或分區鏈表。表中各表項一般包括每個分區的起始地址、大小及狀態(是否已分配)。 分區式存儲管理常採用的一項技術就是內存緊縮(compaction):將各個佔用分區向內存一端移動,然後將各個空閑分區合並成為一個空閑分區。這種技術在提供了某種程度上的靈活性的同時,也存在著一些弊端,例如:對佔用分區進行內存數據搬移佔用CPU~t寸間;如果對佔用分區中的程序進行「浮動」,則其重定位需要硬體支持。 1)固定分區(nxedpartitioning)。 固定式分區的特點是把內存劃分為若干個固定大小的連續分區。分區大小可以相等:這種作法只適合於多個相同程序的並發執行(處理多個類型相同的對象)。分區大小也可以不等:有多個小分區、適量的中等分區以及少量的大分區。根據程序的大小,分配當前空閑的、適當大小的分區。這種技術的優點在於,易於實現,開銷小。缺點主要有兩個:內碎片造成浪費;分區總數固定,限制了並發執行的程序數目。 2)動態分區(dynamic partitioning)。 動態分區的特點是動態創建分區:在裝入程序時按其初始要求分配,或在其執行過程中通過系統調用進行分配或改變分區大小。與固定分區相比較其優點是:沒有內碎片。但它卻引入了另一種碎片--外碎片。動態分區的分區分配就是尋找某個空閑分區,其大小需大於或等於程序的要求。若是大於要求,則將該分區分割成兩個分區,其中一個分區為要求的大小並標記為「佔用」,而另一個分區為餘下部分並標記為「空閑」。分區分配的先後次序通常是從內存低端到高端。動態分區的分區釋放過程中有一個要注意的問題是,將相鄰的空閑分區合並成一個大的空閑分區。 下面列出了幾種常用的分區分配演算法: 首先適配法(nrst-fit):按分區在內存的先後次序從頭查找,找到符合要求的第一個分區進行分配。該演算法的分配和釋放的時間性能較好,較大的空閑分區可以被保留在內存高端。但隨著低端分區不斷劃分會產生較多小分區,每次分配時查找時間開銷便會增大。 下次適配法(next-fit):按分區在內存的先後次序,從上次分配的分區起查找(到最後{區時再從頭開始},找到符合要求的第一個分區進行分配。該演算法的分配和釋放的時間性能較好,使空閑分區分布得更均勻,但較大空閑分區不易保留。 最佳適配法(best-fit):按分區在內存的先後次序從頭查找,找到其大小與要求相差最小的空閑分區進行分配。從個別來看,外碎片較小;但從整體來看,會形成較多外碎片優點是較大的空閑分區可以被保留。 最壞適配法(worst- fit):按分區在內存的先後次序從頭查找,找到最大的空閑分區進行分配。基本不留下小空閑分區,不易形成外碎片。但由於較大的空閑分區不被保留,當對內存需求較大的進程需要運行時,其要求不易被滿足。 2.覆蓋和交換技術 引入覆蓋(overlay)技術的目標是在較小的可用內存中運行較大的程序。這種技術常用於多道程序系統之中,與分區式存儲管理配合使用。覆蓋技術的原理很簡單,一個程序的幾個代碼段或數據段,按照時間先後來佔用公共的內存空間。將程序必要部分(常用功能)的代碼和數據常駐內存;可選部分(不常用功能)平時存放在外存(覆蓋文件)中,在需要時才裝入內存。不存在調用關系的模塊不必同時裝入到內存,從而可以相互覆蓋。覆蓋技術的缺點是編程時必須劃分程序模塊和確定程序模塊之間的覆蓋關系,增加編程復雜度;從外存裝入覆蓋文件,以時間延長換取空間節省。覆蓋的實現方式有兩種:以函數庫方式實現或操作系統支持。 交換(swapping)技術在多個程序並發執行時,可以將暫時不能執行的程序送到外存中,從而獲得空閑內存空間來裝入新程序,或讀人保存在外存中而處於就緒狀態的程序。交換單位為整個進程的地址空間。交換技術常用於多道程序系統或小型分時系統中,與分區式存儲管理配合使用又稱作「對換」或「滾進/滾出」(roll-in/roll-out)。其優點之一是增加並發運行的程序數目,並給用戶提供適當的響應時間;與覆蓋技術相比交換技術另一個顯著的優點是不影響程序結構。交換技術本身也存在著不足,例如:對換人和換出的控制增加處理器開銷;程序整個地址空間都進行對換,沒有考慮執行過程中地址訪問的統計特性。 3.頁式和段式存儲管理 在前面的幾種存儲管理方法中,為進程分配的空間是連續的,使用的地址都是物理地址。如果允許將一個進程分散到許多不連續的空間,就可以避免內存緊縮,減少碎片。基於這一思想,通過引入進程的邏輯地址,把進程地址空間與實際存儲空間分離,增加存儲管理的靈活性。地址空間和存儲空間兩個基本概念的定義如下: 地址空間:將源程序經過編譯後得到的目標程序,存在於它所限定的地址范圍內,這個范圍稱為地址空間。地址空間是邏輯地址的集合。 存儲空間:指主存中一系列存儲信息的物理單元的集合,這些單元的編號稱為物理地址存儲空間是物理地址的集合。 根據分配時所採用的基本單位不同,可將離散分配的管理方式分為以下三種 段式存儲管理和段頁式存儲管理。其中段頁式存儲管理是前兩種結合的產物。 (1)頁式存儲管理 1)基本原理。將程序的邏輯地址空間劃分為固定大小的頁(page),而物理內存劃分為同樣大小的頁框(pageframe)。程序載入時,可將任意一頁放人內存中任意一個頁框,這些頁框不必連續,從而實現了離散分配。該方法需要CPU的硬體支持,來實現邏輯地址和物理地址之間的映射。在頁式存儲管理方式中地址結構由兩部構成,前一部分是頁號,後一部分為頁內地址,如圖4-2所示。 這種管理方式的優點是,沒有外碎片,每個內碎片不超過頁大比前面所討論的幾種管理方式的最大進步是,一個程序不必連續存放。這樣就便於改變程序佔用空間的大小(主要指隨著程序運行,動態生成的數據增多,所要求的地址空間相應增長)。缺點是仍舊要求程序全部裝入內存,沒有足夠的內存,程序就不能執行。 2)頁式管理的數據結構。在頁式系統中進程建立時,操作系統為進程中所有的頁分配頁框。當進程撤銷時收回所有分配給它的頁框。在程序的運行期間,如果允許進程動態地申請空間,操作系統還要為進程申請的空間分配物理頁框。操作系統為了完成這些功能,必須記錄系統內存中 實際的頁框使用情況。操作系統還要在進程切換時,正確地切換兩個不同的進程地址空間到物理內存空間的映射。這就要求操作系統要記錄每個進程頁表的相關信息。為了完成上述的功能,-個頁式系統中,一般要採用如下的數據結構。 進程頁表:完成邏輯頁號(本進程的地址空間)到物理頁面號(實際內存空間)的映射。 每個進程有一個頁表,描述該進程佔用的物理頁面及邏輯排列順序。 物理頁面表:整個系統有一個物理頁面表,描述物理內存空間的分配使用狀況,其數據結構可採用位示圖和空閑頁鏈表。 請求表:整個系統有一個請求表,描述系統內各個進程頁表的位置和大小,用於地址轉換也可以結合到各進程的PCB(進程式控制制塊)里。 3)頁式管理地址變換 在頁式系統中,指令所給出的地址分為兩部分:邏輯頁號和頁內地址。CPU中的內存管理單元(MMU)按邏輯頁號通過查進程頁表得到物理頁框號,將物理頁框號與頁內地址相加形成物理地址(見圖4-3)。上述過程通常由處理器的硬體直接完成,不需要軟體參與。通常,操作系統只需在進程切換時,把進程頁表的首地址裝入處理器特定的寄存器中即可。一般來說,頁表存儲在主存之中。這樣處理器每訪問一個在內存中的操作數,就要訪問兩次內存。第一次用來查找頁表將操作數的邏輯地址變換為物理地址;第二次完成真正的讀寫操作。這樣做時間上耗費嚴重。為縮短查找時間,可以將頁表從內存裝入CPU內部的關聯存儲器(例如,快表)中,實現按內容查找。此時的地址變換過程是:在CPU給出有效地址後,由地址變換機構自動將頁號送人快表,並將此頁號與快表中的所有頁號進行比較,而且這種比較是同時進行的。若其中有與此相匹配的頁號,表示要訪問的頁的頁表項在快表中。於是可直接讀出該頁所對應的物理頁號,這樣就無需訪問內存中的頁表。由於關聯存儲器的訪問速度比內存的訪問速度快得多。 (2)段式存儲管理 1)基本原理。 在段式存儲管理中,將程序的地址空間劃分為若干個段(segment),這樣每個進程有一個二維的地址空間。在前面所介紹的動態分區分配方式中,系統為整個進程分配一個連續的內存空間。而在段式存儲管理系統中,則為每個段分配一個連續的分區,而進程中的各個段可以不連續地存放在內存的不同分區中。程序載入時,操作系統為所有段分配其所需內存,這些段不必連續,物理內存的管理採用動態分區的管理方法。在為某個段分配物理內存時,可以採用首先適配法、下次適配法、最佳適配法等方法。在回收某個段所佔用的空間時,要注意將收回的空間與其相鄰的空間合並。段式存儲管理也需要硬體支持,實現邏輯地址到物理地址的映射。程序通過分段劃分為多個模塊,如代碼段、數據段、共享段。這樣做的優點是:可以分別編寫和編譯源程序的一個文件,並且可以針對不同類型的段採取不同的保護,也可以按段為單位來進行共享。總的來說,段式存儲管理的優點是:沒有內碎片,外碎片可以通過內存緊縮來消除;便於實現內存共享。缺點與頁式存儲管理的缺點相同,進程必須全部裝入內存。 2)段式管理的數據結構。 為了實現段式管理,操作系統需要如下的數據結構來實現進程的地址空間到物理內存空間的映射,並跟蹤物理內存的使用情況,以便在裝入新的段的時候,合理地分配內存空間。 ·進程段表:描述組成進程地址空間的各段,可以是指向系統段表中表項的索引。每段有段基址(baseaddress)。 ·系統段表:系統所有佔用段。 ·空閑段表:內存中所有空閑段,可以結合到系統段表中。 3)段式管理的地址變換。 在段式管理系統中,整個進程的地址空間是二維的,即其邏輯地址由段號和段內地址兩部分組成。為了完成進程邏輯地址到物理地址的映射,處理器會查找內存中的段表,由段號得到段的首地址,加上段內地址,得到實際的物理地址(見圖4-4)。這個過程也是由處理器的硬體直接完成的,操作系統只需在進程切換時,將進程段表的首地址裝入處理器的特定寄存器當中。這個寄存器一般被稱作段表地址寄存器。 4.頁式和段式系統的區別 頁式和段式系統有許多相似之處。比如,兩者都採用離散分配方式,且都通過地址映射機構來實現地址變換。但概念上兩者也有很多區別,主要表現在: ·頁是信息的物理單位,分頁是為了實現離散分配方式,以減少內存的外零頭,提高內存的利用率。或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了更好地滿足用戶的需要。 ·頁的大小固定且由系統決定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的。段的長度不固定,且決定於用戶所編寫的程序,通常由編譯系統在對源程序進行編譯時根據信息的性質來劃分。 ·頁式系統地址空間是一維的,即單一的線性地址空間,程序員只需利用一個標識符,即可表示一個地址。分段的作業地址空間是二維的,程序員在標識一個地址時,既需給出段名,又需給出段內地址。 原理作業10. 頁式存儲管理和段式存儲管理的工作原理特點、特點 及優劣。 答:頁式管理的基本思想是:為了更好地利用分區存儲管理中 所產生的"零頭"問題,允許把一個作業存放在不連續的內存塊中, 又可以連續運行,它允許只調入用戶作業中常用部分,不常用部分 不長期駐留內存,有效提高了內存的利用率。 頁式存儲管理的工作原理: A、劃分實頁:將物理內存劃分成位置固定、大小相同的"塊"(實頁 面)。 B、劃分虛頁:將用戶邏輯地址空間也分成同樣大小的頁面,成為虛 擬空間的虛頁面。 C、建立頁表:有時稱為頁面表或頁面映射表(PMT)。每個作業一 張,按虛頁號進行登記,其基本的內容有特徵位(表示該頁是否 在內存、實頁號以及對應外存的地址。 D、地址變換:將虛頁面的邏輯地址轉化為實頁面的物理地址,在程 序執行時改變為物理地址,屬於作業的動態重定位,一般由地址 轉換機構(硬體)完成。 特點: 允許一個作業存放在不連續的內存塊中而又能保證作業連續得以運行 ,既不需要移動內存中的信息,又可較好地解決零頭。 優點: a、不要求作業存放在連續的內存塊中,有效地解決零頭。 b、允許用戶作業不是一次集中裝入內存而是根據需要調入,作業中 不常用部分不長期駐留內存,而本次運行的不用部分根本就不裝 入內存。 c、提供了虛存,使用戶作業地址空間不再受內存可用空間大小的限 制。 缺點: a、頁式管理在內存的共享和保護方面還欠完善。 b、頁面大小相同,位置不能動態增加。 c、往往需要多次缺頁中斷才能把所需的信息完整地調入內存。 段式存儲管理的基本思想是:把程序按內容或過程(函數)關系 分成段,每段有自己的名字。一個用戶作業或進程所包含的段對應於 一個二維線性虛擬空間,也就是一個二維虛擬存儲器。段式管理程序 以段為單位分配內存,然後通過地址映射機構把段式虛擬存儲地址轉 化為內存中的實際地址。和頁式管理一樣,段式管理也採用只把那些 經常訪問的段駐留內存,而把那些在將來一段時間內不被訪問的段放 在外存,待需要時自動調入內存的方法實現二維虛擬存儲器。按照作 業的邏輯單位--段,來分配內存,適合程序的邏輯結構,方便用戶設 計程序。 段式存儲管理的工作原理: A、採用二維地址空間,如段號(S)、頁號(P)和頁內單元號(D); B、系統建兩張表格每一作業一張段表,每一段建立一張頁表,段表 指出該段的頁表在內存中的位置; C、地址變換機構類似頁式機制,只是前面增加一項段號。 特點: a、每一段分成若干頁,再按頁式管理,頁間不要求連續; b、用分段方法分配管理作業,用分頁方法分配管理內存; 優點: 便於段的共享和保護、段的動態增長以及動態連接。 缺點: 為了消除零頭和允許段的動態增長,需要花費CPU的大量時間在內存 中移動作業的分段,而且段的大小也給外存管理帶來困難。
㈩ 基本分頁存儲管理方式的兩級和多級頁表
現代的大多數計算機系統,都支持非常大的邏輯地址空間(2^32~2^64)。在這樣的環境下,頁表就變得非常大,要佔用相當大的內存空間。例如,對於一個具有32位邏輯地址空間的分頁系統,規定頁面大小為4 KB即2^12 B,則在每個進程頁表中的頁表項可達1兆個之多。又因為每個頁表項佔用四個位元組,故每個進程僅僅其頁表就要佔用4 MB的內存空間,而且還要求是連續的。顯然這是不現實的,我們可以採用下述兩個方法來解決這一問題:
(1) 採用離散分配方式來解決難以找到一塊連續的大內存空間的問題;
(2) 只將當前需要的部分頁表項調入內存,其餘的頁表項仍駐留在磁碟上,需要時再調入。
兩級頁表(Two-Level Page Table)
對於要求連續的內存空間來存放頁表的問題,可利用將頁表進行分頁,並離散地將各個頁面分別存放在不同的物理塊中的辦法來加以解決,同樣也要為離散分配的頁表再建立一張頁表,稱為外層頁表(Outer Page Table),在每個頁表項中記錄了頁表頁面的物理塊號。下面我們仍以前面的32位邏輯地址空間為例來說明。當頁面大小為 4 KB時(12位),若採用一級頁表結構,應具有20位的頁號,即頁表項應有1兆個;在採用兩級頁表結構時,再對頁表進行分頁,使每頁中包含2^10 (即1024)個頁表項,最多允許有2^10個頁表分頁;或者說,外層頁表中的外層頁內地址P2為10位,外層頁號P1也為10位。此時的邏輯地址結構可描述如下:
由右圖可以看出,在頁表的每個表項中存放的是進程的某頁在內存中的物理塊號,如第0#頁存放在1#物理塊中;1#頁存放在4#物理塊中。而在外層頁表的每個頁表項中,所存放的是某頁表分頁的首址,如第0#頁表是存放在第1011#物理塊中。我們可以利用外層頁表和頁表這兩級頁表,來實現從進程的邏輯地址到內存中物理地址間的變換。
為了地址變換實現上的方便起見,在地址變換機構中同樣需要增設一個外層頁表寄存器,用於存放外層頁表的始址,並利用邏輯地址中的外層頁號,作為外層頁表的索引,從中找到指定頁表分頁的始址,再利用P2作為指定頁表分頁的索引,找到指定的頁表項,其中即含有該頁在內存的物理塊號,用該塊號和頁內地址d即可構成訪問的內存物理地址。右圖示出了兩級頁表時的地址變換機構。 對於32位的機器,採用兩級頁表結構是合適的;但對於64位的機器,採用兩級頁表是否仍可適用的問題,須做以下簡單分析。如果頁面大小仍採用4 KB即2^12 B,那麼還剩下52位,假定仍按物理塊的大小(2^12位)來劃分頁表,則將餘下的42位用於外層頁號。此時在外層頁表中可能有4096 G個頁表項,要佔用16 384 GB的連續內存空間。這樣的結果顯然是不能令人接受的,因此必須採用多級頁表,將外層頁表再進行分頁,也就是將各分頁離散地裝入到不相鄰接的物理塊中,再利用第2級的外層頁表來映射它們之間的關系。
對於64位的計算機,如果要求它能支持2^64 B(= 1 844 744 TB)規模的物理存儲空間,則即使是採用三級頁表結構也是難以辦到的;而在當前的實際應用中也無此必要。故在近兩年推出的64位OS中,把可直接定址的存儲器空間減少為45位長度(即2^45)左右,這樣便可利用三級頁表結構來實現分頁存儲管理。