銀行家算法課程設(shè)計(jì)_第1頁
銀行家算法課程設(shè)計(jì)_第2頁
銀行家算法課程設(shè)計(jì)_第3頁
銀行家算法課程設(shè)計(jì)_第4頁
銀行家算法課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、武漢工程大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院綜合設(shè)計(jì)報(bào)告設(shè)計(jì)名稱: 操作系統(tǒng)綜合設(shè)計(jì) 設(shè)計(jì)題目: 進(jìn)程死鎖 學(xué)生學(xué)號: 專業(yè)班級: 學(xué)生姓名: 學(xué)生成績: 指導(dǎo)教師(職稱): 張立(講師) 完成時(shí)間: 15年6月8日 至 15年6 月12日 武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 制說明:1、報(bào)告中的第一、二、三項(xiàng)由指導(dǎo)教師在綜合設(shè)計(jì)開始前填寫并發(fā)給每個(gè)學(xué)生;四、五兩項(xiàng)(中英文摘要)由學(xué)生在完成綜合設(shè)計(jì)后填寫。2、學(xué)生成績由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)情況給出各項(xiàng)分值及總評成績。3、指導(dǎo)教師評語一欄由指導(dǎo)教師就學(xué)生在整個(gè)綜合設(shè)計(jì)期間的表現(xiàn)、設(shè)計(jì)完成情況、報(bào)告的質(zhì)量及答辯等方面,給出客觀、全面的評價(jià)。4、所有學(xué)生必須

