計算機操作系統(tǒng)(第四版)西安電子科技大學(xué)出版社 第五章課后習(xí)題
1.常規(guī)存儲器管理方式具有哪兩大特征?它對系統(tǒng)性能有何影響?
一次性:進程必須全部裝入內(nèi)存,對空間浪費非常大;
駐留性:在程序運行過程中,進程全部駐留在內(nèi)存,暫時不用的數(shù)據(jù)無法釋放。
2.什么是程序運行時的時間局限性和空間局限性?
(1)時間局限性:如果程序中的某條指令一旦執(zhí)行,則不久的將來該指令可能再次被執(zhí)行;如果某個存儲單元被訪問,則不久的將來該存儲單元可能再次被訪問。產(chǎn)生時間局限性的典型原因是在程序中存在著大量的循環(huán)操作。
(2)空間局限性:一旦程序訪問了某個存儲單元,則在不久的將來,其附近的存儲單元也最有可能被訪問,即程序在一段時間內(nèi)所訪問的地址,可能集中在一定的范圍內(nèi)。產(chǎn)生空間局限性的典型原因是程序是順序執(zhí)行的。
3.虛擬存儲器有哪些特征?其中最本質(zhì)的特征是什么?
虛擬存儲器有多次性、對換性、虛擬性三大特征。最本質(zhì)的特征是虛擬性。
4.實現(xiàn)虛擬存儲器需要哪些硬件支持?
a. 請求分頁(段)的頁(段)表機制
b. 缺頁(段)中斷機構(gòu)
c. 地址變換機構(gòu)
5.實現(xiàn)虛擬存儲器需要哪幾個關(guān)鍵技術(shù)?
(1)在分頁請求系統(tǒng)中是在分頁的基礎(chǔ)上,增加了請求調(diào)頁功能和頁面置換功能所形成的頁式虛擬存儲系統(tǒng)。允許只裝入少數(shù)頁面的程序(及數(shù)據(jù)),使啟動運行。
(2)在請求分段系統(tǒng)中是在分段系統(tǒng)的基礎(chǔ)上,增加了請求調(diào)段及分段置換功能后形成的段式虛擬存儲系統(tǒng)。允許只裝入少數(shù)段(而非所有段)的用戶程序和數(shù)據(jù),即可啟動運行。
6.在請求分頁系統(tǒng)中,頁表應(yīng)包括哪些數(shù)據(jù)項?每項的作用是什么?
頁表應(yīng)包括:頁號、物理塊號、狀態(tài)位P、訪問字段A、修改位M和外存地址。其中狀態(tài)位P指示該頁是否調(diào)入內(nèi)存,供程序訪問時參考;
訪問字段A用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或最近己有多長時間未被訪問,提供給置換算法選擇換出頁面時參考;
修改位M表示該頁在調(diào)入內(nèi)存后是否被修改過:
外存地址用于指出該頁在外存上的地址,通常是物理塊號,供調(diào)入該頁時使用。
7.試比較缺頁中斷機構(gòu)與一般的中斷,它們之間有何明顯的區(qū)別?
a. 一般中斷只需要保護現(xiàn)場然后就直接跳到需及時處理的地方。
b .缺頁中斷除了保護現(xiàn)場之外,還要判斷內(nèi)存中是否有足夠的空間存儲所需的頁或段,然后再把所需頁調(diào)進來再使用。
8.試說明請求分頁系統(tǒng)中的地址變換過程。
1)取邏輯地址分解為頁號P和頁內(nèi)偏移w;
2)根據(jù)頁號查找頁表,獲得該頁的描述信息;
3)若該頁中斷位為1,產(chǎn)生缺頁中斷;
4)更新該頁的描述信息;
5) 根據(jù)頁塊號和頁內(nèi)偏移w,計算物理地址。
9.何謂固定分配局部置換和可變分配和全局置換的內(nèi)存分配策略?
(1)固定分配局部置換固定分配是指,為每個進程分配一組固定數(shù)目的物理塊,在進程運行期間不再改變。
局部置換是指,如果進程在運行中發(fā)現(xiàn)缺頁,則只能從分配給該進程的n個頁面中,選出一頁換出,然后再調(diào)入一頁。
(2)可變分配全局置換可變分配是指,先為每個進程分配一定數(shù)目的物理塊,在進程運行期間,可根據(jù)情況做適當?shù)馗淖儭?/p>
全局置換是指,如果進程在運行中發(fā)現(xiàn)缺頁,則將0S所保留的空閑物理塊或者以所有進程的全部物理塊為標的,選擇一塊換出,然后將所缺之頁調(diào)入。
10.在請求分頁系統(tǒng)中,應(yīng)從何處將所需頁面調(diào)入內(nèi)存?
請求分頁系統(tǒng)中的缺頁從何處調(diào)入內(nèi)存分三種情況:
(1)系統(tǒng)擁有足夠?qū)Q區(qū)空間時,可以全部從對換區(qū)調(diào)入所需頁面,提高調(diào)頁速度。在進程運行前將與該進程有關(guān)的文件從文件區(qū)拷貝到對換區(qū)。
(2)系統(tǒng)缺少足夠?qū)Q區(qū)空間時,不被修改的文件直接從文件區(qū)調(diào)入:當換出這些頁面時,未被修改的不必換出,再調(diào)入時,仍從文件區(qū)直接調(diào)入。對于可能修改的,在換出時便調(diào)到對換區(qū),以后需要時再從對換區(qū)調(diào)入。
(3)UNIX方式。未運行頁面從文件區(qū)調(diào)入。曾經(jīng)運行過但被換出頁面,下次從對換區(qū)調(diào)入。UNIX系統(tǒng)允許頁面共享,某進程請求的頁面有可能已調(diào)入內(nèi)存,直接使用不再調(diào)入。
11.試說明在請求分頁系統(tǒng)中頁面的調(diào)入過程。
每當程序所要訪問的頁面未在內(nèi)存時(存在位為“0”),便向CPU發(fā)出一缺頁中斷,中斷處理程序首先保留CPU環(huán)境,分析中斷原因后,轉(zhuǎn)入缺頁中斷處理程序。
該程序通過查找頁表,得到該頁在外存的物理塊后,如果此時內(nèi)存能容納新頁,則啟動磁盤I/0,將所缺之頁調(diào)入內(nèi)存,然后修改頁表。如果內(nèi)存已滿,則須先按照某種置換算法,從內(nèi)存中選出一頁準備換出;
如果該頁未被修改過(修改位為“0”),可不必將該頁寫回磁盤;但如果此頁已被修改(修改位為“1”),則必須將它寫回磁盤,然后再把所缺的頁調(diào)入內(nèi)存,并修改頁表中的相應(yīng)表項,置其存在位為“1”,并將此頁表項寫入快表中。
在缺頁調(diào)入內(nèi)存后,利用修改后的頁表,去形成所要訪問數(shù)據(jù)的物理地址,再去訪問內(nèi)存數(shù)據(jù)。整個頁面的調(diào)入過程對用戶是透明的。
12.在請求分頁系統(tǒng)中,常采用哪幾種頁面置換算法?
采用的頁面置換算法有:最佳置換算法和先進先出置換算法,最近最久未使用(LRU)置換算法,Clock置換算法,最少使用置換算法,頁面緩沖算法等。
13.在一個請求分頁系統(tǒng)中,采用FIFO頁面置換算法時,假如一個作業(yè)的頁面走向為4、3、2、1、4、3、5、4、3、2、1、5,當分配給該作業(yè)的物理塊數(shù)M分別為3和4時,試計算在訪問過程中所發(fā)生的缺頁次數(shù)和缺頁率,并比較所得結(jié)果。

