計算機操作系統(tǒng)第四版課后習題答案_第1頁
計算機操作系統(tǒng)第四版課后習題答案_第2頁
計算機操作系統(tǒng)第四版課后習題答案_第3頁
計算機操作系統(tǒng)第四版課后習題答案_第4頁
計算機操作系統(tǒng)第四版課后習題答案_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機操作系統(tǒng)》課后習題答案

注:課本為《計算機操作系統(tǒng)(第四版)》,湯小丹梁紅兵哲鳳屏湯子瀛編

著,

西安電子科技大學出版社出版

第一章

1.設(shè)計現(xiàn)代OS的主要目標是什么?

答:⑴有效性⑵方便性⑶可擴充性(4)開放性

2.OS的作用可表現(xiàn)在哪幾個方面?

答:⑴OS作為用戶與計算機硬件系統(tǒng)之間的接口

⑵OS作為計算機系統(tǒng)資源的管理者

⑶OS實現(xiàn)了對計算機資源的抽象

3.為什么說。故現(xiàn)了對計算機資源的抽象?

答:OS首先在裸機上覆蓋一層I/。設(shè)備管理軟件,實現(xiàn)了對計算機硬件操作的第一

層次抽

象;在第一層軟件上冉覆蓋文件管理軟件,實現(xiàn)了對硬件資源操作的第二層次抽

象。OS通

過在計算機硬件上安裝多層系統(tǒng)軟件,增強了系統(tǒng)功能,隱藏了對硬件操作的細

節(jié),由它們

共同實現(xiàn)了對計算機資源的抽象。

4.試說明推動多道批處理系統(tǒng)形成和發(fā)展的主要動力是什么?

答:主要動力來源于四個方面的社會需求與技術(shù)發(fā)展:

⑴不斷提高計算機資源的利用率;

⑵方便用戶;

⑶器件的不斷更新?lián)Q代;

(4)計算機體系結(jié)構(gòu)的不斷發(fā)展。

5.何謂脫機I/O和聯(lián)機DO?

答:月-機I/O是指事先將裝有用戶程序和數(shù)據(jù)的紙帶或卡片裝入紙帶輸入機或卡

片機,在

外圍機的控制下,把紙帶或卡片上的數(shù)據(jù)或程序輸入到磁帶上。該方式下的輸入

輸出由外圍

機控制完成,是在脫離主機的情況下進行的。

而聯(lián)機I/O方式是指程序和數(shù)據(jù)的輸入輸出都是在主機的直接控制下進行的。

6.試說明推動分時系統(tǒng)形成和發(fā)展的主要動力是什么?

答:推動分時系統(tǒng)形成和發(fā)展的主要動力是更女?地滿足用戶的需要。主要表現(xiàn)在:

CPU的

分時使用縮短了作業(yè)的平均周轉(zhuǎn)時間;人機交互能力使用戶能直接控制自己的作

業(yè);主機的共享使多用戶能同時使用同一臺計算機,獨立地處理自己的作業(yè)。

7.實現(xiàn)分時系統(tǒng)的關(guān)鍵問題是什么?應(yīng)如何解決?答:關(guān)鍵問題是當用戶在自己

的終端上鍵入命令時,系統(tǒng)應(yīng)能及時接收并及時處理該命令,在用戶能接受的時延

內(nèi)將結(jié)果返回給用戶。

解決方法:針對及時接收問題,可以在系統(tǒng)中設(shè)置多路卡,使主機能同時接收用

戶從各個終

端上輸入的數(shù)據(jù);為每個終端配置緩沖區(qū),暫存用戶鍵入的命令或數(shù)據(jù)。針對及

時處理問題,應(yīng)使所有的用戶作業(yè)都直接進入內(nèi)存,并且為每個作業(yè)分配一個時間

片,允許作業(yè)只在自己

的時間片內(nèi)運行,這樣在不長的時間內(nèi),能使每個作業(yè)都運行一次。

8.為什么要引入實時OS

答:實時操作系統(tǒng)是指系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對

該事件的處

理,并控制所有實時任務(wù)協(xié)調(diào)一致地運行。引入實時OS是為了滿足應(yīng)用的需求,

更好地滿足實時控制領(lǐng)域和實時信息處理領(lǐng)域的需要。

