第三章互斥與同步
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設計的中心問題之一。分配的任務由處理機排程程式完成。一.處理機排程的基本概念 作業進入系統駐留在外存的後...