操作系統(tǒng)原理與實踐教程(第四版)練習題題庫及答案_第1頁
操作系統(tǒng)原理與實踐教程(第四版)練習題題庫及答案_第2頁
操作系統(tǒng)原理與實踐教程(第四版)練習題題庫及答案_第3頁
操作系統(tǒng)原理與實踐教程(第四版)練習題題庫及答案_第4頁
操作系統(tǒng)原理與實踐教程(第四版)練習題題庫及答案_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

港件簌儻展理專窕踐泰彩(第團版)依習題題片及答多

第1f獴6蓋倭幅把

1.試說明什么是操作系統(tǒng),它具有什么特征?其最基本特征是什么?

答:

操作系統(tǒng)就是一組管理與控制計算機軟硬件資源并對各項任務進行合理化調(diào)度,且附加

了各種便于用戶操作的工具的軟件層次。

現(xiàn)代操作系統(tǒng)都具有并發(fā)、共享、虛擬和異步特性,其中并發(fā)性是操作系統(tǒng)的最基本特

征,也是最重要的特征,其它三個特性均基于并發(fā)性而存在。

2.設(shè)計現(xiàn)代操作系統(tǒng)的主要目標是什么?

答:

現(xiàn)代操作系統(tǒng)的設(shè)計目標是有效性、方便性、開放性、可擴展性等特性。其中有效性指

的是OS應能有效地提高系統(tǒng)資源利用率和系統(tǒng)吞吐量。方便性指的是配置了OS后的計算

機應該更容易使用。這兩個性質(zhì)是操作系統(tǒng)最重要的設(shè)計目標。開放性指的是OS應遵循世

界標準規(guī)范,如開放系統(tǒng)互連OSI國際標準。可擴展性指的是OS應提供良好的系統(tǒng)結(jié)構(gòu),

使得新設(shè)備、新功能和新模塊能方便地加載到當前系統(tǒng)中,同時也要提供修改老模塊的可能,

這種對系統(tǒng)軟硬件組成以及功能的擴充保證稱為可擴展性。

3.操作系統(tǒng)的作用體現(xiàn)在哪些方面?

答:

現(xiàn)代操作系統(tǒng)的主要任務就是維護?個優(yōu)良的運行環(huán)境,以便多道程序能夠有序地、高

效地獲得執(zhí)行,而在運行的同時,還要盡可能地提高資源利用率和系統(tǒng)響應速度,并保證用

戶操作的方便性。因此操作系統(tǒng)的基本功能應包括處理器管理、存儲器管理、設(shè)備管理和文

件管理。此外,為了給用戶提供一個統(tǒng)一、方便、有效的使用系統(tǒng)能力的手段,現(xiàn)代操作系

統(tǒng)還需要提供一個友好的人機接口。在互聯(lián)網(wǎng)不斷發(fā)展的今天,操作系統(tǒng)中通常還具備基本

的網(wǎng)絡(luò)服務功能和信息安全防護等方面的支持:。

4.試說明實時操作系統(tǒng)和分時操作系統(tǒng)在交互性、及時性和可靠性方面的異同。

答:

(1)交互性:分時系統(tǒng)能夠使用戶和系統(tǒng)進行人-機對話。實時系統(tǒng)也具有交互性,

但人與系統(tǒng)的交互僅限于訪問系統(tǒng)中某些特定的專用服務程序。

(2)及時性:分時系統(tǒng)的響應時間是以人能夠接受的等待時間為標準,而實時控制

系統(tǒng)對響應時間要求比較嚴格,它是以控制過程或信息處理中所能接受的延遲為標

準。

(3)可靠性:實時系統(tǒng)要求系統(tǒng)可靠性要比分時系統(tǒng)高。在實時系統(tǒng)中往往采用多

級容錯措施來保證系統(tǒng)的安全及數(shù)據(jù)的安全。

5.試比較分布式操作系統(tǒng)和網(wǎng)絡(luò)操作系統(tǒng)的異同。

答:

它們的區(qū)別在于:分布式操作系統(tǒng)的設(shè)計思想和網(wǎng)絡(luò)操作系統(tǒng)是不同的,這決定了它們

在結(jié)構(gòu)、工作方式和功能匕也不同。網(wǎng)絡(luò)操作系統(tǒng)要求網(wǎng)絡(luò)用戶在使用網(wǎng)絡(luò)資源時首先必須

了解網(wǎng)絡(luò)資源,網(wǎng)絡(luò)用戶必須知道網(wǎng)絡(luò)中各個計算機的功能與配置、軟件資源、網(wǎng)絡(luò)文件結(jié)

構(gòu)等情況,在網(wǎng)絡(luò)中如果用戶要讀一個共享文件時,用戶必須知道這個文件放在哪一臺計算

機的哪一個目錄下;分布式操作系統(tǒng)是以全局方式管理系統(tǒng)資源的,它可以為用戶任意調(diào)度

網(wǎng)絡(luò)資源,并且調(diào)度過程是“透明”的。

6.什么是操作系統(tǒng)虛擬機結(jié)構(gòu)?它有什么好處?

答:

虛擬機結(jié)構(gòu)OS最初是為了滿足用戶對分時系統(tǒng)的需求而出現(xiàn)的。VM/370的核心程序

為虛擬機監(jiān)控器(virlualmachinemonitor),它運行于裸機之上并提供多道程序功能。該系統(tǒng)

向上層提供多個對裸機硬件精確復制的虛擬機,這些復制品均包含核心態(tài)、用戶態(tài)、I/O處

理、中斷以及其它真實機器所應該具有的全部功能。

這樣做的好處是凡是能在一臺物理裸機上運行的操作系統(tǒng)均可以出現(xiàn)在一個特定虛擬

機上,分配給各用戶的不同虛擬機上可以隨用戶的個人愛好和操作習慣不同而采用不同的操

作系統(tǒng)。在用戶看來就是直接在自己獨享的一臺裸機上工作。

7.試說明客戶機/服務器結(jié)構(gòu)的操作系統(tǒng)為什么獲得廣泛應用。

答:

客戶機/服務器結(jié)構(gòu)的操作系統(tǒng)具有不同于傳統(tǒng)集中式OS的一系列獨特優(yōu)點,使得其

在網(wǎng)絡(luò)時代大為流行。主要原因有以下幾點:

(1)該系統(tǒng)的數(shù)據(jù)可以進行分布式處理和存儲??蛻魴C本身均具有一定的處理能力,

部分數(shù)據(jù)處理和存儲工作可由本地客戶機完成,減少了服務器機的任務量。

(2)對于重要數(shù)據(jù),可以將其放在受到嚴密保護的服務器所在的局域網(wǎng)內(nèi)集中管理,

