《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案_第1頁(yè)
《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案_第2頁(yè)
《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案_第3頁(yè)
《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案_第4頁(yè)
《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《計(jì)算機(jī)操作系統(tǒng)教程第三版》答案作者左萬(wàn)歷周長(zhǎng)林

第一章操作系統(tǒng)概述課后習(xí)題

1.硬件將處理機(jī)劃分為兩種狀態(tài),即管態(tài)和目態(tài),這樣做給操作系統(tǒng)

設(shè)計(jì)帶來(lái)什么好處

答:便于設(shè)計(jì)安全可靠的操作系統(tǒng)。管態(tài)和目態(tài)是計(jì)算機(jī)硬件為保護(hù)

操作系統(tǒng)免受用戶程序的

干擾和破壞而引入的兩種狀態(tài)。通常操作系統(tǒng)在管態(tài)下運(yùn)行,可以執(zhí)

行所有機(jī)器指令;而用戶

程序在目態(tài)下運(yùn)行,只能執(zhí)行非特權(quán)指令。如果用戶程序企圖在目態(tài)

下執(zhí)行特權(quán)指令,將會(huì)引

起保護(hù)性中斷,由操作系統(tǒng)終止該程序的執(zhí)行,從而保護(hù)了操作系統(tǒng)。

2.何為特權(quán)指令舉例說(shuō)明之。如果允許用戶執(zhí)行特權(quán)指令,會(huì)帶來(lái)什

么后果?答:只能在管

態(tài)下才能執(zhí)行的指令稱為特權(quán)指令。如開(kāi)關(guān)中斷、置程序狀態(tài)寄存器

等。如果允許用戶執(zhí)行特

權(quán)指令,它將不僅影響當(dāng)前運(yùn)行的程序,而且還有可能影響操作系統(tǒng)

的正常運(yùn)行,甚至整個(gè)系

統(tǒng)。

3.中斷向量在機(jī)器中的存儲(chǔ)位置是由硬件確定的,還是由軟件確定的

答:中斷向量在機(jī)器

中的位置是由硬件確定的。例如,在INTEL80某86CPU中,內(nèi)存空間

0某00000——0某003ff為

中斷向量空間。

4.中斷向量的內(nèi)容是由操作系統(tǒng)程序確定的還是由用戶程序確定的?

答:中斷向量的內(nèi)容是

由操作系統(tǒng)程序確定的。向量的內(nèi)容包括中斷處理程序的入口地址和

程序狀態(tài)字(中斷處理程

序運(yùn)行環(huán)境),中斷處理程序是由操作系統(tǒng)裝入內(nèi)存的,操作系統(tǒng)將

根據(jù)裝入的實(shí)際地址和該

中斷處理程序的運(yùn)行環(huán)境來(lái)填寫中斷向量。

5.中斷向量?jī)?nèi)的處理機(jī)狀態(tài)位應(yīng)當(dāng)標(biāo)明是管態(tài)還是目態(tài)為什么答:應(yīng)

當(dāng)標(biāo)明是管態(tài)。該

狀態(tài)由系統(tǒng)初試化程序設(shè)置,這樣才能保證中斷發(fā)牛后進(jìn)入操作系統(tǒng)

規(guī)定的中斷處理程序。

6.中斷和程序并發(fā)之間的關(guān)系是什么?答:中斷是程序并發(fā)的必要條

件。如果沒(méi)有中

斷,操作系統(tǒng)不能獲得系統(tǒng)控制權(quán),無(wú)法按調(diào)度算法對(duì)處機(jī)進(jìn)行重新

分配,一個(gè)程

序?qū)⒁恢边\(yùn)行到結(jié)束而不會(huì)被打斷。

7.說(shuō)明“?!焙汀岸选钡牟顒e.答:棧是一塊按后進(jìn)先出(FIFO)規(guī)

則訪問(wèn)的存儲(chǔ)區(qū)域,用

來(lái)實(shí)現(xiàn)中斷嵌套和子程序調(diào)用的參數(shù)和返回?cái)帱c(diǎn)。而堆雖然是一塊存

儲(chǔ)區(qū)域,但是對(duì)堆的訪問(wèn)

是任意的,沒(méi)有后進(jìn)先出的要求,堆主要用來(lái)為動(dòng)態(tài)變量分配存儲(chǔ)空

間。

8.何為系統(tǒng)棧?何為用戶棧?系統(tǒng)棧有何用途?用戶棧有何用途答:

系統(tǒng)棧是內(nèi)存中操作

系統(tǒng)空間的一個(gè)固定區(qū)域;用戶棧是內(nèi)存中用戶空間的一個(gè)區(qū)域。系

統(tǒng)棧的作用:(D保存中

斷現(xiàn)場(chǎng),對(duì)于嵌套中斷,被中斷程序的現(xiàn)場(chǎng)信息依次壓入系統(tǒng)棧,中

斷返回時(shí)逆序彈出;(2)

保存操作系統(tǒng)子程序間相互調(diào)用的參數(shù)、返回值、返回點(diǎn)、以及子程

序的局部變量。用戶棧的

作用:用于保存用戶進(jìn)程的子程序間相互調(diào)用的參數(shù)、返回值、返回

點(diǎn)、以及子程序的局部變

量。

9.用戶堆棧段的長(zhǎng)度為何無(wú)法確定答:用戶堆棧段的長(zhǎng)度主要取決于

兩個(gè)因素:(1)用戶

進(jìn)程(線程)中子程序(函數(shù))之間的嵌套調(diào)用深度;(2)子程序

參數(shù)和局部變量的數(shù)量及類

型;(3)動(dòng)態(tài)變量的使用。這些在進(jìn)程(線程)運(yùn)行前無(wú)法確定,

由此導(dǎo)致用戶堆棧段的長(zhǎng)度

的并發(fā)。例如,在Window操作系統(tǒng)中,mp3播放進(jìn)程和Word字處理

進(jìn)程可以并發(fā)執(zhí)行,這樣

用戶就可以邊聽(tīng)音樂(lè)邊寫文章了。(3)處理機(jī)與設(shè)備之間的并行。例

如,當(dāng)處理機(jī)進(jìn)行科學(xué)

運(yùn)算時(shí),打印機(jī)可以打印文檔。(4)處理機(jī)與通道之間的并行。通道

程序的執(zhí)行可與處理機(jī)

的操作并行。(5)通道與通道之間的并行。通常一個(gè)系統(tǒng)中有多個(gè)通

道,這些通道可以并行

地執(zhí)行相應(yīng)的通道程序。(6)設(shè)備與設(shè)備之間的并行。例如打印機(jī)打

印文檔時(shí),磁帶機(jī)在輸

入數(shù)據(jù)。

12.何謂作業(yè)它包括哪兒個(gè)部分各部分用途是什么答:所謂作業(yè)是指

用戶要求計(jì)算機(jī)系

統(tǒng)為其完成的計(jì)算任務(wù)的集合。一個(gè)作業(yè)通常包括程序、程序所處理

的數(shù)據(jù)以及作業(yè)說(shuō)明書。

程序用來(lái)完成特定的功能,數(shù)據(jù)是程序處理的對(duì)象,作業(yè)說(shuō)明書用來(lái)

說(shuō)明作業(yè)處理的步驟。

13.從透明性和資源共享兩方面,說(shuō)明網(wǎng)絡(luò)操作系統(tǒng)與分布式操作系

統(tǒng)之間的差別。答:從

透明性上看,分布式操作系統(tǒng)優(yōu)于網(wǎng)絡(luò)操作系統(tǒng)。網(wǎng)絡(luò)用戶能夠感覺(jué)

到所訪問(wèn)的資源是在本地

還是在遠(yuǎn)地;而在分布式系統(tǒng)中,用戶感覺(jué)不到所訪問(wèn)的資源是否在

本地,分布式操作系統(tǒng)掩

蓋了資源在地理位置上的差異。從資源共享上看,分布式操作系統(tǒng)比

網(wǎng)絡(luò)操作系統(tǒng)能共享更

多的資源。在網(wǎng)絡(luò)操作系統(tǒng)中,一個(gè)計(jì)算任務(wù)不能由一臺(tái)主機(jī)任意遷

移到另外一臺(tái)主機(jī)上運(yùn)行;

而在分布式操作系統(tǒng)中,所有作業(yè)可以由一臺(tái)主機(jī)任意遷移到另外一

臺(tái)主機(jī)上處理,即可實(shí)現(xiàn)

處理機(jī)資源的共享,從而達(dá)到整個(gè)系統(tǒng)的負(fù)載平衡。

14.為什么構(gòu)成分布式系統(tǒng)的主機(jī)一般都是相同的或兼容的答:這樣

更有利于進(jìn)程的動(dòng)

態(tài)遷移。如果主機(jī)不兼容,則在一臺(tái)主機(jī)上能運(yùn)行的進(jìn)程,因所用指

令系統(tǒng)不同,

在另一臺(tái)主機(jī)上可能無(wú)法運(yùn)行,導(dǎo)致進(jìn)程難于在不同主機(jī)間遷移,使

得分布式系統(tǒng)

難于實(shí)現(xiàn)負(fù)載平衡。構(gòu)成分布式系統(tǒng)的主機(jī)一般都是相同的或兼容的。

15.為什么嵌入式操作系統(tǒng)通常采用微內(nèi)核結(jié)構(gòu)?答:嵌入式操作系

統(tǒng)與一般操作系統(tǒng)

相比具有比較明顯的差別:(1)嵌入式操作系統(tǒng)規(guī)模一般較小,因?yàn)橐?/p>

般硬件配置較低,而且

對(duì)操作系統(tǒng)提供的功能要求也不高。(2)應(yīng)用領(lǐng)域差別大,對(duì)于不同

的應(yīng)用領(lǐng)域其硬件環(huán)境和設(shè)

備配置情況有明顯差別。所以,嵌入式操作系統(tǒng)一般采用微內(nèi)核

(microkernel)結(jié)構(gòu),包括

