儲存管理的基本原理記憶體管理方法
記憶體管理主要包括記憶體分配和回收、地址變換、記憶體擴充、記憶體共享和保護等功能。
下面主要介紹連續分配儲存管理、覆蓋與交換技術以及頁式與段式儲存管理等基本概念和原理。
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的大量時間在記憶體
中移動作業的分段,而且段的大小也給外存管理帶來困難。
儲存管理的基本原理記憶體管理方法
記憶體管理主要包括記憶體分配和回收、地址變換、記憶體擴充、記憶體共享和保護等功能。
下面主要介紹連續分配儲存管理、覆蓋與交換技術以及頁式與段式儲存管理等基本概念和原理。
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的大量時間在記憶體
中移動作業的分段,而且段的大小也給外存管理帶來困難。