以便保證數(shù)據(jù)安全。

(3)C/S結(jié)構(gòu)有較好的靈活性和可擴充性,客戶機/服務器機類型可選范圍很大。

(4)易于修改用戶程序。對客戶機的修改和增刪很方便,甚至可以由用戶自行選行。

8.處理機管理有哪些主要功能?請簡要描述。

答:

處理機的管理功能主要體現(xiàn)在創(chuàng)建、撤銷進程,并按照一定的算法為其分配所需資源,

同時還要管理和控制各用戶的多個進程協(xié)調(diào)運行,確保各個進程可以止確的通信。在多道程

序OS中,這些管理功能最終通過對進程的控制和管理來實現(xiàn),而在具有線程機制的OS中,

這些功能的實現(xiàn)還依賴于對線程的管理和控制。

9.存儲器管理有哪些主要功能?請簡要描述。

答:

操作系統(tǒng)所管理的存儲瑞包括內(nèi)存、外存等,因此存儲器管理的主要任務就是將各種存

儲器件統(tǒng)?管理,保證多道程序的良好運行環(huán)境,同時還要兼顧內(nèi)存利用率、邏輯上擴充內(nèi)

存的需求以及用戶的感受,提供優(yōu)良的控制、存取功能,為用戶提供操控存儲器的手段。

為實現(xiàn)上述要求,存儲器管理應具有內(nèi)存分配、內(nèi)存回收、內(nèi)存保護、地址映射和虛擬內(nèi)存

等功能。

10.文件管理有哪吟主要功能?請簡要描述。

答:

其主要功能就是管理外存上的靜態(tài)文件,提供存取、共享和保護文件的手段,以方便用

戶使用,同時禁止無權(quán)限用戶對他人資源的誤訪問或有權(quán)限用戶對資源的誤操作。文件管理

機制還要能有效管理外存空閑區(qū)域,根據(jù)文件的大小為其分配和I川收空閑區(qū)。為了滿足用戶

對響應時間的要求,文件管理機制還應實現(xiàn)目錄管理,以便快速地定位文件。文件管理機制

能有效保護文件安全,提高資源利用率,為用戶提供快速檢索和使用文件的手段,是OS不

可或缺的組成部分。

II.設(shè)備管理有哪些主要功能?請簡要描述。

答:

設(shè)備管理的主要作用是使用統(tǒng)一的方式控制、管理和訪問種類繁多的外圍設(shè)備。設(shè)備管

理功能主要體現(xiàn)在:接收、分析和處理用戶提出的I/O請求,為用戶分配所需I/O設(shè)備,同

時還要做到盡量提高CPU和I/O設(shè)備利用率、I/O處理效率,為用戶提供操控I/O設(shè)備的便

捷界面和手段。根據(jù)設(shè)備管理模塊的功能要求,可以將其功能分為設(shè)備分配、緩沖管理、設(shè)

備處理、虛擬設(shè)備等。

第24擄價每僥的界面

i.請說明系統(tǒng)生成和系統(tǒng)引導的過程。

答:

系統(tǒng)的生成過程:當裸機啟動后,會運行一個特殊的程序來自動進行系統(tǒng)的生成(安裝),

生成系統(tǒng)之前需要先對硬件平臺狀況進行檢查,或者從指定文件處讀取硬件系統(tǒng)的配置信

息,以便根據(jù)硬件選擇合適的操作系統(tǒng)模塊組,比較重要的信息通常有:CPU類型、內(nèi)存

大小、當前關(guān)聯(lián)設(shè)備的類型和數(shù)量以及操作系統(tǒng)的重要功能選項和參數(shù)。按照這些信息的指

示,系統(tǒng)生成程序就可以正確地生成所需的操作系統(tǒng)。

系統(tǒng)引導的過程:系統(tǒng)引導指的是將操作系統(tǒng)內(nèi)核裝入內(nèi)存并啟動系統(tǒng)的過程。主要包

括初始引導、內(nèi)核初始化、全系統(tǒng)初始化。初始引導工作由BIOS完成,主要完成上電自檢,

初始化基本輸入輸出設(shè)備,載入操作系統(tǒng)內(nèi)核代碼等工作。內(nèi)核被載入內(nèi)存后,引導程序?qū)?/p>

CPU控制權(quán)交給內(nèi)核,內(nèi)核將首先完成初始化功能,包括對硬件、電路邏輯等的初始化,

以及對內(nèi)核數(shù)據(jù)結(jié)構(gòu)的初始化,如頁表(段表)等。全系統(tǒng)初始化階段要做的就是啟動用戶接

口程序,對系統(tǒng)進行必要的初始化,使系統(tǒng)處于等待命令輸入狀態(tài)。

2.操作系統(tǒng)具有哪些接口?這些接口的作用是什么?

答:

操作系統(tǒng)為用戶提供的接口有圖形接口、命令接口和程序接口幾種形式。

操作系統(tǒng)包括三種類型的用戶接口:命令接口(具體又可分為聯(lián)機命令接口與脫機命令

接口)、程序接口及圖形化用戶接口。其中,命令接口和圖形化用戶接口支持用戶直接通過

終端來使用計算機系統(tǒng),而程序接II則提供給用戶在編制程序時使用。

3.請說明操作系統(tǒng)具有的共性服務有哪些不同類別,這些類別分別用于完成什么功能?

答:所有的操作系統(tǒng)都通過?些基本服務來幫助用戶簡單便捷地使用計算機各類資源,

它們包括以下幾個類別:

(1)控制程序運行:系統(tǒng)通過服務將用戶程序裝入內(nèi)存并運行該程序,并且要控制程序

在規(guī)定時間內(nèi)結(jié)束。

(2)進行I/O操作:用戶是不能直接控制設(shè)備的,只能通過操作系統(tǒng)與外部設(shè)備進行交

互,由系統(tǒng)調(diào)用將結(jié)果顯示在屏幕上或交給用戶。

(3)操作文件系統(tǒng):為了保證實現(xiàn)“按名存取”,文件系統(tǒng)應該為用戶提供根據(jù)文件名

來創(chuàng)建、訪問、修改、刪除文件的方法,以確保文件數(shù)據(jù)的安全可靠以及正確存取。

(4)實現(xiàn)通信:操作系統(tǒng)需要提供多個程序之間進行通訊的機制,來控制程序的執(zhí)行順

序。

(5)錯誤處理:操作系統(tǒng)通過錯誤處理機制,以便及時發(fā)現(xiàn)錯誤并采取正確的處理步驟,

避免損害系統(tǒng)的正確性和統(tǒng)一性。

4.系統(tǒng)調(diào)用的用途是什么?

