作業系統習題(第三章)

2021-10-16 22:27:30 字數 2959 閱讀 4281

第三章互斥與同步

1.設有n個程序,共享乙個資源r,但每個時刻只允許乙個程序使用r。演算法如下:

設定乙個整型陣列flag[n],其每個元素對應表示乙個程序對r的使用狀態,若為0表示該程序不在使用r,為1表示該程序要求或正在使用r,所有元素的初值均為0。

process pi

2.有三個程序r, m, p,r負責從輸入裝置讀入資訊並傳送給m,m將資訊加工並傳送給p,p將列印輸出,寫出下列條件下的併發程序程式描述。

(1)乙個緩衝區,其容量為k;

(2)兩個緩衝區,每個緩衝區容量均為k。

正確答案:

(1)乙個緩衝區,其容量為k

semaphore sr,sm,sp;

int lr, lm, lp;

datatype b[k];

lr=lm=lp=0;

sr.value=k ; sm.value=0; sp.value=0;

cobegin

repeat r;

repeat m;

repeat p;

coend

process r

process m

process p

(2)兩個緩衝區,每個緩衝區容量均為k

semaphore sr,sm1,sm2,sp;

int lr, lm1, lm2,lp;

datatype b1[k], b2[k];

lr=lm1= lm2= lp=0;

sr.value=k ; sm1.value=0; sm2.value= k; sp.value=0;

cobegin

repeat r;

repeat m;

repeat p;

coend

process r

process m

process p

3.假定乙個閱覽室最多可以容納100人閱讀,讀者進入和離開閱覽室時,都必須在閱覽室門口的乙個登記表上註冊或登出。假定每次只允許乙個人註冊或登出,設閱覽室內有100個座位。

(1)試問:應編制幾個程式和設定幾個程序?程式和程序的對應關係如何?

(2)試用p、v操作編寫讀者程序的同步演算法。

正確答案:

(1)應編制乙個讀者程式。有n個讀者應設定n個讀者程序。程式和程序的對應關係1: n,讀者程式為n個讀者程序共享。

(2)讀者程序的同步演算法:

semaphore full, mutex;

pid seat[100];

int i;

full.value= 100; mutex.value=1;

for (i=0; i<100; i++) seat[i]=-1;

process reader(pid procid )

4.寫乙個用訊號量解決哲學家就餐問題不產生死鎖的演算法。

正確答案:

semaphore chopstick[5]=;

void philosopher(int i) /哲學家程序/

}5.系統有輸入機和印表機各一台,有兩程序都要使用它們,採用p、v操作實現請求使用和歸還釋放後,還會產生死鎖嗎?若不會,說明理由;若會,你認為應怎樣來防止死鎖。

正確答案:

會發生死鎖。

例如,semaphore sr, sp;

sr.value=sp.value=1;;

process p1()

process p2()

出現迴圈等待的情形。

修改:用層次分配方法防止死鎖。

semaphore sr, sp;

sr.value=sp.value=1;

process p1()

process p2()

6.若系統有同類資源m個,被n個程序共享,問:當m>n和m≤n時,每個程序最多可以請求多少個這類資源,使系統一定不會發生死鎖?

正確答案:

【原理:死鎖的避免-銀行家演算法】

設最大請求資源數為k。

當n個程序,每個程序都獲得k-1個資源,系統還剩下乙個資源時,即n(k-1)=m-1;

則k=[(m-1)/n]+1,此時k為最大,故k≤[(m-1)/n]+1。

當m>n時:每個程序分配[(m-1)/n]+1的上限。

當m=n時:每個程序分配乙個。

當m7.設系統有某類資源共12個,用銀行家演算法判斷下列每個狀態是否安全。如果是安全的,說明所有程序是如何能執行完畢的。如果是不安全的,說明為什麼可能產生死鎖。

正確答案:

狀態a程序 占有資源熟 最大需求 尚需資源情況

程序1 2 6 4

程序2 4 7 3

程序3 5 6 1

程序4 0 2 2

系統剩餘資源=12-2-4-5=1

將剩餘的1個資源分配給程序3,程序3獲得全部資源執行完畢後,系統收回6個資源,這樣分配給其餘任何乙個程序都可執行完畢,因此系統是安全的。

狀態b程序 占有資源熟 最大需求 尚需資源情況

程序1 4 8 4

程序2 2 6 4

程序3 5 7 2

系統剩餘資源=12-4-2-5=1,由於系統所剩資源不能滿足任何乙個程序的最大需求,因此系統是不安全的。

8.某銀行提供1個服務視窗和10個供顧客等待的座位。顧客到達銀行時,若有空座位,則到取號機上領取乙個號,等待叫號。取號機每次僅允許一位顧客使用。當營業員空閒時,通過叫號選取一位顧客,並為其服務。請用訊號量和p、v操作描述顧客和營業員的互斥與同步。要求寫出完整的過程,說明訊號量的含義並賦初值。

正確答案:

semaphore mutex, empty, full,service;

mutex.value=1; //互斥使用取號機

empty.value=10; //空座位數

full.value=0; //已佔座位數

service.value=0; //等待服務

cobegin

process 營業員

}}coend

作業系統第三章概要

處理機排程 多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述 排程 高階排程又稱作業排程或長程排程 接納排程 中級排程又稱交換排程或中程排程...

第三章 習題三

需求規格說明書在軟體開發中具有重要的作用,它也可以作為軟體可行性分析的依據.f 需求分析的主要目的是解決軟體開發的具體方案.f 需求規格說明書描述了系統每個功能的實現.f 非功能需求是從各個角度對系統的約束和限制,反映了應用對軟體系統質量和特性的額外要求.t 需求評審人員主要由開發人員組成,一般不包...

作業系統 第三章筆記(一)

處理及排程與死鎖 1.處理機排程 多道程式環境下,動態的把處理機分配給就緒佇列中的乙個程序使之執行。2.提高處理機的利用率 改善系統效能,很大程度上取決於處理機排程的效能。3.處理機排程便成為os設計的中心問題之一。分配的任務由處理機排程程式完成。一.處理機排程的基本概念 作業進入系統駐留在外存的後...