1、本文所以內容來自 著名高校課件和學生筆記(校園裡面經常見到有人高價買筆記)
2、任課教師不會提供參考文獻,所以只能對作者表示感謝,如果引用了您的作品,可以用回複方式補充參考文獻。
3、我不對文章無關問題進行解答,文章內容也比較難,我也很難解答您遇到的問題,如果發現BUG可以用回複方式幫我修正。
4、本課 電腦作業系統
,適用於電腦作業系統課、考研
本課其他部分的導航條見頁面底部
§5.5 段式與段頁式管理
§5.6 局部性原理和抖動問題
本章小結
§
5.5
段式與段頁式管理
5.5.1
段式管理的基本思想
• 分區式管理和頁式管理時的進程地址空間結構都是
線性
的,這要求對來源程式進行編譯、連結時,把來源程式中的主
程式、子程式、資料區等按線性空間的一維地址順序排列
起來。這使得
不同作業或進程之間共用公用子程式和資料
變得非常困難。
如果系統不能把使用者給定的程式名和資料
塊名與這些被共用程式和資料在某個進程中的虛頁對應起
來,則不可能共用這些存放在記憶體頁面中的程式和資料。
另外,
由於在頁式管理時,一個頁面中可能裝有兩個不同
子程式段的指令代碼,因此,通過頁面共用來達到共用一
個邏輯上完整的子程式或資料區塊是不可能的。
• 再者,
分區管理和頁式管理只能採用靜態連結
。從減少
CPU
開銷和儲存空間浪費的角度來看,靜態連結是不合適
的。
102
• 綜上所述,段式儲存管理是基於為使用者提供一個方
便靈活的程式設計環境而提出來的。
段式管理的基
本思想是
:
把程式按內容或過程
(
函數
)
關係分成段,
每段有自己的名字。一個使用者作業或進程所包含的
段對應於一個
二維線性虛擬空間
,也就是一個二維
虛擬儲存空間。段式管理程式以
段
為單位分配記憶體,
然後通過地址映射機構把段式虛擬位址轉換成實際
的記憶體物理地址。
和頁式管理時一樣,段式管理也
採用只把那些經常訪問的段駐留記憶體,而把那些在
將來一段時間內不被訪問的段放入外存,待需要時
自動調入的方法實現二維虛擬儲存空間。
103
5.5.2
段式管理的實現原理
1.
段式虛存空間
• 段式管理把一個進程的虛地址空間設計成二維結
構,即段號
s
與段內相對位址
w
。
頁式管理中,被劃
分的頁號按順序編號遞增排列,屬
一維空間
,而段
式管理中的段號與段號之間無循序關聯性。
另外,段
的劃分也不像頁的劃分那樣具有相同的頁長,
段的
長度是不固定的
。
每個段定義一組邏輯上完整的程
序或資料。
例如,一個進程中的程式和資料可被劃
分為主程式段、子程式段、資料區段與工作區段。
• 每個段是一個首地址為零的、連續的一維線性空間。
根據需要,
段長可動態增長
。
對段式虛地址空間
的訪問包括兩個部分
:
段名
和
段內地址
。
104
例如,
CALL [X]|<Y>
轉向段名為
X
的子程式的進入點
Y
。
LOAD 1,[A]|6
將段名為
A
的數組中第
6
個元素的值讀到寄存器
1
中。
STORE 1,[B]|<C>
將寄存器
1
的內容存入段名為
B
,
段中地址為
C
的單元中。
其中的段名
X
,
A
,
B
及入口名
Y
等經編譯器和連結程式
編譯連結後轉換成機器內部可以識別的段號和段內單元號。
例如,
CALL
[
X
]
|<Y>
可被編譯成
CALL 3|120,
如果[
X
]
對應的段號為
3
,
<Y>
對應的段內單元號為
120
的話。
105
2.
段式管理的記憶體配置與釋放
• 段式管理中以段為單位分配記憶體,每段分配一個連續的內
存區。由於各段長度不等,所以這些儲存區的大小不一。
而且,同一進程所包含的各段之間不要求連續。
• 段式管理的記憶體配置與釋放在作業或進程的執行過程中
動
態進行
。
首先,
段式管理程式為一個進入記憶體準備執行的
進程或作業分配部分記憶體,以作為該進程的工作區和放置
即將執行的程式段。隨著進程的執行,進程根據需要隨時
申請調入新段和釋放老段。
進程對記憶體區的申請和釋放可
分為兩種情況。
一種是當進程要求調入某一段時,記憶體中
有足夠的空閑區滿足該段的記憶體要求。另一種是記憶體中沒
有足夠的空閑區滿足該段的記憶體要求。
106
• 對於第一種情況,系統要用相應的
表格
或
資料結構
來管理
記憶體空閑區,以便對使用者進程或作業的有關程式段進行內
存分配和回收。事實上,可以採用和動態分區式管理相同
的空閑區管理方法。即把記憶體各空閑區按物理地址從低到
高排列或按空閑區大小從小到大或從大到小排列。與這幾
種空閑區自由鏈相對應,分區式管理時所用的幾種分配算
法
:
最先適應法
、
最佳適應法
、
最壞適應法
都可用來進行空
閑區分配。當然,
分區式管理時用到的記憶體回收方法也可
以在段式管理中使用
。
• 另一種記憶體空閑區的分配與回收方法是在記憶體中沒有足夠
的空閑區滿足調入段的記憶體要求時使用的。這時,段式管
理程式根據給定的
置換演算法
淘汰記憶體中在今後一段時間內
不再被
CPU
訪問的段,也就是淘汰那些訪問機率最低的段。
107
• 動態網頁式管理中的幾種常用的淘汰演算法都可以用來作為段
式管理時的淘汰演算法
。例如
FIFO
置換演算法、
LRU
演算法及其
近似演算法等。但是,
與頁式管理時每頁具有相同的長度時
不一樣,需要調入的某段長度可能大於被淘汰的一段程式
或資料的長度。這樣,僅僅淘汰一段可能仍然滿足不了需
要調入段的記憶體要求。此時,就應再淘汰另外的段直到滿
足需調入段的記憶體要求時為止。
• 事實上,
一次調入時所需淘汰的段數與段的大小有關
。如
果一個作業或進程的段數較多,且段長之間的差別較大,
則有可能出現調入某個大段時,需淘汰好幾個小段的情況。
不過,
在段式管理時,任何一個段的段長都不允許超過內
存可用性區域長度,否則將會造成記憶體配置出錯。
108
• 除了初始分配之外,
段的動態分配是在
CPU
所要訪
問的指令和資料不在記憶體時產生缺段中斷的情況下
發生的。
因此,
段的淘汰或置換演算法實際上是缺段
中斷處理過程的一部分
。
• 缺段中斷處理過程的全過程
5.29
所示。圖
5.29
中,
X
代表所缺段段號。該處理常式是在
CPU
訪問
執行時,地址變換機構發現該段不在記憶體,而由硬
件發出缺段中斷訊號後被調用的。
109
圖
5.29
缺段中斷處理過程
110
3.
段式管理的地址變換
由於段式管理只存放部分使用者資訊副本在記憶體,而大部分
資訊在外存中,這必然引起
CPU
訪內時發生所要訪問的段不
在記憶體的現象。那麼,
CPU
如何感知到所要訪問的段不在內
存而啟動中斷處理常式呢
?
還有,
段式虛擬位址屬於一個二維的虛擬空間
。
一個二維
空間的虛擬位址怎樣變換為一個一維的線性物理地址呢
?
這些
都由段式地址變換機構解決。
(1)
段表
(segment mapping table)
和頁式管理方案類似,段式管理程式在進行初始記憶體配置
之前,
首先根據使用者要求的記憶體大小為一個作業或進程建立
一個段表
,
以實現動態地址變換和缺段中斷處理及儲存保護
等。
與頁式管理時一樣,段式管理也是通過
段表
來進行記憶體
管理。考慮了缺段處理和段式存取控制保護後的段表
5.30
所示。
111
圖
5.30
段表
圖中
段號
與使用者指定的段名一一對應,
始址
和
長度
分別
表示該段在記憶體或外存的物理地址與實際長度。
存取方式
是
用來對該段進行存取保護的。只有處理機狀態字中的存取控
制位與段表中存取方式一致時才能訪問該段。
內外
欄是指出
該段現在儲存於外存還是記憶體中。如果該欄目指出所訪問段
在外存的話,則發生中斷。而
訪問位
則是根據淘汰演算法的需
要而設的,這裡假定淘汰演算法淘汰那些訪問位未被改變過的
段
(NUR
演算法
)
。
訪問位
內外
存取方式
長度
始址
段號
112
(2)
動態地址變換
• 一般在記憶體中給出一塊固定的地區放置段表
。當某
進程開始執行時,管理程式首先把該進程的段表始
址放入段表地址寄存器。通過訪問段表寄存器,管
理程式得到該進程的段表始址從而可開始訪問段表。
然後,由虛地址中的段號
s
為索引,查段表。若該
段在記憶體,則判斷其存取控制方式是否有錯。如果
存取控制方式正確,則從段表相應表目中查出該段
在記憶體的起始地址,並將其和段內相對位址
w
相
加,從而得到實際記憶體位址。
113
• 如果該段不在記憶體,則產生
缺段中斷
將
CPU
控制權交給內
存分配程式。記憶體配置程式首先檢查空閑區鏈,以找到足
夠長度的空閑區來裝入所需要的段。如果記憶體中的可用空
閑區總數小於所要求的段長時,則檢查段表中
訪問位
,以
淘汰那些訪問機率低的段並將需要段調入。段式地址變換
過程
5.31
所示。
• 與頁式管理時相同,
段式管理時的地址變換過程也必須經
過二次以上的記憶體訪問
。
即首先訪問段表以計算得到待訪
問指令或資料的物理地址,然後才是對物理地址進行取數
據或存資料操作。
為了提高訪問速度,頁式地址變換時使
用的
高速聯想寄存器
的方法也可以用在段式地址變換中。
如果在聯想寄存器中找到了所需要的段,則可以大大加快
地址變換速度。
114
圖
5.31
段式地址變換過程
115
4.
段的共用與保護
段式儲存管理可以方便地實現記憶體資訊共用和進行有效地
記憶體保護。這是因為段是按
邏輯意義
來劃分的,可以
按段名
訪問
的緣故。
(1)
段的共用
在多道環境下,常常有許多子程式和應用程式是被多個用
戶所使用的。特別是在多視窗系統、支援工具等廣泛流行的
今天,被共用的程式和資料的個數和體積都在急劇增加,有
時往往超過使用者程式長度的許多倍。這種情況下,如果每個
使用者進程或作業都在記憶體保留它們共用程式和資料的副本,
那就會極大地浪費記憶體空間。最好的辦法是
記憶體中只保留一
個副本,供多個使用者使用,稱為
共用
。
圖
5.32
給出了一個段
式系統中共用的例子。
圖116
5.32
段式系統中共用記憶體副本
117
5.32
所示那樣,如果使用者進程或作業需要共用內
存中的某段程式或資料,
只要使用者使用相同的段名,就
可在新的段表中填入已存在於記憶體之中的段的起始地
址,共置以適當的讀寫控制權,就可做到共用一個邏輯
上完整的記憶體段資訊。
另外,在多道環境下,由於進程的並發執行
,
一段程
序為多個進程共用時,有可能出現多次同時重複執行該
段程式的情況
(
即某個進程在未執行完該段程式之前,
其他並發進程又已開始執行該段程式
)
。這就要求它
在
執行過程中,該段程式的指令和資料不能被修改。
還
有,與一個進程中的其他程式段一樣,
共用段有時也要
被換出記憶體
。這時,就要在段表中設立相應的
共用位
來
判別該段是否正被某個進程調用。顯然
一個正在被某
個進程使用或即將被某個進程使用的共用段是不應該調
出記憶體的。
118
(2)
段的保護
與頁式管理時相同,段式管理的保護主要有兩種。
一種是
地址越界保護法
,另一種是
存取方式控制保護
法
。關於存取方式控制保護已在前面介紹,這裡不再
重複。而
地址越界保護則是利用段表中的段長項與虛
擬地址中的段內相對位址比較進行的
。若段內相對地
址大於段長,系統就會產生保護中斷。不過,在允許
段動態增長的系統中,段內相對位址大於段長是允許
的。為此,
段表中設定相應的
增補位
以指示該段是否
允許該段動態增長。
119
5.5.3
段式管理的優缺點
與頁式管理和分區式管理比較,段式管理的長處與短處可分別
小結如下
:
(1)
和動態網頁式管理一樣,段式管理也提供了內外存統一管理的虛
存實現
。與頁式管理不同的是,段式虛存每次交換的是一段有
意義的資訊,而不是像頁式虛存那樣只交換固定大小的頁從而
需要多次缺頁中斷才能把所需資訊完整地調入記憶體。
(2)
在段式管理中,
段長可根據需要動態增長
。這對那些需要不斷
增加或吸收新資料的段來說,將是非常有好處的。
(3)
便於對具有完整邏輯功能的資訊段進行共用
。
(4)
便於實現動態連結
。由於段式管理是按資訊的邏輯意義來劃分
段,每段對應一個相應的程式模組。因此,可用段名加上段入
口地址等方法在執行過程中調入相應的段進行動態連結。當
然,
段的動態連結需要一定的硬體支援
。例如需要連結寄存器
存放被連結段的出口等。
120
• 段式管理比其他幾種方式要求有更多的硬體支援
。
這就提高了機器成本。另外,由於在記憶體空閑區管
理方式上與分區式管理相同,在片段問題以及為了
消除片段所進行的合并等問題上較分頁式管理要差。
再者,允許段的動態增長也會給系統管理帶來一定
的難度和開銷。
• 段式管理的另一個缺點就是每個段的長度受記憶體可
用區大小的限制
。
• 和頁式管理一樣,段式管理系統在選擇淘汰演算法時
也必須十分謹慎,否則也有可能產生
抖動現象
。
121
5.5.4
段頁式管理的基本思想
• 以上幾種儲存管理方式各有特長。
段式管理為使用者提供了
一個二維的虛地址空間,反映了程式的邏輯結構,有利於
段的動態增長以及共用和記憶體保護等,這大大地方便了用
戶。而分頁系統則有效地克服了片段,提高了儲存空間的利
用率。從儲存管理的目的來講,主要是方便使用者的程式設
計和提高記憶體的利用率。
那麼,
把段式管理和頁式管理結
合起來讓其互相取長補短不是更好嗎
?
於是,段頁式管理方
式便被提了出來。
• 不過,
段頁式管理的開銷會更大
。因此,段頁式管理方式
一般只用在
大型主機系統
中。近年來由於硬體發展很快,段
頁式管理的開銷在工作站等機型上已變得可以容忍了。
122
5.5.5
段頁式管理的實現原理
1.
虛地址的構成
段頁式管理時,一個進程仍然擁有一個自己的
二
維地址空間
,這與段式管理時相同。首先,
一個進程
中所包含的具有獨立邏輯功能的程式或資料仍被劃分
為段,並有各自的段號
s
。
這反映和繼承了段式管理
的特徵。其次,
對於段
s
中的程式或資料,則按照一
定的大小將其劃分為不同的頁。
和頁式系統一樣,最
後
不足一頁的部分仍佔一頁
。這反映了段頁式管理中
的
頁式特徵
。從而,
段頁式管理時的進程的虛擬位址
空間中的虛擬位址由三部分組成
:
即
段號
s
,
頁號
p
和
頁內相對位址
d
。
如下所示
:
123
• 對於這個由三部分組成的虛擬位址來說,
程式員可
見的仍是
段號
s
和
段內相對位址
w
。
p
和
d
是由地址
變換機構把
w
的高几位解釋成頁號
p
,
以及把剩下
的低位解釋為頁內地址
d
而得到的。
• 由於
虛擬空間的最小單位是頁而不是段
,從而記憶體
可用性區域也就被劃分成為若干個大小相等的頁面,且
每段所擁有的程式和資料在記憶體中可以分開存放。
分段的大小也不再受記憶體可用性區域的限制。
124
2.
段表和頁表
• 為了實現段頁式管理,
系統必須為
每個作業或進程
建立一張段表,
管理記憶體配置與釋放、缺段處理、
儲存保護和地址變換等。
另外,
由於一個段又被劃
分成了若干頁,
每個段又必須建立一張頁表
,把段
中的虛頁變換成記憶體中的實際頁面。
顯然,
與頁式
管理時相同,頁表中也要有實現缺頁中斷處理和頁
面保護等功能的表項。
另外,
由於在段頁式管理
中,頁表不再是屬於進程而是屬於某個段,因此,
段表中應有專項指出該段所對應頁表的
頁表始址
和
頁表長度
。
段頁式管理中段表、頁表以及記憶體的關
系
5.33
所示。圖中各表中
其他欄可參考段式或
頁式管理中的相應欄目
。
125
圖
5.33
段頁式管理中段表、頁表與記憶體的關係
126
3.
動態地址變換過程
• 在一般使用段頁式儲存管理的電腦系統中,都在
記憶體中辟出一塊固定的地區存放進程的段表和頁表。
因此,
在段頁式管理系統中,要對記憶體中指令或數
據進行一次存取的話,至少需要訪問三次以上的內
存。
第一次
是由段表地址寄存器得到段表始址去訪
問段表,由此取出對應段的頁表地址。
第二次
則是
訪問頁表得到所要訪問的物理地址。只有在訪問了
段表和頁表之後,
第三次
才能訪問真正需要訪問的
物理單元。
顯然,這將使
CPU
的執行指令速度大大
降低。
127
• 為了提高地址轉換速度,設定
快速聯想寄存器
就顯得比段
式管理或頁式管理時更加需要。
在快速聯想寄存器中,存
放當前最常用的段號
s
、
頁號
p
和對應的記憶體頁面與其他控
制用欄目。
當要訪問記憶體空間某一單元時,可在通過段表、
頁表進行記憶體位址尋找的同時,根據快速聯想寄存器尋找
其段號和頁號。
如果所要訪問的段或頁在快速聯想寄存器
中,則系統不再訪問記憶體中的段表、頁表而直接把快速聯
想寄存器中的值與頁內相對位址
d
拼接起來得到物理地址。
經驗表明,一個在快速聯想寄存器中裝有
1/10
左右的段號、
頁號及頁面的段頁式管理系統,可以通過快速聯想寄存器
找到
90%
以上的所要訪問的記憶體位址。
• 段頁式管理的地址變換機構
5.34
所示。
128
圖
5.34
段頁式地址變換
129
• 以上簡單地介紹了段頁式管理中地址變換的基本原理。有
關段頁式管理中的
儲存保護
和
共用
以及
缺段或缺頁中斷處
理
等,可參照段式管理或頁式管理中的方法解決。
• 總之,因為
段頁式管理是段式管理的頁式管理方案結合而
成的,所以具有它們二者的優點
。但反過來說,
由於管理
軟體的增加,複雜性和開銷也就隨之增加了。
另外,
需要
的硬體以及佔用的記憶體也有所增加。
更重要的是,
如果不
採用聯想寄存器的方式提高
CPU
的訪內速度,將會使得執
行速度大大下降。
130
§
5.6
局部性原理和抖動問題
• 動態網頁式管理,段式管理以及段頁式管理都提供了一種將
記憶體和外存統一管理的實現方法
。
然而,由於上述實現方
法實質上要在
記憶體和外存之間交換資訊
,因此,就要不斷
地啟動外部裝置以及相應的處理過程。一般來說,電腦
系統的外部儲存空間具有較大的容量而訪問速度並不高。為
了進行資料的讀寫而涉及到的一系列處理常式也要耗去大
量的時間。
如果記憶體和外存之間資料交換頻繁,勢必會造
成對輸入
/
輸出裝置的巨大壓力和使得機器的主要開銷大多
用在反覆調入調出資料和程式段上,從而無法完成使用者所
要求的工作。
因此,
要求在記憶體中存放一個不小於最低限
度的程式段或資料,而且它們必須是那些正在被調用,或
那些即將被調用的部分。
131
• 由
類比實驗
知道,
在幾乎所有的程式的執行中,在一段時間
內,
CPU
總是集中地訪問程式中的某一個部分而不是隨機地對
程式所有部分具有平均訪問機率。把這種現象稱為
局部性原理
。
與
CPU
訪問該局部內的程式和資料的次數相比,該局部段的移
動速率相當慢。這就使得前面所討論的頁式管理、段式管理以
及段頁式管理所實現的虛存系統成為可能。
• 但是,如果不能正確地將那些系統所需要的局部段放入記憶體的
話,則顯然系統的效率會大大降低,甚至無法有效地工作。
• 實驗表明,任何程式在局部性放入時,都有一個臨界值要求。
當記憶體配置小於這個臨界值時,記憶體和外存之間的交換頻率將
會急劇增加,
而記憶體配置大於這個臨界值時,再增加記憶體配置
也不能顯著減少交換次數。
• 這個
記憶體要求的臨界值被稱為
工作集
。圖
5.35
說明這種情況。
132
圖
5.35
記憶體與交換次數的關係
133
• 一個進程執行過程中
缺頁
(missing page)
的發生有
兩種可能。
一種是並發進程所要求的工作集總和大
於記憶體可提供的可用性區域。
這時,
系統將無法正常工
作,因為缺乏足夠的空間裝入所需要的程式和資料。
另一種可能性是,雖然儲存管理程式為每個並發進
程分配了足夠的工作集,但系統無法在開始執行前
選擇適當的程式段和資料進入記憶體。
這種情況下,
只能依靠執行過程中,當
CPU
發現所要訪問的指令
或資料不在記憶體時,由硬體中斷後轉入中斷處理程
序,將所需要的程式段和資料調入。
這是一種很自
然的處理方法。
134
• 當給進程分配的記憶體小於所要求的工作集時,由於記憶體外存之
間交換頻繁,訪問外存時間和輸入
/
輸出處理時間大大增加,反
而造成
CPU
因等待資料空轉,使得整個系統效能大大下降,這
就造成了系統抖動。
• 可以利用
統計模型
進一步分析工作集與抖動之間的關係。
• 設
r
為
CPU
在記憶體中存取一個記憶體單元的時間,
t
為從外存中讀
出一頁資料所需時間,
p(s)
為
CPU
訪問記憶體時,所訪問的頁正
好不在記憶體的機率,這裡
s
是當前進程在記憶體中的工作集。
• 顯然,在虛存情況下存取一個記憶體單元的平均時間可描述為
T=
r+p(s
)
*
t
由程式類比可知,
p(s
)=
ae
-bs
這裡,
0<a<1<b
,
ae
-bs
<<r
135
• 另外,假定記憶體中各並發進程具有相同的統計特性,而且
對於一個並發進程來說,只有發生缺頁時才變成等待狀態。
這是為了簡化討論而忽略了外部裝置和進程通訊功能的存
在。
• 由於訪問外存一個頁面的速度為
t
,
且缺頁發生的機率為
p(s)
,
則在處理機訪問一個記憶體單元的
r
時間內,平均每秒
引起的內外存之間頁傳送率為
p(s)/r
。
也就是每
r/p(s)
秒需要
從外存向記憶體傳送一頁。從而
,對於一個在虛存範圍內執
行的進程,它可以處於三種可能的狀態之中,即
:
(1)t
<
r/p(s
)
(2)t
>
r/p(s
)
(3)t=
r/p(s
)
136
• 對於第一種情況,由於頁傳送速度大於訪問外存頁面的速
度,因此,進程在執行過程中發生缺頁的次數較少,並不
經常從外存調頁。
• 但是,在第二種情況時,由於內外存之間的頁面傳送速度
已經小於訪問外存頁面速度,因此,進程在執行過程中發
生缺頁的次數已經多到外存供不應求的地步。事實上,這
時的系統已處於抖動狀態。
• 第三種情況是一種較理想的情況,即進程在執行過程中所
需要的頁數正好等於從外存可以調入的頁數。此時該進程
在記憶體中佔有最佳工作集。
• 根據以上討論可知,一個進程在記憶體中佔有最佳工作集的
條件是
: p(w)=r/t
• 這裡,
r
是
CPU
訪問記憶體單元所需平均時間,
t
是訪問外存一
個頁面所需平均時間。
137
• 因為
p(w)
可表示為
p(w)=
ae
-bw
• 從而有,
w=
ln(at/r)/b
rabnt(
• 即,
與記憶體存取速度
r
相比,若外存傳送速度越
慢,所需工作集就越大。
• 當然,上面討論是在作了許多近似的情況下得出的
結論。事實上,由於各進程所包含的程式段多少,
選用的淘汰演算法等不一樣,工作集的選擇也不一樣。
一般來說,選擇工作集有靜態和動態兩種選擇方
法,這裡不再進一步介紹
。
• 另外,由以上討論,我們可以找出解決抖動問題的
幾種關鍵辦法。
138
• 抖動只有在
t>r/p(s)
時才會發生。而
p(s)
等於
ae
-bs
是一個與工
作集
s
、
參數
a
和
b
有關的機率值。
p(s)
是可以改變的。對於給定
的系統來說,
t
和
r
則是一個很難改變的數字。顯然,解決抖動問
題的最關鍵辦法是將
p(s)
減少到使
t=r/p(s)
。
這隻需要
:
(1)
增加
s
,
也就是
擴大工作集
,或是
(2)
改變參數
a
和
b
,
也就是
選擇不同的淘汰演算法以解決抖動問題
。
• 在物理系統中,為了防止抖動的產生,在進行淘汰或置換時,
一般總是把缺頁進程鎖住,不讓其換出,而調入的頁或段總是
佔據那些暫時得不到執行的進程所佔有的記憶體地區,從而擴大
缺頁進程的工作集。
UNIX System
Ⅴ中就是採用的這種方法。
139
本
章
小
結
• 本章介紹了各種常用的記憶體管理方法,它們是
分區式管理、
頁式管理、段式管理和段頁式管理。
記憶體管理的核心問題
是如何
解決記憶體和外存的統一,以及它們之間的資料交換
問題。
記憶體和外存的統一管理使得記憶體的利用率得到提
高,使用者程式不再受記憶體可用性區域大小的限制。與此相關
聯,記憶體管理要解決記憶體擴充、記憶體的分配與釋放、虛擬
地址到記憶體物理地址的變換、記憶體保護與共用、內外存之
間資料交換的控制等問題。
• 圖
5.36
系統地對幾種儲存管理方法所提供的功能和所需硬體
支援作了一個比較。