




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章進(jìn)程同步與通信●進(jìn)程同步與互斥
●經(jīng)典進(jìn)程同步問題
●管程
●AND信號量
●進(jìn)程通信本章要點(diǎn)用信號量解決了很多同步和互斥問題,但在解決問題的過程中,同時(shí)還存在一些問題。例:兩個(gè)進(jìn)程P1和P2,它們共享兩個(gè)局部變量R1和R2,因此設(shè)置兩個(gè)互斥信號量mutex1和mutex2,并令它們初值為1。
//進(jìn)程P1//進(jìn)程P2P(mutex1);P(mutex2);
P(mutex2);P(mutex1);
兩個(gè)進(jìn)程處于僵持狀態(tài),都無法繼續(xù)運(yùn)行
這些問題的出現(xiàn)促使AND信號量的產(chǎn)生。●3.3AND信號量
AND信號量同步機(jī)制的基本思想:將進(jìn)程在整個(gè)運(yùn)行期間所需要的所有臨界資源,一次性的全部分配給進(jìn)程,待該進(jìn)程使用完后再一起釋放。只要尚有一個(gè)資源不能滿足進(jìn)程的要求,其他所有能分配給該進(jìn)程的資源也都不予以分配。實(shí)現(xiàn)方法:在P操作上增加一個(gè)AND條件,故稱為AND信號量。
AND信號量定義Swait(s1,s2,…,sn){if(s1>=1&&s2>=1&&…&&sn>=1){/*滿足資源要求時(shí)*/ for(i=1;i<=n;i=i+1)
si=si-1;}else{/*某些資源不能滿足要求時(shí)*/
block(si.queue)/*將進(jìn)程投入第一個(gè)小于1的信號量的等待隊(duì)列si.queue
*/; }}AND信號量定義AND信號量定義Ssignal(s1,s2,…,sn){for(i=1;i<=n;i=i+1)
{si=si+1; for(等待隊(duì)列si.queue中的每個(gè)進(jìn)程P) { if(進(jìn)程P通過Swait中的測試) {/*通過檢查,即資源夠用*/
wackup(p);//喚醒進(jìn)程P;}
else {/*未通過檢查,即資源不夠用*/ 進(jìn)程P進(jìn)入某等待隊(duì)列繼續(xù)等待;}
} }}用AND信號量解決哲學(xué)家進(jìn)餐問題semaphorec[5]={1,1,1,1,1};voidphilosopher(inti)/*哲學(xué)家進(jìn)程*/{while(true)
{Swait(c[i],c[(i+1)%5]); eat();/*進(jìn)餐*/
Ssignal(c[i],c[(i+1)%5]); think();/*思考*/ }}●略●3.4管程●3.5進(jìn)程通信信號量作為進(jìn)程同步和互斥工具是卓有成效的。但作為通信工具就不夠理想。原因?yàn)椋?●效率低——一次只傳一條消息。 ●通信對用戶不透明。因此必須引入高級通信工具,解決進(jìn)程之間大量的信息傳遞問題進(jìn)程通信的類型●共享存儲器系統(tǒng)●消息傳遞系統(tǒng)●直接通信方式●間接通信方式一對一多對一一對多多對多●管道通信●互斥能力●同步能力進(jìn)程通信中的幾個(gè)問題●通信鏈路的建立方式●顯示建立鏈路●隱式建立鏈路●通信方向●單向通信●雙向通信●通信鏈路連接方式
●點(diǎn)對點(diǎn)方式●廣播方式●通信鏈路的容量●無容量通信鏈路●有容量通信鏈路●數(shù)據(jù)格式
●字節(jié)流●報(bào)文●同步方式●阻塞方式●不阻塞方式消息緩沖隊(duì)列-數(shù)據(jù)結(jié)構(gòu)定義//消息緩沖區(qū)定義structmessage_buffer{charsender[30]; /*發(fā)送進(jìn)程標(biāo)識符*/intsize; /*消息長度*/chartext[200]; /*消息正文*/
structmessage_buffer*next; //指向下一個(gè)消息緩沖區(qū)的指針};//PCB中有關(guān)通信的數(shù)據(jù)項(xiàng)structprocess_control{structmessage_buffer*mq;/*消息隊(duì)列隊(duì)首指針*/
semaphoremutex=1; /*消息隊(duì)列互斥信號量,初值為1*/
semaphoresm=0;/*消息隊(duì)列同步信號量,記錄消息的個(gè)數(shù).初值為0*/}消息緩沖隊(duì)列-示意圖//發(fā)送原語charreceiver[30];structmessage_buffera;voidsend(receiver,a){structmessage_bufferi;
structprocess_controlj;
getbuf(a.size,i);/*發(fā)送區(qū)a消息的長度申請一緩沖區(qū)i*/i.sender=a.sender;
i.size=a.size;i.text=a.text;
i.next=NULL;
getid(PCB_set,receiver,j);/*獲得接收進(jìn)程的進(jìn)程標(biāo)識符j*/
P(j.mutex);
Insert(j.mq,i);/*將消息緩沖區(qū)i掛到的消息隊(duì)列j.mq上*/
V(j.mutex);
V(j.sm);}消息緩沖隊(duì)列-發(fā)送原語消息緩沖隊(duì)列-接收原語structmessage_bufferb;voidreceive(b){structmessage_bufferi;
structprocess_controlj;j=internal_name();/*接收進(jìn)程的內(nèi)部標(biāo)識符*/
P(j.sm);
P(j.mutex);
remove(j.mq,i);/*從消息隊(duì)列中摘下第一個(gè)消息緩沖區(qū)*/
V(j.mutex);b.sender=i.sender;b.size=i.size;b.text=i.text;}客戶—服務(wù)器系統(tǒng)通
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歷史學(xué)科教研組工作計(jì)劃
- 小學(xué)藝術(shù)教育融合培訓(xùn)計(jì)劃
- 新蘇教版音樂課堂互動教學(xué)計(jì)劃
- 2025-2030年中國LOWE玻璃產(chǎn)業(yè)調(diào)研分與運(yùn)用態(tài)勢預(yù)測研究報(bào)告
- 2025-2030骨骼和關(guān)節(jié)補(bǔ)品行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- pep小學(xué)三年級英語下冊期末復(fù)習(xí)策略計(jì)劃
- 2025-2030韓國殺菌劑和消毒劑行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 科研項(xiàng)目保密協(xié)議范本
- 2025-2030蔬果汁產(chǎn)業(yè)規(guī)劃及發(fā)展研究報(bào)告
- 廣州幼兒師范高等專科學(xué)校《工作崗位研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 慢性病照護(hù)智慧樹知到期末考試答案2024年
- 湖南省常德市臨澧縣2022-2023學(xué)年三年級下學(xué)期期末語文試卷
- 交投國企招聘筆試真題答案
- 基于PLC的電梯控制系統(tǒng)設(shè)計(jì)
- 學(xué)生不愛寫作業(yè)分析報(bào)告
- 樓宇電氣系統(tǒng)安全檢查表
- 鋼支撐(鋼管)強(qiáng)度及穩(wěn)定性驗(yàn)算
- JGJ 355-2015(2023年版) 鋼筋套筒灌漿連接應(yīng)用技術(shù)規(guī)程
- 口暴服務(wù)流程
- 帶式輸送機(jī)-畢業(yè)設(shè)計(jì)
- 干部履歷表(中共中央組織部2015年制)
評論
0/150
提交評論