如下基本功能:(1)處理機(jī)調(diào)度;(2)基本內(nèi)存管理;(3)通訊機(jī)制;(4)

電源管理。在這些基本成分

之上可進(jìn)行擴(kuò)展,以適應(yīng)不同應(yīng)用目標(biāo)。

第二章進(jìn)程、線程與作業(yè)課后習(xí)題

1.為何引入多道程序設(shè)計(jì)在多道程序系統(tǒng)中,內(nèi)存中作業(yè)的道數(shù)是否

越多越好請(qǐng)說(shuō)明原

因。答:引入多道程序設(shè)計(jì)技術(shù)是為了提高計(jì)算機(jī)系統(tǒng)資源的利用率。

在多道程序系統(tǒng)中,

內(nèi)存中作業(yè)的道數(shù)并非越多越好。一個(gè)計(jì)算機(jī)系統(tǒng)中的內(nèi)存、外設(shè)等

資源是有限的,只能容納

適當(dāng)數(shù)量的作業(yè),當(dāng)作業(yè)道數(shù)增加時(shí),將導(dǎo)致對(duì)資源的競(jìng)爭(zhēng)激烈,系

統(tǒng)開(kāi)銷增大,從而導(dǎo)致作

業(yè)的執(zhí)行緩慢,系統(tǒng)效率下降。

2.什么是進(jìn)程進(jìn)程具有那些主要特性比較進(jìn)程與程序之間相同點(diǎn)與不

同點(diǎn).答:進(jìn)程是

具有一定獨(dú)立功能的程序關(guān)于一個(gè)數(shù)據(jù)集合的一次執(zhí)行活動(dòng)。特性:

并發(fā)性、動(dòng)態(tài)性、獨(dú)立性、

對(duì)應(yīng)的程序。區(qū)別:程序是靜態(tài)的,而進(jìn)程是動(dòng)態(tài)的;進(jìn)程是有生存

期的,而程序沒(méi)有;一個(gè)

程序可對(duì)應(yīng)多個(gè)進(jìn)程,而一個(gè)進(jìn)程只能對(duì)應(yīng)一個(gè)程序。

3.有人說(shuō),用戶進(jìn)程所執(zhí)行的程序一定是用戶自己編寫的。這種說(shuō)法

對(duì)嗎?如不對(duì)舉例說(shuō)明

之。答:這種說(shuō)法不對(duì)。例如,C編譯程序以用戶進(jìn)程身份運(yùn)行,但

C編譯程序并不是用戶自

己編寫的。此外還有字處理程序等工具軟件。

4.什么是進(jìn)程上下文?進(jìn)程上下文包括那些成分?那些成分對(duì)目態(tài)程

序是可見(jiàn)的?答:在

UNI某SytemV中,將進(jìn)程的物理實(shí)體與支持進(jìn)程運(yùn)行的物理環(huán)境合

稱為進(jìn)程上下文(pro*

conte某t),進(jìn)程上下文包括三個(gè)組成部分:?用戶級(jí)上下文。是由

用戶進(jìn)程的程序塊、用戶數(shù)

據(jù)塊(含共享數(shù)據(jù)塊)和用戶堆棧組成的進(jìn)程地址空間。?系統(tǒng)級(jí)上

下文。包括進(jìn)程控制塊、

內(nèi)存管理信息、進(jìn)程環(huán)境塊,以及系統(tǒng)堆棧等組成的進(jìn)程地址空

間?寄存器上下文。

由程序狀態(tài)字寄存器、各類控制寄存器、地址寄存器、通用寄存器、

用戶堆棧指針

等組成。其中用戶級(jí)上下文及部分寄存器上下文對(duì)目態(tài)程序是可見(jiàn)得。

5.進(jìn)程一般具有哪三個(gè)主要狀態(tài)?舉例說(shuō)明狀態(tài)轉(zhuǎn)換的原因。答:進(jìn)

程在其生存期內(nèi)可能必

于如下三種基本狀態(tài)之一:(1)運(yùn)行態(tài)(Run):進(jìn)程占有處理機(jī)資源,正

在運(yùn)行。顯然,

在單處理機(jī)系統(tǒng)中任一時(shí)刻只能有一個(gè)進(jìn)程處于此種狀態(tài);(2)就緒態(tài)

(Ready):進(jìn)程本身

具備運(yùn)行條件,但由于處理機(jī)的個(gè)數(shù)少于可運(yùn)行進(jìn)程的個(gè)數(shù),暫未投

入運(yùn)行。即相當(dāng)于等待處

理機(jī)資源;(3)等待態(tài)(Wait):也稱掛起態(tài)(Supended),封鎖態(tài)

(Blocked)、睡眠態(tài)

(Sleep)o進(jìn)程本身不具備運(yùn)行條件,即使分給它處理機(jī)也不能運(yùn)行。

進(jìn)程正等待某一個(gè)

事件的發(fā)生,如等待某一資源被釋放,等待與該進(jìn)程相關(guān)的I/O傳輸

的完成信號(hào)等。進(jìn)程的

三個(gè)基本狀態(tài)之間是可以相互轉(zhuǎn)換的。具體地說(shuō),當(dāng)一個(gè)就緒進(jìn)程獲

得處理機(jī)時(shí),其狀態(tài)由就

緒變?yōu)檫\(yùn)行;當(dāng)一個(gè)運(yùn)行進(jìn)程被剝奪處理機(jī)時(shí),如用完系統(tǒng)分給它的

M間片,或出現(xiàn)高優(yōu)先

級(jí)別的其它進(jìn)程,其狀態(tài)由運(yùn)行變?yōu)榫途w;當(dāng)一個(gè)運(yùn)行進(jìn)程因某事件

受阻時(shí),如所申請(qǐng)資源被

占用,啟動(dòng)I/O傳輸未完成,其狀態(tài)由運(yùn)行變?yōu)榈却?;?dāng)所等待事件

發(fā)生時(shí),如得到申請(qǐng)資

源,I/O傳輸完成,其狀態(tài)由等待變?yōu)榫途w。

6.有幾種類型進(jìn)程隊(duì)列?每類各應(yīng)設(shè)置幾個(gè)隊(duì)列?答:有三種類型進(jìn)

程隊(duì)列:就緒隊(duì)列(整

個(gè)系統(tǒng)一個(gè))、等待隊(duì)列(每個(gè)等待事件一個(gè))和運(yùn)行隊(duì)列(在單

CPU系統(tǒng)中只有一個(gè))

7.線程控制塊TCB中一般應(yīng)包含那些內(nèi)容?答:一般TCB44的內(nèi)容較

少,因?yàn)橛嘘P(guān)資源分

配等多數(shù)信息已經(jīng)記錄于所屬進(jìn)程的PCB中.TCB中的主要信息包括:

線程標(biāo)識(shí)、線程狀態(tài)、

調(diào)度參數(shù)、現(xiàn)場(chǎng)、鏈接指針,其中現(xiàn)場(chǎng)信息主要包括通用寄存器、指

令計(jì)數(shù)器PC以及用戶棧

指針.對(duì)于操作系統(tǒng)支持的線程,TCB中還應(yīng)包含系統(tǒng)棧指針。

8.同一進(jìn)程中的多個(gè)線程有那些成分是共用的,那些成分是私用的?

答:共用的成分有:堆、

數(shù)據(jù)和程序代碼;私用的成分有:線程控制塊、寄存器和用戶棧。

9.比較用戶級(jí)線程與系統(tǒng)級(jí)線程間在以下方面的差別和各自的優(yōu)缺點(diǎn)。

(1)創(chuàng)建速度;(2)

切換速度;(3)并行性;(4)TCB的存儲(chǔ)位置答:用戶級(jí)線程由系統(tǒng)庫(kù)

支持.線程的創(chuàng)建和撤

銷,以及線程狀態(tài)的變化都由庫(kù)函數(shù)控制并在目態(tài)完成,與線程相關(guān)

的控制結(jié)構(gòu)TCB保存在

目態(tài)空間并由運(yùn)行系統(tǒng)維護(hù)。由于線程對(duì)操作系統(tǒng)不可見(jiàn),系統(tǒng)調(diào)度

仍以進(jìn)程為單位,核心

棧的個(gè)數(shù)與進(jìn)程個(gè)數(shù)相對(duì)應(yīng)用戶級(jí)別線程的優(yōu)點(diǎn)在于:(1)線程不依

賴于操作系統(tǒng),可以采用

與問(wèn)題相關(guān)的調(diào)度策略,靈活性好;(2)同一進(jìn)程中的線程切換不需

進(jìn)入操作系統(tǒng),因而實(shí)現(xiàn)

效率較高。缺點(diǎn)在于:(1)同一進(jìn)程中的多個(gè)線程不能真正并行,即

使在多處理機(jī)環(huán)境中;(2)

由于線程對(duì)操作系統(tǒng)不可見(jiàn),調(diào)度在進(jìn)程級(jí)別,某進(jìn)程中的一個(gè)線程

通過(guò)系統(tǒng)調(diào)用進(jìn)入操作系

統(tǒng)受阻,該進(jìn)程的其它線程也不能運(yùn)行核心級(jí)別線程通過(guò)系統(tǒng)調(diào)用由

操作系統(tǒng)創(chuàng)建,線程

的控制結(jié)構(gòu)TCB保存于操作系統(tǒng)空間,線程狀態(tài)轉(zhuǎn)換由操作系統(tǒng)完成,

線程是CPU調(diào)度的基

本單位。另外由于系統(tǒng)調(diào)度以線程為單位,操作系統(tǒng)還需要為每個(gè)線

程保持一個(gè)核心棧核

心級(jí)線程的優(yōu)點(diǎn)是并發(fā)性好,在多CPU環(huán)境中同一進(jìn)程中的多個(gè)線程

可以真正并行執(zhí)行核

心級(jí)別線程的缺點(diǎn)是線程控制和狀態(tài)轉(zhuǎn)換需要進(jìn)入操作系統(tǒng)完成,系

統(tǒng)開(kāi)銷比較大。10.何謂

