freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

和尚挑水問(wèn)題課程設(shè)計(jì)(編輯修改稿)

2025-07-08 22:28 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 d,是由 semget 所獲得的信號(hào)量標(biāo)識(shí)符。sem_num 參數(shù)是信號(hào)量數(shù)目。當(dāng)我們使用信號(hào)量數(shù)組時(shí)會(huì)用到這個(gè)參數(shù)。通常,如果這是第一個(gè)且是唯一的一個(gè)信號(hào)量,這個(gè)值為 0。mand 參數(shù)是要執(zhí)行的動(dòng)作,而如果提供了額外的參數(shù),則是union semun,根據(jù) X/OPEN 規(guī)范,這個(gè)參數(shù)至少包括下列參數(shù): union semun { intval。 structsemid_ds *buf。 unsigned short *array。 } 許多版本的 Linux在頭文件 (通常為 )中定義了 semun聯(lián)合,盡管 X/Open 確認(rèn)說(shuō)我們必須定義我們自己的聯(lián)合。 有多個(gè)不同的 mand 值可以用于 semctl。在這里我們描述兩個(gè)會(huì)經(jīng)常用到的值。 這兩個(gè)通常的 mand 值為: SETVAL:用于初始化信號(hào)量為一個(gè)已知的值。所需要的值作為聯(lián)合 semun 的 val 成員來(lái)傳遞。在信號(hào)量第一次使用之前需要設(shè)置信號(hào)量。 IPC_RMID:當(dāng)信號(hào)量不再需要時(shí)用于刪除一個(gè)信號(hào)量標(biāo)識(shí)。 semctl 函數(shù)依據(jù) mand 參數(shù)會(huì)返回不同的值 。對(duì)于 SETVAL與 IPC_RMID,如果成功則會(huì)返回 0,否則會(huì)返回 1。 7 3 需求分析 某寺廟中有小和尚、老和尚若干人。廟內(nèi)有一水缸,由小和尚提水入缸 , 供老和尚飲用。水缸可容納 30 桶水,每次入水、取水僅為 1 桶,不可同時(shí)進(jìn)行。水取自同一水井,水井路窄,每次只能容納一個(gè)水桶取水,設(shè)水桶個(gè)數(shù)為 5 個(gè)。和尚挑水問(wèn)題就是使用某種機(jī)制,能夠使得若干名老和尚可以順利地喝到水,若干名小和尚之間能夠有條不紊地往水缸中入水。 先創(chuàng)建一個(gè)程序,創(chuàng)建三個(gè)子進(jìn) 程 A、 B、 C 模擬三個(gè)老和尚,隔一段時(shí)間久從水缸中取水飲用;創(chuàng) 建另外一個(gè)程序,創(chuàng)建三個(gè)子進(jìn)程 a、 b、 c 模擬三個(gè)小和尚,隔一段時(shí)間獲得一個(gè)水桶并從水井中取水注入水缸中 。如果水缸中沒(méi)有水,老和尚就停止從水缸中取水,并等待小和尚加水;而當(dāng)水缸中容量少于 30 桶,那么小和尚就向水缸中加水,直到水缸注滿為止。如此循環(huán)不止。 實(shí)現(xiàn)功能如下: ( 1) 創(chuàng)建進(jìn)程:手動(dòng)創(chuàng)建 A、 B、 C、 a、 b、 c 六 個(gè)進(jìn)程,都在界面上完成;要求包括進(jìn)程的名稱(chēng)(不能重復(fù))、執(zhí)行 時(shí)間和申請(qǐng)資源的等待時(shí)間等。在同一時(shí)刻可能有多個(gè)進(jìn)行在內(nèi)存申請(qǐng) 資源,即可以輸入多個(gè)進(jìn)程的資源申請(qǐng)。 ( 2) 臨界資源的管理,包括申請(qǐng)以及分 配等, 通過(guò)信號(hào)量 和信號(hào)量集 實(shí)現(xiàn) 。 ( 3) 生產(chǎn)者消費(fèi)者 算法,判斷是否可以進(jìn)行資源的分配。 任務(wù)目標(biāo)通過(guò)信號(hào)量實(shí)現(xiàn)多進(jìn)程之間對(duì)共享資源的互斥和同步 。 8 4 整體設(shè)計(jì) 概要設(shè)計(jì) 系統(tǒng) 2 個(gè)模塊:輸入輸出,進(jìn)程對(duì)資源的隨機(jī)申請(qǐng)及分配,通過(guò) 信號(hào)量和信號(hào)量集機(jī)制及生產(chǎn)者消費(fèi)者算法實(shí)現(xiàn)臨界資源管理,避免死鎖。 輸入輸出:包括系統(tǒng)運(yùn)行所需要的進(jìn)程的名稱(chēng),執(zhí)行時(shí)間,申請(qǐng)資源的等待時(shí)間,進(jìn)程對(duì)資源的需要量等信息以及系統(tǒng)所要顯示出的進(jìn)程的創(chuàng)建信息,資源的分配信息,進(jìn)行執(zhí)行信息,進(jìn)行動(dòng)態(tài)申請(qǐng)資源信息等。 進(jìn)程對(duì)資源 的隨機(jī)申請(qǐng)及分配:根據(jù)所輸入的進(jìn)程、資源、以及進(jìn)程對(duì)資源的最大申請(qǐng)情況,隨機(jī)產(chǎn)生進(jìn)程當(dāng)前對(duì)資源的申請(qǐng),輸出相應(yīng)的分配信息與進(jìn)程執(zhí)行信息并使用生產(chǎn)者消費(fèi)者算法對(duì)進(jìn)程的資源申請(qǐng)進(jìn)行判斷。 臨界資源的管理:創(chuàng)建相應(yīng)個(gè)數(shù)的進(jìn)程,完成進(jìn)程的并發(fā)執(zhí)行,使用互斥信號(hào)量使各進(jìn)程互斥的進(jìn)入各自的臨界區(qū)對(duì)資源進(jìn)行申請(qǐng),進(jìn)程執(zhí)行完畢后,互斥的對(duì)資源進(jìn)行恢復(fù)。 避免死鎖:對(duì)當(dāng)前進(jìn)程對(duì)資源的申請(qǐng)利用生產(chǎn)者消費(fèi)者算法進(jìn)行判斷,看系統(tǒng)分配后是否處于安全狀態(tài),若處于安全狀態(tài),則將資源分配給進(jìn)程,并輸出分配信息,否則對(duì)不予以分配 。 程序流程圖及運(yùn)行結(jié)果 下圖為 master 程序的流程圖 9 開(kāi)始 調(diào)用 fork() 產(chǎn)生子進(jìn)程 pidA 調(diào)用 fork()產(chǎn)生子進(jìn)程pidB 調(diào)用 fork()產(chǎn)生子進(jìn)程pidC PidA==0? PidB==0? PidC==0? pidA==1? PidB==1? PidC==1? 出錯(cuò)返回 結(jié)束 循環(huán)調(diào)用mws() 循環(huán)調(diào)用mws() N Y N Y Y N Y Y N Y Y Y N 見(jiàn)圖 10 圖 1 程序運(yùn)行結(jié)果為下圖: 調(diào)用 mws() 水缸中有 沒(méi)有水? 取 水 發(fā)出取水通知 等待 2s Y N 11 如上圖當(dāng)水缸沒(méi)水的時(shí)候執(zhí)行 acolyte 程序 12 此圖為 acolyte 程序的流程圖 ,下圖為程序執(zhí)行結(jié)果: 開(kāi)始 Pida==0? Pidb==0? Pidc==0? pidA==1? PidB==1? PidC==1? 出錯(cuò)返回 結(jié)束 循環(huán)調(diào)用FILLTHEBARREK() 循環(huán)調(diào)用FILLTHEBARREK() N Y Y Y Y Y 調(diào)用FILLTHEBARREK() 水缸水量 《 30桶? 桶和井可同時(shí)取用? 取水入缸 水滿 放棄已得到的桶或井 N Y N Y N Y 調(diào)用 fork()創(chuàng)建三個(gè)子程序 13 當(dāng)水缸有水時(shí),老和尚可以喝水: 14 實(shí)驗(yàn)結(jié)果 15 總 結(jié) 經(jīng)過(guò)這次的 課程設(shè)計(jì),讓我經(jīng)歷了一次有意義的 過(guò)程,讓我了解了團(tuán)隊(duì)合作的重要性,起初我們只是在不停的各干各的,發(fā)現(xiàn)根本不可能完成預(yù)期的任務(wù),后來(lái)我們坐下來(lái)討論了系統(tǒng)的功能,然后各司其職,發(fā)現(xiàn)效果真 的
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1