答:

通常,在操作系統(tǒng)內(nèi)核設(shè)置有一組用于實現(xiàn)各種系統(tǒng)功能的子程序(過程),并將它們提

供給用戶程序調(diào)用。每當用戶在程序中需要操作系統(tǒng)提供某種服務時,便可利用一條系統(tǒng)調(diào)

用命令,去調(diào)用所需的系統(tǒng)過程。這即所謂的系統(tǒng)調(diào)用。系統(tǒng)調(diào)用的主要類型包括:

(1)進程控制類,主要用于進程的創(chuàng)建和終止、對子進程結(jié)束的等待、進程映像的替換、

進程數(shù)據(jù)段大小的改變以及關(guān)于進程標識符或指定進程屬性的獲得等;

(2)文件操縱類,主要用于文件的創(chuàng)建、打開、關(guān)閉、讀/寫及文件讀寫指針的移動和

文件屬性的修改,目錄的創(chuàng)建及關(guān)于目錄、特別文件或普通文件的索引結(jié)點的建立

等;

(3)進程通信類,用于實現(xiàn)各種類型的通信機制如消息傳遞、共享存儲區(qū)及信息量集機

制等;

(4)信息維護類,用丁實現(xiàn)關(guān)于日期和時間及其它系統(tǒng)相關(guān)信息的設(shè)置和獲得。

5.命令解釋程序有什么作用?

答:

命令解釋程序的主要作用是:在屏幕上產(chǎn)生提示符,請用戶輸入命令,然后讀入命令、

識別命令,并轉(zhuǎn)至相應的命令處理程序入口地址,把控制權(quán)交給該處理程序去執(zhí)行,最后將

有關(guān)處理結(jié)果(包括出錯信息)送屏幕顯示。

第3步處理器管理

i.為什么程序開發(fā)執(zhí)行會產(chǎn)生間斷性特征,并失去封閉性和可再現(xiàn)性?

答:之所以產(chǎn)生間斷性特征是因為多個程序在并發(fā)執(zhí)行時,需要為了完成同一項任務而

相互合作,并發(fā)執(zhí)行的程序間的這種相互制約導致了“暫停一執(zhí)行一暫?!钡拈g斷性運行規(guī)

律。

失去封閉性是因為程序在并發(fā)執(zhí)行時,多個程序需要共享系統(tǒng)中的多種資源。所以,這

些資源的狀態(tài)是由多個程序改變的,從而使程序的運行失去了封閉性。

失去可再現(xiàn)性是因為程序在并發(fā)執(zhí)行時,由于失去了封閉性,從而導致其失去可再現(xiàn)性。

2.什么是進程?為什么要在操作系統(tǒng)中引入進程?

答:進程是可并發(fā)執(zhí)行且具有獨立功能的程序在一人數(shù)據(jù)集合上的運行過程,它是操作

系統(tǒng)進行資源分配和調(diào)度的基本單位?!斑M程”概念是人們?yōu)榱耸钩绦蚰軌虿l(fā)執(zhí)行,并且

能對并發(fā)的程序加以描述和控制而引入的。

3.試從并發(fā)性、獨立性、動態(tài)性上比較程序和進程的不同。

答:(1)并發(fā)性是進程的重要特征,同時也是OS的重要特征。引入進程的目的正是

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

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

資源和獨立調(diào)度的基本單位。而對于未建立任何進程的程序,都不能作為一個獨立的

單位參加運行。

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

資源而暫停執(zhí)行,以及由撤銷而消亡,因而進程有一定的生命期;而程序只是一組有

序指令的集合,是靜態(tài)實體。

4.什么是PCB?它具有什么作用?為什么說PCB是進程存在的唯一標識?

答:進程控制塊(ProcessControlBlock,PCB)是操作系統(tǒng)為了管理進程而設(shè)置的一個專

門的數(shù)據(jù)結(jié)構(gòu),用它來記錄進程的外部特征,描述進程的運動變化過程。

它的作用是使一個在多道程序環(huán)境下不能獨立運行的程序(含數(shù)據(jù)),成為一個能獨立運

行的基本單位,一個能和其它進程并發(fā)執(zhí)行的進程.

因為系統(tǒng)利用PCB來控制和管理進程,所以PCB是系統(tǒng)感知進程存在的唯一標志。進

程與PCB是——對應的。

5.進程有哪些基本狀態(tài)?這些狀態(tài)具有什么特征?

答:進程的三種基本狀態(tài)分別是:就緒狀態(tài)、運行狀態(tài)、阻塞狀態(tài)。

(1)就緒狀態(tài):進程已獲取到除CPU之外的所有必要資源,只要再得到CPU,就可

以馬上投入運行。

(2)運行狀態(tài):處于就緒狀態(tài)的進程被調(diào)度程序選中后將得到CPU控制權(quán),此時該

進程就可以使用處理器進行數(shù)據(jù)運算和處理。

(3)阻塞狀態(tài):當一個進程正在等待某個事件的發(fā)生(如等待I/O的完成)而暫停執(zhí)行,

這時,即使分配有CPU時間,它也無法執(zhí)行。

6.為什么要引入掛起狀態(tài)?該狀態(tài)有什么特性?

答:引入掛起狀態(tài)時為了滿足四種需要:調(diào)節(jié)系統(tǒng)負荷的需要、用戶的需要、父進程的

需要、系統(tǒng)的需要。

掛起狀態(tài)的特點:交換到磁盤上的進程,不讓其參與進程調(diào)度,以達到平衡系統(tǒng)負荷的

目的。

7.說明進程基本狀態(tài)的轉(zhuǎn)換關(guān)系及引起這些狀態(tài)間轉(zhuǎn)換的典型原因。

答:處于就緒狀態(tài)的進程,在調(diào)度程序為之分配了處理器之后,就可以投入運行。同時,

進程的狀態(tài)也由就緒狀態(tài)轉(zhuǎn)變?yōu)檫\行狀態(tài);在采用時間片機制的操作系統(tǒng)中,分配給當前進

程的時間片用完之后,它會暫停執(zhí)行,其狀態(tài)也由運行狀態(tài)轉(zhuǎn)換到就緒狀態(tài);如果由于某事

件發(fā)生(比如進程需要訪問某I/O設(shè)備,而該設(shè)備正在被別的進程訪問)而使進程運行受阻,

不能再繼續(xù)向下執(zhí)行時,它的狀態(tài)會由運行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài);當進程期望的某事件發(fā)生

時(比如需要訪問的I/O設(shè)備已可用),進程將從阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)

8.說明在加入了掛起狀態(tài)的操作系統(tǒng)中,進程狀態(tài)間的轉(zhuǎn)換關(guān)系及引發(fā)轉(zhuǎn)換的典型原因。