作業(yè)步?作業(yè)何時(shí)轉(zhuǎn)為進(jìn)程答:作業(yè)步:作業(yè)中一個(gè)相對(duì)獨(dú)立的處理

步驟作業(yè)進(jìn)入內(nèi)存,根

包含多個(gè)進(jìn)程,一個(gè)進(jìn)程包含多個(gè)線程;區(qū)別:作業(yè)是向計(jì)算機(jī)提交

任務(wù)的任務(wù)實(shí)體,而進(jìn)程

是執(zhí)行實(shí)體,是資源分配的基本單位,線程是處理機(jī)調(diào)度的基本單位。

12.何謂系統(tǒng)開(kāi)銷試

舉三個(gè)例子說(shuō)明之運(yùn)行操作系統(tǒng)程序?qū)ο到y(tǒng)進(jìn)行管理而花費(fèi)的時(shí)間和

空間,如:作業(yè)調(diào)度、

進(jìn)程調(diào)度、進(jìn)程切換等。

第三章中段與處理機(jī)調(diào)度課后習(xí)題

2.為什么說(shuō)中斷是進(jìn)程切換的必要條件,但不是充分條件答:發(fā)生進(jìn)

程切換時(shí)一定發(fā)生中斷。系統(tǒng)由一個(gè)運(yùn)行進(jìn)程轉(zhuǎn)去運(yùn)行另外一個(gè)進(jìn)程,前

提條件是必須進(jìn)入操作系統(tǒng),即處于系統(tǒng)態(tài),因?yàn)樘幱谟脩魬B(tài)運(yùn)行的進(jìn)程

不可能將cpu的使用權(quán)直接交給另一個(gè)進(jìn)程,而中斷是從用戶態(tài)轉(zhuǎn)換為系

統(tǒng)態(tài)的必要條件。即中斷是進(jìn)程切換的前提(必要)條件。但發(fā)生中斷時(shí)

未必發(fā)生進(jìn)程切換。如果中斷處理完后原進(jìn)程不再具有繼續(xù)運(yùn)行的條件,

則一定會(huì)發(fā)生進(jìn)程切換;反之,如果中斷處理完后原進(jìn)程仍具有繼續(xù)運(yùn)行

的條件,則可能會(huì)發(fā)生進(jìn)程切換,也可能不發(fā)生進(jìn)程切換,這與處理機(jī)調(diào)

度策略有關(guān)。

3.試分析中斷與進(jìn)程狀態(tài)轉(zhuǎn)換之間的關(guān)系。答:進(jìn)程狀態(tài)轉(zhuǎn)換是由內(nèi)

核控制的,如果一個(gè)進(jìn)程的狀態(tài)發(fā)生了改變,則在新舊狀態(tài)之間一定發(fā)生

了處理機(jī)狀態(tài)由目態(tài)到管態(tài)的轉(zhuǎn)換,而中斷是處理機(jī)狀態(tài)由目態(tài)轉(zhuǎn)換到管

態(tài)的必要條件,所以中斷也是進(jìn)程狀態(tài)轉(zhuǎn)換的必要條件。

4.中斷發(fā)生時(shí),舊的PSW和PC為何需要壓入系統(tǒng)棧答:保存斷點(diǎn)信息,

以便中斷結(jié)束后接著原來(lái)的程序斷點(diǎn)處繼續(xù)執(zhí)行。通常來(lái)說(shuō)中斷處理程序

的最后一條指令是中斷返回指令,該指令從系統(tǒng)棧頂彈出斷點(diǎn)信息。如果

未將PSW和PC壓入系統(tǒng)棧,則中斷返回指令彈出的不是中斷前的斷點(diǎn)信

息,而是不確定的信息,這將導(dǎo)致系統(tǒng)處于不確定的狀態(tài),嚴(yán)重的情況會(huì)

使系統(tǒng)崩潰。

6.中斷向量的存儲(chǔ)位置是否可由程序改變?yōu)槭裁粗袛嘞蛄康闹凳侨绾?/p>

確定的答:中斷向量的存儲(chǔ)位置是由硬件確定的,不能由程序改變。中斷

發(fā)生后,中斷裝置按照中斷類型到內(nèi)存指定位置取出中斷向量。例如,在

IBMPC系統(tǒng)中,地址000'03FF是中斷向量空間。操作系統(tǒng)的設(shè)計(jì)者根據(jù)

各中斷事件處理程序的存儲(chǔ)位置及運(yùn)行環(huán)境確定對(duì)應(yīng)中斷向量的值,系統(tǒng)

啟動(dòng)時(shí)由初始化程序?qū)⒃撝堤钊胫付ㄎ恢谩?/p>

7.有人說(shuō),中斷發(fā)生后硬件中斷裝置保證處理機(jī)進(jìn)入管態(tài),這種說(shuō)法

準(zhǔn)確嗎說(shuō)明理由。答:這種說(shuō)法不準(zhǔn)確。中斷發(fā)生后,硬件中斷裝置負(fù)責(zé)

引出中斷處理程序,中斷處理程序是否運(yùn)行于管態(tài)取決于PSW中的處理機(jī)

狀態(tài)位,該位的值是操作系統(tǒng)初始化時(shí)設(shè)置的,只有在初試化程序正確設(shè)

置該狀態(tài)位的前提下,才能保證中斷后系統(tǒng)進(jìn)入管態(tài)。

8.為什么在中斷處理過(guò)程中通常允許高優(yōu)先級(jí)別的中斷事件中途插入,

而不響應(yīng)低優(yōu)先級(jí)別的中斷事件答:(1)從邏輯上來(lái)說(shuō),高優(yōu)先級(jí)別中斷

源所對(duì)應(yīng)的事件比低優(yōu)先級(jí)別中斷源所對(duì)應(yīng)的中斷事件急迫;

(2)由于硬件中斷類型是有限的,這樣做實(shí)際上也就限制了中斷嵌套

的深度。防止中斷層數(shù)無(wú)限增長(zhǎng),甚

至系統(tǒng)棧溢出。

9.為什么說(shuō)“關(guān)中斷”會(huì)影響系統(tǒng)的并發(fā)性答:考慮單處理機(jī)系統(tǒng)。

在單處理機(jī)系統(tǒng)中,并發(fā)是通過(guò)將處理機(jī)輪流分配給多個(gè)進(jìn)程而實(shí)現(xiàn)的,

這個(gè)分配是由操作系統(tǒng)中處理機(jī)調(diào)度程序完成的。中斷是進(jìn)程切換的必要

條件,如果關(guān)了中斷,則操作系統(tǒng)無(wú)法獲得處理機(jī)的控制權(quán),也就無(wú)法使

多個(gè)進(jìn)程分時(shí)共享處理機(jī)。在關(guān)中斷期間,一個(gè)進(jìn)程獨(dú)占處理機(jī)。所以說(shuō)

“關(guān)中斷”會(huì)影響系統(tǒng)的并發(fā)性。

10.假如關(guān)中斷后操作系統(tǒng)進(jìn)入了死循環(huán),會(huì)產(chǎn)生什么后果答:因?yàn)椴?/p>

作系統(tǒng)進(jìn)入了死循環(huán),并且處于關(guān)中斷,即不能響應(yīng)中斷,也就不能從死

循環(huán)中退出。系統(tǒng)不響應(yīng)任何外部干預(yù)事件,系統(tǒng)表現(xiàn)為“死機(jī)”。

11.為什么不允許目態(tài)程序執(zhí)行關(guān)中斷指令及中斷屏蔽指令答:開(kāi)關(guān)

中斷指令和中斷屏蔽指令屬于特權(quán)指令,一般用戶無(wú)權(quán)訪問(wèn)。如果允許用

戶使用,用戶關(guān)中斷后可能影晌系統(tǒng)對(duì)內(nèi)部或外部事件的響應(yīng),也會(huì)使操

作系統(tǒng)無(wú)法獲得系統(tǒng)控制權(quán)。

12.如果沒(méi)有中斷是否能夠?qū)崿F(xiàn)多道程序設(shè)計(jì)為什么答:不能,因?yàn)?/p>

一個(gè)程序一旦被調(diào)度執(zhí)行,將一直執(zhí)行下去,中間不可能被打斷,不可能

達(dá)到多個(gè)進(jìn)程交替執(zhí)行的并發(fā)目的。

13.下列中斷源哪些通常是可以屏蔽的,哪些通常是不可屏蔽的

(1)1/0中斷;(2)訪管中斷;

(3)時(shí)鐘中斷;(4)掉電中斷答:(1)1/0中斷可以屏蔽;(2)訪管中斷

不可以屏蔽;(3)時(shí)鐘中斷可以屏蔽;(4)掉電中斷不可以屏蔽。

14.下列中斷事件哪些可由用戶自行處理哪些只能由操作系統(tǒng)中斷服

務(wù)程序統(tǒng)一處理為什么

(1)溢出;(2)地址越界;(3)除零;(4)非法指令;(5)掉電答:一般

來(lái)說(shuō),只影響應(yīng)用程序自身的中斷,可以由用戶自行處理,包括:(1)溢

出;(3)除零??赡苡绊懫渌脩艋虿僮飨到y(tǒng)的中斷只能由操作系統(tǒng)中斷

服務(wù)程序統(tǒng)一處理,包括:(2)地址越界;(4)非法指令;(5)掉電。

15.如果中斷由用戶程序自行處理,為何需要將被中斷程序的斷點(diǎn)由

系統(tǒng)堆棧彈出并壓入用戶堆棧答:中斷發(fā)生時(shí),被中斷程序的現(xiàn)場(chǎng)信息已

被壓入系統(tǒng)堆棧中。而中斷續(xù)元運(yùn)行于目態(tài),它執(zhí)行完畢后將由用戶堆棧

區(qū)中恢復(fù)現(xiàn)場(chǎng)。為此,操作系統(tǒng)在轉(zhuǎn)到中斷續(xù)元之前還應(yīng)當(dāng)將系統(tǒng)堆棧中

的現(xiàn)場(chǎng)信息彈出并壓入用戶堆棧中,否則中斷續(xù)元執(zhí)行完畢后將無(wú)法恢復(fù)

