南京郵電大學 操作系統 課后習題答案 - 下載本文

M:P(SM1); Y:=B1; V(SR) 加工 Y P(SM2); B2:=Y; V(SP); goto M; end; Process print Z:record; begin P:P(SP); Z:=B2; V(SM2) 打印Z goto P; end; coend; end;

8、某系統中有10臺打印機,有三個進程P1,P2,P3分別需要8臺,7臺和4臺。若P1,P2,P3已申請到4臺,2臺和2臺。試問:按銀行家算法能安全分配嗎?請說明分配過程。 答:

系統能為進程P3分配二臺打印機。因為盡管此時10臺打印機已分配給進程P1 4臺,P22臺和P34臺,全部分配完,但P3已分配到所需要的全部4臺打印機,它不會對打印機再提出申請,所以它能順利運行下去,能釋放占用的4臺打印機,使進程P1,P2均可能獲得乘余的要求4臺和5臺,按銀行家算法是安全的。

9、有兩個用戶進程A和B,在運行過程中都要使用系統中的一臺打印機輸出計算結果。 (1) 試說明A、B兩進程之間存在什么樣的制約關系?

(2) 為保證這兩個進程能正確地打印出各自的結果,請用信號量和P、V操作寫出各自

11

的有關申請、使用打印機的代碼。要求給出信號量的含義和初值。 答:

(1) A、B兩進程之間存在互斥的制約關系。因為打印機屬于臨界資源,必須一個進程

使用完之后另一個進程才能使用。 (2)mutex:用于互斥的信號量,初值為1。

進程A 進程B ... ... ... ... P(mutex) P(mutex) 申請打印機 申請打印機 使用打印機 使用打印機 V(mutex) V(mutex) 試以生產者—消費者問題說明進程同步問題的實質。 答:

一個生產者,一個消費者和一個產品之間關系是典型的進程同步問題。設信號量S為倉庫內產品,P- V操作配對進行缺一不可。生產者進程將產品放人倉庫后通知消費者可用;消費者進程在得知倉庫有產品時取走,然后告訴生產者可繼續生產。 10、請描述產生死鎖的四個必要條件。 答:

互斥使用(資源獨占)一個資源每次只能給一個進程使用

不可強占(不可剝奪)資源申請者不能強行的從資源占有者手中奪取資源,資源只能由占有者自愿釋放

請求和保持(部分分配,占有申請)-一個進程在申請新的資源的同時保持對原有資源的占有(只有這樣才是動態申請,動態分配)

循環等待-存在一個進程等待隊列 {P1 , P2 , … , Pn}, 其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的資源,形成一個進程等待環路 11、兩個并發執行的進程A和B的程序如下:

進程A Repeat N=N+5; Until false; 進程B

12

Repeat 打印N的值; N=0; Until false;

其中N為整數,初值為4。若進程A先執行了三個循環后,進程A和進程B又并發執行了一個循環,寫出可能出現的打印值。正確的打印值應該是多少?請用P、V操作進行管理,使進程A和B并發執行時不會出現與時間有關的錯誤。 答:

因為N初值為4,若進程A先執行了三個循環,此時N的值為19。當進程A和進程B并發執行時可能會有如下兩種執行次序,即進程A先執行一次循環,然后再進程B執行一次循環,此時打印的是正確值24,執行后N中的值為0。但若進程B先執行一次循環,然后再進程A執行一次循環,則打印的值是19,執行后N中的值是5。這是錯誤的,即發生了與時間有關的錯誤。用P、V操作進行管理,使進程A和B并發時不會出現與時間有關的錯誤的程序如下:(S為互斥信號量,初值為1),

進程A Repeat P(S); N=N+5; V(S); Until false; 進程B Repeat P(S);

打印N的值; N=0; V(S); Until false;

12、四個進程P0,P1,P2,P3和四個信箱M0,M1,M2,M3進程間借助相鄰的信箱傳遞消息: 每次從 中取出一條消息,經加工送入 中。其中M0,M1,M2,M3分別設有3,3,2,2個格子,

13

每個格子放一條消息,初始時,M0裝滿了三條消息,其余為空。寫出使用信號量實現進程 (i=0,1,2,3)同步及互斥的流程。 答:

mutex0 ~ mutex3 : 分別用于控制互斥訪問M0 ~ M 3,初值為1。

full0 ~ full3 : 分別用于控制同步訪問M0 ~ M3 ,其中full0 初值為3,full1 ~ full3 初值為0,表示信箱中消息條數。

empty0 ~ empty3 : 分別用于同步控制對M0 ~ M3的訪問。Empty0初值為0,empty2~ empty3初值為2,empty1初值為3,分別用于表示信箱中空格子個數。

另用send ( Mi , message )表示將消息送到(Mi mod 4)號信箱中;而用receive ( Mi,message )表示接收已存在于( Mi mod 4 )中的消息。

則使用信號量實現進程Pi (i = 0 , 1 ,2 ,3 )同步及互斥的流程如下: mutex0 , m utex 1, m utex2 , m utex3 : semaphore ; full0 , ful l1 , ful l2 , ful l3 : semaphore ;

empty0 , em pty1 , em pty2 , em pty3 : semaphore ; begin

mutex0 : = 1 ; mutex1 : = 1 ; mutex2 : = 1 ; mutex : = 1 ; full0 : = 3 ; full1 : = 0 ; full2 : = 0 ; full3 : = 0 ;

empty0 : = 0 ; empty1 : = 3 ; empty2 : = 2 ; empty3 : = 2 ; Parbegin P0:begin repeat P ( mutex0 ) ; P ( full0 ) ;

Receive ( M0,message); V (empty0 ) ;

Processing the message until finished; P ( mutex1 ) ; P ( empty1 ) ; Send ( M1,message ) ; V ( full1 ) ;

14

V ( mutex1 ) ;

Until false ; … end ;

P1:{可類似于P0實現之}; P2:{可類似于P0實現之}; P3:{可類似于P0實現之}; Parend ; End;

13、設系統中僅有一類數量為M的獨占型資源,系統中N個進程競爭該類資源,其中各進程對該類資源的最大需求量為W。當M、N、W分別取下列值時,試判斷哪些情況會發生死鎖?為什么?

① M=2,N=2,W=1 ②M=3,N=2,W=2 ③M=3,N=2,W=3 ④M=5,N=3,W=2 ⑤M=6,N=3,W=3 答:

③可能會發生死鎖。只要一個進程占用了少于3個獨占型資源而另一個進程占用了其余的獨占型資源,兩個進程都會相互處于等待對方進程釋放資源的狀態。

⑤也可能會發生死鎖。當每個進程都分配了兩個資源時,3個進程都會彼此等待。

14、假定具有5個進程的進程集合P={P0,P1,P2,P3,P4},系統中有三類資源A,B和C。其中A類資源有10個,B類資源有5個,C類資源有7個。假定在某時刻有如下狀態: Allocation Max Available A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 P1 2 0 0 3 2 2 P2 3 0 2 9 0 2 P3 2 1 1 2 2 2 P4 0 0 2 4 3 3

試給出Need,并說明當前系統是否處于安全狀態,如果是,給出安全序列。如果不是,說明理由。

15





街机千炮捕鱼2016 郑州期货配资网站 配资网 七星 北京pk赛车官网开结果 股票分析师就读学校 河北快3推荐号码今天 江苏11选五选号技巧 网上五分彩可靠吗 澳洲快乐8app 在线配资和平融创配资地址 贵州体彩11选五下载 快乐双彩网走势图表图 上海十一选五走势图 - 百度 体彩浙江20选5杀号 后二包胆 吉林快三历史开奖号码