9.什么是硬實時任務(wù)和軟實時任務(wù)?試舉例說明。

答:硬實時任務(wù)是指系統(tǒng)必須滿足任務(wù)對截止時間的要求,否則可能出現(xiàn)難以預

測的結(jié)果。

舉例來說,運載火箭的控制等。

軟實時任務(wù)是指它的截止時間并不嚴格,偶爾錯過了任務(wù)的截止時間,對系統(tǒng)產(chǎn)

生的影響不大。舉例:網(wǎng)頁內(nèi)容的更新、火車售票系統(tǒng)。

10.在8位微機和16位微機中,占據(jù)了統(tǒng)治地位的是什么操作系統(tǒng)?

答:單用戶單任務(wù)操作系統(tǒng),其中最具代表性的是CP/M和MS-DOS.

11.試列出WindowsOS中五個主要版本,并說明它們分別較之前一個版本有何改

進。

答:

(1)MicrosoftWindowsl.O是微軟公司在個人電腦上開發(fā)圖形界面的首次嘗試。

⑵Windows95是混合的16位/32位系統(tǒng),第一個支持32位。帶來了更強大、更

穩(wěn)

定、更實用的桌面圖形用戶界面,結(jié)束了桌面操作系統(tǒng)間的競爭。

(3)Windows98是微軟公司的混合16位/32位Windows操作系統(tǒng),改良了硬件標準

的支持,革新了內(nèi)存管理,是多進程操作系統(tǒng)。

(4)WindowsXP是基于Windows2000的產(chǎn)品,擁有新用戶圖形界面月神Luna。簡

化了用戶安全特性,整合了防火墻。

(5)WindowsVista包含/上百種新功能;特別是新版圖形用戶界面和WindowsAero

全新界面風格、加弓11的搜尋功能(WindowsIndexingService)、新媒體創(chuàng)作工具以及

重新設(shè)計的網(wǎng)絡(luò)、音頻、輸出(打?。┖惋@示子系統(tǒng)。。

12.試從交互性、及時性以及可靠性方面,將分時系統(tǒng)與實時系統(tǒng)進行比較。

答:⑴及時性:實時信息處理系統(tǒng)對實時性的要求與分時系統(tǒng)類似,都是以人所

能接受的等待時間來確定;而實時控制系統(tǒng)的及時性,是以控制對象所要求的開

始截止時間或完成截止時間來確定的,一般為秒級到毫秒級,甚至有的要低于100

微妙。

⑵交互性:實時信息處理系統(tǒng)具有交互性,但人與系統(tǒng)的交互僅限于訪問系統(tǒng)中

些特定的專用服務(wù)程序。不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)和資源共享等

服務(wù)。

⑶可靠性:分時系統(tǒng)也要求系統(tǒng)可靠,但相比之下,實時系統(tǒng)則要求系統(tǒng)具有高

的可靠性。因為任何差錯都可能帶來巨大的經(jīng)濟損失,甚至是災(zāi)難性后果,所以

在實時系統(tǒng)

中,往往都采取了多級容錯措施保障系統(tǒng)的安全性及數(shù)據(jù)的安全性。

13.OS有哪幾大特征?其最基本的特征是什么?

答:并發(fā)性、共享性、虛擬性和異步性四個基本特征;最基本的特征是并發(fā)性。

14.處理機管理有哪些主要功能?它們的主要任務(wù)是什么?

答:處理機管理的主要功能是:進程管理、進程同步、進程通信和處理機調(diào)度;

進程管理:為作業(yè)創(chuàng)建進程,撤銷已結(jié)束進程,控制進程在運行過程中的狀態(tài)轉(zhuǎn)

換。

進程同步:為多個進程(含線程)的運行進行協(xié)調(diào)。

通信:用來實現(xiàn)在相互合作的進程之間的信息交換。

處理機調(diào)度:

⑴作業(yè)調(diào)度。從后備隊里按照一定的算法,選出若干個作業(yè),為他們分配運行所

的資源(首選是分配內(nèi)存)。

⑵進程調(diào)度:從進程的就緒隊列中,按照一定算法選出一個進程,把處理機分配

它,并設(shè)置運行現(xiàn)場,使進程投入執(zhí)行。

