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

下載本文檔

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

文檔簡介

操作系統(tǒng)原理與實踐教程(第二版)習題答案

第1章操作系統(tǒng)概論

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

解:

操作系統(tǒng)就是一組管理與控制計算機軟硬件資源并對各項任務(wù)進行合

理化調(diào)度,且附加了各種便于用戶操作的工具的軟件層次。

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

作系統(tǒng)的最基本特征,也是最重要的特征,其它三個特性均基于并發(fā)性而

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

解:

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

性。其中有效性指的是OS應(yīng)能有效地提高系統(tǒng)資源利用率和系統(tǒng)吞吐量。

方便性指的是配置了OS后的計算機應(yīng)該更容易使用。這兩個性質(zhì)是操作

系統(tǒng)最重要的設(shè)計目標。開放性指的是OS應(yīng)遵循世界標準規(guī)范,如開放

系統(tǒng)互連0SI國際標準。可擴展性指的是OS應(yīng)提供良好的系統(tǒng)結(jié)構(gòu),使

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

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

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

解:

現(xiàn)代操作系統(tǒng)的主要任務(wù)就是維護一個優(yōu)良的運行環(huán)境,以便多道程

序能夠有序地、高效地獲得執(zhí)行,而在運行的同時,還要盡可能地提高資

源利用率和系統(tǒng)響應(yīng)速度,并保證用戶操作的方便性。因此操作系統(tǒng)的基

本功能應(yīng)包括處理器管理、存儲器管理、設(shè)備管理和文件管理。此外,為

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

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

中通常還具備基本的網(wǎng)絡(luò)服務(wù)功能和信息安全防護等方面的支持。

(4)試說明實時操作系統(tǒng)和分時操作系統(tǒng)在交互性、及時性和可靠性

方面的異同。

解:

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

有交互性,

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

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

實時控制系

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

的延遲為標準。

可靠性:實時系統(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)控器(virtualmachinemonitor),它運行于裸機之上并提

供多道程序功能。該系統(tǒng)向上層提供多個對裸機硬件精確復(fù)制的虛擬機,

這些復(fù)制品均包含核心態(tài)、用戶態(tài)、I/O處理、中斷以及其它真實機器所

應(yīng)該具有的全部功能。

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

在一個特定虛擬機上,分配給各用戶的不同虛擬機上可以隨用戶的個人愛

好和操作習慣不同而采用不同的操作系統(tǒng)。在用戶看來就是直接在自己獨

享的一臺裸機上工作。(7)試說明客戶機/服務(wù)器結(jié)構(gòu)的操作系統(tǒng)為什么獲

得廣泛應(yīng)用。

解:

客戶機/服務(wù)器結(jié)構(gòu)的操作系統(tǒng)具有不同于傳統(tǒng)集中式OS的一系列獨

特優(yōu)點,使得其在網(wǎng)絡(luò)時代大為流行。主要原因有以下幾點:

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

的處理能力,部

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

量。2.對于重要數(shù)據(jù),可以將其放在受到嚴密保護的服務(wù)器所在的局域網(wǎng)

內(nèi)集中管理,以

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

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

范圍很大。4.易于修改用戶程序。對客戶機的修改和增刪很方便,甚至可

以由用戶自行進行。(8)處理機管理有哪些主要功能?請簡要描述。

解:

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

其分配所需資源,同時還要管理和控制各用戶的多個進程協(xié)調(diào)運行,確保

各個進程可以正確的通信。在多道程序OS中,這些管理功能最終通過對

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

還依賴于對線程的管理和控制。(9)存儲器管理有哪些主要功能?請簡要

描述。

解:

操作系統(tǒng)所管理的存儲器包括內(nèi)存、外存等,因此存儲器管理的主要

任務(wù)就是將各種存儲器件統(tǒng)一管理,保證多道程序的良好運行環(huán)境,同時

還要兼顧內(nèi)存利用率、邏輯上擴充內(nèi)存的需求以及用戶的感受,提供優(yōu)良

的控制、存取功能,為用戶提供操控存儲器的手段。為實現(xiàn)上述要求,存

儲器管理應(yīng)具有內(nèi)存分配、內(nèi)存回收、內(nèi)存保護、地址映射和虛擬內(nèi)存等

功能。

(10)文件管理有哪些主要功能?請簡要描述。

解:

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

的手段,以方便用戶使用,同時禁止無權(quán)限用戶對他人資源的誤訪問或有

權(quán)限用戶對資源的誤操作。文件管理機制還要能有效管理外存空閑區(qū)域,

根據(jù)文件的大小為其分配和回收空閑區(qū)。為了滿足用戶對響應(yīng)時間的要求,

文件管理機制還應(yīng)實現(xiàn)目錄管理,以便快速地定位文件。文件管理機制能

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

手段,是OS不可或缺的組成部分。

(11)設(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è)備等。

第2章操作系統(tǒng)的界面

(1)請說明系統(tǒng)生成和系統(tǒng)引導(dǎo)的過程。

解:

系統(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)引導(dǎo)的過程:系統(tǒng)引導(dǎo)指的是將操作系統(tǒng)內(nèi)核裝入內(nèi)存并啟動系

統(tǒng)的過程。主要包括初始引導(dǎo)、內(nèi)核初始化、全系統(tǒng)初始化。初始引導(dǎo)工