M=3時,采用FIFO頁面置換算法的缺頁次數(shù)為9次,缺頁率為75%;M=4時,采用FIFO頁面置換算法的缺頁次數(shù)為10次,缺頁率為83%。
由此可見,增加分配給作業(yè)的內(nèi)存塊數(shù),反而增加了缺頁次數(shù),提高了缺頁率,這種現(xiàn)象被稱為是Belady現(xiàn)象。
14.實現(xiàn)LRU算法所需的硬件支持是什么?
需要寄存器和棧等硬件支持。寄存器用于記錄某進程在內(nèi)存中各頁的使用情況,棧用于保存當前使用的各個頁面的頁面號。
15.試說明改進型Clock置換算法的基本原理。
因為修改過的頁面在換出時付出的開銷比未被修改過的頁面大,在改進型Clock算法中,既考慮頁面的使用情況,還要增加置換代價的因素;在選擇頁面作為淘汰頁面時,把同時滿足未使用過和未被修改作為首選淘汰頁面。
16.影響頁面換進換出效率的若干因素是什么?
(1)頁面置換算法:影響頁面換進換出效率最重要的因素,直接影響進程在運行過程中的缺頁率,影響頁面換進換出的開銷。
(2)寫回磁盤的頻率:如果是采取每個頁面換出時,就將它寫回磁盤的策略,這意味著每換出一個頁面,便需要啟動一次磁盤。但如果在系統(tǒng)中建立了一個已修改換出頁面鏈表,對每一個要被換出的頁面(已修改),系統(tǒng)可暫不把它們寫回磁盤,而是將它們掛在已修改換出頁面鏈表上,僅當被換出頁面數(shù)目達到一定值時,再將它們一起寫回到磁盤上,這樣就顯著地減少了磁盤I/0的操作次數(shù)?;蛘哒f,減少已修改頁面換出的開銷。
(3)讀入內(nèi)存的頻率:在設(shè)置了已修改換出頁面鏈表后,在該鏈表上就暫時有一批裝有數(shù)據(jù)的頁面,如果需要再次訪問這些頁面時,就不需從外存上調(diào)入,而直接從已修改換出頁面鏈表中獲取,這樣也可以減少將頁面從磁盤讀入內(nèi)存的頻率,減少頁面換進的開銷?;蛘哒f,只需花費很小的開銷,便可使這些頁面,又回到該進程的駐留集中。
17.頁面緩沖算法的主要特點是什么?它是如何降低頁面換進換出的頻率的?
① 顯著地降低了頁面換進、換出的頻率,使磁盤I/0的操作次數(shù)大為減少,因而減少了頁面換進、換出的開銷;
②由于換入換出的開銷大幅度減小,才能使其采用一種較簡單的置換策略,如先進先出(FIFO)算法,它不需要特殊硬件的支持,實現(xiàn)起來非常簡單。
在該系統(tǒng)中,內(nèi)存分配策略上采用了可變分配和局部置換方式。為了能顯著地降低了頁面換進、換出的頻率,在內(nèi)存中設(shè)置了如下兩個鏈表:
(1)空閑頁面鏈表:是一個空閑物理塊鏈表,用于分配給頻繁發(fā)生缺頁的進程,以降低該進程的缺頁率。當有一個未被修改的頁要換出時,實際上并不將它換出到外存,而是把它們所在的物理塊,掛在空閑鏈表的末尾。
(2)修改頁面鏈表:由已修改的頁面所形成的鏈表。設(shè)置該鏈表的目的,是為了減少已修改頁面換出的次數(shù)。降低將已修該頁面寫回磁盤的頻率,以及降低將磁盤內(nèi)容讀入內(nèi)存的頻率。
18.什么是抖動? 產(chǎn)生抖動的原因是什么?
a. 抖動(Thrashing) 就是指當內(nèi)存中已無空閑空間而又發(fā)生缺頁中斷時,需要從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù)送磁盤的對換區(qū)中,如果算法不適當,剛被換出的頁很快被訪問,需重新調(diào)入,
因此需再選一頁調(diào)出,而此時被換出的頁很快又要被訪問,因而又需將它調(diào)入,如此頻繁更換頁面,使得系統(tǒng)把大部分時間用在了頁面的調(diào)進換出上,而幾乎不能完成任何有效的工作,我們稱這種現(xiàn)象為"抖動"。
b. 產(chǎn)生抖動的原因是由于CPU的利用率和多道程序度的對立統(tǒng)一矛盾關(guān)系引起的,為了提高CPU利用率,可提高多道程序度,但單純提高多道程序度又會造成缺頁率的急劇上升,導(dǎo)致CPU的利用率下降,
而系統(tǒng)的調(diào)度程序又會為了提高CPU利用率而繼續(xù)提高多道程序度,形成惡性循環(huán),我們稱這時的進程是處于"抖動"狀態(tài)。
19.何謂工作集?它是基于什么原理確定的?
工作集(或駐留集)是指在某段時間間隔內(nèi),進程要訪問的頁面集合。經(jīng)常被使用的頁面需要在工作集中,而長期不被使用的頁面要從工作集中被丟棄。為了防止系統(tǒng)出現(xiàn)抖動現(xiàn)象,需要選擇合適的工作集大小。
工作集模型的原理是:
讓操作系統(tǒng)跟蹤每個進程的工作集,并為進程分配大于其工作集的物理塊。如果還有空閑物理塊,則可以再調(diào)一個進程到內(nèi)存以增加多道程序數(shù)。
如果所有工作集之和增加以至于超過了可用物理塊的總數(shù),那么操作系統(tǒng)會暫停一個進程,將其頁面調(diào)出并且將其物理塊分配給其他進程,防止出現(xiàn)抖動現(xiàn)象。正確選擇工作集的大小,對存儲器的利用率和系統(tǒng)吞吐量的提嵩,都將產(chǎn)生重要影響。
20.當前可以利用哪幾種方法來防止“抖動”?
(1)采取局部置換策略(2)把工作集算法融入到處理機調(diào)度中(3)利用“L=S”準則調(diào)節(jié)缺頁率(4)選擇暫停的進程
21.試試說明如何利用“L=S”準則來調(diào)節(jié)缺頁率,以避免“抖動”的發(fā)生?
于1980年Denning提出了“L=S”的準則,來調(diào)節(jié)多道程序度,其中L是缺頁之間的平均時間,S是平均缺頁服務(wù)時間,即用于置換一個頁面所需的時間。如果L遠比S大,說明很少發(fā)生缺頁,磁盤的能力尚未得到充分利用;如果L遠比S小,則說明頻繁發(fā)生缺頁,缺頁的速度已超過磁盤處理能力。只有當L與S接近時,磁盤和處理機都可達到他們的最大利用率。利用“L=S”準則,對于調(diào)節(jié)缺頁率是十分有效的。
22.為了實現(xiàn)請求分段式存儲管理,應(yīng)在系統(tǒng)中增加配置哪些硬件結(jié)構(gòu)?
請求段表機制、缺段中斷機制和地址變換機構(gòu)。
23.在請求段表機制中,應(yīng)設(shè)置哪些段表項?