15.內(nèi)存管理有哪些主要功能?他們的主要任務(wù)是什么?

北京石油化工學院信息工程學院計算機系3/48

《計算機操作系統(tǒng)》習題參考答案余有明與計07和計G09的同學們編著3/48

答:內(nèi)存管理的主要功能有:內(nèi)存分配、內(nèi)存保護、地址映射和內(nèi)存擴充。

內(nèi)存分配:為每道程序分配內(nèi)存。

內(nèi)存保護:確保每道用戶程序都只在自己的內(nèi)存空間運行,彼此互不干擾。

地址映射:將地址空間的邏輯地址轉(zhuǎn)換為內(nèi)存空間與對應(yīng)的物理地址。

內(nèi)存擴充:用于實現(xiàn)請求調(diào)用功能,置換功能等。

16.設(shè)備管理有哪些主要功能?其主要任務(wù)是什么?

答:主要功能有:緩沖管理、設(shè)備分配和設(shè)備處理以及虛擬設(shè)備等。

主要任務(wù):完成用戶提出的I/O請求,為用戶分配I/O設(shè)備;提高CPU和DO設(shè)

備的利用率;提高I/O速度;以及方便用戶使用I/O設(shè)備.

17.文件管理有哪些主要功能?其主要任務(wù)是什么?

答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和保

護。

文件管理的主要任務(wù):管理用戶文件和系統(tǒng)文件,方便用戶使用,保證文件安全

性。

18.是什么原因使操作系統(tǒng)具有異步性特征?

答:操作系統(tǒng)的異步性體現(xiàn)在三個方面:一是進程的異步性,進程以人們不可預

知的速度向前推進,二是程序的不可再現(xiàn)性,即程序執(zhí)行的結(jié)果有時是不確定的,

三是程序執(zhí)行時間的不可預知性,即每個程序何時執(zhí)行,執(zhí)行順序以及完成時間

是不確定的。

19.模塊接口法存在哪些問題?可通過什么樣的途徑來解決?

答:(1)模塊接口法存在的問題:①在OS設(shè)計時,各模塊間的接口規(guī)定很難滿足

在模決完成后對接口的實際需求。②在OS設(shè)計階段,設(shè)計者必須做出一系列的決

定,每一個決定必

須建立在上一個決定的基礎(chǔ)上。但模塊化結(jié)構(gòu)設(shè)計的各模塊設(shè)計齊頭并進,無法

尋找可靠的

順序,造成各種決定的無序性,使程序設(shè)計人員很難做到設(shè)計中的每一步?jīng)Q定都

建立在可靠的基礎(chǔ)上,因此模塊接口法被稱為“無序模塊法”。

(2)解決途徑:將模塊接口法的決定順序無序變有序,引入有序分層法。

20.在微內(nèi)核OS中,為什么要采用客戶/服務(wù)器模式?

答:C/S模式具有獨特的優(yōu)點:⑴數(shù)據(jù)的分布處理和存儲。⑵便于集中管理。⑶靈

活性和可擴充性0⑷易于改編應(yīng)用軟件。

21.試描述什么是微內(nèi)核OS

答:1)足夠小的內(nèi)核2)基于客戶/服務(wù)器模式

3)應(yīng)用機制與策略分離原理4)采用面向?qū)ο蠹夹g(shù)。

22.在基于微內(nèi)核結(jié)構(gòu)的OS中,應(yīng)用了哪些新技術(shù)?

答:在基于微內(nèi)核結(jié)構(gòu)的OS中,采用面向?qū)ο蟮某绦蛟O(shè)汁技術(shù)。

23.何謂微內(nèi)核技術(shù)?在微內(nèi)核中通常提供了哪些功能?

答:把操作系統(tǒng)中更多的成分和功能放到更高的層次(即用戶模式)中去運行,

而留下一個

盡量小的內(nèi)核,用它來完成操作系統(tǒng)最基本的核心功能,稱這種技術(shù)為微內(nèi)核技

術(shù)。在微內(nèi)

核中通常提供了進程(線程)管理、低級存儲器管理、中斷和陷入處理等功能。

24.微內(nèi)核操作系統(tǒng)具有哪些優(yōu)點?它為何能有這些優(yōu)點?