作由BIOS完成,主要完成上電自檢,初始化基本輸入輸出設(shè)備,載入操

作系統(tǒng)內(nèi)核代碼等工作。內(nèi)核被載入內(nèi)存后,引導(dǎo)程序?qū)PU控制權(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),而程序接口

則提供給用戶在編制程序時使用。

(3)請說明操作系統(tǒng)具有的共性服務(wù)有哪些不同類別,這些類別分別

用于完成什么功能?

解:所有的操作系統(tǒng)都通過一些基本服務(wù)來幫助用戶簡單便捷地使用

計算機各類資源,它們包括以下幾個類別:

1.控制程序運行:系統(tǒng)通過服務(wù)將用戶程序裝入內(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)應(yī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)

提供某種服務(wù)時,便可利用一條系統(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)至相應(yīng)的命令處理程序入口地址,把控制

權(quán)交給該處理程序去執(zhí)行,最后將有關(guān)處理結(jié)果(包括出錯信息)送屏幕顯

不O

第3章處理器管理

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

性?

解:

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

同一項任務(wù)而相互合作,并發(fā)執(zhí)行的程序間的這種相互制約導(dǎo)致了“暫停

一執(zhí)行一暫?!钡拈g斷性運行規(guī)律。

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

種資源。所以,這些資源的狀態(tài)是由多個程序改變的,從而使程序的運行

失去了封閉性。

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

致其失去可再現(xiàn)性。(2)什么是進程?為什么要在操作系統(tǒng)中引入進程?

解:

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

程,它是操作系統(tǒng)進行資源分配和調(diào)度的基本單位。“進程”概念是人們

為了使程序能夠并發(fā)執(zhí)行,并且能對并發(fā)的程序加以描述和控制而引入的。

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

解:

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

的正是為了

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

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

獲得資

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

為一個獨立的單位參加運行。

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

因得不到

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

程序只是一組有序指令的集合,是靜態(tài)實體。

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

標識?

解:

進程控制塊(ProceControlBlock,PCB)是操作系統(tǒng)為了管理進程而設(shè)

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

變化過程。

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

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

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

的唯一標志。進程與PCB是一一對應(yīng)的。

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

解:

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

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

CPU,就可

以馬上投入運行。

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

此時該

進程就可以使用處理器進行數(shù)據(jù)運算和處理。阻塞狀態(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)換為靜止阻塞。調(diào)用激活原語激活后又可以轉(zhuǎn)

換到活動阻塞狀態(tài)。(9)試說明引起進程創(chuàng)建的典型事件。

解:

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

請求。(10)試說明引起進程撤銷的典型事件。

解:

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

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

解:

引起進程阻塞和喚醒的典型事件有:請求系統(tǒng)服務(wù)、啟動某種操作、

新數(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í)行,如

果該進程還有子孫進程,應(yīng)該將它的所有子孫進程終止,防止它們成為不

可控進程;然后回收進程所擁有的資源;最后將被終止進程(它的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)度。

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

調(diào)入多少個

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

配必要的系統(tǒng)資源,如內(nèi)存、外設(shè)等,然后把新創(chuàng)建的進程放入就緒隊列

中,等待被調(diào)度執(zhí)行。

中級調(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)度。低級調(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è)對應(yīng)的進程比正在執(zhí)行的

作業(yè)對應(yīng)進程的運行時

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

程,使之優(yōu)先

執(zhí)行。

(17)在批處理系統(tǒng)、分時系統(tǒng)、實時系統(tǒng)中,應(yīng)分別采用哪種作業(yè)

(進程)調(diào)度算法?

解:

批處理系統(tǒng)采用“先來先服務(wù)調(diào)度算法”;分時系統(tǒng)采用“時間片輪

轉(zhuǎn)法”;實時系統(tǒng)采用“高響應(yīng)比優(yōu)先調(diào)度算法”。

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

解:

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

FCFS原則,排成一個隊列。每次調(diào)度時將CPU分派給隊首進程,讓其執(zhí)

行一個時間片。時間片的長度從幾個m到幾百m。在一個時間片結(jié)束時,

發(fā)生時鐘中斷。調(diào)度程序暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾,

并通過CPU現(xiàn)場切換執(zhí)行當前的隊首進程,當然,進程可以未使用完一個

時間片,就讓出CPU(如阻塞)。這樣可以保證就緒隊列中的所有進程都有

機會獲得處理器而運行的機會,可以提高進程并發(fā)性和響應(yīng)時間特性,從

而提高資源利用率。(19)試說明多級反饋隊列調(diào)度算法思想。

解:多級反饋隊列調(diào)度算法則不必事先知道各進程的執(zhí)行時間,又可

以滿足各種類型進程的調(diào)度需要,它是一種目前公認較好的進程調(diào)度算法。

它的算法思想如下(設(shè)采用搶占式調(diào)度):

1.需要設(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è)的到達時間和運行時間如下

表所示。試計算使用先來先服務(wù)、短作業(yè)優(yōu)先、高響應(yīng)比優(yōu)先算法時的平

均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間。

作業(yè)1234到達時間8.08.59.09.1運行時間1.00.50.20.1解:

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

FCFS的作業(yè)調(diào)度情況如下:作業(yè)1234提交時間8.08.59.09.1運行

時間1.00.50.20.1開始時間8.09.09.59.7結(jié)束時間9.09.59.79.8周轉(zhuǎn)