答:在引入掛起狀態(tài)的操作系統(tǒng)中,又增加了靜止就緒和靜止阻塞兩個新的進程狀態(tài)。

調(diào)用掛起原語把處于活動就緒狀態(tài)的進程掛起后,該進程就會由活動就緒狀態(tài)轉(zhuǎn)變?yōu)殪o止就

緒狀態(tài)。調(diào)用掛起原語把處于活動阻塞的進程掛起后,它的狀態(tài)就轉(zhuǎn)換為靜止阻塞。謊用激

活原語激活后又可以轉(zhuǎn)換到活動阻塞狀態(tài)。

9.試說明引起進程創(chuàng)建的典型事件。

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

10.試說明引起進程撤銷的典型事件。

答:引起進程撤銷的典型事件有:正常結(jié)束、異常結(jié)束、外界干預。

11.試說明引起進程阻塞和喚醒的典型事件。

答:引起進程阻塞和喚醒的典型事件有:請求系統(tǒng)服務、啟動某種操作、新數(shù)據(jù)我未到

達、無新工作可做。.

12.試說明進程創(chuàng)建的過程。

答:創(chuàng)建進程的操作必須調(diào)用創(chuàng)建原語來實現(xiàn)。創(chuàng)建原語首先為新進程申請獲得惟一的

數(shù)字標示符,并從PCB集合中獲取一個空白PCB;為新進程的程序和數(shù)據(jù)以及用戶棧分配

必要的內(nèi)存空間;然后對PCB進程初始化;最后將新正程插入就緒隊列中,等待被調(diào)度執(zhí)

行。

13.試說明進程撤銷的過程。

答:系統(tǒng)調(diào)用進程終止原語來終止進程。首先根據(jù)被終止進程的標示符,從PCB集合

中查找到該進程的PCB,從中讀出該進程的狀態(tài),終止該進程的執(zhí)行,如果該進程還有子

孫進程,應該將它的所有子孫進程終止,防止它們成為不可控進程:然后回收進程所擁有的

資源;最后將被終止進程(它的PCB)從所在隊列(或鏈表)中移出,等待其它程序來搜集信息。

14.什么是線程?請比較它與進程的異同。

答:

線程是進程中的一個實體,是被系統(tǒng)獨立分配和調(diào)度的基本單位。線程基本上不擁有資

源,只需要一些必不可少的資源(如程序計數(shù)器、一組寄存器和棧)。

進程和線程的差異:

(1)在傳統(tǒng)的OS中,進程是擁有資源和獨立調(diào)度分派的基本單位,在加入線程的OS

中,線程是代替進程成為獨立調(diào)度和分派的基本單位,進程則仍是擁有資源的基本

單位。

(2)并發(fā)粒度不同。除了不同進程的線程之外,同一個進程里的不同線程之間也可以并

發(fā)執(zhí)行,所以線程擁有更好的并發(fā)性。

(3)擁有資源數(shù)量不同。進程是擁有資源的基本單位,線程除了一些在運行過程中必不

可少的資源外,基本上不擁有系統(tǒng)資源,它可以訪問自己所在的進程的資源。

(4)管理開銷不同。創(chuàng)建、撤銷進程時系統(tǒng)都要為之分配和回收資源,所以進程切換用

的時間開銷相對要多于線程。進程間通信很麻煩,而同一進程的線程則通過共享進

程的資源很方便地通信和同步,同步開銷小得多。

進程和線程有著很多相似的地方:都可以并發(fā)執(zhí)行;都有就緒、執(zhí)行、阻塞這些基本狀

態(tài),也都可以在這些基本狀態(tài)之間轉(zhuǎn)換狀態(tài);從創(chuàng)建到撤銷都有一定的生命周期;都需要同

步工具。

15.處理器調(diào)度的層次有哪些?各層次的主要工作是什么?

答:

處理器調(diào)度的層次分為三級調(diào)度:高級調(diào)度、中級調(diào)度和低級調(diào)度。

(1)高級調(diào)度:它需要做出兩個決定,一個是要從駐留在外存后備隊列中調(diào)入多少個

作業(yè),二是要調(diào)入哪幾個作業(yè);然后為被選中的作業(yè)創(chuàng)建進程,并分配必要的系

統(tǒng)資源,如內(nèi)存、外設(shè)等,然后把新創(chuàng)建的進程放入就緒隊列中,等待被調(diào)度執(zhí)

行。

(2)中級調(diào)度:中級調(diào)度主要涉及進程在內(nèi)存和外存之間的交換。當系統(tǒng)中的內(nèi)存使

用情況緊張時,中級調(diào)度把內(nèi)存中暫時不能運行的進程調(diào)到外存中等待,等內(nèi)存

有足夠的空閑空間時,再由中級調(diào)度決定將外存上的某些具備了運行條件的就緒

進程調(diào)入內(nèi)存,把其狀態(tài)修改為就緒狀態(tài)并掛在就緒隊列中,等待進程調(diào)度。

(3)低級調(diào)度:按照一定的算法從就緒隊列中選擇一個進程,然后將處理器分配給它。

執(zhí)行低級調(diào)度功能的程序稱作進程調(diào)度程序,由它實現(xiàn)處理器在進程間的切換.

16.搶占式調(diào)度的原則是什么?請簡要說明。

答:系統(tǒng)使用搶占方式進行進程調(diào)度時需要遵循一定的原則,主要有以下幾個方面:

(1)時間片原則。各進程按系統(tǒng)分配給的一個時間片運行,當該時間片用完或由于該進

程等待某事件發(fā)生而被阻塞時,系統(tǒng)就停止該進程的執(zhí)行而重新進行調(diào)度。

(2)優(yōu)先級原則。每個進程均被賦于一個調(diào)度優(yōu)先級,通常一些重要和緊急的進程被賦

于較高的優(yōu)先級。當一個新的緊迫進程到達時,或者一個優(yōu)先級高的進程從阻塞狀

態(tài)變成就緒狀態(tài)時,如果該進程的優(yōu)先級比當前進程的優(yōu)先級高,OS就停止當前

進程的執(zhí)行,將處理器分配給該優(yōu)先級高的進程,使之執(zhí)行。

(3)短進程優(yōu)先原則。當新到達的作業(yè)對應的進程比正在執(zhí)行的作業(yè)對應進程的運行時

間明顯短時,系統(tǒng)剝奪當前進程的執(zhí)行,而將處理器分配給新的短進程,使之優(yōu)先

執(zhí)行。

17.在批處理系統(tǒng)、分時系統(tǒng)、實時系統(tǒng)中,應分別采用哪種作業(yè)(進程)調(diào)度算法?