答:1)提高了系統(tǒng)的可擴展性

2)增強了系統(tǒng)的可靠性

3)可移植性

4)提供了對分布式系統(tǒng)的支持

5)融入了面向?qū)ο蠹夹g(shù)

第二章

1.什么是前趨圖?為什么要引入前趨圖?

答:前趨圖(PrecedenceGraph)是~■個有向無循環(huán)圖,記為DAG(DirectedAcyclicGraph),

用于描述進程之間執(zhí)行的前后關(guān)系。

2.畫出下面四條語句的前趨圖

Sl=a:=x+y;S2=b:=z+l;S3=c:=a-b;S4=w:=c+l;

答:其前趨圖為:

3.什么程序并發(fā)執(zhí)行會產(chǎn)生間斷性特征?

答:程序在并發(fā)執(zhí)行時,由于它們共享系統(tǒng)資源,為完成同一項任務(wù)需要相互合

作,致使這

些并發(fā)執(zhí)行的進程之間,形成了相互制約關(guān)系,從而使得進程在執(zhí)行期間出現(xiàn)間

斷性。

4.程序并發(fā)執(zhí)行時為什么會失去封閉性和可再現(xiàn)性?

答:程序并發(fā)執(zhí)行時,多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)由

多個程序改

變,致使程序運行失去了封閉性,也會導致其失去可再現(xiàn)性。

5.在操作系統(tǒng)中為什么要引入進程概念?它會產(chǎn)生什么樣的影響?

答:為了使程序在多道程序環(huán)境下能并發(fā)執(zhí)行,并對并發(fā)執(zhí)行的程序加以控制和

描述,在操

作系統(tǒng)中引入了進程概念。

影響:使程序的并發(fā)執(zhí)行得以實行。

6.試從動態(tài)性,并發(fā)性和獨立性上比較進程和程序?

答:⑴動態(tài)性是進程最基本的特性,表現(xiàn)為由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因得

不到資源

而暫停執(zhí)行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令

集合,是靜

態(tài)實體。⑵并發(fā)性是進程的重要特征,同時也是OS的重要特征。引入進程的目的

正是為了使

其程序能和其它進程的程序并發(fā)執(zhí)行,而程序是不能并發(fā)執(zhí)行的。

⑶獨立性是指進程實體是一個能獨立運行的基本單位,也是系統(tǒng)中獨立獲得資源

和獨立調(diào)度的基本單位。對于未建立任何進程的程序,不能作為獨立單位參加運

行。

7.試說明PCB的作用,為什么說PCB是進程存在的惟一標志?

答:PCB是進程實體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。作用是使

一個在多道程序環(huán)境下不能獨立運行的程序,成為一個能獨立運行的基本單位,

成為能與其它進程

并發(fā)執(zhí)行的進程。OS是根據(jù)PCB對并發(fā)執(zhí)行的進程進行控制和管理的。

8.試說明進程在三個基本狀態(tài)之間轉(zhuǎn)換的典型原因。

答:⑴就緒狀態(tài)一執(zhí)行狀態(tài):進程分配到CPU八源

⑵執(zhí)行狀態(tài)一就緒狀態(tài):時間片用完

⑶執(zhí)行狀態(tài)一阻塞狀態(tài):I/O請求

(4)阻塞狀態(tài)一就緒狀態(tài):I/O完成

9.為什么要引入掛起狀態(tài)?該狀態(tài)有哪些性質(zhì)?

答:引入掛起狀態(tài)處于五種不同的需要:終端用戶需要,父進程需要,操作系統(tǒng)

需要,對換

北京石油化工學院信息工程學院計算機系5/48

《計算機操作系統(tǒng)》習題參考答案余有明與計07和計G09的同學們編著5/48

需要和負荷調(diào)節(jié)需要。處于掛起狀態(tài)的進程不能接收處理機調(diào)度。

10.在進行進程切換時,所要保存的處理機狀態(tài)信息有哪些?

答:進行進程切換時,所要保存的處理機狀態(tài)信息有:

⑴進程當前暫存信息

⑵下一指令地址信息

⑶進程狀態(tài)信息

(4)過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址信息。

11.試說明引起進程創(chuàng)建的主要事件。