時間1.01.00.70.7帶權(quán)周轉(zhuǎn)時間1.02.03.57.0FCFS的T=

(1.0+1.0+0.7+0.7)/4=0.85W=(1.0+2.0+3.5+7.0)/4=3.375SJF的作

業(yè)調(diào)度情況如下:作業(yè)1234提交時間8.08.59.09.1運行時間

1.00.50.20.1開始時間8.09.39.09.2結(jié)束時間9.09.89.29.3周轉(zhuǎn)時間

1.01.30.20.2帶權(quán)周轉(zhuǎn)時間1.02.61.02.0SJF的T=(1.0+1.3+0.2+0.2)

/4=0.675W=(1.0+2.6+1.0+2.0)/4=L65高響應(yīng)比優(yōu)先的作業(yè)調(diào)度情況

如下:作業(yè)1234提交時間8.08.59.09.1運行時間1.00.50.20.1開始時

間8.09.09.69.5結(jié)束時間9.09.59.89.6周轉(zhuǎn)時間1.01.00.80.5帶權(quán)周

轉(zhuǎn)時間1.02.04.05.0高響應(yīng)比算法的T=(1.0+1.0+0.8+0.5)

/4=0.825W=(1.0+2.0+4.0+5.0)/4=3.0

第4章進程同步與死鎖

(1)什么是進程同步?什么是進程互斥?

解:

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

程同步的主要任務(wù)就是使并發(fā)執(zhí)行的各進程之間能有效地共享資源和相互

合作,從而在執(zhí)行時間、次序上相互制約,按照一定的協(xié)議協(xié)調(diào)執(zhí)行,使

程序的執(zhí)行具有可再現(xiàn)性。

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

而此類資源在任一時刻卻只能供一個進程使用,獲得資源的進程可以繼續(xù)

執(zhí)行,沒有獲得資源的進程必須等待,進程的運行具有時間次序的特征,

誰先從系統(tǒng)獲得共享資源,誰就先運行,這種對共享資源的排它性使用所

造成的進程間的間接制約關(guān)系稱為進程互斥。互斥是一種特殊的同步方式。

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

解:

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

段用于檢查欲訪問的臨界資源是否正被訪問的代碼,如果未被訪問,該進

程便可進入臨界區(qū)對資源進行訪問,并設(shè)置正被訪問標志,如果正被訪問,

則本進程不能進入臨界區(qū),實現(xiàn)這一功能的代碼成為“進入?yún)^(qū)”代碼;在

退出臨界區(qū)后,必須執(zhí)行“退出區(qū)”代碼,用于恢復(fù)未被訪問標志。(3)

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

解:

同步機制都應(yīng)遵循下面的4條準則:

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

能在臨界區(qū)運行

有限的時間。

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

須等待,以保證

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

3.有限等待。對要求訪問臨界資源的進程,應(yīng)保證進程能在有限時間

內(nèi)進入臨界區(qū),

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

4.讓權(quán)等待。當進程不能進入臨界區(qū)時,應(yīng)立即放棄占用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(empty),例如在生產(chǎn)者進程向n個緩沖區(qū)放滿產(chǎn)品后

消費者進程才開始從中取產(chǎn)品,這時empty=0,full=n,那么每當消費者

進程取走一個產(chǎn)品時empty并沒有被改變,直到緩沖池中的產(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操作應(yīng)分別出現(xiàn)在合作進程中,這樣

做的目的是能正確表征各進程對臨界資源的使用情況,保證正確的進程通

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

解:

emaphorechoptick[5]={l};

〃定義信號量數(shù)組Choptick[5],由于倚子是臨街資源(互斥),故

設(shè)置初值均為1。Pi(){

//i號哲學家的進程do{

if(i

wait(choptick[i]);

wait(choptick[(i+l)%5]);}ele{

wait(choptick[(i+l)%5]);wait(choptick[i]);}

eat

ignal(choptick[i]);

ignal(choptick[(i+l)%5]);think}while⑴;}

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

解:

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

某,empty,full:emaphore:=l,n,0;

buffer:array[0,...,n-l]ofitem;inout:integer:=0,0;begin

parbegin

producer:beginrepeat...

produceaniteminne某tp;…

Swait(empty,mute某);buffer(in):=ne某

tp;in:=(in+l)modn;Signal(mute某,full)juntilfale;end

conumer:beginrepeat

Swait(full,mute某);ne某

tc:=buffer(out);out:=(out+1)modn;Signal(mute

某,empty);conumetheiteminne某tcjuntilfale;endparendend

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

ProducerConumer,其中包含兩個過程inert(item)和conumer(item)。生

產(chǎn)者-消費者同步問題可以用偽代碼描述如下:

monitorProducerConumer

conditionfull,empty;intcount;voidinert(intitem)(if(count==N)

wait(full);inert(item);count=count+l;if(count==l)ignal(empty);}i

ntremover(){if(count==0)wait(empty);remove=remove_item;count=cou

nt-1;if(count==N-

1)ignal(full);}count=0;endmonitorvoidproducer(){while(true){item

=produce_item;ProducerConumer.inert(item);}}

voidconumer(){while(true){item=ProducerConumer.remove;conume

(item)}}

(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上進程

的通信。這種

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

(meage)。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)路條件。

(n)死鎖的預(yù)防策略有哪些?請簡要說明。

解:

死鎖的預(yù)防策略有三,說明如下:

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)中實行資源有序分配

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

刻系統(tǒng)中有5個進程,判斷下列資源狀態(tài)是否安全?若進程P2申請資源

(1,1,1,1),能否為其分配?

進程

P0PlP2P3P4NeedABCD00432630321540200554A11ocationABCD002211002103

20000222解:

現(xiàn)在對該時刻的狀態(tài)進行安全分析:由于Available向量為(3,4,

4,1),所以Work向量初始化為(3,4,4,1)此時的Work小于任意的

Need[i]向量,所以系統(tǒng)處于不安全狀態(tài)

由于Requet2(1,1,1,1)

AllocationAP00B0C2D2NeedA0B0C4D3AvailableABCDP11P23P32P40120

22222040222406105302504042330然后進行安全性檢測:

此時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),哪種方法

使資源的利用率最高?

解:

預(yù)防死鎖這個方法實現(xiàn)簡單,效果突出;避免死鎖這種方法系統(tǒng)吞吐

量和資源利用率較高。

(15)考慮由n個進程共享的具有m個同類資源的系統(tǒng),如果對于

i=l,2,3,…,n,有Need[i]>0并且所有進程的最大需求量之和小于m+n,

試證明系統(tǒng)不會產(chǎn)生死鎖。

解:

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

量,Need[i]為第i個進程還需要的資源數(shù)量,Allocation"]表示第i個

進程已經(jīng)分配到的資源數(shù)量,Available為系統(tǒng)剩余的資源數(shù),其中

i=l,2,3,no

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

系統(tǒng)剩余的資源數(shù)量為Available(Available》:。),由假設(shè),因為

系統(tǒng)處于死鎖狀態(tài),所以Available個資源無法分配出去,所以每個進程

的Need[i]都大于Available,

即Need[i]>=AvaiIabIe+1

所以ENeed[i]>=n某(Available+l)=n某Available+n,①因為剩下

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

即XAllocation[i]=m-Available②由①式和②式可以得到:

ZNeed[i]+SAllocation[i]>=n某Available+n+m-Available=(n-

1)某Available+m+n③又因為n>=l,所以(n-1)>=0,又因為

Available》:。,所以(nT)某Available》:。④由③式和④式可以得到

ZNeed[i]+SAllocation[i]>=0+m+n=m+n⑤根據(jù)題意知:XMa某[i]

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

售票廳中少于20名購票者時,廳外的購票者可立即進入,否則需要在外

面等待。若把一個購票者看作一個進程,請回答以下問題:

①用信號量管理這些并發(fā)進程時,應(yīng)該怎樣定義信號量,寫出信號量

的初值以及信號量的各取值的含義。

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

執(zhí)行。

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

大值和最小值)。解:

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

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

人數(shù)。

②emaphoreS=20;

begin

parbegin

procedure:beginrepeatwait();

Enterandbuyticket;ignal()juntilfale;

end

parendend

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

(17)在測量控制系統(tǒng)中的數(shù)據(jù)采集任務(wù)時,把所采集的數(shù)據(jù)送往一單

緩沖區(qū);計算任務(wù)從該單緩沖區(qū)中取出數(shù)據(jù)進行計算。試寫出利用信號量

機制實現(xiàn)兩個任務(wù)共享單緩沖區(qū)的同步算法。

解:

emaphoremute某=1;

emaphorefull=0;emaphoreempty=l;begin

parbegin

collect:begin

repeat

collectdatainne某tpjwait(empty);wait(mute某);

buffer:=ne某tp;ignal(mute某);ignal(full)juntilfale;

end

repeat

wait(full);

wait(mute某);

ne某tc:=buffer;ignal(mute某);ignal(empty);

untilfale;

endparendend

(18)桌上有一空盤,允許存放一只水果。爸爸可以向盤中放蘋果,也

可以向盤中放桔子,兒子專等著吃盤中的桔子,女兒專等著吃盤中的蘋果。

規(guī)定當盤空時一次只能放一只水果供吃者用,請用信號量實現(xiàn)爸爸、兒子

和女兒3個并發(fā)進程的同步。

解:

本題中應(yīng)設(shè)置三個信號量S、So、Sa,信號量S表示盤中是否為空,

其初值為1;So表示盤中是否有桔子,其初值為0;Sa表示盤中是否有蘋

果,其初值為0。同步描述如下:爸爸:P(s);兒子:P(So);女兒:P(Sa);

將水果放入盤中從盤子中取出桔子從盤子中取出蘋果if(放入的是桔

子)v(So);V(S);V(S);elev(Sa);吃桔子吃蘋果;

(19)設(shè)某系統(tǒng)中有3個進程Get、Proce和Put,共用兩個緩沖區(qū)

bufferl和buffer2。假設(shè)bufferl中最多可以放11個信息,現(xiàn)在已經(jīng)放

入了兩個信息;buffer2最多可以放5個信息。Get進程負責不斷地將輸

入信息送入bufferl中,Proce進程負責從bufferl中取出信息進行處理,

并將處理結(jié)果送到buffer2中,Put進程負責從buffer2中讀取結(jié)果并輸

出。試用信號量機制實現(xiàn)它們的同步與互斥。

解:

emaphoreempty1=9;//bufferl空的數(shù)量emaphorefulll=2;//bufferl

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

emaphorefu112=0;//buffer2滿的數(shù)量