2、參加綜合設(shè)計(jì)的答辯環(huán)節(jié)。凡不參加答辯者,其成績一律按不及格處理。答辯小組成員應(yīng)由2人及以上教師組成。5、報(bào)告正文字?jǐn)?shù)一般應(yīng)不少于5000字,也可由指導(dǎo)教師根據(jù)本門綜合設(shè)計(jì)的情況另行規(guī)定。6、平時(shí)表現(xiàn)成績低于6分的學(xué)生,其綜合設(shè)計(jì)成績按不及格處理。7、此表格式為武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院提供的基本格式(適用于學(xué)院各類綜合設(shè)計(jì)),各教研室可根據(jù)本門綜合設(shè)計(jì)的特點(diǎn)及內(nèi)容做適當(dāng)?shù)恼{(diào)整,并上報(bào)學(xué)院批準(zhǔn)。答辯記錄表學(xué)生姓名: 學(xué)號: 班級:2 答辯地點(diǎn): 計(jì)算機(jī)大樓8號機(jī)房 答辯內(nèi)容記錄:答辯成績合計(jì)分值各項(xiàng)分值評分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡意明,重點(diǎn)

3、突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題。答辯小組成員(簽字): 2015 年 6 月 12 日成績評定 類別合計(jì)分值各項(xiàng)分值評分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注平時(shí)表現(xiàn)1010遵守學(xué)習(xí)紀(jì)律,表現(xiàn)良好,積極完成綜合設(shè)計(jì)任務(wù),無曠課、遲到、早退等情況。設(shè)計(jì)完成情況3020按照要求完成設(shè)計(jì)內(nèi)容,方案合理,功能完善,設(shè)計(jì)工作量飽滿,能運(yùn)用專業(yè)知識和技能去發(fā)現(xiàn)與解決實(shí)際問題。10在設(shè)計(jì)過程中展現(xiàn)出了較強(qiáng)的學(xué)習(xí)能力、動手實(shí)踐能力、團(tuán)隊(duì)協(xié)作能力和創(chuàng)新意識。報(bào)告質(zhì)量3510報(bào)告格式規(guī)范,表述清晰,章節(jié)內(nèi)容組織恰當(dāng)。符號統(tǒng)一,圖表完備,符合規(guī)范要求。參考文獻(xiàn)數(shù)量在5篇以上,格

4、式及引用符合要求。15報(bào)告內(nèi)容翔實(shí),結(jié)構(gòu)嚴(yán)謹(jǐn)合理。課題背景介紹清楚,綜述充分。設(shè)計(jì)與實(shí)現(xiàn)等主要過程完整,論述具體透徹。能運(yùn)用所學(xué)專業(yè)知識對問題加以分析和求解。無抄襲現(xiàn)象。10設(shè)計(jì)報(bào)告對整個(gè)設(shè)計(jì)過程進(jìn)行了全面總結(jié),體現(xiàn)了收獲,得出了有價(jià)值的結(jié)論或結(jié)果。答辯情況2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問題??傇u成績指導(dǎo)教師評語指導(dǎo)教師: (簽字) 日期: 2015 年 6 月 12 日一、綜合設(shè)計(jì)目的、條件、任務(wù)和內(nèi)容要求:操作系統(tǒng)在計(jì)算機(jī)科學(xué)中是一門核心專業(yè)基礎(chǔ)課,涉及較多硬件和軟件知識。在計(jì)算機(jī)軟

5、、硬件課程的設(shè)置上,它起著承上啟下的作用。其特點(diǎn)是概念多、較抽象、涉及的知識面廣。操作系統(tǒng)綜合設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的一門實(shí)踐課程,是學(xué)習(xí)完操作系統(tǒng)課程后的課程設(shè)計(jì),本課程的教學(xué)目的是,通過學(xué)習(xí),使學(xué)生了解計(jì)算機(jī)操作系統(tǒng)的發(fā)展特點(diǎn);理解操作系統(tǒng)的基本概念、組成和各部分的功能;掌握計(jì)算機(jī)操作系統(tǒng)設(shè)計(jì)的基本原理和方法;理解常見操作系統(tǒng)的結(jié)構(gòu)原理并能熟練使用。進(jìn)程死鎖課題,要求學(xué)生熟悉windows中的線程及進(jìn)程的創(chuàng)建,掌握利用windows中的同步機(jī)制實(shí)現(xiàn)線程同步,掌握用銀行家算法進(jìn)行死鎖的避免。培養(yǎng)學(xué)生的抽象思維能力、邏輯推理能力和形式化思維方法,增強(qiáng)分析問題和解決問題的能力。設(shè)計(jì)任務(wù)和

6、內(nèi)容要求:利用銀行家算法實(shí)現(xiàn)進(jìn)程的死鎖避免。二、進(jìn)度安排:第1周(6.8-6.8) :學(xué)生熟悉課題的任務(wù)和要求,查閱相關(guān)文獻(xiàn)和資料,并做好編碼準(zhǔn)備第1周(6.8-6.10) :程序編碼、調(diào)試第1周(6.10-6.11) :程序編碼、調(diào)試和測試,書寫報(bào)告 第1周(6.12) :答辯、檢查、驗(yàn)收、遞交設(shè)計(jì)報(bào)告三、應(yīng)收集資料及主要參考文獻(xiàn):應(yīng)收集的資料:面向?qū)ο蟪绦蛟O(shè)計(jì)思想和方法高級程序設(shè)計(jì)語言參考手冊操作系統(tǒng)、軟件工程方面參考書籍主要參考文獻(xiàn):1 湯子瀛,哲鳳屏,湯小丹計(jì)算機(jī)操作系統(tǒng)m西安電子科技大學(xué)出版社,2007 2 譚浩強(qiáng)c語言程序設(shè)計(jì)m清華大學(xué)出版社,20103 蘇仕華數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)m機(jī)