答:引起進程創(chuàng)建的主要事件有:用戶登錄、作業(yè)調(diào)度、提供服務(wù)、應(yīng)用請求。

12.試說明引起進程被撤銷的主要事件。

答:引起進程被撤銷的主要事件有:正常結(jié)束、異常結(jié)束(越界錯誤、保護錯、非

法指令、

特權(quán)指令錯、運行超時、等待超時、算術(shù)運算錯、I/O故障)、外界干預(操作員或

操作系

統(tǒng)干預、父進程請求、父進程終止)。

13.在創(chuàng)建一個進程時所要完成的主要工作是什么?

答:

⑴OS發(fā)現(xiàn)請求創(chuàng)建新進程事件后,調(diào)用進程創(chuàng)建原語Creato;

⑵申請空白PCB

⑶為新進程分配資源;

(4)初始化進程控制塊;

⑸將新進程插入就緒隊列.

14.在撤銷一個進程時所要完成的主要工作是什么?

答:

⑴根據(jù)被終止進程標識符,從PCB集中檢索出進程PCB讀出該進程狀態(tài)。

⑵若被終止進程處于執(zhí)行狀態(tài),立即終止該進程的執(zhí)行,置調(diào)度標志真,指示該

進程被

終止后重新調(diào)度。

⑶若該進程還有子進程,應(yīng)將所有子孫進程終止,以防它們成為不可控進程。

(4)將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統(tǒng)。

⑸將被終止進程PCB從所在隊列或列表中移出,等待其它程序搜集信息。

15.試說明引起進程阻塞或被喚醒的主要事件是什么?

答:a.請求系統(tǒng)服務(wù);b.啟動某種操作;c.新數(shù)據(jù)尚未到達;d.無新工作可做.

16.進程在運行時存在哪兩種形式的制約?并舉例說明之。

答:

⑴間接相互制約關(guān)系。舉例:有兩進程A和B,如果A提出打印請求,系統(tǒng)已把唯

一的

一臺打印機分配給了進程B,則進程A只能阻塞;一旦B釋放打印機,A才由阻塞

改為就

緒。

⑵直接相互制約關(guān)系。舉例:有輸入進程A通過單緩沖向進程B提供數(shù)據(jù)。當緩

沖空時,計算進程因不能獲得所需數(shù)據(jù)而阻塞,當進程A把數(shù)據(jù)輸入緩沖區(qū)后,

便喚醒進程B;反

之,當緩沖區(qū)已滿時,進程A因沒有緩沖區(qū)放數(shù)據(jù)而阻塞,進程B將緩沖區(qū)數(shù)據(jù)

取走后便喚醒Ao

17.為什么進程在進入臨界區(qū)之前應(yīng)先執(zhí)行“進入?yún)^(qū)”代碼?而在退出前又要執(zhí)

行“退出區(qū)”代碼?

答:為了實現(xiàn)多個進程對臨界資源的互斥訪問,必須在臨界區(qū)前面增加一段用于

檢查欲訪問

的臨界資源是否正被訪問的代碼,如果未被訪問,該進程便可進入臨界區(qū)對資源

進行訪問,并設(shè)置正被訪問標志,如果正被訪問,則本進程不能進入臨界區(qū),實

現(xiàn)這一功能的代碼為〃

北京石油化工學院信息工程學院計算機系6/48

《計算機操作系統(tǒng)》習題參考答案余有明與計07和計G09的同學們編著6/48

進入?yún)^(qū)〃代碼;

在退出臨界區(qū)后,必須執(zhí)行〃退出區(qū)”代碼,用于恢復未被訪問標志,使其它進程

能再坊問此

臨界資源。

18.同步機構(gòu)應(yīng)遵循哪些基本準則?為什么?

答:同步機構(gòu)應(yīng)遵循的基本準則是:空閑讓進、忙則等待、有限等待、讓權(quán)等待

原因:為實現(xiàn)進程互斥進入自己的臨界區(qū)。

19.試從物理概念上說明記錄型信號量wait和signal.

答:wait(S):當S.val吟0時,表示目前系統(tǒng)中這類資源還有可用的。執(zhí)行一次wait

作,意味著進程請求一個單位的該類資源,使系統(tǒng)中可供分配的該類資源減少一

個,因此描