答:

批處理系統(tǒng)采用先來先服務調(diào)度算法;分時系統(tǒng)采月時間片輪轉(zhuǎn)法;實時系統(tǒng)采用高響

應比優(yōu)先調(diào)度算法。

18.說明時間片輪轉(zhuǎn)調(diào)度算法的基本思路。

答:

在采用時間片輪轉(zhuǎn)調(diào)度算法的系統(tǒng)中,將系統(tǒng)中所有的就緒進程按照FCFS原則,排成

一個隊列。每次調(diào)度時將CPU分派給隊首進程,讓其執(zhí)行一個時間片。時間片的長度從幾

個ms到幾百mso在一個時間片結(jié)束時,發(fā)生時鐘中斷。調(diào)度程序暫停當前進程的執(zhí)行,

將其送到就緒隊列的末尾,并通過CPU現(xiàn)場切換執(zhí)行當前的隊首進程,當然,進程可以未

使用完一個時間片,就讓出CPU(如阻塞)。這樣可以保證就緒隊列中的所有進程都有機會獲

得處理器而運行的機會,可以提高進程并發(fā)性和響應時間特性,從而提高資源利用率。

19.試說明多級反饋隊列調(diào)度算法思想。

答:多級反饋隊列調(diào)度算法則不必事先知道各進程的執(zhí)行時間,乂可以滿足各種類型進

程的調(diào)度需要,它是一種目前公認較好的進程調(diào)度算法,它的算法思想如下(設(shè)采用搶占式

調(diào)度):

(I)需要設(shè)置多個就緒隊列,并且為它們分別賦予穴同的優(yōu)先級。每隊列分配不同的時

間片,規(guī)定優(yōu)先級越低則時間片越長。

(2)新進程就緒后,先插入隊列1的末尾,按FCFS算法調(diào)度。若一個時間片未能執(zhí)行

完,則降低插入到隊列2的末尾:依此類推,降低到最后的隊列,則按“時間片輪

轉(zhuǎn)”算法調(diào)度直到完成。

(3)進程由于等待事件而放棄CPU后,進入等待隊列,一旦等待的事件發(fā)生,則回到原

來的就緒隊列。

(4)只有當較高優(yōu)先級的隊列為空時,才調(diào)度較低優(yōu)先級隊列中的進程執(zhí)行。如果進程

執(zhí)行時有新進程進入較高優(yōu)先級的隊列,則需要重新調(diào)度,搶先執(zhí)行新進程,并把

被搶先的進程插入原隊列的末尾。

20.什么是靜態(tài)和動態(tài)優(yōu)先級?如何確定靜態(tài)優(yōu)先級?

答:

靜態(tài)優(yōu)先級是在系統(tǒng)創(chuàng)建時確定的,一經(jīng)確定之后在整個進程運行期間不再改變。

動態(tài)優(yōu)先級是在進程運行前先確定一個優(yōu)先級,進程運行過程中根據(jù)進程等待時間的長

短、執(zhí)行時間的多少、輸入輸出信息量的大小等,通過計算得到新的優(yōu)先級。

21.在一個單道批處理系統(tǒng)中,一組作'他的到達時間和運行時間如下表所示。試計算使用先

來先服務、短作業(yè)優(yōu)先、高響應比優(yōu)先算法時的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間.

作業(yè)到達時間運行時間

18.01.0

28.50.5

39.00.2

49.10.1

答:

用T表示周轉(zhuǎn)時間,川W表示帶權(quán)周轉(zhuǎn)時間

FCFS的作業(yè)調(diào)度情況如F:

作業(yè)提交時間運行時間開始時間結(jié)束時間周轉(zhuǎn)時間帶權(quán)周轉(zhuǎn)時間

18.01.08.09.01.01.0

28.50.59.09.51.02.0

39.00.29.59.70.73.5

49.10.19.79.80.77.0

FCFS的T=(1.0+1.0+0.7+0.7)/4=0.85W=(1.0+2.0+3.5+7.0)/4=3.375

SJF的作業(yè)調(diào)度情況如下:

作業(yè)提交時間運行時間開始時間結(jié)束時間周轉(zhuǎn)時間帶權(quán)周轉(zhuǎn)時間

18.01.08.09.01.01.0

28.50.59.39.81.32.6

39.00.29.09.20.21.0

49.10.19.29.30.22.0

SJP的T=(1.0+1.3+0.2+0.2)/4=0.675W=(1.0+2.6+1.0+2.0)/4=1.65

高響應比優(yōu)先的作業(yè)調(diào)度情況如下:

作業(yè)提交時間運行時間開始時間結(jié)束時間周轉(zhuǎn)時間帶權(quán)周轉(zhuǎn)時間

18.01.08.09.01.01.0

28.50.59.09.51.02.0

39.00.29.69.80.84.0

49.10.19.59.60.55.0

高響應比算法的丁=(1.O+1.O+O.8+O.5)/4=0.825W=(1.0+2.0+4.0+5.0)/4=3.0

22.Linux進程有幾個狀態(tài),簡述各狀態(tài)的轉(zhuǎn)換條件。

答:1)運行狀態(tài)2)可中斷睡眠狀態(tài)3)不可中斷睡眠狀態(tài)4)暫停狀態(tài)5)跟蹤狀態(tài)6)僵死狀

態(tài)7)退出狀態(tài)

進程創(chuàng)建時的狀態(tài)為不可中斷睡眠狀態(tài),在do_fork()結(jié)束前被父進程喚醒后,變?yōu)?/p>

執(zhí)行狀態(tài),適當時候獲得CPU。獲得CPU且正在運行的進程若申請不到某個資源時,進入

睡眠狀態(tài),如果調(diào)用sleep_on(),則其狀態(tài)變?yōu)椴豢芍袛嗨郀顟B(tài),如果調(diào)用

interruptiblesleep9n(),則其狀態(tài)變?yōu)榭芍袛嗨郀顟B(tài),當進程獲取所申請的資源時,

睡眠進程進入運行狀態(tài)。當系統(tǒng)調(diào)用do_exit()時,進程進入僵死狀態(tài)。若進程通過系統(tǒng)調(diào)

用設(shè)置標志PF_SYSTRACE,則在系統(tǒng)調(diào)用返回前進入函數(shù)syscall」race(),狀態(tài)改為暫停。

只有通過其他進程發(fā)送的信號SIGJGLL或SIG/0NT,才能把暫停狀態(tài)進程喚醒,重新進入

run-queue隊列。

23.Linux中的線程調(diào)度算法有幾種,簡述之?

答:調(diào)度策略有三種:

(I)SCHEDJDTHER(普通分時調(diào)度策略):它是缺省調(diào)度策略,適用于優(yōu)先級為0的線

程,它為鏈表中的每個線程分配時間片,保證鏈表中的每個線程有公平的執(zhí)行時間。

(2)SCHED_FIFO(先進先出調(diào)度策略):適用于優(yōu)先級高于0的線程,當SCHED_FIFO

中有可運行線程時,該線程會搶先任何當前運行的SCHED_OTHER線程稱為當前運行

線程。當有優(yōu)先級更高的線程搶先時,該進程保留在對應鏈表的頭部,在高優(yōu)先級線程

結(jié)束后立即投入運行。

⑶SCHED_RR(循環(huán)調(diào)度策略):它是SCHED_FIFO策略的簡單增強,增加了時間片限

制。如果某個SCHED_RR運行的線程等于或超過分配給它時間片,結(jié)束運行,排到對

應鏈表的尾部。

第44位恁同步與無做

1.什么是進程同步?什么是進程互斥?

答:

同步是進程間的直接制約關(guān)系,這種制約主要源于進程間的合作。進程同步的主要任務

就是使并發(fā)執(zhí)行的各進程之間能有效地共享資源和相互合作,從而在執(zhí)行時間、次序上相互

制約,按照一定的協(xié)議協(xié)調(diào)執(zhí)行,使程序的執(zhí)行具有可再現(xiàn)性。

進程互斥是進程間的間接制約關(guān)系,當多個進程需要使用相同的資源,而此類資源在任

一時刻卻只能供一個進程使用,獲得資源的進程可以繼續(xù)執(zhí)行,沒有獲得資源的進程必須等

待,進程的運行具有時間次序的特征,誰先從系統(tǒng)獲得共享資源,誰就先運行,這種對共享

資源的排它性使用所造成的進程間的間接制約關(guān)系稱為進程互斥?;コ馐且环N特殊的同步方

式。

2.進程執(zhí)行時為什么要設(shè)置進入?yún)^(qū)和退出區(qū)?

答:

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

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

并設(shè)置正被訪問標志,如果正被訪問,則本進程不能進入臨界區(qū),實現(xiàn)這一功能的代碼成為

“進入?yún)^(qū)”代碼;在退出臨界區(qū)后,必須執(zhí)行“退出區(qū)”代碼,用于恢更未被訪問標志。

3.同步機構(gòu)需要遵循的基本準則是什么?請簡要說明。

答:

同步機制都應遵循卜面的4條準則:

(1)空閑讓進。當無進程處于臨界區(qū)時,允許進程進入臨界區(qū),并且只能在臨界區(qū)運行

有限的時間。

(2)忙則等待。當有一個進程在臨界區(qū)時,其它欲進入臨界區(qū)的進程必須等待,以保證

進程互斥地訪問臨界資源。

(3)有限等待。對要求訪問臨界資源的進程,應保證進程能在有限時間內(nèi)進入臨界區(qū),

以免陷入“饑餓”狀態(tài)。

(4)讓權(quán)等待。當進程不能進入臨界區(qū)時,應立即放棄占用CPU,以使其它進程有機

會得到CPU的使用權(quán),以免陷入“饑餓”狀態(tài)。

4.整型信號量是否能完全遵循同步機構(gòu)的四條基本準則?為什么?

答:

不能。在整型信號量機制中,未遵循“讓權(quán)等待”的準則。

5.在生產(chǎn)者-消費者問題巾,若缺少了V(full)或V(empty),對進程的執(zhí)行有什么影響?

答:

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

使緩沖池存放的產(chǎn)品已滿了,但full的值還是0,這樣消費者進程在執(zhí)行P(full)時會認為緩

沖池是空的而取不到產(chǎn)品,那么消費者進程則會一直處于等待狀態(tài)。

如果缺少了V(cmpty),例如在生產(chǎn)者進程向n個緩沖區(qū)放滿產(chǎn)品后消費者進程才開始

從中取產(chǎn)品,這時emply=O,full=n,那么每當消費者進程取走一個產(chǎn)品時.emply并沒有被

改變,直到緩沖池中的產(chǎn)品都取走了,empty的值也一直是0,即使目前緩沖池有n個空緩

沖區(qū),生產(chǎn)者進程要想再往緩沖池中投放產(chǎn)品會因申請不到空緩沖區(qū)而被阻塞。

6.在生產(chǎn)者-消費者問題中,若將P(full)和P(empty)交換位置,或?qū)(full)或V(empty)交換

位置,對進程執(zhí)行有什么影響?

答:

對full和empty信號量的P、V操作應分別出現(xiàn)在合作進程中,這樣做的目的是能正確

表征各進程對臨界資源的使用情況,保證正確的進程通信聯(lián)絡(luò)。

7.利用信號量寫出不會出現(xiàn)死鎖的哲學家進餐問題的算法。

答:

對哲學家按順序從0到4編號,哲學家i左邊的筷子的編號為i,哲學家右邊的筷子的

編號為(i+1)%5。

semaphorechopstick[5]={I};

〃定義信號量數(shù)組chopstick[5],由于倚子是臨街資源(互斥),故設(shè)置初值均為1。