7、械工業(yè)出版社,2005四、摘要:銀行家算法是一個(gè)避免死鎖的著名算法,是由艾茲格迪杰斯特拉在1965年為t.h.e系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。它以銀行借貸系統(tǒng)的分配策略為基礎(chǔ),判斷并保證系統(tǒng)的安全運(yùn)行。在銀行家算法執(zhí)行過程中,首先判斷申請資源的進(jìn)程所申請的資源數(shù)目是否合法,若是合法的,則可以為其進(jìn)行試分配,再利用安全性算法求出安全序列,如果存在安全序列,則說明可以給申請資源的進(jìn)程分配資源,分配成功,繼續(xù)為其它進(jìn)程服務(wù)。如果找不到安全序列,則說明為該進(jìn)程分配資源后系統(tǒng)會進(jìn)入不安全狀態(tài),所以不能為該進(jìn)程分配資源,使該進(jìn)程進(jìn)入阻塞狀態(tài)。若申請資源的進(jìn)程申請的資源數(shù)目不合法,則不需要進(jìn)行試分配,直

8、接使其進(jìn)入阻塞狀態(tài),處理其他申請資源的進(jìn)程。關(guān)鍵詞:計(jì)算機(jī)操作系統(tǒng);安全性算法;銀行家算法 五、abstract:banker algorithm is a famous algorithm to avoid deadlock, by ezra pound, dijkstra in 1965 to t.h.e system design of a kind of avoid deadlock algorithm. it is based on bank lending system allocation strategy, determine and ensure the safe opera

9、tion of the system. in the execution of a banker algorithm, first determine the number to apply for the application of the process of resources is legal, if it is legal, you can try to carry out distribution, recycling security algorithm and security sequence, if there is a safe sequence, then to ap

10、ply for the process of resource allocation of resources, distribution of success, to continue to serve other processes. if you cannot find security sequence, after the allocation of resources for the process system will enter the unsafe condition, so cant for the process allocation of resources, blo

11、cking the process into the state. if applying for the process of resource for the number of resources, illegal trial distribution is not required, and make it into the blocked state directly, to handle the applications for other resources.keywords:banker algorithm;os;security algorithm目錄摘 要 i第一章 課題概

12、述11.1 課題背景11.2 課題意義1第二章 設(shè)計(jì)簡介及設(shè)計(jì)方案論述 22.1 設(shè)計(jì)描述22.2 設(shè)計(jì)思想22.3 設(shè)計(jì)要求22.4 設(shè)計(jì)流程圖 3第三章 詳細(xì)設(shè)計(jì)43.1 銀行家算法的算法思想43.2 安全性檢查算法 43.3算法整體設(shè)計(jì)與調(diào)用 5第四章 設(shè)計(jì)結(jié)果及分析 64.1 程序輸入部分 64.3 資源分配成功結(jié)果輸出74.4 資源分配失敗結(jié)果輸出8總 結(jié)8致 謝9參考文獻(xiàn)10附錄:11摘 要銀行家算法是一個(gè)避免死鎖的著名算法,是由艾茲格迪杰斯特拉在1965年為t.h.e系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。它以銀行借貸系統(tǒng)的分配策略為基礎(chǔ),判斷并保證系統(tǒng)的安全運(yùn)行。在銀行家算法執(zhí)行過程

13、中,首先判斷申請資源的進(jìn)程所申請的資源數(shù)目是否合法,若是合法的,則可以為其進(jìn)行試分配,再利用安全性算法求出安全序列,如果存在安全序列,則說明可以給申請資源的進(jìn)程分配資源,分配成功,繼續(xù)為其它進(jìn)程服務(wù)。如果找不到安全序列,則說明為該進(jìn)程分配資源后系統(tǒng)會進(jìn)入不安全狀態(tài),所以不能為該進(jìn)程分配資源,使該進(jìn)程進(jìn)入阻塞狀態(tài)。若申請資源的進(jìn)程申請的資源數(shù)目不合法,則不需要進(jìn)行試分配,直接使其進(jìn)入阻塞狀態(tài),處理其他申請資源的進(jìn)程。關(guān)鍵詞:計(jì)算機(jī)操作系統(tǒng);安全性算法;銀行家算法 abstractbanker algorithm is a famous algorithm to avoid deadlock, b