現(xiàn)場(chǎng)返回?cái)帱c(diǎn)。

16.對(duì)于下面中斷與進(jìn)程狀態(tài)轉(zhuǎn)換之間的關(guān)系各舉兩個(gè)例子說(shuō)明之:(1)

一定會(huì)引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件;(2)可能引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事

件.答:定會(huì)引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件:當(dāng)前運(yùn)行進(jìn)程終止、應(yīng)用程

序啟動(dòng)I/O傳輸并等待I/O數(shù)據(jù)、運(yùn)行程序目請(qǐng)當(dāng)前被占用的某一資源。

可能引起進(jìn)程狀態(tài)轉(zhuǎn)換的中斷事件:時(shí)鐘中斷事件可能引起進(jìn)程狀態(tài)轉(zhuǎn)換,

例如對(duì)于時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法,

若時(shí)鐘中斷發(fā)生后,當(dāng)前進(jìn)程的時(shí)間片已用完,則將發(fā)生進(jìn)程切換;

否則不發(fā)生進(jìn)程切換。

17.若在T1時(shí)刻進(jìn)程P1運(yùn)行,T2時(shí)刻進(jìn)程P2運(yùn)行,且P1WP2,則在

時(shí)刻T1和時(shí)刻T2期間之內(nèi)一定發(fā)生過(guò)中斷。這種說(shuō)法對(duì)嗎為什么答:這

種說(shuō)法對(duì)。如果在時(shí)刻T1進(jìn)程P1在運(yùn)行,在時(shí)刻T2進(jìn)程P2在運(yùn)行,且

P1WP2,則說(shuō)在時(shí)刻T1和時(shí)刻T2之間發(fā)生了進(jìn)程切換。這說(shuō)明在時(shí)刻

T1和時(shí)刻T2之間執(zhí)行了處理機(jī)調(diào)度程序,而處理機(jī)調(diào)度程序是操作系統(tǒng)

低層中的一個(gè)模塊,在系統(tǒng)運(yùn)行的過(guò)程中,除非顯式地調(diào)用到該模塊,否

則系統(tǒng)不會(huì)由運(yùn)行一個(gè)進(jìn)程轉(zhuǎn)去運(yùn)行另外一個(gè)進(jìn)程,就是說(shuō)不會(huì)發(fā)生進(jìn)程

切換。只有進(jìn)入操作系統(tǒng),即處于系統(tǒng)態(tài),才有可能調(diào)用到處理機(jī)調(diào)度,

因?yàn)樘幱谟脩魬B(tài)運(yùn)行的用戶程序不可能直接調(diào)用操作系統(tǒng)中的任何模塊。

中斷是系統(tǒng)由用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài)的必要條件。據(jù)此,假如在時(shí)刻n與

時(shí)刻T2之間發(fā)生了進(jìn)程切換,則在時(shí)刻T1與時(shí)刻T2之間一定發(fā)生過(guò)中

斷。

18.進(jìn)程切換時(shí),上升進(jìn)程的PSW和PC為何必須由一條指令同時(shí)恢復(fù)

答:中斷向量中程序狀態(tài)字PSW與指令計(jì)數(shù)器PC的內(nèi)容必須由一條指令

同時(shí)恢復(fù),這樣才能保證系統(tǒng)狀態(tài)由管態(tài)轉(zhuǎn)到目態(tài)的同時(shí),控制轉(zhuǎn)到上升

進(jìn)程的斷點(diǎn)處繼續(xù)執(zhí)行。如果不同時(shí)恢復(fù),則只能(1)先恢復(fù)PSW再恢

復(fù)PC,在恢復(fù)PSW后己經(jīng)轉(zhuǎn)到目態(tài),操作系統(tǒng)恢復(fù)PC的使命無(wú)法完成;

(2)先恢復(fù)PC再恢復(fù)PSW,PC改變后轉(zhuǎn)到操作系統(tǒng)另外區(qū)域(因?yàn)镻SW

仍為系統(tǒng)狀態(tài)),PSW無(wú)法恢復(fù)。

19.某系統(tǒng)采用可搶占處理機(jī)的靜態(tài)優(yōu)先數(shù)調(diào)度算法,請(qǐng)問(wèn)何時(shí)會(huì)發(fā)

生搶占處理機(jī)的現(xiàn)象答:當(dāng)一個(gè)新創(chuàng)建的進(jìn)程或一個(gè)被喚醒進(jìn)程的優(yōu)先數(shù)

比正在運(yùn)行進(jìn)程的優(yōu)先數(shù)高時(shí),可能發(fā)生搶占處理機(jī)現(xiàn)象。

20.在實(shí)時(shí)系統(tǒng)中,采用不可搶占處理機(jī)的優(yōu)先數(shù)調(diào)度算法是否適宜為

什么答:不適宜。一旦一個(gè)低優(yōu)先數(shù)、需要大量CPU時(shí)間的進(jìn)程占用處理

機(jī),就會(huì)一直運(yùn)行,直到運(yùn)行結(jié)束,或者直到因某事件而阻塞。在此之前,

即使高優(yōu)先數(shù)的緊急任務(wù)到達(dá),也得不到處理,因而可能延誤對(duì)重要事件

的響應(yīng)和處理。

21.在分時(shí)系統(tǒng)中,進(jìn)程調(diào)度是否只能采用時(shí)間片輪轉(zhuǎn)算法為什么答:

分時(shí)系統(tǒng)的特點(diǎn)是要求響應(yīng)速度及時(shí),除RR算法之外,還可以采用可剝

奪CPU的動(dòng)態(tài)優(yōu)先數(shù)調(diào)度算法。如經(jīng)典UNI某的處理機(jī)調(diào)度算法,由于負(fù)

反饋性質(zhì),算法也可以保證響應(yīng)速度。

22.有人說(shuō),在采用等長(zhǎng)時(shí)間片輪轉(zhuǎn)處理機(jī)調(diào)度算法的分時(shí)操作系統(tǒng)也

各終端用戶所占有處理機(jī)的時(shí)間總量是相同的.這種說(shuō)法對(duì)嗎為什么答:

這種說(shuō)法不對(duì)。因?yàn)槭防頇C(jī)是分配給進(jìn)程(線程)的,而不同終端用戶可

能有不同數(shù)量的進(jìn)程,一個(gè)擁有較多數(shù)量進(jìn)程的終端顯然比擁有較少數(shù)量

進(jìn)程的終端獲得CPU的時(shí)間要多。

23.對(duì)于下述處理機(jī)調(diào)度算法分別畫出進(jìn)程狀態(tài)轉(zhuǎn)換圖。(1)時(shí)間片輪

轉(zhuǎn)算法;⑵

24.舉出兩個(gè)例子說(shuō)明操作系統(tǒng)訪問(wèn)進(jìn)程空間的必要性.答:例(1):

進(jìn)程執(zhí)行輸出操作時(shí),通過(guò)系統(tǒng)調(diào)用進(jìn)入系統(tǒng),由操作系統(tǒng)將待輸出的數(shù)

據(jù)由進(jìn)程空間取出送給指定的外部設(shè)備,為此操作系統(tǒng)必須訪問(wèn)用戶進(jìn)程

空間。例(2):當(dāng)發(fā)生可由用戶自己處理的中斷事件時(shí),操作系統(tǒng)在轉(zhuǎn)

到中斷續(xù)元之前應(yīng)當(dāng)將系統(tǒng)堆棧中的現(xiàn)場(chǎng)信息彈出并壓入用戶堆棧中,為

此操作系統(tǒng)也必須訪問(wèn)進(jìn)程空間。25.根據(jù)進(jìn)程和線程的組成說(shuō)明進(jìn)程調(diào)

度和線程調(diào)度各需要完成哪些工作。答:進(jìn)程調(diào)度:(1)地址映射寄存器;

(2)用戶棧指針;(3)通用寄存器;(4)PSW與PC。線程調(diào)度:(1)用戶棧指

針;(2)通用寄存器;(3)PCo26.系統(tǒng)資源利用率與系統(tǒng)效率是否一定成

正比如不是,舉例說(shuō)明之.答:不是,如程序的并發(fā)執(zhí)行時(shí),并發(fā)要有個(gè)度,

并發(fā)執(zhí)行的程序過(guò)多,雖然系統(tǒng)資源利用率提高,但是,由于競(jìng)爭(zhēng)過(guò)于激

烈,切換過(guò)于頻繁,系統(tǒng)開(kāi)銷大,反而會(huì)使系統(tǒng)效率降低。27.設(shè)有周期

性實(shí)時(shí)任務(wù)集如下表所示,用EDF算法和RMS算法是否可以調(diào)度?畫出相

應(yīng)的Gantt圖。

答:由于,因而采用EDF算法一定可以調(diào)度,其Gantt圖為:A1

10

10B11525C1530A21040B215C25A3107080B31595A410105C351101205560

由于,因而采用RMS算法不可調(diào)度。

第四章互斥、同步與通訊課后習(xí)題答案

1.何謂與時(shí)間有關(guān)的錯(cuò)誤舉例說(shuō)明之。答:并發(fā)進(jìn)程的執(zhí)行實(shí)際上是

進(jìn)程活動(dòng)的某種交叉,某些交叉次序可能得到錯(cuò)誤結(jié)果。由于具體交叉的

形成與進(jìn)程的推進(jìn)速度有關(guān),而速度是時(shí)間的函數(shù),因而

將這種錯(cuò)誤稱為與時(shí)間有關(guān)的錯(cuò)誤。例如,兩個(gè)并發(fā)進(jìn)程的程序如下:

intn=O;main(){創(chuàng)建進(jìn)程A;創(chuàng)建進(jìn)程B;);

A(){while(1){n++;}};B(){while(1){printf(n);n=0;}};

假設(shè)進(jìn)程A被部署在公園入口的終端上,用來(lái)記錄進(jìn)入公園的人數(shù),

進(jìn)程B被部署在公園的控制中心,用來(lái)輸出一段時(shí)間內(nèi)進(jìn)入公園的總?cè)藬?shù)。

