版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)驗三相關(guān)說明說明:(1)實(shí)驗相關(guān)ppt內(nèi)容選自《操作系統(tǒng)課程設(shè)計》的核心實(shí)驗,本實(shí)驗為互斥同步實(shí)驗,通過學(xué)生模擬線程對資源的競爭進(jìn)一步加強(qiáng)對同步與互斥的理解。(2)在該實(shí)驗中,學(xué)生初次接觸操作系統(tǒng)函數(shù)庫,導(dǎo)致學(xué)生在實(shí)現(xiàn)原理時候無從下手,建議從一個具體實(shí)例來進(jìn)行講解。實(shí)驗三:互斥與同步實(shí)驗提綱提綱實(shí)驗?zāi)康睦斫庠硬僮鳌⑼?、互斥、信號量、臨界區(qū)等基本概念。掌握進(jìn)程同步與互斥原理。掌握經(jīng)典同步算法模型:生產(chǎn)者與消費(fèi)者模型、讀寫者模型、哲學(xué)家就餐模型等。提綱實(shí)驗內(nèi)容一、實(shí)驗說明(1)API介紹(2)測試數(shù)據(jù)介紹(3)生產(chǎn)者和消費(fèi)者模型(4)讀寫者模型
二、實(shí)驗內(nèi)容(1)生產(chǎn)者消費(fèi)者模型實(shí)驗(2)讀寫者模型實(shí)驗
(3)哲學(xué)家就餐模型實(shí)驗一、實(shí)驗說明API介紹(1)(1)等待指定的一個或全部的對象(*lpHandles)完成作業(yè),或等待超過指定的時間。DWORDWaitForMultipleObjects(
DWORDnCount,//句柄的數(shù)量
CONSTHANDLE*lpHandles,
//指向句柄數(shù)組的指針
BOOLfWaitAll,//等待標(biāo)志位
DWORDdwMilliseconds
//超時間隔(以毫秒為單位));API介紹(2)(2)創(chuàng)建一個信號量。HANDLECreateSemaphore(
LPSECURITY_ATTRIBUTES
lpSemaphoreAttributes,
//指定一個LPSECURITY_ATTRIBUTES結(jié)構(gòu),該結(jié)構(gòu)通常指定安全屬性LONGlInitialCount,//設(shè)置信號量的初始計數(shù)
LONGlMaximumCount,//信號量的最大計數(shù)LPCTSTRlpName//指定信號量對象的名稱);API介紹(3)(3)關(guān)閉指定句柄的對象。BOOLWINAPICloseHandle(HANDLEhObject//要關(guān)閉的對象的句柄);API介紹(4)(4)增加信號量(hSemaphore)的值,類似于PV操作中的V。BOOLReleaseSemaphore(HANDLEhSemaphore,//要操作的信號量對象的句柄LONGlReleaseCount,//以當(dāng)前為基礎(chǔ),信號量對象要增加的的值LPLONGlpPreviousCount//信號量變化前值的指針);API介紹(5)(5)創(chuàng)建一個線程,指定以C運(yùn)行庫的形式運(yùn)行,而CreateThread()以Win32調(diào)用方式創(chuàng)建線程。uintptr_t_beginthreadex(void*security,//指向一個SECURITY_ATTRIBUTES結(jié)構(gòu),用來標(biāo)識其返回的句柄能否被其子線程繼承
unsignedstack_size,//新線程的棧的大小
unsigned(*start_address)(void*),//新線程的起始地址
void*arglist,//向新線程傳遞的參數(shù)列表
unsignedinitflag,//新線程的初始狀態(tài)
unsigned*thrdaddr//指向一個32位的變量,改變量用來保存線程標(biāo)識符);測試數(shù)據(jù)生產(chǎn)者與消費(fèi)者模型:本實(shí)驗將使用以下四類不同的數(shù)據(jù)集合,來表示四個生產(chǎn)者生產(chǎn)的元素。第一類數(shù)據(jù):大寫字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ。對應(yīng)實(shí)驗源碼中的source0.txt第二類數(shù)據(jù):數(shù)字:0123456789。對應(yīng)實(shí)驗源碼中的source1.txt第三類數(shù)據(jù):漢語拼音字母:bpmfdtnlgkhjqzzhchshrzcsywaoeiuvaieiuiaoouiuieveeraneninun對應(yīng)實(shí)驗源碼中的source2.txt第四類數(shù)據(jù):符號:~!@#$%^&*()_+-=,對應(yīng)實(shí)驗源碼中的source3.txt生產(chǎn)者和消費(fèi)者模型
主進(jìn)程中創(chuàng)建n個線程來模擬生產(chǎn)者和消費(fèi)者。生產(chǎn)者生產(chǎn)產(chǎn)品,消費(fèi)者只消費(fèi)指定生產(chǎn)者的產(chǎn)品,連接生產(chǎn)者與消費(fèi)者的部分是緩沖池,生產(chǎn)者將生產(chǎn)出來的產(chǎn)品放在緩沖池中供消費(fèi)者消費(fèi),消費(fèi)者消費(fèi)產(chǎn)品并釋放緩沖區(qū)。
如果緩沖區(qū)滿,則生產(chǎn)者無法繼續(xù)放入產(chǎn)品,而要等待消費(fèi)者消費(fèi)。如果緩沖區(qū)空,則消費(fèi)者無法繼續(xù)消費(fèi),需要等待生產(chǎn)者生產(chǎn)產(chǎn)品。同時,生產(chǎn)者之間也是相互互斥的,而消費(fèi)這只有在針對同意產(chǎn)品消費(fèi)的時候才需要互斥。讀寫者模型
主進(jìn)程創(chuàng)建多個讀寫線程分別對臨界區(qū)進(jìn)行讀寫訪問,讀寫者之間遵從以下原則:1)讀讀不互斥:也就是說臨界區(qū)可以多個讀者同時訪問2)讀寫互斥:讀者和寫者不可以同時訪問臨界區(qū)3)寫寫互斥:寫者和寫者不可以同時訪問臨界區(qū)4)避免讀者或?qū)懻唣I死:沒有因為讀者或者寫者一直占用臨界區(qū)而對方得不到資源而被餓死的情況出現(xiàn)。二、實(shí)驗內(nèi)容實(shí)驗內(nèi)容(1)實(shí)驗一生產(chǎn)者消費(fèi)者模型實(shí)驗1.在windows下,使用vs創(chuàng)建工程CPProject;2.將生產(chǎn)者消費(fèi)者實(shí)驗的源碼添加到該工程中,包括:RunableThread.h,Buffer.h,Consumer.h,Producer.h,Driver.cpp;并將相關(guān)數(shù)據(jù)(consumeri.txt和sourcei.txt)文件放在項目的根目錄下。3.閱讀代碼,完成實(shí)驗報告中的相關(guān)內(nèi)容。4.執(zhí)行代碼,觀察程序的運(yùn)行結(jié)果,完成實(shí)驗報告的相關(guān)內(nèi)容。實(shí)驗內(nèi)容(2)實(shí)驗二讀寫者模型實(shí)驗1.在windows下,使用vs創(chuàng)建工程RWProject;2.講讀寫者模型源碼添加到該工程中,包括:RunableThread.h,Reader.h,Writer.h,RwLock.h,Driver.cpp五個文件3.其中,RwLock.h文件中的函數(shù):ReadUnlock函數(shù)和WriteUnlock函數(shù)沒有寫完,請閱讀其他源碼,將這兩個函數(shù)的內(nèi)容補(bǔ)齊,并完成相關(guān)實(shí)驗報告4.執(zhí)行代碼,觀察程序的運(yùn)行結(jié)果,完成實(shí)驗報告的相關(guān)內(nèi)容。實(shí)驗內(nèi)容(3)實(shí)驗三哲學(xué)家就餐模型實(shí)驗(小組任務(wù))仿照所給兩個經(jīng)典進(jìn)程同步代碼,實(shí)現(xiàn)哲學(xué)家就餐問題。提綱生產(chǎn)者-消費(fèi)者算法生產(chǎn)者P:Wait(empty);Wait(mutex);Buffer(in)=nextp;in:=(in+1)modn;Signal(mutex);Signal(full);消費(fèi)者C:Wait(full);Wait(mutex);netxc=buffer(out);out:=(out+1)modn;Signal(mutex);Signal(empty);mutex,full,empty:semaphoremutex:=1;full:=0;empty:=n;讀者-寫者算法(讀者優(yōu)先)讀者R:
Wait(rmutex);rcount++;if(rcount==1)Wait(wmutex);Signal(rmutex);Read_Action();Wait(rmutex);rcount--;if(rcount==0)Signal(wmutex);Signal(rmutex);寫者W:Wait(wmutex);Write_Action();Signal(wmutex);rmutex,wmutex:semaphorermutex:=1;wmutex:=1;rcount:intrcount:=0;哲學(xué)家進(jìn)餐算法哲學(xué)家i(i=0,1..5)thinking();Wait(
溫馨提示
- 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年北京市大興區(qū)事業(yè)單位招聘教師考試真題
- 中國電建集團(tuán)昆明勘測設(shè)計研究院有限公司招聘20人備考題庫及一套完整答案詳解
- 中國科學(xué)院半導(dǎo)體研究所2026年度招聘備考題庫帶答案詳解
- 2025四川雅安市雨城區(qū)公益性崗位招聘8人備考核心試題附答案解析
- 2025-2026 學(xué)年高一 藝術(shù)?音樂 期中復(fù)習(xí)卷 試卷及答案
- 2025年光伏逆變器散熱五年行業(yè)報告與發(fā)展趨勢
- 2025年陜西華森盛邦科技有限公司招聘備考核心試題附答案解析
- 2026北京市水利規(guī)劃設(shè)計研究院校園招聘3人備考核心試題附答案解析
- 2025年湖南高速設(shè)計咨詢研究院有限公司招聘7人考試核心題庫及答案解析
- 2025年湖南省中西醫(yī)結(jié)合醫(yī)院湖南省中醫(yī)藥研究院附屬醫(yī)院高層次人才公開招聘13人備考題庫完整答案詳解
- 標(biāo)準(zhǔn)-醫(yī)院免陪照護(hù)服務(wù)安全管理規(guī)范(送審稿)
- 英語試題卷參考答案山東省九五高中協(xié)作體2026屆高三年級12月質(zhì)量檢測(九五聯(lián)考)(12.17-12.18)
- 火災(zāi)探測器的安裝課件
- 酒店轉(zhuǎn)讓合同協(xié)議書范本大全
- DB21∕T 3722.3-2023 高標(biāo)準(zhǔn)農(nóng)田建設(shè)指南 第3部分:項目預(yù)算定額
- 壓力管道質(zhì)量保證體系培訓(xùn)
- 2025年度數(shù)據(jù)中心基礎(chǔ)設(shè)施建設(shè)及運(yùn)維服務(wù)合同范本3篇
- 【八年級上冊地理】一課一練2.2 世界的氣候類型 同步練習(xí)
- 筋膜刀的臨床應(yīng)用
- 中國石化《煉油工藝防腐蝕管理規(guī)定》實(shí)施細(xì)則(最終版)
- GB/T 70.3-2023降低承載能力內(nèi)六角沉頭螺釘
評論
0/150
提交評論