14、y ezra pound, dijkstra in 1965 to t.h.e system design of a kind of avoid deadlock algorithm. it is based on bank lending system allocation strategy, determine and ensure the safe operation of the system. in the execution of a banker algorithm, first determine the number to apply for the application

15、of the process of resources is legal, if it is legal, you can try to carry out distribution, recycling security algorithm and security sequence, if there is a safe sequence, then to apply for the process of resource allocation of resources, distribution of success, to continue to serve other process

16、es. if you cannot find security sequence, after the allocation of resources for the process system will enter the unsafe condition, so cant for the process allocation of resources, blocking the process into the state. if applying for the process of resource for the number of resources, illegal trial

17、 distribution is not required, and make it into the blocked state directly, to handle the applications for other resources.keywords:banker algorithm;os;security algorithm第一章 課題概述1.1 課題背景在預(yù)防死鎖的各種算法中,總的來說,都是施加了較強(qiáng)的限制條件,從而使實(shí)現(xiàn)簡單,但卻嚴(yán)重地?fù)p害了系統(tǒng)的性能。在避免死鎖的算法中,施加的條件較較弱,有可能獲得令人滿意的系統(tǒng)性能。在該方法中把系統(tǒng)的狀態(tài)分為安全狀態(tài)和不安全狀態(tài),只要能使

18、系統(tǒng)處于安全狀態(tài),便可避免死鎖的發(fā)生。最具有代表性的避免死鎖的算法是dijkstra的銀行家算法。這是因?yàn)樵撍惴苡糜阢y行系統(tǒng)現(xiàn)金貸款的發(fā)放而得名,在這一次的課程設(shè)計(jì)中就要對銀行家算法從分析到實(shí)現(xiàn),整體做一個(gè)詳細(xì)的描述。1.2 課題意義從課程設(shè)計(jì)上講,該課程設(shè)計(jì)可以提高自己的分析問題,解決問題和動手能力,并對銀行家算法有更深刻的理解。從銀行家算法上本身講,通過算法可以判斷系統(tǒng)的安全性,對申請資源的進(jìn)程進(jìn)行限制,從而避免系統(tǒng)進(jìn)入死鎖狀態(tài)。第二章 設(shè)計(jì)簡介及設(shè)計(jì)方案論述2.1 設(shè)計(jì)描述當(dāng)系統(tǒng)在進(jìn)行資源管理時(shí),如果對進(jìn)城申請的資源分配不當(dāng),可能會使系統(tǒng)進(jìn)入死鎖狀態(tài),因而后面到來的進(jìn)程也無法順利執(zhí)行。

19、銀行家算法中,要對當(dāng)前申請資源的進(jìn)程申請資源的數(shù)目進(jìn)行判斷,如果可以試分配,則試求出一個(gè)安全序列,如果可以求出,則說明給這個(gè)進(jìn)程分配資源后系統(tǒng)不會進(jìn)入不安全狀態(tài),將該進(jìn)程申請的資源分配給他,若求不出安全序列,則說明將資源分配給該進(jìn)程后系統(tǒng)會進(jìn)入不安全狀態(tài),所以就使該進(jìn)程進(jìn)入阻塞狀態(tài),等待以后可以分配資源時(shí)再執(zhí)行該進(jìn)程,然后系統(tǒng)繼續(xù)服務(wù)其它進(jìn)程。通過這樣一個(gè)過程,可以有效避免系統(tǒng)進(jìn)入死鎖狀態(tài)。2.2 設(shè)計(jì)思想在避免死鎖的算法中,允許進(jìn)程動態(tài)地申請資源,系統(tǒng)在進(jìn)行資源分配之前,先計(jì)算資源分配的安全性。若此次分配不會使系統(tǒng)進(jìn)入不安全狀態(tài),便將資源分配給該進(jìn)程否則進(jìn)程等待。所謂安全狀態(tài)是指系統(tǒng)能按某種