進(jìn)程A和進(jìn)程B共享全局變量no如果在進(jìn)程B執(zhí)行完打印語(yǔ)句后被進(jìn)程

A打斷,進(jìn)程A執(zhí)行了若干次變量自增語(yǔ)句,之后進(jìn)程B接著執(zhí)行清。語(yǔ)

句,那么進(jìn)程A對(duì)n的累加丟失了,相當(dāng)于進(jìn)程B被打斷的這段時(shí)間內(nèi)進(jìn)

入公園的人沒(méi)有被記錄下來(lái)。發(fā)生與時(shí)間有關(guān)的錯(cuò)誤。

2.有人說(shuō),假設(shè)兩個(gè)進(jìn)程之間沒(méi)有共享內(nèi)存,則二者之間沒(méi)有公共變量,

這種說(shuō)法準(zhǔn)確嗎說(shuō)明原因.

答:如果只從用戶空間考慮,這種說(shuō)法是正確的。但從操作系統(tǒng)的角

度來(lái)說(shuō)并不準(zhǔn)確。兩個(gè)沒(méi)有公共內(nèi)

存的用戶進(jìn)程可能同時(shí)(宏觀)進(jìn)入操作系統(tǒng),并訪問(wèn)操作系統(tǒng)空間

中的公共變量。

進(jìn)程主動(dòng)放棄CPU,因而是高效的。

4.下列進(jìn)程互斥方法哪些存在忙式等待問(wèn)題(1)軟件:面包店算法(2)

硬件:TS指令⑶關(guān)

中斷指令答:(1)、(2)存在忙等待問(wèn)題。

5.為何開(kāi)關(guān)中斷進(jìn)程互斥方法僅在單CPU系統(tǒng)中是有效的?答:關(guān)中

斷方法不適用于多CPL系統(tǒng),因?yàn)殛P(guān)中斷只能保證CPU不山一個(gè)進(jìn)程切換

到另外一個(gè)進(jìn)程,從而防止多個(gè)進(jìn)程并發(fā)地進(jìn)入公共臨界區(qū)域。但即使關(guān)

中斷后,不同進(jìn)程仍可以在不同CPU上并行執(zhí)行關(guān)于同一組共享變量的臨

界區(qū)代碼。

6.在多處理機(jī)系統(tǒng)中,軟件互斥方法是否有效?為什么?答:依然有

效。多處理機(jī)并行與單處理并發(fā)之間的差別在于程序交叉的粒度,單處理

機(jī)機(jī)環(huán)境中進(jìn)程交叉發(fā)生在指令之間,多處理機(jī)環(huán)境中進(jìn)程交叉發(fā)生在指

令周期之間。由于純軟件互斥算法并不依賴特殊的硬件指令(如

tet_and_et),指令之間的

交叉與指令周期之間的交叉結(jié)果相同。

7.試分析臨界區(qū)域的大小與系統(tǒng)并發(fā)性之間的關(guān)系。答:關(guān)于同一組

變量的臨界區(qū)域是不能并發(fā)執(zhí)行

的代碼,臨界區(qū)越大,并發(fā)性越差,因而編寫并發(fā)程序應(yīng)盡量減小臨

界區(qū)域的大小。

8.設(shè)CR1是關(guān)于一組共享變量SV1的臨界區(qū)域,CR2是關(guān)于另外一組共享

變量SV2的臨界區(qū)域,當(dāng)進(jìn)程P1進(jìn)入CR1時(shí),進(jìn)程P2是否可以進(jìn)入CR2為

什么答:進(jìn)程互斥是指多個(gè)進(jìn)程不能同時(shí)進(jìn)入關(guān)于同一組共享變量的臨界

區(qū),否則可能發(fā)生于時(shí)間有關(guān)的錯(cuò)誤。SV1與SV2不是同一組共享變量,

所以當(dāng)進(jìn)程P1

進(jìn)入CR1時(shí),進(jìn)程P2可以進(jìn)入CR2。

9.Lamport面包店互斥算法是否會(huì)出現(xiàn)餓死情況答:不會(huì),該算法是

公平的。假定系統(tǒng)中共有n個(gè)進(jìn)程,每個(gè)想要進(jìn)入臨界區(qū)域的進(jìn)程(線程)

在最壞的情況下需要等待其它n-1個(gè)進(jìn)程進(jìn)入并離開(kāi)臨界

區(qū)域之后即可獲得進(jìn)入臨界區(qū)域的機(jī)會(huì),因而存在(忙式)等待的上界。

10.試用信號(hào)燈和PV操作實(shí)現(xiàn)臨界區(qū)語(yǔ)句:region<共享變量》do<語(yǔ)句)

答:emaphore

mute某=1;p(mute某);〈語(yǔ)句>v(mute某);

11.由V操作喚醒的進(jìn)程是否一定能夠直接進(jìn)入運(yùn)行狀態(tài)舉例說(shuō)明之。

答:否。一般來(lái)說(shuō),喚醒是將進(jìn)程狀態(tài)由等待狀態(tài)變成就緒狀態(tài),而就緒

進(jìn)程何時(shí)獲得處理機(jī)則是由系統(tǒng)的處理機(jī)調(diào)度策略確定的。如果采用搶占

式優(yōu)先級(jí)調(diào)度算法,并且被喚醒的進(jìn)程是當(dāng)前系統(tǒng)中優(yōu)先級(jí)最高的進(jìn)程,

那么該進(jìn)程將被調(diào)度執(zhí)行,該進(jìn)程的狀態(tài)變成運(yùn)行態(tài)。如果該進(jìn)程不是系

統(tǒng)中優(yōu)先級(jí)最高的進(jìn)程或系統(tǒng)采用其它

調(diào)度算法,那么該進(jìn)程不會(huì)被調(diào)度執(zhí)行,其狀態(tài)將維持在就緒態(tài)。

12.設(shè)S1和S2為兩個(gè)信號(hào)燈變量,下列八組P、V操作哪些可以同時(shí)

進(jìn)行哪些不能同時(shí)進(jìn)行為什么

(1)P(S1),P(S2)(2)P(S1),V(S2)(3)V(S1),P(S2)(4)V(S1),V(S2)(5)P(S1)

,P(S1)(6)P(S2),V(S2)(7)V(S1),P(S1)(8)V(S2),V(S2)答:

(1),(2),(3),(4)可以同時(shí)進(jìn)行;(5),(6),(7),(8)不可以同

時(shí)進(jìn)行。因?yàn)槿绻麑⑿盘?hào)燈變量看作共享變量,則P、V操作作為其臨界

區(qū),為了不發(fā)生于時(shí)間有關(guān)的錯(cuò)誤,須保證

多個(gè)進(jìn)程不能對(duì)同一個(gè)信號(hào)燈變量同時(shí)執(zhí)行P、V操作。

13.對(duì)于生產(chǎn)者一消費(fèi)者問(wèn)題,假設(shè)緩沖區(qū)是無(wú)界的,試用信號(hào)燈與

PV操作給出解法。答:由于是

無(wú)界緩沖區(qū),所以生產(chǎn)者不會(huì)因得不到緩沖區(qū)而被阻塞。

emaphoremute某_in=l;emaphoremute某_out=l;

emaphoreproduct=0;intin=0,out=0;

生產(chǎn)者:while(l){生產(chǎn)一個(gè)物品;P(mute某_in);消費(fèi)者:

while(l){P(product);P(mute某。ut);物品buffer[in]二物品;

in++;v(mute某_in);Y(product);}=buffer[out];out++;V(mute某_out);}

14.設(shè)有一個(gè)可以裝A、B兩種物品的倉(cāng)庫(kù),其容量無(wú)限大,但要求倉(cāng)庫(kù)

中A、B兩種物品的數(shù)量滿足下述不等式:-MWA物品數(shù)量一B物品數(shù)量WN

其中M和N為正整數(shù).試用信號(hào)燈和PV操作描述A、B兩種物品的入庫(kù)過(guò)

程,解:若只放入A,而不放入B,則A產(chǎn)品最多可放入N次便被阻塞;若

只放入B,而不放入A,則B產(chǎn)品最多可放入M次便被阻塞;每放入一次

A,放入產(chǎn)品B的機(jī)會(huì)也多一次;同理,每放入一次B,放入產(chǎn)品A的機(jī)會(huì)

也多一次.Semaphoremute某=1,a=N,b=M;產(chǎn)品A進(jìn)程:產(chǎn)品B進(jìn)

程:while(1){while(1){p(a);p(b);p(mute某);p(mute某);A產(chǎn)品入庫(kù);

B產(chǎn)品入庫(kù);V(mute某);V(mute某);V(b);V(a);}}

15.試用信號(hào)燈與PV操作實(shí)現(xiàn)司機(jī)與售票員之間的同步問(wèn)題。設(shè)公共

汽車上有一個(gè)司機(jī)和一個(gè)售票員,其活動(dòng)如下圖所示。為了安全起見(jiàn),顯

然要求:(1)關(guān)車門后方能啟動(dòng)車輛;(2)到站停車后方能開(kāi)車門。亦即“啟

動(dòng)車輛”這一活動(dòng)應(yīng)當(dāng)在“關(guān)車門”這一活動(dòng)之后,“開(kāi)車門”這一活動(dòng)

應(yīng)當(dāng)在“到站停車”這一活動(dòng)之后。emaphorel=0,2=0;司機(jī):售票員:

while(l){while⑴{p(l);關(guān)車門;啟動(dòng)車輛;v(l);正常行駛;售票;到

站停車;p(2);v(2);開(kāi)車門;}}

16.設(shè)有A、B、C三組進(jìn)程,它們互斥地使用某一獨(dú)占型資源R,使用

前申請(qǐng),使用后釋放.資源分配原則如下:(1)當(dāng)只有一組申請(qǐng)進(jìn)程時(shí),該組

申請(qǐng)進(jìn)程依次獲得R;(2)當(dāng)有兩組申請(qǐng)進(jìn)程時(shí),各組申請(qǐng)進(jìn)程交替獲得R,