Pi(){

//i號哲學家的進程

do{

if(i<(i+l)%5)

{

wait(chopstick[i]);

wait(chopstick[(i+1)%5]);

)

else

(

wait(chopstick[(i+l)%5]);

wait(chopstick[i]);

}

eat

signal(chopsticklij);

signal(chopstick[(i+1)%5]);

think

}while(l);

I

8.利用AND型信號量和管程解決生產(chǎn)者-消費者問題。

答:

利用AND信號量解決生產(chǎn)者一消費者問題的算法描述如下:

varmutex,empty,full:semaphoresl,n,0;

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

inout:integer:=0,0;

begin

parbegin

producer:begin

repeal

produceaniteminnextp;

Swait(cmpty,mutex);

buffer(in):=nextp;

in:=(in+1)modn;

Ssignal(mutcx,full);

untilfalse;

end

consumer:begin

repeat

Swait(full,mutex);

nextc:=buffer(out);

out:=(out+1)modn;

Ssignal(mutex,empty);

consumetheiteminnextc;

untilfalse;

end

parend

end

利用管程機制解決生產(chǎn)者-消費者問題,首先需要建立一個管程Producerconsumer,其

中包含兩個過程insert(item)和consumer(item)o生產(chǎn)者-消費者同步問題可以用偽代碼掂述如

下:

monitorProducerconsumer

conditionfull,empty;

intcount;

voidinsert(intitem)

(

if(count==N)wait(full);

insert(itcm);

coun(=count+l;

if(count==l)signal(empty);

)

intremoverO

(

if(count==0)wait(empty);

rcmove=rcmove_itcm;

count=count-1;

if(count==N-l)signal(fuil);

count=0;

endmonitor

voidproducer()

(

while(true)

(

item=produce_i(em;

ProducerConsumer.inscrt(itcm);

)

)

voidconsumcr()

(

while(true)

(

item=PrcducerConsumer.remove;

consume^item)

}

1

9.進程的高級通信機制有哪些?請簡要說明。

答:

進程的高級通信機制分為三大類:共享存儲系統(tǒng)、消息傳遞系統(tǒng)和管道通信系統(tǒng)。

(1)共享存儲器系統(tǒng):在共享存儲器系統(tǒng)中,相互通信的進程通過共享某些數(shù)據(jù)結(jié)構(gòu)或

共享存儲區(qū)實現(xiàn)進程之間的通信。該系統(tǒng)又可進一步細分為兩種方式:基于共享數(shù)

據(jù)結(jié)構(gòu)的通信方式和基于共享存儲區(qū)的通信方式。

(2)消息傳遞系統(tǒng):消息傳遞機制可以實現(xiàn)不同主機間多個CPU上進程的通信。這種

方式需要使用兩條原語send和receive來發(fā)送和接收格式化的消息(message)。

(3)管道通信系統(tǒng):管道通信是一種以文件系統(tǒng)為基礎(chǔ)實現(xiàn)的適用于在進程之間實現(xiàn)大

量數(shù)據(jù)傳送的通信方式。

10.什么是死鎖?產(chǎn)生死鎖的原因和必要條件是什么?

答:

所謂死鎖是指在一個進程集合中的所有進程都在等待只能由該集合中的其它一個進程

才能引發(fā)的事件而無限期地僵持下去的局面。

產(chǎn)生死鎖的原因可以歸結(jié)為兩點:1)競爭資源,2)各進程之間的推進順序不當。

產(chǎn)生死鎖的必要條件有四個:1)互斥條件,2)不剝奪條件,3)請求和保持條件,4)

環(huán)路條件。

11.死鎖的預防策略有哪些?請簡要說明。

答:

死鎖的預防策略有三,說明如下:

(1)摒棄請求和保持條件:為摒棄請求和保持條件,系統(tǒng)中需要使用靜態(tài)資源分配法,

該方法規(guī)定每一個進程在開始運行前都必須一次性地申請其在整個運行過程中所

需的全部資源。此時,若系統(tǒng)有足夠的資源,就把進程需要的全部資源一次性地分

配給它;若不能全部滿足進程的資源請求,則一個資源也不分給它,即使有部分資

源處于空閑狀態(tài)也不分配給該進程。這樣,當一個進程申請某個資源時,它不能占

有其它任何資源,在進程運行過程中也不會再展出資源請求。這種方法破壞了請求

和保持條件,從而避免死鎖的發(fā)生。

(2)摒棄不剝奪條件:要摒棄“不剝奪條件”,可以使用如下策略:進程在需要資源時

才提出請求,并且進程是逐個地申請所需資源,如果?個進程已經(jīng)擁有了部分資源,

然后又申請另一個資源而不可得時,其現(xiàn)有資源必須全部釋放。在這種方法中,進

程只能在獲得其原有資源和所申請的新資源時才能繼續(xù)執(zhí)行。

(3)摒棄環(huán)路等待條件:為確保環(huán)路等待條件不成立,可以在系統(tǒng)中實行資源有序分配

策略,即系統(tǒng)中的所有資源按類型被賦予一個唯一的編號,每個進程只能按編號的

升序申請資源。

12.某系統(tǒng)中有A、B、CD四類資源,且其總數(shù)量都是8個。某時刻系統(tǒng)中有5個進程,

現(xiàn)在對該時刻的狀態(tài)進行安全分析:

由于Available向量為(3,4,4,1),所以Work向量初始化為(3,4,4,1)

此時的Work小于任意的Necd[i]向量,所以系統(tǒng)處于不安全狀態(tài)

由于Requesl2(l,l,l,l)vAvailable(3,4,4」)且Request(1,1,1,1)<Need2(1,1,1,2)

所以先試著把P2所申請的資源分配給它,Available變?yōu)?2,3,3。)得到系統(tǒng)狀態(tài)如下

表所示:

AllocationNeedAvailable

ABCDABCDABCD

P000220043

Pl11002630

P2321421042330

P320004020

P402220554

然后進行安全性檢測:

此時Available向量為(2,3,3,0),所以Work向量初始化為(2,3,3,0),此時的Work小

于任意的Need[i]向量,所以系統(tǒng)處于不安全狀態(tài),所以不可以為P2分配資源

13.三個進程Pl、P2、P3都需要5個同類資源才能正常執(zhí)行直到終止,且這些進程只有在

需要設(shè)備時才申請,則該系統(tǒng)中不會發(fā)生死鎖的最小資源數(shù)量是多少?請說明理由。

答:

系統(tǒng)中不會發(fā)生死鎖的最小資源數(shù)量是13,這樣可以保證當每一個進程都占有4個資

源的時候,有一個進程可以獲得最后一個資源后被運行,運行完畢后釋放資源,于是其余進

程也能順利運行完,所以不會死鎖。

14.在解決死鎖問題的幾個方法中,哪種方法最易于實現(xiàn),哪種方法使資源的利用率最高?

答:

預防死鎖這個方法實現(xiàn)簡單,效果突出;避免死鎖這種方法系統(tǒng)吞吐量和資源利用率較

I^JO

15.考慮由n個進程共享的具有m個同類資源的系統(tǒng),如果對于i=l,2,3,…,n,有Need[i]>0并

且所有進程的最大需求量之和小于m+n,試證明系統(tǒng)不會產(chǎn)生死鎖。

答:

本題中只有一種資源,不妨設(shè)Max[i]為第i個進程的資源總共需要量,Need[i]為第i個

進程還需要的資源數(shù)最,Allocation[i]表示第i個進程已經(jīng)分配到的資源數(shù)最,Available為系

統(tǒng)剩余的資源數(shù),其中i=l,2,3,…,n。

假設(shè)此系統(tǒng)可以發(fā)生死鎖。

系統(tǒng)剩余的資源數(shù)量為Available(Available*。),曰假設(shè),因為系統(tǒng)處于死鎖狀態(tài),所

以Available個資源無法分配出去,所以每個進程的Need[i]都大于Available,

即Need[i]>=Available+1

所以ENeed[i]>=n*(Available+l)=n*Available+n,①

因為剩下的資源數(shù)是Available,所以已經(jīng)分配出去的資源數(shù)為m-Available;

即EAllocation[i]=m-Available②