20、順序如,就這樣來為每個(gè)進(jìn)程分配資源,直至最大需求。使每個(gè)進(jìn)程都可以順序地執(zhí)行完畢。若系統(tǒng)不存在這樣一個(gè)安全序列,那么系統(tǒng)此時(shí)會進(jìn)入不安全狀態(tài)。雖然并非所有的不安全狀態(tài)都會產(chǎn)生死鎖狀態(tài),但當(dāng)系統(tǒng)進(jìn)入不安全狀態(tài)后,便可能進(jìn)而進(jìn)入死鎖狀態(tài);反之,只要系統(tǒng)處于安全狀態(tài),系統(tǒng)便可避免進(jìn)入死鎖狀態(tài)。因此,避免死鎖的實(shí)質(zhì)在于,如何使系統(tǒng)不進(jìn)入不安全狀態(tài),銀行家算法就是用來判斷某種情況會不會進(jìn)入不安全狀態(tài)。2.3 設(shè)計(jì)要求(1)對各個(gè)進(jìn)程的進(jìn)程名,最大需求資源,已分配資源,系統(tǒng)可用資源等進(jìn)行的輸入。(2)對申請資源的進(jìn)程要有合法性判斷(如進(jìn)程名,申請資源數(shù)等)。(3)若有進(jìn)程申請資源,首先要對它申請的資源數(shù)進(jìn)

21、行判斷。(4)在上面判斷合法的前提下進(jìn)行試分配,利用銀行家算法求出安全序列。如果可以求出安全序列,則為該進(jìn)程分配資源,否則使它進(jìn)入阻塞狀態(tài)。2.4 設(shè)計(jì)流程圖開始初始化資源矩陣檢查初始狀態(tài)是否安全按用戶需求為進(jìn)程分配資源檢查現(xiàn)狀態(tài)是否安全為該進(jìn)程分配資源退出?結(jié)束不安全安全不安全否安全 是圖2.4 程序總體流程圖第三章 詳細(xì)設(shè)計(jì)3.1 銀行家算法的算法思想先對用戶提出的請求進(jìn)行合法性檢查,即檢查請求的是不大于需要的,是否不大于可利用的。若請求合法,則進(jìn)行試分配。最后對試分配后的狀態(tài)調(diào)用安全性檢查算法進(jìn)行安全性檢查。若安全,則分配,否則,不分配,恢復(fù)原來狀態(tài),拒絕申請。當(dāng)進(jìn)程i發(fā)出申請資源請求:

22、 (1)調(diào)用分配檢查函數(shù)檢查申請量是否不大于需求量再檢查檢查申請量是否小于系統(tǒng)中的可利用資源數(shù)量:若條件不符重新輸入,不允許申請大于需求量。(2)若以上條件都滿足,則系統(tǒng)試探著將資源分配給申請的進(jìn)程,并修改available,allocation和need中的數(shù)值。3.2 安全性檢查算法首先設(shè)置變量:工作數(shù)組work,它表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類資源數(shù)目,在執(zhí)行安全性算法開始時(shí),work= available。finish,它表示系統(tǒng)是否有足夠的資源分配給每個(gè)進(jìn)程,使之運(yùn)行完成。開始時(shí)先做finishi=0;當(dāng)有足夠的資源分配給進(jìn)程時(shí),再令finishi=1。然后再在進(jìn)程中查找符合

23、以下條件的進(jìn)程:條件1:finishi=0;條件2:needij=workj若找到,則執(zhí)行步驟(3)否則,執(zhí)行步驟(4)。當(dāng)進(jìn)程獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:workj= workj+ allocationij;finishi=1;最后循環(huán)檢查是否所有的finishi=1都滿足,如果是,則返回1表示系統(tǒng)處于安全狀態(tài),否則,返回0表示系統(tǒng)處于不安全狀態(tài)。3.3算法整體設(shè)計(jì)與調(diào)用主函數(shù)void main(),首先輸入每個(gè)進(jìn)程信息,然后判斷是否有進(jìn)程申請資源,若有,則調(diào)用int check_distribution(int* p,int k)函數(shù)判斷是否可以進(jìn)行