組內(nèi)申請(qǐng)進(jìn)程交替獲得R;(3)當(dāng)有三組申請(qǐng)進(jìn)程時(shí),各組申請(qǐng)進(jìn)程輪流獲

得R,組內(nèi)申請(qǐng)進(jìn)程交替獲得R.試用信號(hào)燈和PV操作分別給出各組進(jìn)程的

申請(qǐng)活動(dòng)程序段和釋放活動(dòng)程序段.intfree=l"/設(shè)備狀態(tài)標(biāo)志

emaphoremute某=1;emaphoreqa=qb=qc=0;//各組等待隊(duì)列

intcounta=countb=countc=0;〃等待隊(duì)列長(zhǎng)度A組申請(qǐng):

P(mute某);if(free==l){free=O;V(mute某);}ele{counta+

+;V(iuule某);P(qa);}A組釋放:if(uounlb>0){uounlb—

;V(qb);}ele{if(countc>0){countc--

;V(qc);}ele{if(counta>0){counta-

-V(qa);}ele{free=l;}}}

A組進(jìn)程活動(dòng)可以給出B組和C組進(jìn)程活動(dòng)。

17.設(shè)自行車生產(chǎn)線上有一只箱子,其中有N個(gè)位置(N23),每個(gè)位

置可存放一個(gè)車架或一個(gè)車輪;

又設(shè)有三個(gè)工人,其活動(dòng)分別為:工人1活動(dòng):do{加工一個(gè)車架;工

人2活動(dòng):do{加工一個(gè)車輪;工人3活動(dòng):do{箱中取一車架;車架放入箱

中;}while⑴車輪放入箱中;}whi1e⑴箱中取二車輪;組裝為一臺(tái)車;}

while(l)

emaphorewhee1=0;emaphoreframe=0;三位工人的活動(dòng)分別為:工人1

活動(dòng):do{加工一個(gè)車架;工人2活動(dòng):do{加工一個(gè)車輪;工人3活動(dòng):

do{P(franie);箱中取P(emply);車架放入箱中;PS川ply);車輪放入箱中;

架;V(empty);P(wheel);V(frame);}while(l)V(wheel);}while(l)P(wheel

);箱中取二車輪;

V(empty);V(empty);組裝為一臺(tái)

車;}while(l)

分析上述解法易見(jiàn),當(dāng)工人1推進(jìn)速度較快時(shí),箱中空位置可能完全

被車架占滿或只留有一個(gè)存放車輪的位置,而當(dāng)此時(shí)工人3同時(shí)取2個(gè)車

輪時(shí)將無(wú)法得到,而工人2又無(wú)法將新加工的車輪放入箱中;當(dāng)工人2推

進(jìn)速度較快時(shí),箱中空位置可能完全被車輪占滿,而當(dāng)此時(shí)工人3同取車

架時(shí)將無(wú)法得到,而工人1又無(wú)法將新加工的車架放入箱中上述兩種情況

都意味著死鎖。為防止死鎖的發(fā)生,箱中車架的數(shù)量不可超過(guò)N-2,車輪

的數(shù)量不可超過(guò)N-1,這些限制可以用兩個(gè)信號(hào)燈來(lái)表達(dá)。emaphorel=N-

2;

emaphore2=NT;如此,可以給出不含死鎖的完整解法如下:

工人1活動(dòng):do{加工一個(gè)車架;工人2活動(dòng):do{加工一個(gè)車輪;工人

3活動(dòng):do{P(frame);箱中取P(D;P(empty);車架放入箱

中;P(2);P(empty);車輪放入箱中;一車

架;V(empty);V(l);V(frame);}while(l)V(wheel);}while(l)P(wheel);P(

wheel);箱中取二車

輪;V(empty);V(empty);V(2);

V(2);組裝為一臺(tái)車;}while(l)

詳細(xì)描述還應(yīng)考慮對(duì)箱子單元的描述以及訪問(wèn)互斥問(wèn)題。建議車架放

在箱子的一端,車輪放在箱子的另

一端,車架與車輪都采用后進(jìn)先出的管理方式。Semaphore1-N-2,

2=N-1,mute某=1;intinl=0,

in2=NT;intbuf[N];工人1活動(dòng):do{加工一個(gè)車架;工人2活動(dòng):do{加

工一個(gè)車輪;工人3活動(dòng):do{P(frame);P(1);P(2);P(empty);P(mute

某);TempkBuf[in1T];P(empty);P(mute某);Buf[in1]=車架;P(mute

某);Buf[in2]=車輪;in1=in1-1;V(mute

某);V(empty);in1=in1+1;V(mute某);V(frame);}in2=in2-1;V(mute

某);V(wheeI);}V(1);P(wheel);P(wheeI);while(1)whiIe(1)P(mute

某);Temp2=Buf[in2+1];in2=in2

+l;Temp3=Buf[in2+l];In2=in2+l;V(m

ute某);V(empty);V(empty);V(2);

V(2);組裝為一臺(tái)車;}while(l)

18.一座小橋(最多只能承重兩個(gè)人)橫跨南北兩岸,任意時(shí)刻同一方

向只允許一人過(guò)橋,南側(cè)橋段和北側(cè)橋段較窄只能通過(guò)一人,橋中央一處

寬敞,允許兩個(gè)人通過(guò)或歇息.試用信號(hào)燈和PV操作寫出南、北兩岸過(guò)

橋的同步算法.emeiphore

outh=l;load=2;emaphorenorth=l;emaphore

toouthO{P(load);P(north);過(guò)北段橋;到橋中

tonorthO{P(load);P(outh);過(guò)南段橋;到橋中間間;V(north);P(outh);

過(guò)南段橋;到達(dá)南岸V(outh);P(north);過(guò)北段橋;到達(dá)北岸

V(outh);V(load);}V(north);V(load);}

19.某寺廟,有小和尚、老和尚若干.廟內(nèi)有一水缸,由小和尚提水

入缸,供老和尚飲用.水缸可容納30桶水,每次入水、取水僅為1桶,

不可同時(shí)進(jìn)行。水取自同一井中,水井徑窄,每次只能容納一個(gè)水桶取

水。設(shè)水桶個(gè)數(shù)為5個(gè),試用信號(hào)燈和PV操作給出老和尚和小和尚

的活動(dòng)。eniaphoreempty=30;〃表示缸中目前還能裝多少桶水,初始時(shí)

能裝30桶水emaphorefull=0;〃表示缸中有多少桶水,初

始時(shí)缸中沒(méi)有水emaphorebucket=5;〃表示有多少只空桶可

用,初始時(shí)有5只桶可用emaphoremute某_well=l;〃用于實(shí)

現(xiàn)對(duì)井的互斥操作emaphoremute某_bigjar=1;〃用于實(shí)現(xiàn)對(duì)

缸的互斥操作emaphoremute某_bucket=1;〃用于實(shí)現(xiàn)對(duì)桶的互

斥操作

young_monk(){while(1)(P(empty);old_monk(){while(){P(full);P(

bucket);P(bucket);P(mute某_bucket);取一個(gè)桶;V(mute某

bucket);P(mute某bucket);getabucket;gotothewel1;P(mute某

_well);getwater;V(mute某_well);goV(mute某_bucket);P(mute某

bigjar):getwater;tothetemple;P(mute某

bigjar);purethewaterintothebigV(mute某

_bigjar);V(bucket);V(empty);}}jar;V(mute某

bigjar);V(bucket);V(full);}}

解:#defineN5Intflag[N+l];〃flag[0]表示可用打印機(jī)數(shù),〃flag

表示第i號(hào)打印機(jī)的狀態(tài)(l<=i<=N),。表示占用,1表示空閑PC3某

queue二NULL;〃進(jìn)程阻塞隊(duì)列emaphoremute其_flag=l;〃用于對(duì)flag數(shù)

組的互斥操作emaphoremute某_queue=1;〃月于對(duì)阻塞隊(duì)列的互斥操作

intrequire(intpid,intreturn(int

print){P(mute某

_flag);if(queue二二NULL){flag[0]++;flapriority){P(mute某

_flag);if(flag[0]>0){flag[0]--;fo

r(inti=l;i<N+l;i++)if(flag=g[print]=l;V(mute某

_flag);}ele{V(mute某_flag);p(mut=l){flag=0;break;}V(mute某

flag);returne某queue);將print分配給queue隊(duì)首進(jìn)程;queue下移;

i;}ele{V(mute某_flag);p(mute某_queue);將進(jìn)程pid按其V(mute某

_queue);}}

優(yōu)先數(shù)插入到等待隊(duì)列queue中;V(mute某_queue);}}

26.關(guān)于讀者/寫者問(wèn)題,有人給出如下改進(jìn)解法:emaphorer_w_w,mute

某,;(初值均為1)intcount;(初值為0)讀者活動(dòng):P();P(mute

某);count++;if(count二寫者活動(dòng):P();P(r_w_w);{寫操

作}V(r_w_w);V();=l)P(r_w_w);V(mute某);V();{讀操

作}P(mute某);count--;If(count=

=0)V(r_w_w);V(mute某);

分析上述改進(jìn)算法的調(diào)度效果。答:由于以及讀者和寫者對(duì)的操作,

讀者和寫者都不會(huì)無(wú)限等待,因而算法不會(huì)出現(xiàn)餓死現(xiàn)象,是一個(gè)公平的

解法。

第五章死鎖與饑餓課后習(xí)題答案

1.下面關(guān)于死鎖問(wèn)題的敘述哪些是正確的,哪些是錯(cuò)誤的,說(shuō)明原

因.(1)參與死鎖的所有進(jìn)程都占有資源;(2)參與死鎖的所有進(jìn)程中至少有

兩個(gè)進(jìn)程占有資源;⑶死鎖只發(fā)生在無(wú)關(guān)進(jìn)程之間;(4)死鎖可發(fā)生在任意

進(jìn)程之間.答:說(shuō)法(1)是錯(cuò)誤的,應(yīng)該是參與死鎖的所有進(jìn)程都等待資

源。說(shuō)法⑵正確。參與死鎖的進(jìn)程至少有兩個(gè),設(shè)為pl,p2,pl占有資

源rl而等待資源r2,p2占有資源r2而等待資源rl。說(shuō)法⑶錯(cuò)誤。死

鎖也可能發(fā)生在相關(guān)進(jìn)程之間。說(shuō)法(4)正確,死鎖既可

能發(fā)生在相關(guān)進(jìn)程之間,也可能發(fā)生在無(wú)關(guān)進(jìn)程之間。即死鎖可發(fā)生

在任意進(jìn)程之間。

2.試證明當(dāng)每個(gè)資源類中僅有一個(gè)資源實(shí)例時(shí),資源分配圖中的環(huán)路

是死鎖的充要條件。證明:先證明充分條件:用反證法,假設(shè)每個(gè)資源類

中僅有一個(gè)資源實(shí)例時(shí),資源分配圖的環(huán)路是可約簡(jiǎn)的,那么說(shuō)明環(huán)路外

至少有一個(gè)非孤立且沒(méi)有請(qǐng)求邊的進(jìn)程節(jié)點(diǎn)pk占有一個(gè)資源類rk中的一

個(gè)實(shí)例,而rk中的另夕、一個(gè)實(shí)例被環(huán)路中某個(gè)進(jìn)程占有。說(shuō)明rk中有兩

個(gè)以上的資源實(shí)例,與前提矛盾。所以說(shuō),每個(gè)資源類中僅有一個(gè)資源實(shí)

例時(shí),資源分配圖的環(huán)路是不可約簡(jiǎn)的,根據(jù)死鎖定理,得出結(jié)論每個(gè)資

源類中僅有一個(gè)資源實(shí)例時(shí),資源分配圖若存在環(huán)路就產(chǎn)生死鎖。再證明

必要條件:若死鎖產(chǎn)生,則存在一個(gè)

循環(huán)等待進(jìn)程序列<pl,p2,p3pn>,進(jìn)程pl正等待資源類rkl中唯一的

一個(gè)實(shí)例,而rkl又被進(jìn)程p2所占用;進(jìn)程p2正等待資源類rk2中唯一

的一個(gè)實(shí)例,而M2又被進(jìn)程p3所占用;;進(jìn)程pn正等待資源類rkn

中唯一的一個(gè)實(shí)例,而rkn又被進(jìn)程pl所占用。能看出,畫出的資

源分配圖存在環(huán)路。

3.什么叫饑餓?什么叫餓死?什么叫活鎖?舉例說(shuō)明之.答:在一個(gè)

動(dòng)態(tài)系統(tǒng)中,資源請(qǐng)求與釋放是經(jīng)常性發(fā)生的進(jìn)程行為.對(duì)于每類系統(tǒng)資

源,操作系統(tǒng)需要確定一個(gè)分配策略,當(dāng)多個(gè)進(jìn)程同時(shí)申請(qǐng)某類資源時(shí),

由分配策略確定資源分配給進(jìn)程的次序。資源分配策略可能是公平的

(fair),能保證請(qǐng)求者在有限的時(shí)間內(nèi)獲得所需資源;資源分配策略也可

能是不公平的(unfair),即不能保證等待時(shí)間上界的存在。在后一種情況

下,即使系統(tǒng)沒(méi)有發(fā)生死鎖,某些進(jìn)程也可能會(huì)長(zhǎng)時(shí)間等待.當(dāng)?shù)却龝r(shí)間

