【文章內容簡介】
作業(yè)C的優(yōu)先級高于作業(yè)D,故作業(yè)C投入運行。(6) 12:00,作業(yè)C運行結束,作業(yè)D投入運行。(7) 12:20,作業(yè)D運行結束。作業(yè) 進入內存時間 運行結束時間 A 10:00 11:10 B 10:20 10。50 C 11:10 12:00 D 10:50 12:20各作業(yè)周轉時間為:作業(yè)A 70,作業(yè)B 30,作業(yè)C 90,作業(yè)D 90。平均作業(yè)周轉時間為70分鐘。2答:(1) FIFO算法選中作業(yè)執(zhí)行的次序為:A、B、D、C和E。作業(yè)平均周轉時間為63分鐘。(2) SJF算法選中作業(yè)執(zhí)行的次序為:A、B、D、E和C。作業(yè)平均周轉時間為58分鐘。第三章: 一、1125?臨界區(qū)管理的基本原則是什么?并發(fā)進程中與共享變量有關的程序段稱為臨界區(qū)。共享變量所代表的資源叫做臨界資源,即一次僅供一個進程使用的資源。(1) 一次至多有一個進程進入臨界區(qū)內執(zhí)行;(2) 如果已有進程在臨界區(qū)內,試圖進入此臨界區(qū)的其它進程應等待;(3) 進入臨界區(qū)的進程應在有限時間內退出,以便讓進程等待隊列中的一個進程進入。?如何對其進行分類?信號量是物理資源的實體,它是一個與隊列有關的整型變量。按用途分(1) 公用信號量;(2) 私有信號量。按取值分(1) 二值信號量;(2) 一般信號量。?它有哪些屬性?管程是由局部于自己的若干公共變量及其聲明和所有訪問這些公共變量的過程所組成的軟件模塊,它提供一種互斥機制,進程可以互斥地調用管程的過程。(1) 共享性;(2) 安全性;(3) 互斥性。、死鎖產(chǎn)生的原因及預防死鎖的方法。(1) 互斥條件;(2) 占有和等待條件;(3) 不剝奪條件;(4) 循環(huán)等待條件。進程推進順序不當、PV操作使用不妥、同類資源分配不均或對某些資源的使用未加限制等,不僅與系統(tǒng)擁有的資源數(shù)量有關,而且與資源分配策略、進程對資源的使用要求以及并發(fā)進程的推進順序有關。(1) 破壞條件1(互斥條件);(2) 破壞條件2(占有和等待條件);(3) 破壞條件3(不剝奪條件);(4) 破壞條件4(循環(huán)等待條件)。 二、答:不同(1):初值為1,范圍為[n+1,1];(2):初值為m,范圍為[n+m,m]。答:1) 使用信號量和P、V操作:var name: array[1..100] of A。A=record number:integer。 name:string。endfor i:=1 to 100 do {A[i].number:=i。 A[i].name:=null。}mutex,seatcount:semaphore。i:integer。mutex:=1。seatcount:=100。cobegin{process readeri(var readername:string)(i=1,2,…) { P(seatcount)。 P(mutex)。for i:=1 to 100 do i++ if A[i].name=null then A[i].name:=readername。 reader get the seat number =i。 /*A[i].number V(mutex) 進入閱覽室,座位號i,座下讀書。P(mutex)。 A[i] name:=null。 V(mutex)。 V(seatcount)。 離開閱覽室。 }}coend.2) 使用管程操作:TYPE readbook=monitorVAR R:condition。Interface Module IM。 i,seatcount:integer。name:array[1..100] of string。DEFINE readere,readerleave。USE check,wait,signal,release。procedure readere(readername)begin check(IM)。 if seatcount≥100 wait(R,IM) seatcount:=seatcount+1。 for i=1 to 100 do i++ if name[i]==null then name[i]:=readername。 get the seat number=i。 release(IM)。endprocedure readerleave(readername)begin check(IM)。 seatcount。 for i=1 to 100 do i++ if name[i]==readername then name[i]:=null。 release(IM)。end begin seatcount:=100。name:=null。endcobegin process readeri(i=1,2.…) begin readere(readername)。 read the book。 readerleave(readername)。 leave the readroom。 endcoend.答:實質上是兩個進程的同步問題,設信號量S1和S2分別表示可揀白子和黑子,不失一般性,若令先揀白子。var S1,S2:semaphore。S1:=1。S2:=0。 cobegin{ process P1 begin repeat P(S1)。 揀白子 V(S2)。 until false。 endprocess P2 begin repeat P(S2)。 揀黑子 V(S1)。 until false。 end}coend.1答:(1)用信號量和P、V操作。var S,S1,S2,S3。semaphore。 S:=1。S1:=S2:=S3:=0。 flag1,flag2,flag3:Boolean。 flag1:=flag2:=flag3:=true。cobegin{ process 供應者begin repeat