24、試分配,如果滿足試分配條件,調(diào)用int check_safe()函數(shù)求安全序列,如果可以求出安全序列,則說明分配后系統(tǒng)不會進(jìn)入不安全狀態(tài),正式將資源分配給申請資源的進(jìn)程,最后用void print()函數(shù)輸出分配資源后每個(gè)進(jìn)程的信息。如果求不出安全序列,說明分配后系統(tǒng)會處于不安全狀態(tài),則不能將資源分配給該進(jìn)程,讓其等待,系統(tǒng)恢復(fù)原始狀態(tài)。如果申請資源的數(shù)量不滿足條件,則讓該進(jìn)程等待。繼續(xù)判斷其他申請資源的進(jìn)程。其他函數(shù):(1)int check_distribution(int* p,int k):這個(gè)函數(shù)用來判斷是否可以進(jìn)行試分配,如果函數(shù)結(jié)果返回1,說明可以進(jìn)行試分配,如果函數(shù)返回0,說明

25、申請資源的進(jìn)程申請的資源數(shù)目不滿足request =need或request =available條件,不能為該進(jìn)程進(jìn)行試分配。(2)int check_safe():這個(gè)函數(shù)用來求安全序列,首先初始化work0i= availablei,然后循環(huán)找滿足條件 finishi=0 & needi0 = workk0的進(jìn)程,k表示最近執(zhí)行的進(jìn)程的進(jìn)程號,找到后將進(jìn)程i 加入sequence數(shù)組,再將finishi=1,表示進(jìn)程可以順利執(zhí)行則workkj=workk-1j+allocationij,k表示同上。再繼續(xù)找下一個(gè)滿足條件的進(jìn)程。如果單循環(huán)結(jié)束時(shí)每個(gè)進(jìn)程的finishi都等于1,則說明可以

26、找到安全序列,返回1,如果不是每個(gè)finishi都等于1,則說明找不到一個(gè)安全序列,返回0( 3 ) void print():這個(gè)函數(shù)用來輸出進(jìn)程信息,按表格形式輸出,并且輸出順序和安全序列相同,便于查看進(jìn)程執(zhí)行的執(zhí)行過程,并且在執(zhí)行過程中各矩陣信息變化也很容易跟蹤查看。第四章 設(shè)計(jì)結(jié)果及分析4.1 程序輸入部分圖4.1 程序輸入部分如圖4.1所示,輸入進(jìn)程名向量processneman,輸入系統(tǒng)現(xiàn)有各類資源數(shù)量availablem向量,輸入每個(gè)進(jìn)程對各類資源的最大需求數(shù)maxnm矩陣,輸入系統(tǒng)給每個(gè)進(jìn)程已分配的各類資源數(shù)allocationnm矩陣。4.2 輸出資源分配矩陣圖4.2 輸出資

27、源分配矩陣進(jìn)程信息輸入完成后,初始狀態(tài)各進(jìn)程信息輸出如圖4.2所示。4.3 資源分配成功結(jié)果輸出圖4.3 資源分配成功結(jié)果如果申請資源的進(jìn)程申請的資源數(shù)目滿足試分配條件,則再用check_safe()函數(shù)來求試分配后的安全序列,如果可以求出安全序列,則說明這次分配不會使系統(tǒng)進(jìn)入不安全狀態(tài),正式將資源分配給該進(jìn)程,修改系統(tǒng)資源信息。如果求不出安全序列,說明這次分配后系統(tǒng)會進(jìn)入不安全狀態(tài),不能給該進(jìn)程分配資源,系統(tǒng)恢復(fù)初始狀態(tài),打印出提示信息,執(zhí)行結(jié)果如圖4.3所示。4.4 資源分配失敗結(jié)果輸出 圖4.4 資源分配失敗結(jié)果由圖4.1、圖4.2、圖4.3、圖4.4運(yùn)行結(jié)果舉例可以看出本系統(tǒng)界面簡潔明

