操作系統(tǒng)課程設計實驗報告new

操作系統(tǒng)課程設計實驗報告new

ID:18611152

大?。?42.50 KB

頁數(shù):19頁

時間:2018-09-19

操作系統(tǒng)課程設計實驗報告new_第1頁
操作系統(tǒng)課程設計實驗報告new_第2頁
操作系統(tǒng)課程設計實驗報告new_第3頁
操作系統(tǒng)課程設計實驗報告new_第4頁
操作系統(tǒng)課程設計實驗報告new_第5頁
資源描述:

《操作系統(tǒng)課程設計實驗報告new》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫

1、操作系統(tǒng)課程設計實驗報告書題目:售票員與乘客(信號量操作)題目編號:2院系:計算機科學與技術軟件服務與外包學院班級:11級9班小組成員:組長:楊揚學號:111810059組員:沈菲菲學號:111810060組員:學號:2013-06-30目錄一、課程設計任務劃分1(一)課程內(nèi)容2(二)算法2(三)算法基本原理2三、基本思路4(一)變量4(二)所用函數(shù)5(三)流程圖9四、調(diào)試及實驗結果14五、個人體會15一、課程設計任務劃分組員具體分工沈菲菲網(wǎng)上搜索程序資料程序合并實驗報告書書寫楊揚程序調(diào)試設計項目流程心得體會17二、基本原理(一)課程內(nèi)容編程序模擬車

2、站售票廳內(nèi)進程同步問題,售票廳任何時刻最多可容納20名購票者進入,否則需要在外面等待。每個購票者可看成一個進程。(二)算法信號量與P,V操作(三)算法基本原理生產(chǎn)者-消費者問題是一個經(jīng)典的線程同步問題,該問題最早由Dijkstra提出,用以演示他提出的信號量機制。在同一個線程地址空間內(nèi)執(zhí)行的兩個線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個空緩沖區(qū)中供消費者線程消費。消費者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當生產(chǎn)者線程生產(chǎn)物品時,如果沒有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費者線程釋放出一個空緩沖區(qū)。當消費者線程消費物品時,如果沒有滿的緩沖區(qū)

3、,那么消費者線程將被阻塞,直到新的物品被生產(chǎn)出來。17多個生產(chǎn)/消費者在有界緩沖上操作。它利用N個字節(jié)的共享內(nèi)存作為有界循環(huán)緩沖區(qū),利用寫一字符模擬放一個產(chǎn)品,利用讀一字符模擬消費一個產(chǎn)品。當緩沖區(qū)空時消費者應阻塞睡眠,而當緩沖區(qū)滿時生產(chǎn)者應當阻塞睡眠。一旦緩沖區(qū)中有空單元,生產(chǎn)者線程就向空單元中入寫字符,并報告寫的內(nèi)容和位置。一旦緩沖區(qū)中有未讀過的字符,消費者線程就從該單元中讀出字符,并報告讀取位置。生產(chǎn)者不能向同一單元中連續(xù)寫兩次以上相同的字符,消費者也不能從同一單元中連續(xù)讀兩次以上相同的字符。因此售票員與乘客也可轉化為生產(chǎn)者與消費者的問題,第一

4、步:確定進程間的關系。售票廳是各進程共享的公有資源,當售票廳中多于20名購票者時,廳外的購票者需要在外面等待。所以進程間是互斥的關系。第二步:確定信號量及其值。只有一個公有資源:售票廳,所以設置一個信號量s。售票廳最多容納20個進程,即可用資源實體數(shù)為20,s的初值就設為20。實現(xiàn):begins:semaphore;s:=20;cobeginprocessPI(I=1,2,……)beginP(s);進入售票廳;購票;退出;17V(s);end;coend當購票者進入售票廳前要執(zhí)行P(s)操作,執(zhí)行后若s大于或等于零,說明售票廳的人數(shù)還未滿可進入。執(zhí)行

5、后若s小于零,則說明售票廳的人數(shù)已滿不能進入。這個實現(xiàn)中同時最多允許20個進程進入售票廳購票,其余進程只能等待。三、基本思路(一)變量#defineN2//乘客或售票員的數(shù)目#defineM20//售票廳大小intin=0;//售票員售票的位置intout=0;//乘客買票的位置intbuff[M]={0};//售票廳初始化為0,開始時沒有售票員sem_tempty_sem;//同步信號量,當滿了時阻止售票員售票sem_tfull_sem;//同步信號量,當沒售票員時阻止乘客買票pthread_mutex_tmutex;//互斥信號量,一次只有一個線

6、程訪問緩沖intconductor_id=0;//售票員idintpassenger_id=0;//乘客id17(二)所用函數(shù)1.voidprint()打印售票廳情況2.void*conductor()售票員方法3.void*passenger()乘客方法4.intmain()主方法5.sem_wait()函數(shù)原形:intsem_wait(sem_t*sem);參數(shù):sem指向信號燈的指針返回值:若成功則返回0,否則返回-1。我們能用sem_wait來申請共享資源,sem_wait函數(shù)能測試所指定信號燈的值,如果該值大于0,那就將他減1并即時返回。我

7、們就能使用申請來的共享資源了。如果該值等于0,調(diào)用線程就被進入睡眠狀態(tài),直到該值變?yōu)榇笥?,這時再將他減1,函數(shù)隨后返回。sem_wait操作必須是原子的。176.sem_post()掛出共享資源函數(shù)原形:intsem_post(sem_t*sem);參數(shù):sem指向信號燈的指針返回值:若成功則返回0,否則返回-1。當一個線程使用完某個信號燈時,他應該調(diào)用sem_post來告訴系統(tǒng)申請的資源已用完。本函數(shù)和sem_wait函數(shù)的功能正好相反,他把所指定的信號燈的值加1,然后喚醒正在等待該信號燈值變?yōu)檎龜?shù)的任意線程。7.sem_init()初始化信號等

8、函數(shù)原形:intsem_init(sem_t*sem,intshared,unsignedintvalue)

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。