述為S.value:=S.value-1;當S.value<0時,表示該類資源已分配完畢,進程應(yīng)調(diào)用block

原語自我阻塞,放棄處理機,并插入到信號量鏈表S.L中。

signal(S):執(zhí)行一次signal操作,意味著釋放一個單位的可用資源,使系統(tǒng)中可供分

配的該類資源數(shù)增加一個,故執(zhí)行S.valuekS.vakie+1操作。若加1后S.vakie<0,則表

示在該信號量鏈表中,仍有等待該資源的進程被阻塞,因此應(yīng)調(diào)用wakeup原語,

將S.L

鏈表中的第一個等待進程喚醒。

20.你認為整型信號量機制是否完全遵循了同步機構(gòu)的四條準則?

答:整型信號量機制不完全遵循同步機制的四條準則,它不滿足“讓權(quán)等待”準

則。

21.如何利用信號量機制來實現(xiàn)多個進程對臨界資源的互斥訪問?并舉例說明

之。

答:為使多個進程互斥訪問某臨界資源,只需為該資源設(shè)置一互斥信號量mutex,

并設(shè)其

初值為1,然后將各進程訪問該資源的臨界區(qū)CS置于wait(mutex)和signal(mutex)操作

之間即可。這樣,每個欲訪問該臨界資源的進程在進入臨界區(qū)之前,都要先對mutex

執(zhí)行

wail操作,若該資源此刻未被訪問,本次wait操作必然成功,進程便可進入自己的

臨界

區(qū),

這時若再有其他進程也欲進入自己的臨界區(qū),此時由于對mutex執(zhí)行wait操作定會

失敗,

因而該進程阻塞,從而保證了該臨界資源能被互斥訪問。當訪問臨界資源的進程

退出臨界區(qū)

后,應(yīng)對mutex執(zhí)彳Tsignal操作,釋放該臨界資源。利用信號量實現(xiàn)進程互斥的進

程描述

如下:

Varmutex:semaphore:=l;

begin

parbegin

process1:begin

repeat

wait(mutex);

criticalsection

signal(mutex);

remainderseetion

untilfalse;

end

process2:begin

repeat

wait(mutex);

criticalsection

signal(mutex);

remaindersection

untilfalse;

end

parend

22.試寫出相應(yīng)的程序來描述圖2.17所示的前驅(qū)圖。

23(a)Vara,b,c,d,e,f,g,h;semaphore:=0,0,0,0,0,0,0,0;

begin

parbegin

beginS1;signal(a);signal(b);end;

beginwait(a);S2;signal(c);signal(d);end;

beginwait(b);S3;signal(e);end;

beginwait(c);S4;signal(f);end;

beginwait(d);S5;signal(g);end;

begin\vait(e);S6;signal(h);end;

beginwait(f);wait(g);wait(h);S7;end;

parend

end

(b)Vara,b,c,d,e,f,g,h,i,j;semaphoresO,0,0,0,0,0,0,0,0,0;

begin

parbegin

beginS1;signal(a);signal(b);end;

beginwait(a);S2;signal(c);signal(d);end;

beginwait(b);S3;signal(e);signal(f);end;

beginwait(c);S4;signal(g);end;

beginwait(d);S5;signal(h);end;

beginwait(e);S6;signal(i);end;

beginwait(f);S7;signal(j);end;

beginwait(g);wait(h);wait(i);wait(j);S8;end;parend

end

23.在生產(chǎn)者消費者問題中,如果缺少了signal(full)或signal(empty),對執(zhí)行結(jié)果有何

影響?

答:

如果缺少signal(full),那么表明從第一個生產(chǎn)者進程開始就沒有改變信號量full值,

即使緩沖池產(chǎn)品已滿,但full值還是0,這樣消費者進程執(zhí)行wait(full)時認為緩沖池

而取不到產(chǎn)品,消費者進程一直處于等待狀態(tài)。

如果缺少signaKempty),在生產(chǎn)者進程向n個緩沖區(qū)投滿產(chǎn)品后消費者進程才開始從

中取產(chǎn)品,這時emply=0,full=n,那么每當消費者進程取走一個產(chǎn)品emply值并不改變,

直到緩沖池取空了,emply值也是0,即使目前緩沖池有n個空緩沖區(qū),生產(chǎn)者進程