28、了大方,而且在人機(jī)交互上化繁為簡。結(jié)果輸出準(zhǔn)確無誤,自然得體,讓用戶一目了然???結(jié)課程設(shè)計(jì)是每一個(gè)大學(xué)生在大學(xué)生涯中都不可或缺的,它使我們在實(shí)踐中了鞏固了所學(xué)的知識、在實(shí)踐中鍛煉自己的動手能力;實(shí)習(xí)又是對每一位大學(xué)生所學(xué)專業(yè)知識的一種拓展手段,它讓我們學(xué)到了很多在課堂上根本就學(xué)不到的知識,不僅開闊了自己的視野,增長了自己的見識,也為我們以后進(jìn)一步走向社會打下了堅(jiān)實(shí)的基礎(chǔ),是我們走向以后走向工作崗位的奠基石。在這一個(gè)星期的課程設(shè)計(jì)的時(shí)間中,我得到了很多收獲,這是一次難得的經(jīng)歷。我的編程技巧和能力在這一次的設(shè)計(jì)中進(jìn)步了很多。致 謝在課程設(shè)計(jì)中,要特別感謝張老師給予我這次設(shè)計(jì)的機(jī)會,并且在他的悉心

29、的監(jiān)督和指導(dǎo)下,本次課程設(shè)計(jì)才能圓滿完成。同時(shí)也要感謝各位同學(xué)們的指導(dǎo),和同學(xué)們的討論和交流是完成我這次課程設(shè)計(jì)不可忽視的一部分。還要感謝給我提供良好實(shí)驗(yàn)環(huán)境的學(xué)校。如果沒有老師們和同學(xué)們還有學(xué)校的支持與幫助,本次課程設(shè)計(jì)不能這么順利的完成。再次感謝老師和同學(xué)的幫助,使我能夠圓滿完成這次課程設(shè)計(jì),為我以后的專業(yè)學(xué)習(xí)打下了良好的基礎(chǔ)。參考文獻(xiàn)1 湯子瀛,哲鳳屏,湯小丹計(jì)算機(jī)操作系統(tǒng)m西安電子科技大學(xué)出版社,2007 2 譚浩強(qiáng)c語言程序設(shè)計(jì)m清華大學(xué)出版社,20103 蘇仕華數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)m機(jī)械工業(yè)出版社,2005附錄:#include#include #define n 5 /進(jìn)程個(gè)數(shù)#de

30、fine m 3 /資源種類數(shù)void print();int check_safe();int check_distribution(int* p, int k);char process_namen; /進(jìn)程名int requestm; /請求數(shù)組int finishn; /標(biāo)記某一個(gè)進(jìn)程是否可以執(zhí)行int worknm; /初始為available,隨尋找安全序列而變化,防止安全序列未找到而丟了初始狀態(tài)的值int availablem; /資源清單系統(tǒng)中現(xiàn)有各資源空閑個(gè)數(shù)int work_allocationnm;int maxnm; /最大需求矩陣每個(gè)進(jìn)程對各類資源的最大需求數(shù)int

31、allocationnm; /分配矩陣系統(tǒng)給每個(gè)進(jìn)程已分配的各類資源數(shù)int neednm; /需求矩陣每個(gè)進(jìn)程還需要每種資源的個(gè)數(shù)int sequencen = 0 ; /存放安全序列號void main()int i = 0, j = 0, k = 0; /記錄申請資源的進(jìn)程的序列號int flag = 0; /標(biāo)記輸入的進(jìn)程名是否存在int safe = 0; /標(biāo)志系統(tǒng)是否出于安全狀態(tài),0表示不安全,1表示安全int distribution = 0; /標(biāo)志是否可以進(jìn)行試分配0表示可以,1表示不可以char flag1; /標(biāo)記是否有進(jìn)程申請資源 char name; /要請求資源的

