哪種存儲管理方式提供二維地址
Ⅰ 頁式存儲管理和段式存儲管理的區別
段式與頁式存儲管理的比較如下表所示。
段式
頁式
分段由用戶設計劃分,每段對應一個相應的的程序模塊,有完整的邏輯意義。
分頁用戶看不見,由操作系統為內存管理劃分。
段面是信息的邏輯單位
頁面是信息的物理單位
便於段的共享,執行時按需動態鏈接裝入。
頁一般不能共享
段長不等,可動態增長,有利於新數據增長。
頁面大小相同,位置不能動態增長。
二維地址空間:段名、段中地址;段號、段內單元號
一維地址空間
管理形式上象頁式,但概念不同
往往需要多次缺頁中斷才能把所需信息完整地調入內存
實現頁(段)的共享是指某些作業的邏輯頁號(段號)對應同一物理頁號(內存中該段的起始地址)。頁(段)的保護往往需要對共享的頁面(段)加上某種訪問許可權的限制,如不能修改等;或設置地址越界檢查,對於頁內地址(段內地址)大於頁長(段長)的存取,產生保護中斷。
Ⅱ 分段存儲管理需提供二維地址
一. 分頁存儲管理
1.基本思想
用戶程序的地址空間被劃分成若干固定大小的區域,稱為「頁」,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。
2. 分頁存儲管理的地址機構
15 12 11 0
頁號P 頁內位移量W
頁號4位,每個作業最多2的4次方=16頁,表示頁號從0000~1111(24-1),頁內位移量的位數表示頁的大小,若頁內位移量12位,則2的12次方=4k,頁的大小為4k,頁內地址從000000000000~111111111111
若給定一個邏輯地址為A,頁面大小為L,則
頁號P=INT[A/L],頁內地址W=A MOD L
3. 頁表
分頁系統中,允許將進程的每一頁離散地存儲在內存的任一物理塊中,為了能在內存中找到每個頁面對應的物理塊,系統為每個進程建立一張頁面映射表,簡稱頁表。頁表的作用是實現從頁號到物理塊號的地址映射。
頁表:
頁號 物理塊號 存取控制
0 2
1 15(F)
2 14(E)
3 1
4. 地址變換
(1) 程序執行時,從PCB中取出頁表始址和頁表長度(4),裝入頁表寄存器PTR。
(2) 由分頁地址變換機構將邏輯地址自動分成頁號和頁內地址。
例:11406D=0010|110010001110B=2C8EH
頁號為2,位移量為C8EH=3214D
或11406 DIV 4096=2
11406 MOD 4096=3214
(3) 將頁號與頁表長度進行比較(2<4),若頁號大於或等於頁表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4) 將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。
(5) 取出頁描述子得到該頁的物理塊號。 2 14(E)
(6) 對該頁的存取控制進行檢查。
(7) 將物理塊號送入物理地址寄存器中,再將有效地址寄存器中的頁內地址直接送入物理地址寄存器的塊內地址欄位中,拼接得到實際的物理地址。
例:0010|110010001101B
1110|110010001101B=EC8EH=60558D
或 14*4096+3214=60558D
5. 具有快表的地址變換機構
分頁系統中,CPU每次要存取一個數據,都要兩次訪問內存(訪問頁表、訪問實際物理地址)。為提高地址變換速度,增設一個具有並行查詢能力的特殊高速緩沖存儲器,稱為「聯想存儲器」或「快表」,存放當前訪問的頁表項。
二.分段存儲管理
1.基本思想
將用戶程序地址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯信息。存儲分配時,以段為單位,段與段在內存中可以不相鄰接,也實現了離散分配。
2. 分段存儲方式的引入
方便編程
分段共享
分段保護
動態鏈接
動態增長
3. 分段地址結構
作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。常式序段、數據段等。每個段都從0開始編址,並採用一段連續的地址空間。
段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間是二維的。
15 12 11 0
段號 段內位移量
段號4位,每個作業最多24=16段,表示段號從0000~1111(24-1);段內位移量12位,212=4k,表示每段的段內地址最大為4K(各段長度不同),從000000000000~111111111111
4. 段表
段號 段長 起始地址 存取控制
0 1K 4096
1 4K 17500
2 2K 8192
5. 地址變換
(1). 程序執行時,從PCB中取出段表始址和段表長度(3),裝入段表寄存器。
(2). 由分段地址變換機構將邏輯地址自動分成段號和段內地址。
例:7310D=0001|110010001110B=1C8EH
段號為1,位移量為C8EH=3214D
(3). 將段號與段表長度進行比較(1<3),若段號大於或等於段表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4). 將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。
(5). 取出段描述子得到該段的起始物理地址。1 4K 17500
(6). 檢查段內位移量是否超出該段的段長(3214<4K),若超過,產生越界中斷。
(7). 對該段的存取控制進行檢查。
(8). 將該段基址和段內地址相加,得到實際的物理地址。
例:0001|110010001101B
起始地址17500D+段內地址3214D=20714D
三.分頁與分段的主要區別
分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:
(1)頁是信息的物理單位,分頁是為了實現非連續分配,以便解決內存碎片問題,或者說分頁是由於系統管理的需要.段是信息的邏輯單位,它含有一組意義相對完整的信息,分段的目的是為了更好地實現共享,滿足用戶的需要.
(2)頁的大小固定,由系統確定,將邏輯地址劃分為頁號和頁內地址是由機器硬體實現的.而段的長度卻不固定,決定於用戶所編寫的程序,通常由編譯程序在對源程序進行編譯時根據信息的性質來劃分.
(3)分頁的作業地址空間是一維的.分段的地址空間是二維的.
四.段頁式存儲管理
1.基本思想:
分頁系統能有效地提高內存的利用率,而分段系統能反映程序的邏輯結構,便於段的共享與保護,將分頁與分段兩種存儲方式結合起來,就形成了段頁式存儲管理方式。
在段頁式存儲管理系統中,作業的地址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於主存空間也分成大小相等的頁,主存的分配以頁為單位。
段頁式系統中,作業的地址結構包含三部分的內容:段號 頁號 頁內位移量
程序員按照分段系統的地址結構將地址分為段號與段內位移量,地址變換機構將段內位移量分解為頁號和頁內位移量。
為實現段頁式存儲管理,系統應為每個進程設置一個段表,包括每段的段號,該段的頁表始址和頁表長度。每個段有自己的頁表,記錄段中的每一頁的頁號和存放在主存中的物理塊號。
2.地址變換的過程:
(1)程序執行時,從PCB中取出段表始址和段表長度,裝入段表寄存器。
(2)由地址變換機構將邏輯地址自動分成段號、頁號和頁內地址。
(3)將段號與段表長度進行比較,若段號大於或等於段表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(4)將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。
(5)取出段描述子得到該段的頁表始址和頁表長度。
(6)將頁號與頁表長度進行比較,若頁號大於或等於頁表長度,則表示本次訪問的地址已超越進程的地址空間,產生越界中斷。
(7)將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。
(8)取出頁描述子得到該頁的物理塊號。
(9)對該頁的存取控制進行檢查。
(10)將物理塊號送入物理地址寄存器中,再將有效地址寄存器中的頁內地址直接送入物理地址寄存器的塊內地址欄位中,拼接得到實際的物理地址。
Ⅲ 操作系統頁式存儲管理的問題
邏輯頁面表示這是一個虛擬的儲存空間,一個邏輯頁面對應一個物理內存的頁框,這個頁框才是真正的物理存儲所在。
Ⅳ 操作系統里的請求頁式存儲管理的優缺點
具有段式和頁式管理的優點。但是系統的復雜性和開銷也隨之增加。
必須要採用聯想寄存器才能提高CPU的訪內速度。
段式與頁式的比較
段式:
分段由用戶設計自己劃分,每段對應的程序模塊,有完整的邏輯意義
段面是信息的邏輯單位便於段的共享,執行時按需動態鏈接裝入
段長不等,可動態裝入,有利於新數據的增長
二維地址空間:段名、段中地址;段號、段內單元號
管理形式上象頁式,但概念不同
頁式:
分頁用戶看不見,由操作系統為內存管理劃分
頁面是信息的物理單位。頁一般不能共享頁面大小相同,位置不能動態增加
一維地址空間
往往需要多次缺頁中斷才能把所需的信息完整地調入內存。
Ⅳ 操作系統頁式存儲管理的問題
存儲管理的基本原理內存管理方法 內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。 下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。 1. 連續分配存儲管理方式 連續分配是操作系統頁式存儲管理的問題
Ⅵ 何為段頁式管理
把程序按內容或過程(函數)關系分成段,每段有自己的名字。一個用戶作業或進程所包含的段對應一個二維線形虛擬空間,也就是一個二維虛擬存儲器。段式管理程序以段為單位分配內存,然後通過地址影射機構把段式虛擬地址轉換為實際內存物理地址。
程序通過分段(segmentation)劃分為多個模塊,如代碼段、數據段、共享段。其優點是:
¨ 可以分別編寫和編譯
¨ 可以針對不同類型的段採取不同的保護
¨ 可以按段為單位來進行共享,包括通過動態鏈接進行代碼共享
6.5.2 段式管理的實現原理
1 段式虛存空間
段式管理把一個進程的虛地址空間設計成二維結構,即段號s與段內相對地址w。段具有以下特徵:
段號與段號之間無順序關系
段的長度是不固定的
每個段定義一組邏輯上完整的程序或數據
每個段是一個首地址為零的,連續的一維線性空間
根據需要,段長可動態增長
對段式虛地址空間的訪問包括兩個部分:段名和段內地址。
2 段式管理的內存分配與釋放
段式管理中以段為單位分配內存,每段分配一個連續的內存區。由於各段長度不等。所以這些存儲區的大小不一。而且,同一進程所包含的各段之間不要求連續。
段式管理的內存分配與釋放在作業或進程的執行過程中動態進行。
進程對內存區的申請和釋放可分為兩種情況:
1、當進程要求調入某一段時,內存中有足夠的空閑區滿足該段的內存要求:採用和動態分區式管理相同的空閑區管理方法。
2、內存中沒有足夠的空閑區滿足該段的內存要求:根據給定的置換演算法淘汰內存中在今後一段時間內不再被CPU訪問的段。
一次調入時所需淘汰的段數與段的大小有關,如果一個作業或進程的段數較多,且段長之間的差別較大,則有可能出現調入某個大段時,需淘汰好幾個小段的情況。
任何一個段的段長都不允許超過內存可用區長度,否則將會造成內存分配出錯。
除了初始分配之外,段的動態分配是在CPU所要訪問的指令和數據不在內存時產生缺段中斷的情況下發生的。因此,段的淘汰或置換演算法實際上是缺段中斷處理過程的一部分。
3 段式管理的地址變換
(1)段表(Segment mapping table)
段式管理程序在進行初始內存分配之前,首先根據用戶要求的內存大小為一個作業或進程建立一個段表,以實現動態地址變換和缺段中斷處理及存儲保護等。段式管理通過段表來進行內存管理的。
段號:與用戶指定的段名一一對應
始址:表示該段在內存或外存的物理地址
長度:表示該段在內存或外存的實際長度
存取方式:用來對該段進行存取保護的。只有處理機狀態字中的存取控制位與段表中存取方式一致時才能訪問該段。
內外欄:指出該段現在存儲於外存還是內存中。
訪問位:根據淘汰演算法的需要而設
圖 段表
(2)動態地址變換
一般我們在內存中給出一塊固定的區域放置段表。當某進程開始執行時,管理程序首先把該進程的段表始址放入段表地址寄存器。通過訪問段表寄存器、管理程序得到該進程的段表始址從而可開始訪問段表。然後,由虛地址中的段號s為索引,查段表。
若該段在內存,則判斷其存取控制方式是否有錯。如果存取控制方式正確,則從段表相應表目中查出該段在內存的起始地址,並將其和段內相對地址w相加,從而得到實際內存地址。
如果該段不在內存,則產生缺段中斷將CPU控制權交給內存分配程序。內存分配程序首先檢查空閑區鏈,以找到足夠長度的空閑區來裝入所需要的段。如果內存中的可用空閑區總數小於所要求的段長時,則檢查段表中訪問位,以淘汰那些訪問概率低的段並將需要段調入。
段式管理時的地址變換過程必須經過二次以上的內存訪問。即首先訪問段表以計算得到待訪問指令或數據的物理地址,然後才是對物理地址進行取數據或存數據操作。為了提高訪問速度,頁式地址變換時使用的高速聯想寄存器的方法也可以用在段式地址變換中。即高速聯想寄存器中存放那些經常訪問的段號所對應的段表項,且高速聯想寄存器中的段表和內存的段表可同時查找。如果在聯想寄存器中找到了所需要的段,則可以大大加快地址變換速度。
圖 段式地址變換
4 段的的共享與保護
(1) 段的共享
共享:內存中只保留一個副本,供多個用戶使用。
如果用戶進程或作業需要共享內存中的某段程序或數據,只要用戶使用相同的段名,就可在新的段表中填入已存在在內存之中的段的起始地址,並置以適當的讀寫控制權,就可做到共享一個邏輯上完整的內存段信息。
另外,在多道環境下,由於進程的並發執行,一段程序為多個進程共享時,有可能出現多次同時重復執行該段程序的情況(即某個進程在未執行完該段程序之前,其它並發進程又已開始執行該段程序)。這就要求它在執行過程中,該段程序的指令和數據不能被修改。還有,與一個進程中的其它程序段一樣,共享段有時也要被換出內存。這時,就要在段表中設立相應的共享位來判別該段是否正被某個進程調用。顯然一個正在被某個進程使用或即將被某個進程使用的共享段是不應該調出內存的。
圖 段式系統中共享內存副本
(2) 段的保護
地址越界保護法:利用段表中的段長項與虛擬地址中的段內相對地址比較進行。若段內相對地址大於段長,系統就會產生保護中斷。
存取方式控制保護法:前面已作過介紹
段模式提供的二維地址最符合用戶觀點和程序邏輯。段式的最大好處是可以充分的實現共享和保護。
段式管理的優點是便於動態申請內存,管理和使用統一化,便於共享,便於動態連接;其缺點是有碎片問題。
頁式管理和段式管理的比較
6.5.3 段式管理的優缺點
分段是支持用戶內存觀點的一種內存管理模式。
一個邏輯地址空間是一個段的集合,每個段有一個名字和一個長度。地址既說明段名,也說明段內位移。因此用戶將每個地址說明分為兩個量,一個是段名,一個是位移(與這個模式相反的是頁模式,用戶僅說明一個單獨的地址。由硬體將該地址劃分為一個頁號和一個位移。這種劃分是程序員看不見的。)段模式以段為單位劃分和連續完整存放。段間是不一定連續編址的,即為二維編址。
段式作為不連續技術的一個最大特點是在於它是如何不連續的:進程邏輯空間(二維的)最接近用戶觀點,就像高級程序語言(更一般的說,軟體系統介面)向自然語言靠攏一樣。這樣克服了頁式的非邏輯劃分,給保護和共享與動態伸縮所帶來的不自然性(即不能按語義單位)。
1. 分頁是出於系統管理的需要,分段是出於用戶應用的需要。因此,一條指令或一個操作數可能會跨越兩個頁的分界處,而不會跨越兩個段的分界處。
2. 頁大小是系統固定的,而段大小則通常不固定。
3. 邏輯地址表示:分頁是一維的,各個模塊在鏈接時必須組織成同一個地址空間;而分段是二維的,各個模塊在鏈接時可以每個段組織成一個地址空間。
圖 頁式管理與段式管理的比較
因為段頁式管理是段式管理的頁式管理方案結合而成的,所以具有他們二者的優點。但是由於管理軟體的增加,復雜性和開銷也隨之增加。
Ⅶ 在基本段式存儲管理系統中,邏輯地址由什麼構成
存儲管理的基本原理內存管理方法
內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。
下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。
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、提供了虛存,使用戶作業地址空間不再受內存可用空間大小的限
制。