要想再往緩沖池中投放產(chǎn)品也會因為申請不到空緩沖區(qū)被阻塞。

24.在生產(chǎn)消費者問題中,如果將兩個wait操作即wait(full)和wait(mutex)互換位置,

或者將signal(mutex)與signal(full)互換位置,結(jié)果如何?

答:將wait(full)和wait(mutex)互換位置后,可能引起死鎖??紤]系統(tǒng)中緩沖區(qū)全滿

時若一生產(chǎn)者進程先執(zhí)行了wait(mutex)操作并獲得成功,則當再執(zhí)行wait(empty)

操作時,

它將因失敗而進入阻塞狀態(tài),它期待消費者進程執(zhí)行signal(empty)來喚醒自己,在

此之前,

它不可能執(zhí)行signal(mutex)操作,從而使試圖通過執(zhí)行wait(mutex)操作而進入自己的

界區(qū)的其他牛產(chǎn)者和所有消費者進程全部進入阻塞狀態(tài),這樣容易引起系統(tǒng)死鎖.

若signal(mutex)和signal(full)互換位置后只是影響進程對臨界資源的釋放次序,而

不會引起系統(tǒng)死鎖,因此可以互換位置。

25.我們在為某一臨界資源設(shè)置一把鎖/當W=1時表示關(guān)鎖,當W=0寸表示鎖已

打開。

試寫出開鎖和關(guān)鎖的原語,并利用他們實現(xiàn)互斥。

答:整型彳f號量:lock(W):whileW=Idono-op

W:=l;

unlock(W):W:=0;

記錄型信號量:lock(W):W:=W+l;

if(W>l)thenblock(W,L)

unlock(W):W:=W-l;

if(W>O)thenwakeup(W,L)

例子:

VarW:semaphore:=0;beginrepeatlock(W);

criticalsection

unlock(W);

remaindersection

untilfalse;

end

26.試修改下面生產(chǎn)者-消費者問題解法中的錯誤

答:producer:

begin

repeatproduceraniteminnextp;

wait(mutex);

wait(fuH);/*應(yīng)為wait(empty),而且還應(yīng)該在wait(mutex)的前面*/buffer(in):二nextp;

/*緩沖池數(shù)組防I標應(yīng)前移:in:=(in+l)modn;*/

signal(mulex);

/*signal(full);*/

untilfalse;

end

consumer:

begin

repeat

wait(mutex);

wait(empty);/*應(yīng)為wait(fuH),而且還應(yīng)該在wait(mutex)的前面*/

nextc:=buffer(out);

out:=out+l;/*考慮循環(huán),應(yīng)改為:out:=(out+1)modn;*/

signal(mutex);/*signal(empty);*/

consumeriteminnextc;

untilfalse;

end

27.試利用記錄型信號量寫出一個不會出現(xiàn)死鎖的哲學家進餐問題的算法

答:Varchopstick:array[0,,?,,4]ofsemaphore;

所有信號量均被初始化為1,第i位哲學家的活動可描述為:

Repeal

Wait(chopstick[i]);

Wait(.chopstick[(i+l)mod5]);

Ea.t;

Signal(chopstick[i]);

Signal(chopstick[(i+1)mod5])

Ea.t;

Think;

Untilfalse;

28.在測量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù),把所采集的數(shù)據(jù)送一單緩沖區(qū);計算任

務(wù)從該單緩沖中取出數(shù)據(jù)進行計算.試寫出利用信號量機制實現(xiàn)兩者共享單緩沖

的同步算法。

答:

a.Varmutex,empty.full:semaphore:=1,1,0;

gather:

begin

repeatgatherdalainnextp;

wait(empty);

wait(mutex);

buffer:=nextp;

signal(mutex);

signal(full);

untilfalse;

end

compute:

begin

repeatwait(tull);

wait(mutex);

nextc:=buffer;

signal(mutex);

signal(empty);

computedatainnextc;

untilfalse;

end

b.Varempty,full:semaphores1,0;

gather:

begin

repeatgatherdatainnextp;

wait(empty);

buffer:=nextp;

signal(full);

untilfalse;

end

compute:

begin

repeatwait(full);

nextc:=buffer;

signal(empty);