24、說明請求分段系統(tǒng)中的缺頁中斷處理過程。
請求分段系統(tǒng)中的缺頁中斷處理過程描述如下:
(1)根據(jù)當前執(zhí)行指令中的邏輯地址查頁表,判斷該頁是否在主存儲器中
(2)該頁標志為“0”形成缺頁中斷,中斷裝置通過交換PSW讓操作系統(tǒng)的中斷處理程序占用處理器。
(3)操作系統(tǒng)處理缺頁中斷處理的辦法是查主存分配表找一個空閑的主存塊,查頁表找出該頁在磁盤上位置,啟動磁盤讀出該頁信息。
(4)把從磁盤上讀出的信息裝入找到的主存塊中。
(5)當頁面住處被裝入主存后,應(yīng)修改頁表中對應(yīng)的表目,填上該頁所占用的主存塊把標志置為“1”,表示該頁已在主存儲器中
(6)由于產(chǎn)生缺頁中斷時的那條指令并沒執(zhí)行完,所以在把頁面裝入之后應(yīng)重新執(zhí)行被中斷指令。
請求分段系統(tǒng)中的缺頁中斷處理過程如下圖所示:

25.請對共享段表中的各項作簡要說明。

26.如何實現(xiàn)共享分段的分配和回收?
①共享段的分配:在為共享段分配內(nèi)存時,對第一個請求使用該共享段的進程,由系統(tǒng)為該共享段分配一物理區(qū),當又有其它進程需要調(diào)用該共享段時,無須再為該段分配內(nèi)存。
②共享段的回收:當共享此段的某進程不再需要該段時,若無其他進程使用該段,則由系統(tǒng)回收該共享段的物理內(nèi)存,否則只是取消調(diào)用者進程在共享段表中的有關(guān)記錄。