




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
山大操作系統(tǒng)實驗五山大操作系統(tǒng)實驗五山大操作系統(tǒng)實驗五xxx公司山大操作系統(tǒng)實驗五文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計,管理制度山東大學(xué)軟件學(xué)院操作系統(tǒng)實驗報告實驗題目:進(jìn)程互斥實驗實驗?zāi)康模哼M(jìn)一步研究和實踐操作系統(tǒng)中關(guān)于并發(fā)進(jìn)程同步與互斥操作的一些經(jīng)典問題的解法,加深對于非對稱性互斥問題有關(guān)概念的理解。觀察和體驗非對稱性互斥問題的并發(fā)控制方法。進(jìn)一步了解Linux系統(tǒng)中IPC進(jìn)程同步工具的用法,訓(xùn)練解決對該類問題的實際編程、調(diào)試和分析問題的能力。實驗要求:理發(fā)店問題:假設(shè)理發(fā)店的理發(fā)室中有3個理發(fā)椅子和3個理發(fā)師,有一個可容納4個顧客坐等理發(fā)的沙發(fā)。此外還有一間等候室,可容納13位顧客等候進(jìn)入理發(fā)室。顧客如果發(fā)現(xiàn)理發(fā)店中顧客已滿(超過20人),就不進(jìn)入理發(fā)店。在理發(fā)店內(nèi),理發(fā)師一旦有空就為坐在沙發(fā)上等待時間最長的顧客理發(fā),同時空出的沙發(fā)讓在等候室中等待時間最長的的顧客就坐。顧客理完發(fā)后,可向任何一位理發(fā)師付款。但理發(fā)店只有一本現(xiàn)金登記冊,在任一時刻只能記錄一個顧客的付款。理發(fā)師在沒有顧客的時候就坐在理發(fā)椅子上睡眠。理發(fā)師的時間就用在理發(fā)、收款、睡眠上。請利用linux系統(tǒng)提供的IPC進(jìn)程通信機(jī)制實驗并實現(xiàn)理發(fā)店問題的一個解法??偨Y(jié)和分析示例實驗和獨(dú)立實驗中觀察到的調(diào)試和運(yùn)行信息,說明您對與解決非對稱性互斥操作的算法有哪些新的理解和認(rèn)識為什么會出現(xiàn)進(jìn)程饑餓現(xiàn)象本實驗的饑餓現(xiàn)象是怎樣表現(xiàn)的怎樣解決并發(fā)進(jìn)程間發(fā)生的饑餓現(xiàn)象您對于并發(fā)進(jìn)程間使用消息傳遞解決進(jìn)程通信問題有哪些新的理解和認(rèn)識根據(jù)實驗程序、調(diào)試過程和結(jié)果分析寫出實驗報告。硬件環(huán)境:CPU:P4/內(nèi)存:256MB硬盤:10GB軟件環(huán)境:-Linux操作系統(tǒng)Gnome桌面'gccversionvigeditOpenOffice實驗步驟:問題分析假設(shè)理發(fā)店的理發(fā)室中有3個理發(fā)椅子和3個理發(fā)師,有一個可容納4個顧客坐等理發(fā)的沙發(fā)。此外還有一間等候室,可容納13位顧客等候進(jìn)入理發(fā)室。顧客如果發(fā)現(xiàn)理發(fā)店中顧客已滿(超過20人),就不進(jìn)入理發(fā)店。在理發(fā)店內(nèi),理發(fā)師一旦有空就為坐在沙發(fā)上等待時間最長的顧客理發(fā),同時空出的沙發(fā)讓在等候室中等待時間最長的的顧客就坐。顧客理完發(fā)后,可向任何一位理發(fā)師付款。但理發(fā)店只有一本現(xiàn)金登記冊,在任一時刻只能記錄一個顧客的付款。理發(fā)師在沒有顧客的時候就坐在理發(fā)椅子上睡眠。理發(fā)師的時間就用在理發(fā)、收款、睡眠上。算法設(shè)計說明該解法利用消息隊列的每條消息代表每個顧客,將進(jìn)入等候室的顧客組織到一個隊列,將坐入沙發(fā)的顧客組織到另一個隊列。理發(fā)師從沙發(fā)隊列請出顧客,空出的沙發(fā)位置再從等候室請入顧客進(jìn)入沙發(fā)隊列。三個理發(fā)師進(jìn)程使用相同的程序段上下文,所有顧客使用同一個程序段上下文。這樣可避免產(chǎn)生太多進(jìn)程,以便節(jié)省系統(tǒng)資源。intsem_p(intsemid,intindex,intipc_nowait){程間的互斥2.理發(fā)師類似讀者進(jìn)程,顧客類似寫者進(jìn)程。最后,通過不斷的調(diào)試,使我熟練了在Linux環(huán)境下編程的技巧,對進(jìn)程的創(chuàng)建與控制更加熟悉。附錄A:本實驗全部程序源代碼及注釋#ifndefCZW_IPC_H_INCLUDED#defineCZW_IPC_H_INCLUDED#include<>#include<sys/>#include<sys/>intsem_create(constchar*pathname,intproj_id,intnsems,intinit_value){key_tkeyid;intsemid,i;if((keyid=ftok(pathname,proj_id))==-1){perror("ftokerror!");return-1;}if((semid=semget(keyid,nsems,IPC_CREAT|0666))<0){perror("semgeterror!");return-1;}for(i=0;i<nsems;i++){semctl(semid,i,SETVAL,init_value);}returnsemid;}intsem_delete(constchar*pathname,intproj_id){key_tkeyid;intsemid,i;if((keyid=ftok(pathname,proj_id))==-1){perror("ftokerror!");return-1;}if((semid=semget(keyid,0,0666))<0){perror("semgeterror!");return-1;}if(semctl(semid,0,IPC_RMID)<0){perror("semdeletefail!");return-1;}return1;}intsem_set(intsemid,intindex,intvalue){if(index==-1){,10);sem_delete(".",11);msg_delete(".",31);sem_delete(".",110);exit(0);}intmain(){intwait_semid=sem_create(".",10,3,0);intwait_lock_semid=sem_create(".",11,4,0);intwait_msg=msg_create(".",31);intcash_semid=sem_create(".",110,1,1);debug&&printf("\twait_semidis%d\n",wait_semid);debug&&printf("\twait_lock_semidis%d\n",wait_lock_semid);debug&&printf("\twait_msgis%d\n",wait_msg);debug&&printf("\tcash_semidis%d\n",cash_semid);sem_set(wait_semid,0,3);sem_set(wait_semid,1,4);sem_set(wait_semid,2,13);pid_tpid[3]={0};inti;intbarber_id,barber_status,barber_consumer;structex5msgbufmsg;for(i=0;i<3;i++){if((pid[i]=fork())<0){perror("forkerror!");exit(EXIT_FAILURE);}elseif(pid[i]==0){barber_id=i+1;barber_status=0;debug&&printf("\tI'mbarber%d,mypidis%d\n",barber_id,getpid());break;}}if(pid[2]==0){while(1){if(barber_status==0){if(sem_p(wait_lock_semid,0,1)==-2){,10,0,0);intwait_lock_semid=sem_create(".",11,0,0);intwait_msg=msg_create(".",31);debug&&printf("\twait_semidis%d\n",wait_semid);debug&&printf("\twait_lock_semidis%d\n",wait_lock_semid);debug&&printf("\twait_msgis%d\n",wait_msg);debug&&printf("\twait_semid_0is%d\n",sem_show(wait_semid,0));pid_tpid=0;structex5msgbufmsg;inti;intconsumer_status;if((pid=fork())<0){perror("forkerror!");exit(EXIT_FAILURE);}elseif(pid==0){//childprocesswhile(1){sem_p(wait_lock_semid,1,0);//等待沙發(fā)上有人sem_p(wait_semid,0,0);//等待理發(fā)師有空if(msg_get(wait_msg,&msg,WAIT_ID_SOFA,0)<0){perror("messagegeterror!");exit(-1);}msg_send(wait_msg,WAIT_ID_CHAIR,,0);printf("theconsumer%d==>chair,wait%dseconds\n",,(time(NULL)-);//sofa==>chairsem_v(wait_semid,1,0);//沙發(fā)上有空位了sem_v(wait_lock_semid,0,0);//通知有人來理發(fā)了}return0;}if((pid=fork())<0){perror("forkerror!");exit(EXIT_FAILURE);}elseif(pid==0){//childprocesswhile(1){sem_p(wait_lock_semid,2,0);//等待室內(nèi)有人sem_p(wait_semid,1,0);//沙發(fā)上有空位if(msg_get(wait_msg,&msg,WAIT_ID_ROOM,0)<0){perror("messagegeterror!");exit(-1);}msg_send(wait_msg,WAIT_ID_SOFA,,0);printf("theconsumer%d==>sofa,wait%dseconds\n",,(time(NULL)-);//room==>sofasem_v(wait_semid,2,0);//等待室空出1個位子sem_v(wait_lock_semid,1,0);//通知沙發(fā)上有人了}return0;}while(1){if((pid=fork())<0){perror("forkerror!");exit(EXIT_FAILURE);}elseif(pid==0){//if((consumer_status=sem_p(wait_semid,2,1))==-2){//檢查理發(fā)店(等待室)是否已滿printf("我是顧客%d,理發(fā)店滿了,我走人了。。。\n",getpid());//full}elseif(consumer_status==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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年楚雄貨運(yùn)從業(yè)資格證怎么考
- 個人裝修水電合同
- 2025年宜昌道路運(yùn)輸從業(yè)資格證考試內(nèi)容是什么
- 2025年平頂山貨運(yùn)從業(yè)資格模擬考
- 2025年室外裝修承包合同8篇
- 《數(shù)據(jù)可視化技術(shù)應(yīng)用》1.2 開啟數(shù)據(jù)可視化之門-教案
- 2025年陜西貨運(yùn)從業(yè)資格證考試題技巧
- 旋片真空泵競爭策略分析報告
- 產(chǎn)品訂單合同范本
- 電安裝施工合同范本
- 2025年黑龍江職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 專利共有合同范例
- 《ABO血型鑒定》課件
- 蘇教版五年級下冊數(shù)學(xué)計算題大全1200道帶答案
- 計算機(jī)行業(yè)人工智能系列深度報告:deepseek研究框架-國海證券-20250214
- 2025年山西省國有資本運(yùn)營有限公司招聘筆試參考題庫含答案解析
- 2025年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- DB1331T 102-2025雄安新區(qū)應(yīng)急物資儲備庫建設(shè)規(guī)范
- 北京市豐臺區(qū)2024-2025學(xué)年九年級上學(xué)期期末道德與法治試題(含答案)
- 醫(yī)院培訓(xùn)課件:《PET-CT的臨床應(yīng)用》
- 《莫比烏斯環(huán)》課件
評論
0/150
提交評論