由①式和②式可以得到:

ENeed[il+EAllocaiion[il>=n*Available+n+m-Available=(n-1)*Available+m+ri③

又因為n>=l,所以(n-1)>=0,又因為Available,:。,所以(n-1)*Available>=0④

由③式和④式可以得到ENeed[i]+LAllocalion[il>=04-m+n=m+n⑤

根據(jù)題意如:EMax[i]<m+n?

又因為:Max[i]=Need[i]+AHocation[i],所以ZMax[i]=ENeed[i]+EAllocation[i]⑦

由⑥式和⑦式得:ENeedfil+EAllocation[i]<m+n⑧

由假設(shè)推出的⑤式和由題意推出的⑧式相矛盾,所以假設(shè)是錯誤的,即系統(tǒng)不會產(chǎn)生

死鎖。

16.某車站售票廳,在任何時刻最多可以容納20名購票者進入,當售票廳中少于20名購票

者時,廳外的購票者可立即進入,否則需要在外面等待。若把一個購票者看作一個進程,請

回答以下問題:

①用信號量管理這些并發(fā)進程時,應該怎樣定義信號量,寫出信號量的初值以及信號

量的各取值的含義。

②根據(jù)所定義的信號量,寫出相應的程序來保證進程能夠正確地并發(fā)執(zhí)行。

③如果購票者最多為n個人,試寫出信號量取值的可能變化范圍(最大值和最小值)。

答:

①定義信號量S,初值為20,當s>0時,它表示可以繼續(xù)進入購票廳的人數(shù),當s=0

時表示廳內(nèi)已有20人正在購票,當s<0時|s|表示正等待進入的人數(shù)。

?semaphoreS=20;

begin

parbcgin

procedure:begin

repeat

wait(s);

Enterandbuyticket;

signal(s);

untilfalse;

end

parend

end

③最大值為20,最小值為20-n

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

單緩沖區(qū)中取出數(shù)據(jù)進行計算。試寫出利用信號量機制實現(xiàn)兩個任務共享單緩沖區(qū)的同步算

法。

答:

semaphoremutex=1;

semaphorefull=0;

semaphoreempty=I;

begin

parbegin

collect:

begin

repeat

collectdatainnextp;

wait(empty);

wait(mutex);

buffer:=nextp;

signal(mutex);

signal(full);

untilfalse;

end

compute:

begin

repeat

wait(full?;

wait(mutex);

nextc:二buffer;

signal(mutex);

signal(cmpty);

computedatainnextc;

untilfalse;

end

parend

end

18.桌上有一空盤,允許存放一只水果。爸爸可以向盤中放蘋果,也可以向盤中放桔子,兒

子專等著吃盤中的桔子,女兒專等著吃盤中的蘋果。規(guī)定當盤空時一次只能放一只水果供吃

者用,請用信號量實現(xiàn)爸爸、兒子和女兒3個并發(fā)進程的同步。

答:

本題中應設(shè)置三個信號量S、S。、工,信號量S表示盤中是否為空,其初值為1;S。表

示盤中是否有桔子,其初值為0:Sa表示盤中是否有蘋縣,其初值為0。同步描述如下:

爸爸:P(S);兒子:P(So);女兒:P(Sa);

將水果放入盤中從盤子中取出桔子從盤子中取出蘋果

if(放入的是桔子)v(So);V(S);V(S);

elsev(Sa);吃桔子吃蘋果:

19.設(shè)某系統(tǒng)中有3個進程Get、Process和Pul,共用兩個緩沖區(qū)bufferl和buffer2。假設(shè)bufferl

中最多可以放II個信息,現(xiàn)在已經(jīng)放入了兩個信息;buffer2最多可以放5個信息。Get進

程負責不斷地將輸入信息送入buffcrl中,Process進程負責從buffer1中取出信息進行處理,

并將處理結(jié)果送到buffer2中,Pul進程負責從buffer2中讀取結(jié)果并輸出。試用信號量機制

實現(xiàn)它們的同步與互斥。

答:

semaphoreempty1=9;//buffer1空的數(shù)吊:

semaphorefulll=2;//buffer1滿的數(shù)量

semaphoreempty2=5;//buffer2空的數(shù)量

semaphorefull2=0;〃buffer2滿的數(shù)量

ini,in2,outl,out2:integer:=2,0,1,0;

Get0(

whi1e(1){

wait(empty1)

ini=(inl+l)modl1

signal(fulll)

)

)

Process(){

while(1){

wait(fulll)

out1=(out1+1)modi1

signal(empty1)

signal(empty2)

in2=(in2+l)mod5

signal(full2)

)

)

Put(){

whi1c(1){

wait(full2)

out2=(out2+l)mod5

signal(empty2)

)

)

20.某寺廟有大、小和尚若干,另有一水缸。由小和尚挑水入缸供大和尚飲用。水缸可以容

10桶水,水取自同一井。水井很窄,每次只能容一個水桶取水。水桶總數(shù)為3。每次入、取

缸水僅為1桶,且不可同時進行。試給出取水、入水的同步算法。

答:

sem叩horewell=l;//保證互斥地訪問水井的信號量

semaphorevat=I;//保證互斥地訪問水缸的信號品

semaphoreempty=10;//表示水缸中剩余的空間能容納的水的桶數(shù)

semaphorefull=0;//表示水缸中水的桶數(shù)

sem叩horepail=3;//保證互斥地訪問臨界資源水桶的信號量

//大和尚進程

big_monk(){

while(l){

wait(full);

wait(pail);

wait(vat);

usepailtogetwaterfromvat

signal(vat);

signal(empty);

drinkwaterinthepail

signal(pail);

}

I

〃小和尚進程

little_monk(){

while(l){

wait(empty);\

wait(pail);

wait(well);

usepailtogetwaterfromwell

signal(well);

wait(vat);

pourwatertothevat

signal(vat);

signal(full);

signal(pail);

1

)

21.在銀行家算法中,若出現(xiàn)卜述資源分配情況:

ProcessAllocationNeed/Xvailable

P0003200121622

Pl10001750

P213542356

P300320652

P400140656

試問:

①該狀態(tài)是否安全?

②若進程P2提出請求Request(1,2,2,2)后,系統(tǒng)能否將資源分配給它?

答:

現(xiàn)在對該時刻的狀態(tài)進行安全分析:

由于Available向量為(1,6,2,2),所以Work向量初始化為(1,6,2,2)該時刻

的安全性檢查表如下:

WorkNeedAllocationWork+AllocationFinish

ABCDABCDABCDABCD

P01622001200321654True

P31654065200321686True

P416860656001416910True

P2169

溫馨提示

  • 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

提交評論