給進(jìn)程推進(jìn)和響應(yīng)帶來(lái)明顯影響時(shí),稱發(fā)生了進(jìn)程饑餓(tarvation),當(dāng)

饑餓到一定程度的進(jìn)程所賦予的任務(wù)即使完成也不再具有實(shí)際意義時(shí)稱該

進(jìn)程被餓死(tarvetodeath)。在忙式等待條件下發(fā)生的饑餓,稱為活

鎖.考慮一臺(tái)打印機(jī)分配的例子,當(dāng)有多個(gè)進(jìn)程需要打印文件時(shí),系統(tǒng)按

照短文件優(yōu)先的策略排序,該策略具有平均等待時(shí)間短的優(yōu)點(diǎn),似乎非常

合理,但當(dāng)短文件打印任務(wù)源源不斷時(shí),長(zhǎng)文件的打印任

務(wù)將被無(wú)限期地推遲,導(dǎo)致饑餓以至餓死。

不被忽視,如FCFS分配算法。

5.何謂銀行家算法的保守性舉例說(shuō)明之,答:銀行家算法的保守性是

指銀行家算法只給出了進(jìn)程需要資源的最大量,而所需資源的具體申請(qǐng)和

釋放順序仍是未知的,因而銀行家只能往最壞處設(shè)想.例如:

書中舉例pl19頁(yè)。例5.5。

6.能否給出避免死鎖的充要性算法為什么答:目前關(guān)于避免死鎖的算

法,如銀行家算法是充分性算法,即確保系統(tǒng)時(shí)刻處于安全狀態(tài),這是在

系統(tǒng)已知每個(gè)進(jìn)程所需資源最大量的條件下可以給出的最好結(jié)果。如果系

統(tǒng)不僅知道每個(gè)進(jìn)程所需資源的最大量,而且知道進(jìn)程有關(guān)資源的活動(dòng)序

列,在這個(gè)更強(qiáng)的條件下,則可以給出避免死鎖的充要性算法(讀者可以

證明),但其復(fù)雜度是很高(NP完全)的。而

且由于程序中分支和循環(huán)的存在,事先給出進(jìn)程有關(guān)資源的命令序列

一般是不可能的。

7.設(shè)有一個(gè)T型路口,其中A、B、C、D處各可容納一輛車,車行方向

如下圖所示,試找出死鎖并用有

emaphorel=l,2=1,3=1,4=1;

W:直行P(l);〃按序申請(qǐng)P(4);E:左轉(zhuǎn)P(2);駛?cè)隑;P(3);駛S:

左轉(zhuǎn)P(l);駛?cè)隒;P(2);駛駛?cè)隓;駛?cè)隒;V(4);駛出C;入A;V(S2)P(4);

駛?cè)隓;入B;V(S1)P(3);駛?cè)隓V(1)V(3);駛出D;V(4);V(2);駛出

A;V(3);

8.設(shè)系統(tǒng)中僅有一個(gè)資源類,其中共有M個(gè)資源實(shí)例,使用此類資源的

進(jìn)程個(gè)數(shù)共有N個(gè),它們所需資源最大量總和為,試證明發(fā)生死鎖的必要條

件是M+N.答:證明:假定發(fā)生死鎖,那么

Alloc(1)+A1loc(2)++A1loc(N)=M,(Alloc⑴表示第i進(jìn)程已分配的資源

量)。Need(l)+Need(2)+Need(N)No(Need(i)表示第i進(jìn)程還需要的資源

量)所以,發(fā)生死鎖時(shí),所有進(jìn)程所需資源的總量M+N。

11);Finih[4]=true;Finih[l]=fale并且Need[l]=(1,7,5,0)

<Work,則Work=Work+Anocation[4]=(1,9,9,11)

+(1,0,0,0)=(2,9,9,11);Finih[l]=true;Finih[2]=fale并且Need[2]二

(2,3,5,6)<Work,則Work=Work+AHocation[4]=(2,9,9,11)+

(1,3,5,4)=(3,12,14,15);Finih[2]=true;可以找到一個(gè)安全進(jìn)程

序列<p0,p3,p4,pl;p2>,它使Finih=true,對(duì)于所有0近iW4,因而

可以斷言系統(tǒng)當(dāng)前處于安全狀態(tài).(2)運(yùn)行銀行家算法,由于

Requet[2]=(1,2,2,2)£Need[2]=(2,3,5,6),因而請(qǐng)求合法。進(jìn)一步,

Requet[2]=(1,2,2,2)£Available=(1,6,2,

3),故該請(qǐng)求是可以滿足的。假設(shè)將資源分配給p2,則系統(tǒng)狀態(tài)變

為:AllocationABCDABCDABCDP0:00320012(M01Pl:10001750P2:25761134P3

:03320652P4:00140656運(yùn)行安全性檢測(cè)算法,Work二Available二

(0,4,0,1),

Finih=fale,此時(shí)所有Need£Work均不成立,結(jié)果Finih[i[均為

fale,不存在安全進(jìn)程序列,系統(tǒng)處于不安全狀態(tài)。系統(tǒng)將取消資源分配

并恢復(fù)原來(lái)狀態(tài),進(jìn)程p2等待。

10.某系統(tǒng)采用死鎖檢測(cè)手段發(fā)現(xiàn)死鎖,設(shè)系統(tǒng)中資源類集合為{A,

B,0,資源類A中共有8個(gè)實(shí)例,資源類B中共有6個(gè)實(shí)例,資源類C

中共有5個(gè)實(shí)例.又設(shè)系統(tǒng)中進(jìn)程集合為系1,p2,p3,p4,P5,p6},某時(shí)刻系

統(tǒng)狀態(tài)如卜:AllocationRequetAvailableABCAB

CABCpl:100000221p2:321000p3:012202p4:000000p5:210031p6:00100

0(1)在上述狀態(tài)下系統(tǒng)依次接受如下請(qǐng)求:Requet[l]=(l,0,0);

Requet[2]=(2,1,0);Requet[4]=(0,0,2).給出系統(tǒng)狀態(tài)變化情況,并說(shuō)

明沒(méi)有死鎖.答:如果系統(tǒng)只是接受請(qǐng)求,但是沒(méi)有分配資源給進(jìn)程,那

么系統(tǒng)狀態(tài)變?yōu)椋篈llocationRequetAvailableAB

CABCABCpl:100100221p2:321210p3:012202p4:000002p5:210031p6:00

1000在該狀態(tài)下運(yùn)行死鎖檢測(cè)算法,可以找到一個(gè)進(jìn)程序列

<p4,pl,p2,p3,p5,p6>,它使Finih=true,對(duì)于所有l(wèi)Wi<6,因而可以

斷言系統(tǒng)當(dāng)前沒(méi)有進(jìn)入死鎖狀態(tài)。(2)在由⑴所確定的狀態(tài)下系統(tǒng)接收如

下請(qǐng)求:Requet[l]=(0,3,1),說(shuō)明此時(shí)己發(fā)生死鎖,并找出參與死鎖的

進(jìn)程.答:設(shè)在(1)的狀態(tài)下系統(tǒng)接收如下請(qǐng)求:Requet[l]=(0,3,1),

則系統(tǒng)狀態(tài)變?yōu)椋篈llocationRequetAvailableABCABC

ABCpl:200031121p2:321210p3:012202p4:000002p5:210031p6:001000

在該狀態(tài)下運(yùn)行死鎖檢測(cè)算法,找不到一個(gè)進(jìn)程序列使Finih二true,對(duì)

于所有l(wèi)WiW6,因?yàn)榇嬖趇£{l,2,3,5},使Finih=fale,因而可以

