版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《操作系統(tǒng)》課程實驗報告實驗題目:線程與進(jìn)程同步與互斥實驗概述【實驗?zāi)康募耙蟆?。生產(chǎn)者消費者問題(信號量)參考教材中的生產(chǎn)者消費者算法,創(chuàng)建5個進(jìn)程,其中兩個進(jìn)程為生產(chǎn)者進(jìn)程,3個進(jìn)程為消費者進(jìn)程。一個生產(chǎn)者進(jìn)程試圖不斷地在一個緩沖中寫入大寫字母,另一個生產(chǎn)者進(jìn)程試圖不斷地在緩沖中寫入小寫字母。3個消費者不斷地從緩沖中讀取一個字符并輸出。為了使得程序的輸出易于看到結(jié)果,仿照的實例程序,分別在生產(chǎn)者和消費者進(jìn)程的合適的位置加入一些隨機(jī)睡眠時間??蛇x的實驗:在上面實驗的基礎(chǔ)上實現(xiàn)部分消費者有選擇地消費某些產(chǎn)品。例如一個消費者只消費小寫字符,一個消費者只消費大寫字母,而另一個消費者則無選擇地消費任何產(chǎn)品。消費者要消費的產(chǎn)品沒有時,消費者進(jìn)程被阻塞。注意緩沖的管理。2。用線程實現(xiàn)睡覺的理發(fā)師問題,(同步互斥方式采用信號量或mutex方式均可)理發(fā)師問題的描述:一個理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時,理發(fā)師睡覺;第一個顧客來到時,必須將理發(fā)師喚醒;顧客來時如果還有空座的話,他就坐在一個座位上等待;如果顧客來時沒有空座位了,他就離開,不理發(fā)了;當(dāng)理發(fā)師處理完所有顧客,而又沒有新顧客來時,他又開始睡覺。3。讀者寫者問題教材中對讀者寫者問題算法均有描述,但這個算法在不斷地有讀者流的情況下,寫者會被阻塞。編寫一個寫者優(yōu)先解決讀者寫者問題的程序,其中讀者和寫者均是多個進(jìn)程,用信號量作為同步互斥機(jī)制。【實驗環(huán)境】操作系統(tǒng):Linuxmint編譯器:gcc實驗內(nèi)容【實驗過程】實驗步驟:生產(chǎn)者消費者問題(信號量)1.1實驗原理:通過一個有界緩沖區(qū)把生產(chǎn)者和消費者聯(lián)系起來。假定生產(chǎn)者和消費者的優(yōu)先級是相同的,只要緩沖區(qū)未滿,生產(chǎn)者就可以生產(chǎn)產(chǎn)品并將產(chǎn)品送入緩沖區(qū)。類似地,只要緩沖區(qū)未空,消費者就可以從緩沖區(qū)中取走產(chǎn)品。應(yīng)該禁止生產(chǎn)者向滿的緩沖區(qū)送入產(chǎn)品,同時也應(yīng)該禁止消費者從空的緩沖區(qū)中取出產(chǎn)品,這一機(jī)制有生產(chǎn)者線程和消費者進(jìn)程程之間的互斥關(guān)系來實現(xiàn)。與計算打印兩進(jìn)程同步關(guān)系相同,生產(chǎn)者和消費者兩進(jìn)程P和C之間應(yīng)滿足下列兩個同步條件:
①
只有在緩沖池中至少有一個緩沖區(qū)已存入消息后,消費者才能從中提取信息,否則消費者必須等待。
②
只有緩沖池中至少有一個緩沖區(qū)是空時,生產(chǎn)者才能把消息放入緩沖區(qū),否則生產(chǎn)者必須等待。1.2偽代碼://創(chuàng)建信號量并初始化semaphoremutex=1;//對緩存區(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);}}//消費者voidconsumer(){While(1){P(full);P(mutex);moveFromBuf();V(mutex);V(empty);}}1.3實驗結(jié)果與分析分析:創(chuàng)建5個進(jìn)程,其中兩個進(jìn)程為生產(chǎn)者進(jìn)程,3個進(jìn)程為消費者進(jìn)程。一個生產(chǎn)者進(jìn)程試圖不斷地在一個緩沖中寫入大寫字母,另一個生產(chǎn)者進(jìn)程試圖不斷地在緩沖中寫入小寫字母。3個消費者不斷地從緩沖中讀取一個字符并輸出。生產(chǎn)者和消費者兩進(jìn)程P和C之間應(yīng)滿足下列兩個同步條件:
①
只有在緩沖池中至少有一個緩沖區(qū)已存入消息后,消費者才能從中提取信息,否則消費者必須等待。
②
只有緩沖池中至少有一個緩沖區(qū)是空時,生產(chǎn)者才能把消息放入緩沖區(qū),否則生產(chǎn)者必須等待。用線程實現(xiàn)睡覺的理發(fā)師問題2.1設(shè)計原理利用三個信號量和一個控制變量來協(xié)調(diào)理發(fā)師、理發(fā)椅和顧客之間的活動。
1.信號量customers用來記錄等候理發(fā)的顧客數(shù),并用于阻塞理發(fā)師進(jìn)程,初值為0
2.信號量barbers記錄正在等候顧客的理發(fā)師數(shù),初值為1
3.信號量waiting用來記錄等候理發(fā)的顧客數(shù),初值為0
4.信號量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ù)少一個V(barbers);//理發(fā)師去為一個顧客理發(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();//一個顧客坐下等理/}elseV(mutex);//人滿了,走吧!}}2.3實驗結(jié)果與分析分析:理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時,理發(fā)師睡覺;第一個顧客來到時,必須將理發(fā)師喚醒;顧客來時如果還有空座的話,他就坐在一個座位上等待;如果顧客來時沒有空座位了,他就離開,不理發(fā)了;讀者寫者問題3.1設(shè)計原理寫者優(yōu)先,一旦一個寫者到來,它應(yīng)該盡快對文件進(jìn)行寫操作。則新來到的讀者不允許進(jìn)行讀操作。讀者到:1)無讀者且無寫者,新讀者讀2)有讀者但無寫者等待,新讀者讀3)有讀者但有寫著等待,讀者等待4)有寫者在寫,新讀者等待寫者到:1)無讀者且無寫者,新寫者寫2)有讀者在讀,新寫者等待3)有寫者寫,新寫者等待3.2偽代碼read:=1//讀者信息量,用于第一個寫者與讀者互斥readcount:=0//記錄當(dāng)前讀者的進(jìn)程數(shù)mutex:=1//readcount變量的臨界區(qū)的鎖writecount:=0//記錄當(dāng)前寫者排隊的進(jìn)程數(shù)write:=1//寫者信息量,用于寫者互斥,第一個讀者與寫者互斥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實驗結(jié)果與分析分析:讀者到:1)無讀者且無寫者,新讀者讀2)有讀者但無寫者等待,新讀者讀3)有讀者但有寫著等待,讀者等待4)有寫者在寫,新讀者等待寫者到:1)無讀者且無寫者,新寫者寫2)有讀者在讀,新寫者等待3)有寫者寫,新寫者等待實驗參考函數(shù)用于Linux進(jìn)程通信共享內(nèi)存。共享內(nèi)存函數(shù)由shmget、shmat、shmdt、shmctl四個函數(shù)組成。信號集操作函數(shù):intsemget(key_tkey,intnsems,intsemflg);Intsemop(intsemSetId,sembufbuf,intlength)線程操作函數(shù)pthread_create()pthread_mutex_unlock()pthread_mutex_lock()信號操作函數(shù):Sem_init()Sem_wait()Sem_post()小結(jié)生產(chǎn)者消費者問題該問題描述了兩個共享固定大小緩沖區(qū)的進(jìn)程或線程——即所謂的“生產(chǎn)者”和“消費者”——在實際運行時會發(fā)生的問題。生產(chǎn)者的主要作用是生成一定量的數(shù)據(jù)放到緩沖區(qū)中,然后重復(fù)此過程。與此同時,消費者也在緩沖區(qū)消耗這些數(shù)據(jù)。該問題的關(guān)鍵就是要保證生產(chǎn)者不會在緩沖區(qū)滿時加入數(shù)據(jù),消費者也不會在緩沖區(qū)中空時消耗數(shù)據(jù)。理發(fā)師問題:一個理發(fā)店接待室有n張椅子,工作室有1張椅子;沒有顧客時,理發(fā)師睡覺;第一個顧客來到時,必須將理發(fā)師喚醒;顧客來時如果還有空座的話,他就坐在一個座位上等待;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國學(xué)校家具行業(yè)發(fā)展現(xiàn)狀及前景規(guī)劃研究報告
- 2024-2030年中國嬰兒洗護(hù)用品市場運行動態(tài)及前景趨勢預(yù)測報告
- 2024-2030年中國女性洗液行業(yè)市場營銷模式及發(fā)展前景預(yù)測報告
- 2024-2030年中國多型腔熱流道管坯模具境外融資報告
- 2024年標(biāo)準(zhǔn)簡易個人魚塘承包合同模板版B版
- 梅河口康美職業(yè)技術(shù)學(xué)院《高級語言程序?qū)嵺`》2023-2024學(xué)年第一學(xué)期期末試卷
- 茂名職業(yè)技術(shù)學(xué)院《語文教學(xué)設(shè)計與實施》2023-2024學(xué)年第一學(xué)期期末試卷
- 微專題定量測定型實驗突破策略-2024高考化學(xué)一輪考點擊破
- 呂梁職業(yè)技術(shù)學(xué)院《生物學(xué)科專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年某科技公司與某航空公司關(guān)于機(jī)載娛樂系統(tǒng)的合同
- 2024年華潤電力投資有限公司招聘筆試參考題庫含答案解析
- 壟斷行為的定義與判斷準(zhǔn)則
- 模具開發(fā)FMEA失效模式分析
- 聶榮臻將軍:中國人民解放軍的奠基人之一
- 材料化學(xué)專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
- 乳品加工工(中級)理論考試復(fù)習(xí)題庫(含答案)
- 《教材循環(huán)利用》課件
- 學(xué)生思想政治工作工作證明材料
- 2023水性環(huán)氧樹脂涂層鋼筋
- 國開《Windows網(wǎng)絡(luò)操作系統(tǒng)管理》形考任務(wù)2-配置本地帳戶與活動目錄域服務(wù)實訓(xùn)
- 環(huán)保設(shè)施安全風(fēng)險評估報告
評論
0/150
提交評論