實(shí)驗三(同步及互斥實(shí)驗)_第1頁
實(shí)驗三(同步及互斥實(shí)驗)_第2頁
實(shí)驗三(同步及互斥實(shí)驗)_第3頁
實(shí)驗三(同步及互斥實(shí)驗)_第4頁
實(shí)驗三(同步及互斥實(shí)驗)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論