操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告(總19頁(yè)).doc
《操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告(總19頁(yè)).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告(總19頁(yè)).doc(19頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、操作系統(tǒng)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告書(shū)題 目:售票員與乘客(信號(hào)量操作)題目編號(hào):2院 系:計(jì)算機(jī)科學(xué)與技術(shù)軟件服務(wù)與外包學(xué)院班 級(jí):11級(jí)9班小組成員:組長(zhǎng):楊揚(yáng)學(xué)號(hào):111810059組員:沈菲菲學(xué)號(hào):111810060組員:學(xué)號(hào):2013-06-30目 錄一、課程設(shè)計(jì)任務(wù)劃分1(一)課程內(nèi)容2(二)算法2(三)算法基本原理2三、基本思路4(一)變量4(二)所用函數(shù)5(三)流程圖9四、調(diào)試及實(shí)驗(yàn)結(jié)果14五、個(gè)人體會(huì)15一、課程設(shè)計(jì)任務(wù)劃分組員具體分工沈菲菲網(wǎng)上搜索程序資料程序合并實(shí)驗(yàn)報(bào)告書(shū)書(shū)寫(xiě)楊揚(yáng)程序調(diào)試設(shè)計(jì)項(xiàng)目流程心得體會(huì)二、基本原理(一)課程內(nèi)容編程序模擬車站售票廳內(nèi)進(jìn)程同步問(wèn)題,售票廳任何時(shí)刻最
2、多可容納20名購(gòu)票者進(jìn)入,否則需要在外面等待。每個(gè)購(gòu)票者可看成一個(gè)進(jìn)程。(二)算法信號(hào)量與P,V操作(三)算法基本原理生產(chǎn)者-消費(fèi)者問(wèn)題是一個(gè)經(jīng)典的線程同步問(wèn)題,該問(wèn)題最早由Dijkstra提出,用以演示他提出的信號(hào)量機(jī)制。在同一個(gè)線程地址空間內(nèi)執(zhí)行的兩個(gè)線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。消費(fèi)者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時(shí),如果沒(méi)有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費(fèi)者線程釋放出一個(gè)空緩沖區(qū)。當(dāng)消費(fèi)者線程消費(fèi)物品時(shí),如果沒(méi)有滿的緩沖區(qū),那么消費(fèi)者線程將被阻塞,直到新的物品被生產(chǎn)出來(lái)。多個(gè)生產(chǎn)/消費(fèi)者在有界緩沖上操作。
3、它利用N個(gè)字節(jié)的共享內(nèi)存作為有界循環(huán)緩沖區(qū),利用寫(xiě)一字符模擬放一個(gè)產(chǎn)品,利用讀一字符模擬消費(fèi)一個(gè)產(chǎn)品。當(dāng)緩沖區(qū)空時(shí)消費(fèi)者應(yīng)阻塞睡眠,而當(dāng)緩沖區(qū)滿時(shí)生產(chǎn)者應(yīng)當(dāng)阻塞睡眠。一旦緩沖區(qū)中有空單元,生產(chǎn)者線程就向空單元中入寫(xiě)字符,并報(bào)告寫(xiě)的內(nèi)容和位置。一旦緩沖區(qū)中有未讀過(guò)的字符,消費(fèi)者線程就從該單元中讀出字符,并報(bào)告讀取位置。生產(chǎn)者不能向同一單元中連續(xù)寫(xiě)兩次以上相同的字符,消費(fèi)者也不能從同一單元中連續(xù)讀兩次以上相同的字符。因此售票員與乘客也可轉(zhuǎn)化為生產(chǎn)者與消費(fèi)者的問(wèn)題,第一步:確定進(jìn)程間的關(guān)系。售票廳是各進(jìn)程共享的公有資源,當(dāng)售票廳中多于20名購(gòu)票者時(shí),廳外的購(gòu)票者需要在外面等待。所以進(jìn)程間是互斥的關(guān)系
4、。第二步:確定信號(hào)量及其值。只有一個(gè)公有資源:售票廳,所以設(shè)置一個(gè)信號(hào)量s。售票廳最多容納20個(gè)進(jìn)程,即可用資源實(shí)體數(shù)為20,s的初值就設(shè)為20。實(shí)現(xiàn):begin s:semaphore;s:=20;cobeginprocess PI(I=1,2,)begin P(s);進(jìn)入售票廳;購(gòu)票;退出;V(s);end;coend當(dāng)購(gòu)票者進(jìn)入售票廳前要執(zhí)行P(s)操作,執(zhí)行后若s大于或等于零,說(shuō)明售票廳的人數(shù)還未滿可進(jìn)入。執(zhí)行后若s小于零,則說(shuō)明售票廳的人數(shù)已滿不能進(jìn)入。這個(gè)實(shí)現(xiàn)中同時(shí)最多允許20個(gè)進(jìn)程進(jìn)入售票廳購(gòu)票,其余進(jìn)程只能等待。三、基本思路(一)變量#define N 2 / 乘客或售票員的數(shù)
5、目#define M 20 / 售票廳大小int in = 0; / 售票員售票的位置int out = 0; / 乘客買票的位置int buffM = 0; / 售票廳初始化為0, 開(kāi)始時(shí)沒(méi)有售票員sem_t empty_sem; / 同步信號(hào)量, 當(dāng)滿了時(shí)阻止售票員售票sem_t full_sem; / 同步信號(hào)量, 當(dāng)沒(méi)售票員時(shí)阻止乘客買票pthread_mutex_t mutex; / 互斥信號(hào)量, 一次只有一個(gè)線程訪問(wèn)緩沖int conductor_id = 0; /售票員idint passenger_id = 0; /乘客id(二)所用函數(shù)1. void print() 打印售票
6、廳情況2. void *conductor () 售票員方法 3. void *passenger () 乘客方法 4. int main() 主方法5. sem_wait()函數(shù)原形:int sem_wait(sem_t *sem);參數(shù):sem 指向信號(hào)燈的指針?lè)祷刂担喝舫晒t返回0,否則返回-1。我們能用sem_wait來(lái)申請(qǐng)共享資源,sem_wait函數(shù)能測(cè)試所指定信號(hào)燈的值,如果該值大于0,那就將他減1并即時(shí)返回。我們就能使用申請(qǐng)來(lái)的 共享資源了。如果該值等于0,調(diào)用線程就被進(jìn)入睡眠狀態(tài),直到該值變?yōu)榇笥?,這時(shí)再將他減1,函數(shù)隨后返回。sem_wait操作必須是原子的。6. sem
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 課程設(shè)計(jì) 實(shí)驗(yàn) 報(bào)告 19
鏈接地址:http://zhizhaikeji.com/p-3446047.html