斷言系統(tǒng)已經(jīng)進(jìn)入死鎖狀態(tài),進(jìn)程pl,p2,p3,p5卷入死鎖.

11.設(shè)有7個(gè)簡(jiǎn)單資源:A、B、C、D、E、F、Go其申請(qǐng)命令分別為a、

b、c、d、e>f>g;釋放命令分別為a-、b-、c->d->d->f-、g-;又設(shè)

系統(tǒng)中有Pl、P2、P3三個(gè)進(jìn)程,其活動(dòng)分別為:Pl活動(dòng):aba-b-efge-f-

g-P2活動(dòng):bcb-c-dad-a-P3活動(dòng):cdc-d-egfe-f-g-試分析當(dāng)Pl、P2、P3

并發(fā)執(zhí)行時(shí),是否有發(fā)生死鎖的可能性,并說(shuō)明原因。解:不會(huì)有發(fā)生死

鎖的可能性。在本題中,進(jìn)程pl和p2都使月的資源集合是{a,b},由于

進(jìn)程p2在申請(qǐng)a之前已經(jīng)釋放了b,不存在占有b并且申請(qǐng)a的情況,

所以進(jìn)程P1和P2之間不滿足死鎖的四個(gè)必要條件,不會(huì)產(chǎn)生死鎖;進(jìn)程

P1和P3都使用的資源集合是{e,f,g},進(jìn)程pl和p3都是先申請(qǐng)資源e,

這兩個(gè)進(jìn)程同時(shí)申請(qǐng)資源,那么只能有一個(gè)進(jìn)程先獲得e,另一個(gè)進(jìn)程將

因?yàn)榈貌坏?而阻塞,獲得e的進(jìn)程將進(jìn)一步順利獲得資源f和g,從而

運(yùn)行結(jié)束,釋放資源c,f和g,喚醒另一個(gè)進(jìn)程運(yùn)行。可見(jiàn),進(jìn)程pl和

p3之間不會(huì)產(chǎn)生死鎖;進(jìn)程p2和p3都使用的資源集合是{c,d},由于進(jìn)

程P2在申請(qǐng)d之前已經(jīng)釋放了c,不存在占有c并且申請(qǐng)d的情況,所

以進(jìn)程p2和p3之間不滿足死鎖的四個(gè)必要條件,不會(huì)產(chǎn)生死鎖。綜上所

述,當(dāng)Pl、P2、P3并發(fā)執(zhí)行時(shí),沒(méi)有發(fā)生死鎖的可能性。

第六章存儲(chǔ)管理課后習(xí)題答案

1.考慮下述存儲(chǔ)管理方式中,進(jìn)程空間和邏輯空間的編址情況:(1)

界地址存儲(chǔ)管理方式,

進(jìn)程空間的首地址;(2)頁(yè)式存儲(chǔ)管理,進(jìn)程空間的首地址;(3)

段式存儲(chǔ)管理,進(jìn)程空間各

段的首地址;(4)段頁(yè)式存儲(chǔ)管理,進(jìn)程空間各段的起始地址.答:

(1)界地址存儲(chǔ)管理方式,

進(jìn)程空間的首地址從。開(kāi)始編址;(2)頁(yè)式存儲(chǔ)管理,進(jìn)程空間的

首地址從0開(kāi)始編址,而邏輯

空間劃分為若干個(gè)頁(yè)面,每個(gè)頁(yè)面的起始地址是邏輯頁(yè)號(hào)乘以頁(yè)面大

?。唬?)段式存儲(chǔ)管理,

進(jìn)程空間各段的首地址從。開(kāi)始編址;(4)段頁(yè)式存儲(chǔ)管理,進(jìn)程

空間各段的起始地址從0開(kāi)始

編址.

2.對(duì)于如下存儲(chǔ)管理方式來(lái)說(shuō),進(jìn)程地址空間各是幾維的?(1)頁(yè)

式;(2)段式;(3)段

頁(yè)式答:(1)頁(yè)式的進(jìn)程地址空間是一維的(2)段式的進(jìn)程地址空

間是二維的(3)段

頁(yè)式的進(jìn)程地址空間是二維的

3.在頁(yè)式存儲(chǔ)管理中,頁(yè)的劃分對(duì)用戶是否可見(jiàn)?在段式樣存儲(chǔ)管理

中,段的劃分對(duì)用戶是

否可見(jiàn)?在段頁(yè)式存儲(chǔ)管理中,段的劃分對(duì)用戶是否可見(jiàn)?段內(nèi)頁(yè)的

劃分對(duì)用戶是否可見(jiàn)?

答:(1)在頁(yè)式存儲(chǔ)管理中,分頁(yè)對(duì)于用戶是透明的,一個(gè)進(jìn)程由若

干個(gè)頁(yè)構(gòu)成,所有頁(yè)的長(zhǎng)

度相同;(2)在段式存儲(chǔ)管理中,分段對(duì)于用戶是可見(jiàn)的,一個(gè)進(jìn)程

由若干個(gè)段構(gòu)成,各個(gè)段

的長(zhǎng)度可以不同,一個(gè)段恰好對(duì)應(yīng)一個(gè)程序單位。(3)在段頁(yè)式存儲(chǔ)

管理中,段的劃分對(duì)用戶

是可見(jiàn)的,段內(nèi)頁(yè)的劃分對(duì)用戶是透明的,一個(gè)段由若干個(gè)頁(yè)構(gòu)成,

所有頁(yè)的長(zhǎng)度相同。

4.為什么空閑頁(yè)面鏈適合管理內(nèi)存空間,而不適合管理外存空間?

答:空閑頁(yè)面鏈?zhǔn)菍⑺?/p>

的空閑頁(yè)面連成一個(gè)鏈,分配時(shí)可取鏈頭的頁(yè)面,去配時(shí)可將被釋放

的頁(yè)面連入鏈頭。此種方

法適用于內(nèi)存頁(yè)面的分配,但對(duì)于外存頁(yè)面的分配因分配和去配均需

執(zhí)行一次I/O傳輸,速度

較慢。特別是當(dāng)要申請(qǐng)多個(gè)頁(yè)面時(shí),需要進(jìn)行多次I/O傳輸,分配效

率太低。

5.在某些虛擬頁(yè)式存儲(chǔ)管理系統(tǒng)中,內(nèi)存永遠(yuǎn)保持一個(gè)空閑頁(yè)面,這

樣做有什么好處?

答:在內(nèi)存沒(méi)有空閑頁(yè)架的情況下,需要按照置換算法淘汰一個(gè)內(nèi)存

頁(yè)架,然后讀入所缺頁(yè)面,

缺頁(yè)進(jìn)程一般需要等待兩次I/O傳輸時(shí)間。若內(nèi)存總保持一個(gè)空閑頁(yè)

架,當(dāng)發(fā)生頁(yè)故障時(shí),所

缺頁(yè)面可以被立即調(diào)入內(nèi)存,缺頁(yè)進(jìn)程只需等待一次I/O傳輸時(shí)間。

讀入后立即淘汰一個(gè)內(nèi)存

頁(yè)面,此時(shí)可能也需執(zhí)行一次I/O傳輸,但對(duì)缺頁(yè)進(jìn)程來(lái)說(shuō)不需等待,

因而提高了響應(yīng)速度。

6.為何引入多級(jí)頁(yè)表?多級(jí)頁(yè)表是否影響速度?答:隨著內(nèi)存空間

和進(jìn)程空間的快速增長(zhǎng),

頁(yè)表越來(lái)越大,單級(jí)頁(yè)表的存放遇到困難,為此常將頁(yè)表分為多級(jí)存

放,即引入多級(jí)頁(yè)表。多

級(jí)頁(yè)表會(huì)降低地址映射的速度,但通過(guò)快表可以將效率保持在合理的

范疇內(nèi)。

7.與傳統(tǒng)頁(yè)表相比,倒置頁(yè)表有什么優(yōu)勢(shì)?答:傳統(tǒng)頁(yè)表是面向進(jìn)程

虛擬空間的,即對(duì)應(yīng)進(jìn)

程的每個(gè)邏輯頁(yè)面設(shè)置一個(gè)表項(xiàng),當(dāng)進(jìn)程的地址空間很大時(shí),頁(yè)表需

占用很多的存儲(chǔ)空間,造

成浪費(fèi).與經(jīng)典頁(yè)表不同,反置頁(yè)表是面向內(nèi)存物理頁(yè)架的,即對(duì)應(yīng)內(nèi)存

的每個(gè)物理架設(shè)置一

個(gè)表項(xiàng),表項(xiàng)的序號(hào)就是物理頁(yè)架號(hào)3表項(xiàng)的內(nèi)容則為進(jìn)程標(biāo)識(shí)

pid與邏輯頁(yè)號(hào)p的有序?qū)?系

統(tǒng)只需設(shè)置一個(gè)反置頁(yè)表,為所有進(jìn)程所共用.

8.允許進(jìn)程空間邏輯頁(yè)號(hào)不連續(xù)帶來(lái)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論