32、進(jìn)程名printf(-n);printf(* 銀行家算法 *n);printf(-nn);printf(-請輸入各進(jìn)程的進(jìn)程名:n); /進(jìn)程名連續(xù)輸入for (i = 0; i請輸入現(xiàn)有各資源空閑個(gè)數(shù):n);for (i = 0; i請分別輸入每個(gè)進(jìn)程對各類資源的最大需求數(shù):n);for (i = 0; in; i+)for (j = 0; j請分別輸入系統(tǒng)給每個(gè)進(jìn)程已分配的各類資源數(shù)n);for (i = 0; in; i+)for (j = 0; jm; j+)scanf(%d, &allocationij);/計(jì)算每個(gè)進(jìn)程還需要每種資源的數(shù)for (i = 0; in; i+)for

33、(j = 0; jm; j+)needij = maxij - allocationij;printf(n初始化終了。n);printf(-nnn);for (i = 0; in; i+)sequencei = i;/輸出界面print();/檢查初始狀態(tài)是否安全safe = check_safe();if (0 = safe)printf(系統(tǒng)現(xiàn)處于不安狀態(tài),不能為進(jìn)程分配資源,進(jìn)入死鎖狀態(tài)。n);exit(0);else if (1 = safe)printf(系統(tǒng)處于安全狀態(tài),可以為進(jìn)程分配資源。n);while (1)safe = 0;getchar();printf(是否有進(jìn)程請求系

34、統(tǒng)資源.? (y/n) n);flag1 = getchar();if (y = flag1 | y = flag1)printf(請輸入進(jìn)程名:);getchar();while (1)scanf(%c, &name);for (i = 0; in; i+) /檢查進(jìn)程名輸入是否正確if (name = process_namei)flag = 1; /輸入的進(jìn)程名存在k = i;break;/找到申請資源的進(jìn)程序列號跳出getchar();/將在此之前的一個(gè)回車接收了,不然會影響輸入if (flag != 1)/進(jìn)程名輸入不合法printf(你輸入的進(jìn)程不存在,請重新輸入:);contin

35、ue;elsebreak;/進(jìn)程名輸入合法,則執(zhí)行下面操作else if (n = flag1 | n = flag1)printf(進(jìn)程執(zhí)行完畢,退出系統(tǒng)。n);break;else if (n != flag1 & y != flag1 & n != flag1 & y != flag1)printf(你的輸入有誤,請重新輸入: );continue;printf(請輸入該進(jìn)程請求各類資源的數(shù)量n);for (i = 0; im; i+)scanf(%d, &requesti);distribution = check_distribution(request, k); /檢查是否可以試分

36、配if (1 = distribution) safe = check_safe(); /可以試分配,則求安全序列if (1 = safe) /試分配成功printf(試分配成功,可以為該進(jìn)程分配資源。n); /是否給申請資源的進(jìn)程分配資源for (i = 0; im; i+)allocationki = allocationki + requesti; /為進(jìn)程分配資源后修改該進(jìn)程的有關(guān)資源數(shù)needki = needki - requesti;printf(分配后各資源數(shù)量如下:n);print();printf(分配成功!n);printf(系統(tǒng)剩余資源數(shù)各為: );for (i = 0; im; i+)printf(%d , availablei);printf(n);continue;else /試分配失敗printf(試分配失敗,有可能進(jìn)入死鎖狀態(tài),請等待。n);/未求出安全序列continue;else /試分配失敗printf(該進(jìn)程申請的資源太多,無法分配,請等待。n);continue;void print()int i, j;printf( 資源 work needtallocationtwork+allocationt finishn);printf( 進(jìn)程名 a b c a b

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論