ini,in2,outl,out2:integer:=2,0,1,0;Get(){while(1){

wait(emptyl)

inl=(inl+l)modllignal(fulll)}

)

Proce(){

while(l){wait(fulll)

out1=(outl+1)modllignal(emptyl)

ignal(empty2)in2=(in2+l)mod5ignal(full2)}

)

Put(){

while(1){wait(full2)

out2=(out2+l)mod5ignal(empty2)}

(20)某寺廟有大、小和尚若干,另有一水缸。由小和尚挑水入缸供大

和尚飲用。水缸可以容10桶水,水取自同一井。水井很窄,每次只能容

一個水桶取水。水桶總數(shù)為3。每次入、取缸水僅為1桶,且不可同時進

行。試給出取水、入水的同步算法。

解一、問題分析:

從井中取水并放入水缸是一個連續(xù)的動作可以視為一個進程,從缸中

取水為另一個進程設(shè)水井和水缸為臨界資源,引入mute某1,mute某2;

三個水桶無論從井中取水還是放入水缸中都一次一個,應(yīng)該給他們一個信

號量count,搶不到水桶的進程只好為等待,水缸滿了時,不可以再放水

了。設(shè)empty控制入水量,水缸空了時,不可取水設(shè)full

varmute某1,mute某2,empty,full,count:emaphore;mute某

1:=mute某2:=1;empty:=10;full:=0;count:=3;cobegin

ProcedureFetch_WaterProcedureDrink_Waterbeginbeginwhiletruew

hiletruep(empty);p(full);P(count);p(count);P(mute某1);p(mute某

2);GetWater;Getwaterandv(mute某1);Drinkwater;P(mute某2);p(mute

某2);purewaterintothejar;v(empty);v(mute某

2);v(count);v(count);end

v(full);endcoend

解二:

emaphorewell=l;〃保證互斥地訪問水井的信號量emaphorevat=l;//

保證互斥地訪問水缸的信號量

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

emaphorefull=0;〃表示水缸中水的桶數(shù)

emaphorepail=3;〃保證互斥地訪問臨界資源水桶的信號量〃大和尚

進程big_monk(){while(1){

wait(full);wait(pail);wait(vat);

uepailtogetwaterfromvatignal(vat);ignal(empty);

drinkwaterinthepai1ignal(pail);}}

〃小和尚進程little_monk(){while(1){

wait(empty);\\wait(pail);wait(wel1);

uepai1togetwaterfromwel1ignal(well);wait(vat);

pourwatertothevatignal(vat);ignal(full);ignal(pail);}}

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

P300320652P400140656

試問:

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

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

它?解:

現(xiàn)在對該時刻的狀態(tài)進行安全分析:由于Available向量為(1,6,

2,2),所以Work向量初始化為(1,6,2,2)該時刻的安全性檢查表

如下:

WorkAP01P31P41P21P12B66669C2589D246NeedA000B06637C15555D22660All

ocationA00011B00030C33150D22440Work+AllocationA11123B66699C589D4

6TrueTrueFinihl0Truel021414Truel414Truel4141如表所示,存在安全

序列,所以該時刻處于安全狀態(tài)。由于Requet2(l,2,2,2)

AllocationAP00PllP22P30P40B00500C30731D20624NeedA01100B07166

C15355D20426AvailableA0B4C0D0然后進行安全性檢測,此時Available

為(0,4,0,0),所以Work初始化為(0,4,0,0)o此時的Work小于任意

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

(0,2,0)給P2。

(22)設(shè)系統(tǒng)中僅有一類數(shù)量為M的獨占型資源,系統(tǒng)中有N個進程競

爭該類資源,其中各進程對該類資源的最大需求量為W。當M、N、W分別

取下列值時,試判斷哪些情形可能會發(fā)生死鎖,為什么?

(1)M=2,N=2,W=l;⑵M=3,N=2,W=2;(3)M=3,N=2,W=3;(4)M=5,

N=3,W=2;

解:

1.不會發(fā)生死鎖。因為兩個進程需要的最多資源量都是1個,而系統(tǒng)

擁有的資源量正

好是2個,兩個進程都能順利運行完,所以不會死鎖。2.不會發(fā)生死

鎖。因為2個進程需要的最多的資源量都是2個,而系統(tǒng)擁有的資源量

是3個,所以總會有1個進程得到2個資源后被運行,運行完畢后釋

放資源,于是另一個進程也能順利運行完,所以不會死鎖。

3.會發(fā)生死鎖。當一個進程占有1個資源,另一個進程占有2個資源

時,2個進程都

要再申請資源,但是系統(tǒng)已經(jīng)沒有資源了,所以就發(fā)生死鎖了。

4.不會發(fā)生死鎖。因為三個進程需要的資源最大數(shù)量都是2個,而系

統(tǒng)有5個資源,

所以至少有2個進程可以拿到足夠的資源運行,運行完后再釋放資源,

最后一個進程也能得到運行,所以不會死鎖。

第5章存儲管理

(1)存儲管理的任務(wù)和功能是什么?解:

存儲管理的主要任務(wù)是:

支持多道程序的并發(fā)執(zhí)行,使多道程序能共享存儲資源,在互不干擾

的環(huán)境中并發(fā)執(zhí)行。方便用戶,使用戶減少甚至擺脫對存儲器的管理,使

用戶從存儲器的分配、保護和共享等繁瑣事物中解脫出來。

提高存儲器的利用率和系統(tǒng)吞吐量。

從邏輯上擴充內(nèi)存空間,支持大程序能在小的內(nèi)存空間運行或允許更

多的進程并發(fā)執(zhí)行。為了完成上述任務(wù),現(xiàn)代操作系統(tǒng)的存儲管理應(yīng)具有

以下功能:1.存儲空間的分配和回收。

2.地址轉(zhuǎn)換,實現(xiàn)邏輯地址到物理地址的映射。3.主存空間的共享。

4.主存空間的保護。5.主存儲空間的擴充。

6.對換,對換的主要任務(wù)是實現(xiàn)在內(nèi)存和外存之間的全部或部分進程

的對換,即將內(nèi)存中處于阻塞狀態(tài)的進程調(diào)換到外存上,而將外存上處于

就緒狀態(tài)的進程換入內(nèi)存。對換的目的主要是為了提高內(nèi)存利用率,提高

系統(tǒng)的吞吐量。(2)為什么要配置層次式存儲器?解:

為了解決CPU和存儲器之間速度上的不匹配,在現(xiàn)代計算機系統(tǒng)中,

存儲系統(tǒng)通常采用層次結(jié)構(gòu),存儲層次可粗略分為三級:最高層為CPU寄

存器,中間為主存,最底層是輔存。根據(jù)具體功能還可以細分為寄存器、

高速緩存、主存儲器、磁盤緩存、輔存儲設(shè)備(固定磁盤、可移動存儲介

質(zhì))5層。一個文件的數(shù)據(jù)可能出現(xiàn)在存儲系統(tǒng)的不同層次中,例如,一

個文件數(shù)據(jù)通常被存儲在輔存中(如硬盤),當其需要運行或被訪問時、就

必須調(diào)入主存,也可以暫時存放在主存的磁盤高速緩存中。大容量的輔存

常常使用磁盤,磁盤數(shù)據(jù)經(jīng)常備份在可移動磁盤或者光盤上,以防止硬盤

故障時丟失數(shù)據(jù)。

(3)什么是邏輯地址?什么是物理地址?為什么要進行二者的轉(zhuǎn)換工

作?解:

邏輯地址是應(yīng)用程序中使用的訪存地址,有時也稱為相對地址,由邏

輯地址構(gòu)成的地址空間稱為邏輯空間。每個應(yīng)用程序的邏輯地址空間都是

從零號地址碼開始的。物理地址是內(nèi)存儲器的實際存儲單元地址,有時也

稱為絕對地址,由物理地址構(gòu)成的地址空間稱為物理空間。物理地址空間

也是從零號地址碼開始的。在多道程序環(huán)境下,程序邏輯地址空間和內(nèi)存

物理地址空間是不一致的。用戶程序的邏輯地址可以是一維線性或多維線

性,而內(nèi)存中的每一個存儲單元都有相應(yīng)的內(nèi)存地址相對應(yīng),屬于一維線

性地址。在將用戶程序部分或全部地裝入內(nèi)存空間時,要實現(xiàn)邏輯地址到

物理地址的映射。

(4)地址重定位,靜態(tài)地址重定位和動態(tài)地址重定位有什么區(qū)別?解:

地址重定位指從邏輯地址到物理地址的映射過程,也稱為地址映射。

靜態(tài)地址重定位是指在用戶程序執(zhí)行之前完成地址映射工作,即把程序的

邏輯地址都轉(zhuǎn)換為實際的內(nèi)存物理地址。靜態(tài)地址重定位的地址變換只是

在裝入時一次完成,而在程序運行期間不再變化。

動態(tài)地址重定位是指在程序執(zhí)行過程中,CPU在訪問內(nèi)存之前,將要

訪問的程序或數(shù)據(jù)地址轉(zhuǎn)換為內(nèi)存地址。

(5)什么是內(nèi)部碎片和外部碎片?。解:

在一個分區(qū)內(nèi)部出現(xiàn)的碎片(即被浪費的空間)稱作內(nèi)部碎片,如固定

分區(qū)法就會產(chǎn)生內(nèi)部碎片;

在所有分區(qū)之外新增的碎片稱作外部碎片,如在動態(tài)分區(qū)法實施過程

中出現(xiàn)的越來越多的小空閑塊就是外部碎片,由于它們太小,無法裝入一

個進程,因而被浪費掉。(6)什么是分頁和分段存儲技術(shù),兩者有何區(qū)別?

解:

在分段存儲管理方式中,程序按內(nèi)容或過程(函數(shù))關(guān)系劃分為若干個

段,每個段定義一組邏輯信息,都有自己的名字。一個用戶作業(yè)所包含的

段對應(yīng)于一個二維線性虛擬空間,也就是一個二維虛擬存儲器。段式管理

程序以段為單位進行內(nèi)存分配,然后通過地址映射機構(gòu)把段式虛擬地址轉(zhuǎn)

換為實際的內(nèi)存物理地址。

分段和分頁有許多相似之處,比如,二者在內(nèi)存中都采用離散分配方

式,而不是整體連續(xù)分配方式,而且都要通過地址映射機構(gòu)來實現(xiàn)地址轉(zhuǎn)

換。但二者在概念上卻完全不同,具體表現(xiàn)在下述三個方面:

頁是信息的物理單位,而段是信息的邏輯單位。分頁是為了實現(xiàn)離散

分配,減少內(nèi)存碎片,提高內(nèi)存利用率?;蛘哒f,分頁是由于系統(tǒng)管理的

需要,而不是用戶的需要。段則是信息的邏輯單位,它含有一組意義相對

完整的信息。段的長度不是固定的,取決于用戶所編寫的程序。分段的目

的是為了能更好地滿足用戶的需要,更方便用戶編程,更好地實現(xiàn)信息共

享和保護。

頁的大小由系統(tǒng)確定,由系統(tǒng)把邏輯地址劃分為頁號和頁內(nèi)地址兩部

分,整個系統(tǒng)只能有一種大小的頁面;而段的長度卻不固定,它取決于用

戶的程序。通常由編譯程序在對源碼進行編譯時,根據(jù)程序的性質(zhì)來劃分。

分頁的進程地址空間是一維的,即單一的線性空間;而分段的進程地

址空間是二維的,由段號和段內(nèi)地址兩部分組成。

(7)什么是虛擬存儲器?列舉采用虛擬存儲器的必要性和可能性。解:

虛擬存儲器是指在具有層次結(jié)構(gòu)存儲器的計算機系統(tǒng)中,具有請求調(diào)

入和交換功能,為用戶提供一個比實際物理內(nèi)存容量大得多的可尋址的一

種存儲器系統(tǒng),它能從邏輯上對內(nèi)存容量進行擴充。

采用虛擬存儲器的必要性:傳統(tǒng)存儲管理方式要求將作業(yè)全部裝入內(nèi)

存之后才能運行,這一特征導(dǎo)致大作業(yè)和多個作業(yè)要求運行時系統(tǒng)無法滿

足;另外,傳統(tǒng)存儲管理方式具有駐留性,即作業(yè)裝入內(nèi)存直到運行結(jié)束,

便一直駐留在內(nèi)存中。盡管進程在運行中會因I/O等

入。若一個進程頻繁地進行頁面調(diào)入調(diào)出,勢必加大系統(tǒng)的開銷,使

系統(tǒng)運行效率降低。通常稱這種現(xiàn)象為該進程發(fā)生了抖動。

產(chǎn)生抖動的原因主要有:系統(tǒng)內(nèi)的進程數(shù)量太多,致使一個進程分得

的存儲塊過少;系統(tǒng)采用的置換算法不夠合理。

第6章文件管理

⑴什么是文件,它包含哪些內(nèi)容及特點?解:

文件是計算機系統(tǒng)中信息存放的一種組織形式,是在邏輯上具有完整

意義的信息集合,并且有一個名字以供標識。

文件包含的內(nèi)容有:源程序、二進制代碼、文本文件、數(shù)據(jù)、表格、

聲音和圖像等。文件的特點如下:

文件具有保存性。它被存儲在某種存儲介質(zhì)上,長期保存和多次使用。

文件是按名存取的。每個文件具有唯一的標識名,通過標識名(文件名)來

存取文件中的信息,而不需了解文件在存儲介質(zhì)上的具體物理位置。

文件的內(nèi)容是一組信息的集合。信息可以是源程序、二進制代碼、文

本文件、數(shù)據(jù)、表格、聲音和圖像等。

(2)文件系統(tǒng)要解決哪些問題?解:

文件系統(tǒng)的主要目標是提高存儲空間的利用率,它要解決的主要問題

有:完成文件存儲空間的管理,實現(xiàn)文件名到物理地址的轉(zhuǎn)換,實現(xiàn)文件

和目錄的操作,提供文件共享能力和安全措施,提供友好的用戶接口。文

件系統(tǒng)向用戶提供了有關(guān)文件和目錄操作的各種功能接口和系統(tǒng)調(diào)用,如

命令接口、程序接口和交互接口等。(3)什么是邏輯文件?什么是物理文

件?解:

邏輯文件時從用戶觀點出發(fā)所觀察到的文件組織形式,是用戶可以直

接處理的數(shù)據(jù)及其結(jié)構(gòu)。

物理文件是指文件在外存上的存儲組織形式。它與存儲介質(zhì)的存儲性

能有關(guān)。(4)文件的物理組織方式有哪些,各有什么優(yōu)缺點?解:

文件的物理組織方式有連續(xù)文件結(jié)構(gòu)、鏈接文件結(jié)構(gòu)和隨機文件結(jié)構(gòu)。

連續(xù)文件結(jié)構(gòu)是由一組分配在磁盤連續(xù)區(qū)域的物理塊組成的。文件中的每

一個記錄有一個序號,序號為i+1的記錄,其物理位置一定緊跟在i號記

錄之后。鏈接文件結(jié)構(gòu)是按順序由串聯(lián)的塊組成的,即文件的信息按存儲

介質(zhì)的物理特性存于若干塊中,一塊中可包含一個邏輯記錄或多個邏輯記

錄,或者一個邏輯記錄占有多個物理塊。每個物理塊的最末一個字(或第

一個字)作為鏈接字,它指向后繼塊的物理地址。文件的最后一塊的鏈接

字為結(jié)束標記(例如“"),它表示文件至本塊結(jié)束。隨機文件結(jié)構(gòu)是實現(xiàn)

非連續(xù)分配的另一種方式。在隨機文件結(jié)構(gòu)中,文件的數(shù)據(jù)記錄存放在直

接存取型存儲設(shè)備上,數(shù)據(jù)記錄的關(guān)鍵字和其地址之間建立某種對應(yīng)關(guān)系,

并利用這種關(guān)系進行存取。通常有三種形式的隨機文件結(jié)構(gòu):直接地址結(jié)

構(gòu)、索引結(jié)構(gòu)和散列結(jié)構(gòu)。連續(xù)文件的優(yōu)點是不需要額外的空間開銷,只

要在目錄中指出起始塊號和文件長度,就可以對文件進行訪問,且一次可

以讀出整個文件。對于固定不變且要長期使用的文件(比如系統(tǒng)文件),這

是一種較為節(jié)省的方法。其缺點是:

不能動態(tài)增長。因為在它后面如果已經(jīng)記錄了別的文件,則這一文件

增長就可能破壞后邊的文件。如果后移下一個文件,則系統(tǒng)開銷太大,甚

至不可能。

一開始就提出文件長度要求,而要用戶預(yù)先知道文件長度不是太容易。

一次要求比較大的連續(xù)存儲空間,不一定好找。因為,如果外存上只

有許多小的自由空間,雖然其總?cè)萘看笥谖募囊?,但由于不連續(xù),因

而這些空間可能被浪費。鏈接文件可以克服連續(xù)文件的上述缺點,然而它

也存在如下缺點:

由于在處理文件的一部分時必須得順序訪問,因而訪問速度較慢,時

間上比較浪費。對塊鏈接而言,每個塊中都要有鏈接字。所以,要占用一

定的存儲空間。

相比之下,隨機文件是一種比較好的結(jié)構(gòu),便于直接存取。但問題是,

對于索引文件應(yīng)考慮如何有效地存儲和訪問索引表,對于散列文件應(yīng)尋找

一個較好的散列算法和確定解決沖突的辦法。

(5)什么是文件目錄,常用的文件目錄結(jié)構(gòu)有哪些,各有什么特點?

解:

文件目錄是文件控制塊的有序集合,是文件系統(tǒng)中最基本的數(shù)據(jù)結(jié)構(gòu)。

通過它可以將文件名轉(zhuǎn)換為文件在外存的物理位置。每一個文件控制塊在

文件目錄中都有一個目錄項,其中登記著文件的名字、外存地址、文件長

度、邏輯結(jié)構(gòu)、物理結(jié)構(gòu)、訪問權(quán)限、文件建立和修改時間等。

文件目錄通常是放在磁盤上的。它的組織形式有3種:單級目錄、二

級目錄和多級目錄。其中用得最普遍的是多級目錄。單級目錄是最簡單的

目錄結(jié)構(gòu)。在整個文件系統(tǒng)中只建立一張目錄表,每個文件占一個目錄項,

目錄項中包含文件名、文件擴展名、文件類型、文件長度、文件物理地址

以及其它文件屬性。

為了克服單級目錄存在的缺點,改變單級目錄中文件的命名沖突,并

提高對目錄文件的檢索速度,可以為每一個用戶建立一個單獨的用戶文件

目錄UFD(UerFileDirectory)。這些文件目錄具有相似的結(jié)構(gòu),它由用戶

所有文件的文件控制塊組成。另為,系統(tǒng)再建立一個主文件目錄

MFD(MaterFileDirectory),在主文件目錄中,每個用戶目錄文件都占有

一個目錄項,其目錄項中包括用戶名和指向該用戶目錄文件的指針。在大

型文件系統(tǒng)中,通常采用三級或三級以上的目錄結(jié)構(gòu),以提高對目錄的檢

索速度和文件系統(tǒng)的性能。多極目錄結(jié)構(gòu)又稱為樹型目錄結(jié)構(gòu)。多級目錄

結(jié)構(gòu)是一棵倒向的有根樹,樹根是根目錄;從根向下,每一個樹枝是一個

子目錄,而樹葉則是文件。樹形目錄有許多優(yōu)點:它較好地反映了現(xiàn)實世

界中具有層次關(guān)系的數(shù)據(jù)集合和較確切地反映系統(tǒng)內(nèi)部文件的分支結(jié)構(gòu),

不同的文件可以重名,只要它們不位于同一子目錄中即可,易于規(guī)定不同

層次或子樹中文件的不同存取權(quán)限,便于文件的保護、保密和共享等。

(6)使用文件系統(tǒng)時,為什么要顯式地使用open和cloe命令來打開

和關(guān)閉文件?解:

的操作。

(7)文件系統(tǒng)提供系統(tǒng)調(diào)用rename來實現(xiàn)文件重命名,同樣也可以通

過把文件拷貝到新文件并刪除原文件來實現(xiàn)文件的重命名,這兩種方法有

什么不同?解:

使用rename文件重命名功能時,用戶必須提供兩個參數(shù):舊文件名

和新文件名。實現(xiàn)該功能時,系統(tǒng)使用舊文件名查找文件目錄,若找到舊

文件名所對應(yīng)的目錄表項,則將目錄表項中文件名字段對應(yīng)的值改為新文

件名值。從實現(xiàn)過程看,文件重命名功能完成的工作是修改目錄表項中的

文件名字段,除文件名外,文件的其它特性都未改變。在后一種實現(xiàn)方法

中,先進行文件復(fù)制并給復(fù)制文件起一個新名,此時系統(tǒng)完成了一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論