版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《操作系統(tǒng)》課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:線程與進(jìn)程同步與互斥實(shí)驗(yàn)概述【實(shí)驗(yàn)?zāi)康募耙蟆?。生產(chǎn)者消費(fèi)者問題(信號(hào)量)參考教材中的生產(chǎn)者消費(fèi)者算法,創(chuàng)建5個(gè)進(jìn)程,其中兩個(gè)進(jìn)程為生產(chǎn)者進(jìn)程,3個(gè)進(jìn)程為消費(fèi)者進(jìn)程。一個(gè)生產(chǎn)者進(jìn)程試圖不斷地在一個(gè)緩沖中寫入大寫字母,另一個(gè)生產(chǎn)者進(jìn)程試圖不斷地在緩沖中寫入小寫字母。3個(gè)消費(fèi)者不斷地從緩沖中讀取一個(gè)字符并輸出。為了使得程序的輸出易于看到結(jié)果,仿照的實(shí)例程序,分別在生產(chǎn)者和消費(fèi)者進(jìn)程的合適的位置加入一些隨機(jī)睡眠時(shí)間??蛇x的實(shí)驗(yàn):在上面實(shí)驗(yàn)的基礎(chǔ)上實(shí)現(xiàn)部分消費(fèi)者有選擇地消費(fèi)某些產(chǎn)品。例如一個(gè)消費(fèi)者只消費(fèi)小寫字符,一個(gè)消費(fèi)者只消費(fèi)大寫字母,而另一個(gè)消費(fèi)者則無選擇地消費(fèi)任何產(chǎn)品。消費(fèi)者要消費(fèi)的產(chǎn)品沒有時(shí),消費(fèi)者進(jìn)程被阻塞。注意緩沖的管理。2。用線程實(shí)現(xiàn)睡覺的理發(fā)師問題,(同步互斥方式采用信號(hào)量或mutex方式均可)理發(fā)師問題的描述:一個(gè)理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時(shí),理發(fā)師睡覺;第一個(gè)顧客來到時(shí),必須將理發(fā)師喚醒;顧客來時(shí)如果還有空座的話,他就坐在一個(gè)座位上等待;如果顧客來時(shí)沒有空座位了,他就離開,不理發(fā)了;當(dāng)理發(fā)師處理完所有顧客,而又沒有新顧客來時(shí),他又開始睡覺。3。讀者寫者問題教材中對(duì)讀者寫者問題算法均有描述,但這個(gè)算法在不斷地有讀者流的情況下,寫者會(huì)被阻塞。編寫一個(gè)寫者優(yōu)先解決讀者寫者問題的程序,其中讀者和寫者均是多個(gè)進(jìn)程,用信號(hào)量作為同步互斥機(jī)制。【實(shí)驗(yàn)環(huán)境】操作系統(tǒng):Linuxmint編譯器:gcc實(shí)驗(yàn)內(nèi)容【實(shí)驗(yàn)過程】實(shí)驗(yàn)步驟:生產(chǎn)者消費(fèi)者問題(信號(hào)量)1.1實(shí)驗(yàn)原理:通過一個(gè)有界緩沖區(qū)把生產(chǎn)者和消費(fèi)者聯(lián)系起來。假定生產(chǎn)者和消費(fèi)者的優(yōu)先級(jí)是相同的,只要緩沖區(qū)未滿,生產(chǎn)者就可以生產(chǎn)產(chǎn)品并將產(chǎn)品送入緩沖區(qū)。類似地,只要緩沖區(qū)未空,消費(fèi)者就可以從緩沖區(qū)中取走產(chǎn)品。應(yīng)該禁止生產(chǎn)者向滿的緩沖區(qū)送入產(chǎn)品,同時(shí)也應(yīng)該禁止消費(fèi)者從空的緩沖區(qū)中取出產(chǎn)品,這一機(jī)制有生產(chǎn)者線程和消費(fèi)者進(jìn)程程之間的互斥關(guān)系來實(shí)現(xiàn)。與計(jì)算打印兩進(jìn)程同步關(guān)系相同,生產(chǎn)者和消費(fèi)者兩進(jìn)程P和C之間應(yīng)滿足下列兩個(gè)同步條件:
①
只有在緩沖池中至少有一個(gè)緩沖區(qū)已存入消息后,消費(fèi)者才能從中提取信息,否則消費(fèi)者必須等待。
②
只有緩沖池中至少有一個(gè)緩沖區(qū)是空時(shí),生產(chǎn)者才能把消息放入緩沖區(qū),否則生產(chǎn)者必須等待。1.2偽代碼://創(chuàng)建信號(hào)量并初始化semaphoremutex=1;//對(duì)緩存區(qū)設(shè)置臨界區(qū)semaphorefull=0;//緩沖區(qū)已經(jīng)被占據(jù)的數(shù)目Semaphoreempty=N;//緩沖區(qū)空巣數(shù)目//生產(chǎn)者voidproduce(){While(1){P(empty);P(mutex);addToBuf();V(mutex);V(full);}}//消費(fèi)者voidconsumer(){While(1){P(full);P(mutex);moveFromBuf();V(mutex);V(empty);}}1.3實(shí)驗(yàn)結(jié)果與分析分析:創(chuàng)建5個(gè)進(jìn)程,其中兩個(gè)進(jìn)程為生產(chǎn)者進(jìn)程,3個(gè)進(jìn)程為消費(fèi)者進(jìn)程。一個(gè)生產(chǎn)者進(jìn)程試圖不斷地在一個(gè)緩沖中寫入大寫字母,另一個(gè)生產(chǎn)者進(jìn)程試圖不斷地在緩沖中寫入小寫字母。3個(gè)消費(fèi)者不斷地從緩沖中讀取一個(gè)字符并輸出。生產(chǎn)者和消費(fèi)者兩進(jìn)程P和C之間應(yīng)滿足下列兩個(gè)同步條件:
①
只有在緩沖池中至少有一個(gè)緩沖區(qū)已存入消息后,消費(fèi)者才能從中提取信息,否則消費(fèi)者必須等待。
②
只有緩沖池中至少有一個(gè)緩沖區(qū)是空時(shí),生產(chǎn)者才能把消息放入緩沖區(qū),否則生產(chǎn)者必須等待。用線程實(shí)現(xiàn)睡覺的理發(fā)師問題2.1設(shè)計(jì)原理利用三個(gè)信號(hào)量和一個(gè)控制變量來協(xié)調(diào)理發(fā)師、理發(fā)椅和顧客之間的活動(dòng)。
1.信號(hào)量customers用來記錄等候理發(fā)的顧客數(shù),并用于阻塞理發(fā)師進(jìn)程,初值為0
2.信號(hào)量barbers記錄正在等候顧客的理發(fā)師數(shù),初值為1
3.信號(hào)量waiting用來記錄等候理發(fā)的顧客數(shù),初值為0
4.信號(hào)量mutex為waiting變量設(shè)置臨界區(qū),初值為12.2偽代碼Semaphorecustomers=0;Semaphorebarbers=1;Semaphoremuttex=1;Intchairs=N;Intwaiting=0;Voidbarber(){While(1){P(cutomers);//若無顧客,理發(fā)師睡眠P(mutex);//進(jìn)程互斥waiting:=waiting–1;//等候顧客數(shù)少一個(gè)V(barbers);//理發(fā)師去為一個(gè)顧客理發(fā)V(mutex);//開放臨界區(qū)cuthair();//正在理發(fā)}}Voidconstomer(){While(1){P(mutex);//進(jìn)程互斥if(waiting<chairs){waiting:=waiting+1;//等候顧客數(shù)加1V(customers);//必要的話喚醒理發(fā)師V(mutex);//開放臨界區(qū)P(barbers);//無理發(fā)師,顧客坐著養(yǎng)神get-haircut();//一個(gè)顧客坐下等理/}elseV(mutex);//人滿了,走吧!}}2.3實(shí)驗(yàn)結(jié)果與分析分析:理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時(shí),理發(fā)師睡覺;第一個(gè)顧客來到時(shí),必須將理發(fā)師喚醒;顧客來時(shí)如果還有空座的話,他就坐在一個(gè)座位上等待;如果顧客來時(shí)沒有空座位了,他就離開,不理發(fā)了;讀者寫者問題3.1設(shè)計(jì)原理寫者優(yōu)先,一旦一個(gè)寫者到來,它應(yīng)該盡快對(duì)文件進(jìn)行寫操作。則新來到的讀者不允許進(jìn)行讀操作。讀者到:1)無讀者且無寫者,新讀者讀2)有讀者但無寫者等待,新讀者讀3)有讀者但有寫著等待,讀者等待4)有寫者在寫,新讀者等待寫者到:1)無讀者且無寫者,新寫者寫2)有讀者在讀,新寫者等待3)有寫者寫,新寫者等待3.2偽代碼read:=1//讀者信息量,用于第一個(gè)寫者與讀者互斥readcount:=0//記錄當(dāng)前讀者的進(jìn)程數(shù)mutex:=1//readcount變量的臨界區(qū)的鎖writecount:=0//記錄當(dāng)前寫者排隊(duì)的進(jìn)程數(shù)write:=1//寫者信息量,用于寫者互斥,第一個(gè)讀者與寫者互斥mutex2:=1//writecount的臨界區(qū)的鎖//讀者進(jìn)程Voidreader(){While(1){
P(read)
P(mutex)
V(read)
readcount:=readcount+1;
if(readcount=1)
P(write)
V(mutex)
讀文件
P(mutex)
readcount:=readcount-1
if(readcount=0)
V(write)
V(mutex)}//endofwhile}//endoffunction//寫者進(jìn)程Voidwriter(){While(1){P(mutex2)
writecount:=writecount+1
if(writecount=1)
P(read)
V(mutex2)
P(write)
寫文件
V(write)
P(mutex2)
writecount:=writecount-1
if(writecount=0)
V(read)
V(mutex2)}}3.3實(shí)驗(yàn)結(jié)果與分析分析:讀者到:1)無讀者且無寫者,新讀者讀2)有讀者但無寫者等待,新讀者讀3)有讀者但有寫著等待,讀者等待4)有寫者在寫,新讀者等待寫者到:1)無讀者且無寫者,新寫者寫2)有讀者在讀,新寫者等待3)有寫者寫,新寫者等待實(shí)驗(yàn)參考函數(shù)用于Linux進(jìn)程通信共享內(nèi)存。共享內(nèi)存函數(shù)由shmget、shmat、shmdt、shmctl四個(gè)函數(shù)組成。信號(hào)集操作函數(shù):intsemget(key_tkey,intnsems,intsemflg);Intsemop(intsemSetId,sembufbuf,intlength)線程操作函數(shù)pthread_create()pthread_mutex_unlock()pthread_mutex_lock()信號(hào)操作函數(shù):Sem_init()Sem_wait()Sem_post()小結(jié)生產(chǎn)者消費(fèi)者問題該問題描述了兩個(gè)共享固定大小緩沖區(qū)的進(jìn)程或線程——即所謂的“生產(chǎn)者”和“消費(fèi)者”——在實(shí)際運(yùn)行時(shí)會(huì)發(fā)生的問題。生產(chǎn)者的主要作用是生成一定量的數(shù)據(jù)放到緩沖區(qū)中,然后重復(fù)此過程。與此同時(shí),消費(fèi)者也在緩沖區(qū)消耗這些數(shù)據(jù)。該問題的關(guān)鍵就是要保證生產(chǎn)者不會(huì)在緩沖區(qū)滿時(shí)加入數(shù)據(jù),消費(fèi)者也不會(huì)在緩沖區(qū)中空時(shí)消耗數(shù)據(jù)。理發(fā)師問題:一個(gè)理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時(shí),理發(fā)師睡覺;第一個(gè)顧客來到時(shí),必須將理發(fā)師喚醒;顧客來時(shí)如果還有空座的話,他就坐在一個(gè)座位上等待;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標(biāo)準(zhǔn)的攝影作品使用許可合同
- 二零二五年度凈水器綠色環(huán)保認(rèn)證采購(gòu)合同
- 2025年度文化產(chǎn)業(yè)分紅合作協(xié)議范本(含IP授權(quán))3篇
- 2025年度公司設(shè)立前股東合作協(xié)議書(含知識(shí)產(chǎn)權(quán)保護(hù))3篇
- 2025年度公司股東間應(yīng)急事件處理合作協(xié)議書3篇
- 2025年度農(nóng)產(chǎn)品電商平臺(tái)農(nóng)產(chǎn)品物流配送優(yōu)化合同版3篇
- 2025年度農(nóng)機(jī)租賃與農(nóng)業(yè)科研合作開發(fā)合同3篇
- 二零二五年度農(nóng)村宅基地租賃及土地流轉(zhuǎn)服務(wù)協(xié)議
- 2025年度農(nóng)產(chǎn)品深加工項(xiàng)目原料供應(yīng)合同版3篇
- 二零二五年度婚慶服務(wù)市場(chǎng)區(qū)域保護(hù)競(jìng)業(yè)禁止合同2篇
- GB/T 13914-2013沖壓件尺寸公差
- BB/T 0045-2021紙漿模塑制品工業(yè)品包裝
- 《信息檢索實(shí)驗(yàn)》課程教學(xué)大綱
- 連退生產(chǎn)過程操作優(yōu)化-質(zhì)量預(yù)報(bào)監(jiān)測(cè)及診斷
- 梅毒專題知識(shí)培訓(xùn)
- 小說閱讀抓住矛盾沖突參考資料課件
- 簡(jiǎn)約企業(yè)報(bào)刊報(bào)紙?jiān)O(shè)計(jì)排版word模板
- 矛盾糾紛排查化解登記表
- 大班科學(xué)活動(dòng) 有害的噪音
- 建筑施工成品保護(hù)措施
- 魚骨圖PPT模板精品教案0002
評(píng)論
0/150
提交評(píng)論