版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
操作系統(tǒng)作業(yè)(一)作業(yè)#1進程切換時需要保存哪些現(xiàn)場信息?請盡量考慮完全。答案:進程切換過程是進程上下文的切換過程,進程上下文是指進程運行的物理環(huán)境。包括地址映寄存器、通用寄存器、浮點寄存器、SP、PSW(程序狀態(tài)字)、PC(指令計數(shù)器)、以及打開文件表等。
2.由核心返回目態(tài)程序時,進程的PSW和PC為何必須用一條機器指令同時恢復(fù)?答案:中斷向量中程序狀態(tài)字PSW和指令計數(shù)器PC的內(nèi)容必須由一條指令同時恢復(fù),這樣才能保證系統(tǒng)狀態(tài)由管態(tài)轉(zhuǎn)到目態(tài)的同時,控制轉(zhuǎn)到上升進程的斷點處繼續(xù)執(zhí)行。如果不同時恢復(fù),則只能1.先恢復(fù)PSW再恢復(fù)PC,在恢復(fù)PSW后已經(jīng)轉(zhuǎn)到目態(tài),操作系統(tǒng)恢復(fù)PC的使命無法完成2.先恢復(fù)PC再恢復(fù)PSW,PC改變后轉(zhuǎn)到操作系統(tǒng)另外區(qū)域(因為PSW仍在系統(tǒng)狀態(tài)),PSW無法恢復(fù)作業(yè)#2Considerthefollowingprogram:varblocked:array[0..1]ofboolean;turn:0..1;procedureP(id:integer);beginrepeatblocked[id]:=true;whileturn<>iddobeginwhileblocked[1-id]do{nothing}turn:=idend;<Criticalsection>blocked[id]:=false;<Remainder>untilfalseend;beginblocked[0]:=false;blocked[1]:=false;turn:=0;parbeginP(0);P(1)parend;end.ThisisasoftwaresolutiontothemutualexclusionproblemproposedbyHyman.Findacounterexampletodemonstratethatthissolutionisincorrect.ItisinterestingtonotethateventheCommunicationoftheACMwasfooledonthisone.beginrepeatblocked[id]:=true;whileturn<>iddobeginwhileblocked[1-id]do{nothing}(1)turn:=idend;<Criticalsection>若turn=1,blocked[0]:=true,blocked[1]:=false
,P(0),P(1)并發(fā)執(zhí)行,P(0)先推進,當(dāng)P(0))執(zhí)行到whileblocked[1-id]時不滿足條件跳出循環(huán)在(1)處讓出處理機P(1)推進,P(1)執(zhí)行whileturn<>id而進入臨界區(qū)后讓出處理機,P(0),繼續(xù)也進入臨界區(qū),不滿足正確性。作業(yè)#3關(guān)于讀者寫者問題改進算法semaphorer_w_w,mutex,s=1;intcount=0;寫者活動:P(s);P(r_w_w);{寫操作};V(r_w_w);V(s);讀者活動:P(s);P(mutex);count++;if(count==1)p(r_w_w);V(mutex);V(s);{讀操作};P(mutex);count--;if(count==0)v(r_w_w);V(mutex);寫者優(yōu)先算法intreadcount,writecount=0;semaphorersem,wsem=1;Semaphorex,y,z=1;
Reader:writer:
p(z)1
p(y)p(rsem)2writecount++p(x)
if(writecount==1)p(rsem)4readcount++v(y)
if(readcount==1)p(wsem)
p(wsem)5
v(x)
<write>v(rsem)3v(wsem)v(z)
p(y)<read>
writecount--p(x)
if(writecount==0)readcount--v(rsem)6
if(readcount==0)v(wsem)7v(y)
v(x)作業(yè)#4設(shè)系統(tǒng)有5臺類型相同的打印機,依次編號為1-5。又設(shè)系統(tǒng)有n個使用打印機的進程,使用前申請,使用后釋放。每個進程都有一個進程標識,用于區(qū)分不同的進程。每個進程有一個優(yōu)先數(shù),不同進程的優(yōu)先數(shù)各異。當(dāng)有多個進程同時申請打印機時,按照進程優(yōu)先數(shù)由高到低的次序?qū)嵤┓峙?。試用信號量和PV操作實現(xiàn)對打印機資源的管理,即要求編寫如下函數(shù)和過程。(1)函數(shù)require(pid,pri):申請一臺打印機。參數(shù)pid為進程標識,其值為1-n之間的一個整數(shù);pri為進程優(yōu)先數(shù),其值為正整數(shù)。函數(shù)返回值為所申請到的打印機的編號,其值為1-5的一個整數(shù)。(2)過程return(prnt):釋放一臺打印機。參數(shù)prnt為所釋放的打印機的編號,其值為1-5的一個整數(shù)。intlp[5];(initialvalueis1)intcount=5;intp[N];(initialvalueis-1)semaphoreq[N];(initialvalueis0)semaphoremutex=1;intrequire(intpid,intpri);{p(mutex);L:if(count==0){pri[pid]==pri;v(mutex)P(q[pid]);gotoL;}count--;inti;for(i=0;i<5;i++)if(lp[i]!=0){lp[i]=0;return(i);}V(mutex);}}
intreturn(intprnt){P(mutex);lp[prnt]=1;count++;intmax,i,j;max=-1;for(j=0;j<N;j++)if(p[j]>max){max=p[j];i=j;}if(max==-1)V(mutex);else{p[i]=-1;v(q[i];}}2.Hoare管程實現(xiàn)SCAN算法Procedureupscan;VarI:0..200;BeginI:=headpos;
flag:=true;While(I<=199)and(count[I]=0)DoI:=I+1;IfI<=199ThenBegincount[I]:=count[I]-1;signal(cylinder[I])
flag=false;EndEnd;Proceduredownscan;VarI:-1..199;BeginI:=headpos;
flag:=true;While(I>=0)and(count[I]=0)DoI:=I-1;IfI>=0ThenBegincount[I]:=count[I]-1;signal(cylinder[I])
flag=false;EndEnd;Procedurerelease;Beginbusy:=false;Ifdirection=upThenBeginupscan;
ifflag=truethendownscanEndElseBegindownscan;
ifflag=truethen
upscanEndEnd;Hansen管程中signal操作在喚醒條件隊列的一個進程后執(zhí)行此操作的進程離開管程,在本例中signal操作在release中的upscan和downscan中執(zhí)行。如下:ProcedurereleaseBeginIfdirection=upThenBeginupscan;downscanEndElseBegindownscan;upscanEndEnd;當(dāng)在upscan或downscan中執(zhí)行signal操作時,進程就離開了管城即結(jié)束了release,不會去執(zhí)行upscan或downscan后面的downscan或upscan。但是在Hoare管程中當(dāng)進程執(zhí)行signal操作時,不僅會喚醒條件隊列中的一個進程,同時執(zhí)行此操作的進程并不離開管程而是在管程中的緊急隊列排隊,若還沿用Hanson管程的代碼會出現(xiàn)以下情況。若進程在upscan中執(zhí)行signal操作后進入緊急隊列,當(dāng)進程在緊急隊列被喚醒后就會繼續(xù)執(zhí)行release中的后續(xù)代碼即執(zhí)行downscan,這不符合程序的語義,一個進程一次只能釋放一個資源同時也就只能喚醒一個進程,若進程繼續(xù)執(zhí)行downscan會執(zhí)行下一個喚醒動作。讀者/寫者問題(寫者優(yōu)先)1.用Ada語言中的會合解決讀者/寫者問題,要求寫者優(yōu)先。即編寫一個任務(wù),其中有如下四個入口:
start_read;finish_read,start_write,finish_write.
提示:可以使用嵌套的accept語句。讀者-寫者問題Taskreaders_writersis
entrystart_read;
entryfinish_read;
entrystart_write;
entryfinish_write;Endreaders_writes;
Task
bodyreaders_writersis;
Varread_count,write_count:integer;beginread_count:=0;write_count:=0;讀者-寫者問題
Loop
select
whenwrite_count=0=>
acceptstart_readdoread_count:=read_count+1;
endstart_read
or
whenread_count>0=>
acceptfinish_readdoread_count:=read_count-1;
endfinish_read;
or
讀者-寫者問題
whenwrite_count=0
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)生的自我鑒定
- xx省老舊街區(qū)改造項目可行性研究報告
- 昆蟲記閱讀心得1000字范文
- 2024年抵押貸款房產(chǎn)評估與市場分析服務(wù)合同3篇
- 2024年純凈水灌裝設(shè)備研發(fā)合作合同
- 種子填充算法課程設(shè)計
- 2024年度中外農(nóng)產(chǎn)品出口銷售合同3篇
- 城鎮(zhèn)老舊小區(qū)改造風(fēng)險評估與應(yīng)對措施
- 2024年橋梁建設(shè)勞務(wù)分包專用合同
- 2024年藝人經(jīng)紀合作合同
- 云南省昆明市(2024年-2025年小學(xué)六年級語文)部編版期末考試(上學(xué)期)試卷及答案
- 鑄牢中華民族共同體意識-形考任務(wù)2-國開(NMG)-參考資料
- 2024年國家開放大學(xué)期末考試《律師實務(wù)》機考題庫(課程代碼:55742)
- T-CECS120-2021套接緊定式鋼導(dǎo)管施工及驗收規(guī)程
- 支付寶手持承諾函
- 國航因私免折票系統(tǒng)
- 三相自耦變壓器設(shè)計模版
- 國家開放大學(xué)電大本科《管理案例分析》2023-2024期末試題及答案(試卷代號:1304)
- 生產(chǎn)安全事故的應(yīng)急救援預(yù)案
- 二面角的求法---三垂線法
- 煤礦井下供電設(shè)計課件
評論
0/150
提交評論