computedatainnextc;

untilfalse;

end

29.畫圖說明管程由哪幾部分組成,為什么要引入條件變量?

答:管程由四部分組成:①管程的名稱;②局部于管程內(nèi)部的共享數(shù)據(jù)結(jié)構(gòu)說明;

③對該數(shù)

據(jù)結(jié)構(gòu)進行操作的一組過程;④對局部于管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始值的語句;

當一個進程調(diào)用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,

而在此期

間,如果該進程不釋放管程,則其它進程無法進入管程,被迫長時間地等待。為

了解決這個

問題,引入了條件變量condition£

30.如何利用管程來解決生產(chǎn)者與消費者問題?

答;首先建立一'個管程,命名為ProcluccrConsumcr,包括兩個過程;

(1)Put(item)過程。生產(chǎn)者利用該過程將自己生產(chǎn)的產(chǎn)品放到緩沖池,用整型變量

count表示在緩沖池中已有的產(chǎn)品數(shù)目,當count>n時,表示緩沖池已滿,生產(chǎn)者須

等待。

(2)get(item)過程。消費者利用該過程從緩沖池中取出一個產(chǎn)品,當count<0時,

表示緩沖池中已無可取的產(chǎn)品,消費者應(yīng)等待。

PC管程可描述如下:

typeproducer-consumer=monitor

Varin,out,count:integer;

buffer:array[0,???,n-1]ofitem;

notfull,notempty:condition;

procedureentrydot(item)

begin

ifcount>=nthennotfull.wait;

buffer(in):=nextp;

in:=(in+l)modn;

count:=count+l;

ifnotempty.queuethennotempty.signal;

end

procedureentryget(item)

begin

ifcounl<=Othennolfull.wait;

nextc:=buffer(out);

out:=(out+l)modn;

count:=count-l;

ifnotfull.quenethennotfull.signal;

end

beginin:=out:=0;

count:=0

end

在利用管程解決生產(chǎn)者一消費者問題時,其中的生產(chǎn)者和消費者可描述為:

producer:begin

pepeat

produceanineminnestp

PC.put(item);

untilfalse;

end

consumer:beginrepeatPC.get(item);

consumetheiteminenxtc;

untilfalse;

end

31.什么是AND言號量?試利用AND言號量寫出生產(chǎn)者一消費者問題的解法。

答:為解決并行帶來的死鎖問題,在wail操作中引入AND條件,其基本思想是將

進程在整個運行過程中所需要的所有臨界資源,一次性地全部分配給進程,用完

后一次性釋放。

解決生產(chǎn)者-消費者問題可描述如下:

varmutex,empty,full:semaphore:=l,n,O;

buffer:array[O,...,n-l]ofitem;

in,out:integer:=0,0;

begin

parbegin

producer:begin

repeat

???

produceaniteminnextp;

wait(empty);

wait(sl,s2,s3,...,sn);//s1,s2,...,sn為執(zhí)行生產(chǎn)者進程除empty外其余的條件

wait(mutex);

buffer(in):=nextp;

in;=(in+l)niodn;

signal(mutex);

signal(full);

signals1,s2,s3,...,sn);

untilfalse;

endconsumer:begin

repeat

wait(full);

wait(kl,k2,k3,...,kn);//kl,k2,...,kn為執(zhí)行消費者進程除full外其余的條件

wait(mutcx);

nextc:=buffer(out);

out:=(out+l)modn;

signal(mutex);

signal(empty);

signaKk1,k2,k3,...,kn);

consumetheiteminnextc;

untilfalse;

endparendend

32.什么是信號量集?試利用信號量集寫出讀者一寫者問題的解法。

答:對AND言號量加以擴充,形成的信號量集合的讀寫機制。

解法:VarRNinteger;

L,mx:semaphore:=RN,1;

beginparbeginreader:begin

repeal

Swait(LJJ);

Swait(mx,l,l);

perfbrmreadoperation;

???

Ssignal(L,l);

untilfalseendwriter:beginrepeat

Swait(mx,l,l;L,RN,0);

performwriteoperation;

Ssignal(mx,l);

untilfalseend

parendend

33.試比較進程間的低級與高級通信工具。

答:用戶用低級通信

溫馨提示

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

評論

0/150

提交評論