版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 操作系統(tǒng)</b></p><p><b> 課程設(shè)計(jì)說(shuō)明書(shū)</b></p><p> 題目: 銀行家算法模擬 </p><p> 2013年 1月 9日</p><p> 課程設(shè)計(jì)(論文)任務(wù)書(shū)</p>&l
2、t;p> 計(jì)算機(jī)科學(xué)與工程學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系 </p><p> 2013年 1月 9日</p><p><b> 摘 要</b></p><p> 銀行家算法是一個(gè)用來(lái)預(yù)防系統(tǒng)進(jìn)入死鎖狀態(tài)的算法,用它可以判斷系統(tǒng)的安全性,如果系統(tǒng)當(dāng)前處于安全狀態(tài),則可以為申請(qǐng)資源的進(jìn)程
3、分配資源;如果不是安全狀態(tài),則不能為申請(qǐng)資源的進(jìn)程分配資源。 銀行家算法執(zhí)行過(guò)程中,首先判斷申請(qǐng)資源的進(jìn)程所申請(qǐng)的資源數(shù)目是否合法,若是合法的,則可以為其進(jìn)行試分配,再利用安全性算法求出安全序列,如果存在安全序列,則說(shuō)明可以給申請(qǐng)資源的進(jìn)程分配資源,分配成功,繼續(xù)為其它進(jìn)程服務(wù)。如果找不到安全序列,則說(shuō)明為該進(jìn)程分配資源后系統(tǒng)會(huì)進(jìn)入不安全狀態(tài),所以不能為該進(jìn)程分配資源,使該進(jìn)程進(jìn)入阻塞狀態(tài)。若申請(qǐng)資源的進(jìn)程申請(qǐng)的資源數(shù)目不合法,則不需要
4、進(jìn)行試分配,直接使其進(jìn)入阻塞狀態(tài),處理其他申請(qǐng)資源的進(jìn)程。 </p><p> 關(guān)鍵詞:可用資源,最大需求矩陣,分配矩陣,需求矩陣,安全性算法,安全序列</p><p><b> 目 錄</b></p><p><b> 1.緒論1</b></p><p><b> 1.1系統(tǒng)分
5、工1</b></p><p><b> 1.2課題背景1</b></p><p><b> 1.3死鎖1</b></p><p><b> 1.4安全性2</b></p><p> 1.5算法設(shè)計(jì)思想2</p><p>&l
6、t;b> 2.需求分析3</b></p><p><b> 2.1基本要求3</b></p><p><b> 2.2模塊劃分3</b></p><p><b> 3.總體設(shè)計(jì)4</b></p><p><b> 3.1算法設(shè)計(jì)4
7、</b></p><p><b> 3.2模塊設(shè)計(jì)5</b></p><p><b> 4.詳細(xì)設(shè)計(jì)6</b></p><p> 4.1程序流程圖6</p><p> 4.2主要函數(shù)的核心代碼6</p><p><b> 5.程序測(cè)試
8、12</b></p><p> 5.1界面設(shè)計(jì)12</p><p> 5.2數(shù)據(jù)測(cè)試13</p><p> 5.3操作提示14</p><p><b> 6.總結(jié)16</b></p><p><b> 參考文獻(xiàn)17</b></p>
9、<p><b> 1.緒論</b></p><p><b> 1.1系統(tǒng)分工</b></p><p><b> 1.2課題背景</b></p><p> 在多道程序系統(tǒng)中,雖可以借助多個(gè)進(jìn)程的并發(fā)執(zhí)行來(lái)改善系統(tǒng)的資源利用率,提高系統(tǒng)吞吐量,但可能發(fā)生一種危險(xiǎn)——死鎖,即多個(gè)進(jìn)程在運(yùn)
10、行過(guò)程中因爭(zhēng)奪資源而造成的一種僵局,若無(wú)外力作用,將無(wú)法再向前推進(jìn)。如此,尋求一種避免死鎖的方法便顯得有為重要。死鎖的產(chǎn)生一般的原因有兩點(diǎn):競(jìng)爭(zhēng)資源和進(jìn)程間推進(jìn)順序非法。因此,我們只需在當(dāng)前的有限資源下,找到一組合法的執(zhí)行順序,便能很好的避免死鎖,我們稱(chēng)它為安全序列。而銀行家算法起源于銀行系統(tǒng)的發(fā)放貸款,和計(jì)算機(jī)操作系統(tǒng)的資源分配完全符合,因此可以借鑒該算法的思想,設(shè)計(jì)出一種有效的算法程序,解決該問(wèn)題。</p><p
11、><b> 1.3死鎖</b></p><p> 所謂死鎖: 是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。此時(shí)稱(chēng)系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱(chēng)為死鎖進(jìn)程。 由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請(qǐng)資源后,使得有關(guān)進(jìn)程在無(wú)外力協(xié)助下,永遠(yuǎn)分配不到必需的資源而無(wú)法繼續(xù)運(yùn)行,這就產(chǎn)生了一種特
12、殊現(xiàn)象:死鎖。</p><p> 在計(jì)算機(jī)系統(tǒng)中,涉及軟件,硬件資源都可能發(fā)生死鎖。例如:系統(tǒng)中只有一臺(tái)CD-ROM驅(qū)動(dòng)器和一臺(tái)打印機(jī),某一個(gè)進(jìn)程占有了CD-ROM驅(qū)動(dòng)器,又申請(qǐng)打印機(jī);另一進(jìn)程占有了打印機(jī),還申請(qǐng)CD-ROM。結(jié)果,兩個(gè)進(jìn)程都被阻塞,永遠(yuǎn)也不能自行解除。</p><p><b> 1.4安全性</b></p><p>
13、全序列的的實(shí)際意義在于:系統(tǒng)每次進(jìn)行資源分配后,如果對(duì)于系統(tǒng)中新的資源狀況,存在一個(gè)安全序列,則至少存在一條確保系統(tǒng)不會(huì)進(jìn)入死鎖的路徑。按照該序列,銀行家可以實(shí)施一個(gè)有效的分配過(guò)程使得所有客戶(hù)得到滿(mǎn)足,行家算法的核心在于安全序列的產(chǎn)生。安全序列正是一種安全的進(jìn)程推進(jìn)順序。</p><p><b> 1.5算法設(shè)計(jì)思想</b></p><p> 我們可以把操作系統(tǒng)看
14、作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶(hù)向銀行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請(qǐng)資源時(shí),要測(cè)試該進(jìn)程對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿(mǎn)足它的最大需求量則按當(dāng)前的申請(qǐng)量分配資源,否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過(guò)了該進(jìn)程對(duì)資源的最大需求量。若超過(guò)則拒絕分配資源,若沒(méi)有超過(guò)則再測(cè)試系
15、統(tǒng)現(xiàn)存的資源能否滿(mǎn)足該進(jìn)程尚需的最大資源量,若能滿(mǎn)足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配。</p><p><b> 2.需求分析</b></p><p><b> 2.1基本要求</b></p><p> ?。?)從鍵盤(pán)輸入當(dāng)前系統(tǒng)的資源信息,包括當(dāng)前可用資源,每個(gè)進(jìn)程對(duì)各類(lèi)資源的最大需求量,每個(gè)進(jìn)程當(dāng)前已分配
16、的各個(gè)資源量和每個(gè)進(jìn)程尚需要的各個(gè)資源量,輸出結(jié)果顯示在界面上。 </p><p> ?。?)輸入進(jìn)程請(qǐng)求,按照設(shè)計(jì)好的安全性算法進(jìn)行檢查,得到結(jié)果并輸出整個(gè)執(zhí)行過(guò)程的相關(guān)信息和最終結(jié)果(主要包括資源分配表和安全序列)。 </p><p> (3)要求要有各種異常的處理,程序的可控制性和可連續(xù)性執(zhí)行。包括對(duì)進(jìn)程的存在有無(wú)檢查,請(qǐng)求向量的不合法檢查,試分配失敗后的數(shù)據(jù)恢復(fù)和重新接受進(jìn)程
17、請(qǐng)求等。</p><p><b> 2.2模塊劃分</b></p><p><b> ?。?)分配模塊</b></p><p> 輸入一組資源及作業(yè)的數(shù)量,分配資源及作業(yè)的各項(xiàng)屬性。再配置作業(yè)的資源最大需求量及已申請(qǐng)的資源屬性。以及資源的添加、修改、刪除和分配功能,此外,還有對(duì)作業(yè)的添加。</p><
18、;p><b> (2)判定模塊</b></p><p> 通過(guò)銀行家算法對(duì)已經(jīng)分配完畢的資源及作業(yè)的屬性進(jìn)行判斷,判斷申請(qǐng)是否大于需求,若大于則出錯(cuò),則提示出錯(cuò)信息;判斷申請(qǐng)是否大于當(dāng)前資源,若大于則出錯(cuò),則提示出錯(cuò)信息。</p><p><b> ?。?)檢查模塊</b></p><p> 根據(jù)銀行家算法進(jìn)行
19、資源分配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之中,以避免死鎖的發(fā)生。當(dāng)資源分配可行時(shí),則分配;若安全性算法不能通過(guò),則不予分配,以保證系統(tǒng)的安全和死鎖的不發(fā)生。</p><p><b> 3.總體設(shè)計(jì)</b></p><p><b> 3.1算法設(shè)計(jì)</b></p><p> (1)銀行家算法的實(shí)現(xiàn),需要用到
20、以下主要數(shù)據(jù):</p><p> int Max[100][100]={0};//各進(jìn)程所需各類(lèi)資源的最大需求</p><p> int Avaliable[100]={0};//系統(tǒng)可用資源</p><p> CString name[100]={""};//資源的名稱(chēng)</p><p> int Allocati
21、on[100][100]={0};//系統(tǒng)已分配資源</p><p> int Need[100][100]={0};//還需要資源</p><p> int Request[100]={0};//請(qǐng)求資源向量</p><p> int temp[100]={0};//存放安全序列</p><p> int Work[100]={0}
22、;//存放系統(tǒng)可提供資源</p><p> int M=100;//作業(yè)的最大數(shù)為100</p><p> int N=100;//資源的最大數(shù)為100</p><p> int dqzysl=3,zysl=0,worksl=0;</p><p><b> int sign;</b></p><
23、;p> a)資源及作業(yè)屬性配置:這是對(duì)資源和作業(yè)的分配過(guò)程,在實(shí)現(xiàn)銀行家算法之前,需有資源和作業(yè)的屬性信息,才可以驗(yàn)證銀行家算法及安全性算法,最終實(shí)現(xiàn)銀行家算法。</p><p> b)銀行家算法:銀行家算法是對(duì)資源分配進(jìn)行判斷,判斷資源分配的可行性,以免導(dǎo)致死鎖的發(fā)生,是避免死鎖的重要一步。</p><p> c) 安全性算法:安全性算法是對(duì)于安全性檢查算法主要是根據(jù)銀行家算
24、法進(jìn)行資源分配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之中。</p><p> (2) 銀行家算法中用到的主要數(shù)據(jù)結(jié)構(gòu):</p><p> 可利用資源向量 int Available[j] j為資源的種類(lèi)。</p><p> 最大需求矩陣 int Max[i][j] i為進(jìn)程的數(shù)量。 </p><p>
25、 分配矩陣 int Allocation[i][j] </p><p> 需求矩陣 int need[i][j]= Max[i][j]- Allocation[i][j] </p><p> 申請(qǐng)各類(lèi)資源數(shù)量 int Request i[j] i進(jìn)程申請(qǐng)j資源的數(shù)量 </p><p> 工作向量 in
26、t Work[x] int Finish[y]</p><p><b> 3.2模塊設(shè)計(jì)</b></p><p> ?。?)主要模塊如圖3-1。</p><p><b> 圖3-1主要模塊</b></p><p> ?。?)子模塊如圖3-2。</p><p>&l
27、t;b> 圖3-2子模快</b></p><p><b> 4.詳細(xì)設(shè)計(jì)</b></p><p><b> 4.1程序流程圖</b></p><p><b> 圖4-1系統(tǒng)流程圖</b></p><p> 4.2主要函數(shù)的核心代碼</p>
28、<p><b> (1)添加資源</b></p><p> 此處代碼的實(shí)現(xiàn)的功能是添加資源名稱(chēng),資源數(shù)量和作業(yè)數(shù)量,并且在下一步操作后提示資源是否成功添加。由于輸入的資源數(shù)不止一個(gè),輸入的數(shù)據(jù)可能會(huì)出錯(cuò),因此這里用到了if條件語(yǔ)句和for循環(huán)語(yǔ)句。當(dāng)輸入的數(shù)據(jù)不合法時(shí),彈出對(duì)話框提示出錯(cuò)。</p><p> void CBank123Dlg::On
29、addzy() </p><p> {// TODO: Add your control notification handler code here</p><p> UpdateData(TRUE);</p><p> CString str="";</p><p> if(dqzysl>0){</
30、p><p><b> sign=1;</b></p><p> for(int i=0;i<3;i++){</p><p> if(name[i]==m_zymc && m_zymc!=""){</p><p><b> sign=0;</b><
31、;/p><p> str="該資源已存在!";</p><p><b> }}</b></p><p> if(m_zymc!="" && m_zysl!=0 && sign==1 ){</p><p> Avaliable[3-dqzysl]=
32、m_zysl;</p><p> name[3-dqzysl]=m_zymc;</p><p><b> zysl++;</b></p><p> MessageBox("數(shù)據(jù)輸入成功!若不配置資源,請(qǐng)配置作業(yè)數(shù)量!\n系統(tǒng)現(xiàn)在共有"+conver(4-dqzysl)+"個(gè)資源。\n當(dāng)前輸入資源名稱(chēng)為:&qu
33、ot;+name[3-dqzysl]+"\t數(shù)量為:"+conver(Avaliable[3-dqzysl]),"提示", MB_OK );</p><p> dqzysl--;}</p><p> else MessageBox("輸入數(shù)據(jù)不合法!"+str,"提示", MB_OK ); }</p&
34、gt;<p> else MessageBox("錯(cuò)誤!當(dāng)前系統(tǒng)支持資源數(shù)目為3個(gè)!您已經(jīng)分配3個(gè)了!請(qǐng)配置作業(yè)數(shù)量!","提示", MB_ICONEXCLAMATION );</p><p> UpdateData(FALSE);</p><p><b> }</b></p><p&
35、gt;<b> ?。?)銀行家算法</b></p><p> a.如果Requestj<Need or Requestj=Need,則轉(zhuǎn)向步驟b;否則,認(rèn)為出錯(cuò),因?yàn)樗枰馁Y源數(shù)已超過(guò)它所宣布的最大值。 </p><p> b如果Request<Available or Request=Available,則轉(zhuǎn)向步驟c;否則,表示系統(tǒng)中尚無(wú)足夠的資源,進(jìn)程必須
36、等待。</p><p> c.系統(tǒng)試探把要求的資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值: Available=Available-Request[i]; Allocation=Allocation+Request; Need=Need-Request; </p><p> d.系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。</p
37、><p> for (j=0;j<zysl;j++){</p><p> if(Request[j]>Need[i][j]) { //判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)</p><p> msg="進(jìn)程 "+conver(i)+"申請(qǐng)的資源大于它需要的資源\n";</p><p> ms
38、g+=" 分配不合理,不予分配!\n";</p><p> MessageBox(msg,"提示",MB_OK);</p><p> ch='n'; break; }</p><p> else {if(Request[j]>Avaliable[j]){ //判斷申請(qǐng)是否大于當(dāng)前資源,若//大于則出
39、錯(cuò) </p><p> msg="進(jìn)程"+conver(i)+"申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源\n";</p><p> msg+=" 分配出錯(cuò),不予分配!\n";</p><p> MessageBox(msg,"提示",MB_
40、OK);</p><p> ch='n'; break; </p><p><b> }}</b></p><p><b> ?。?)安全性算法</b></p><p> a.設(shè)置兩個(gè)向量 ①工作向量Work。它表示系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)行所需要的各類(lèi)資源數(shù)目,執(zhí)行安全算
41、法開(kāi)始時(shí),Work=Allocation; ②布爾向量Finish。它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成,開(kāi)始時(shí)先做Finish[i]=false,當(dāng)有足夠資源分配給進(jìn)程時(shí),令Finish[i]=true。</p><p> b.從進(jìn)程集合中找到一個(gè)能滿(mǎn)足下述條件的進(jìn)程: ①Finish[i]=false ②Need<or=Work 如找到,執(zhí)行步驟c;否則,執(zhí)行步驟d。 </p>
42、;<p> c.當(dāng)進(jìn)程P獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行: Work=Work+Allocation; Finish[i]=true; 轉(zhuǎn)向步驟b。 </p><p> d.如果所有進(jìn)程的Finish[i]=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。 </p><p> CString safe()//安全性算法&
43、lt;/p><p> {int i,k=0,m,apply,Finish[100]={0};</p><p> int j;int flag=0;CString str3;</p><p> Work[0]=Avaliable[0];Work[1]=Avaliable[1];Work[2]=Avaliable[2];</p><p> f
44、or(i=0;i<worksl;i++){ apply=0;</p><p> for(j=0;j<zysl;j++){</p><p> if (Finish[i]==False&&Need[i][j]<=Work[j]){ apply++;</p><p> if(apply==zysl){for(m=0;m<z
45、ysl;m++)</p><p> Work[m]=Work[m]+Allocation[i][m];//變分配數(shù)</p><p> Finish[i]=True;temp[k]=i;i=-1; k++;flag++;</p><p><b> } }}}</b></p><p> for(i=0;i<w
46、orksl;i++){</p><p> if(Finish[i]==False)</p><p> { CString str2="系統(tǒng)不安全"; return str2;}}</p><p> str3="系統(tǒng)是安全的!分配的序列:\n";</p><p> for(i=0;i<wo
47、rksl;i++){//輸出運(yùn)行進(jìn)程數(shù)組</p><p> str3=str3+conver(temp[i])+"\t";</p><p> if(i<worksl-1) str3=str3+"->";}</p><p> str3+="\n";return str3;}</p>
48、;<p><b> ?。?)修改資源</b></p><p> 輸入的資源可能不符合自己的需要,或者需要用到其他的資源,這時(shí)可以不必重新輸入資源數(shù)量,在原有的基礎(chǔ)進(jìn)行修改即可,此段代碼的作用就是修改資源的名稱(chēng)和數(shù)量。</p><p> void CBank123Dlg::Onxgzy() {// TODO: Add your control noti
49、fication handler code here</p><p> UpdateData(TRUE); </p><p> int sign=0;</p><p> if(m_zymc!="" && m_zysl!=0 ){</p><p> for(int i=0;i<zysl;i++
50、){</p><p> if(name[i]==m_zymc){</p><p> Avaliable[i]=m_zysl;</p><p> MessageBox("資源修改成功!","提示",MB_OK);</p><p><b> sign=1;</b></p&
51、gt;<p> CBank123Dlg::Onfinish();</p><p><b> }}</b></p><p> if(sign==0) MessageBox("資源不存在!","提示",MB_OK);}</p><p> else MessageBox("請(qǐng)?jiān)?/p>
52、資源的名稱(chēng)和資源數(shù)量輸入合法數(shù)據(jù)!","提示",MB_OK);</p><p> UpdateData(FALSE);}</p><p><b> ?。?)刪除資源</b></p><p> 資源不需要的時(shí)候應(yīng)該刪除,當(dāng)資源名稱(chēng)不存在和輸入的資源名稱(chēng)為空時(shí),提示重新進(jìn)行操作。</p><p&
53、gt; void CBank123Dlg::Onsczy() {// TODO: Add your control notification handler code here</p><p> UpdateData(TRUE);</p><p> CString ming;</p><p> ming=m_zymc;</p><p>
54、; int i,flag=1,sign=0;</p><p> if(ming!=""){</p><p> for(i=0;i<zysl;i++){</p><p> if(ming==name[i]){ </p><p><b> flag=0;}</b></p>&
55、lt;p> else sign++;}</p><p> if(sign==zysl) MssageBox("該資源名稱(chēng)不存在,請(qǐng)重新輸入!","提示",MB_OK);</p><p> if(flag==0){</p><p> for(int j=i;j<zysl-1;j++){</p>
56、<p> name[j]=name[j+1];</p><p> Avaliable[j]=Avaliable[j+1]; }</p><p> zysl=zysl-1;</p><p> CBank123Dlg::Onfinish();</p><p> CBank123Dlg::Onshow();}}</p&
57、gt;<p> else MessageBox("資源名稱(chēng)不能為空,請(qǐng)重新輸入!","提示",MB_OK); </p><p> UpdateData(FALSE);}</p><p> ?。?)增加資源和輸出矩陣</p><p> 資源的數(shù)量不夠時(shí),需要再次輸入,增加成功后提示下一步操作。在輸入框里輸入矩
58、陣數(shù)據(jù),然后配置資源最大需求量,可以在系統(tǒng)狀態(tài)顯示區(qū)看到系統(tǒng)狀態(tài)信息。</p><p> void CBank123Dlg::Onzjwork() {</p><p> UpdateData(TRUE);worksl++;</p><p> int flag=2;</p><p> if(m_data!=""){
59、 CString str=m_data;</p><p> char *csInput; csInput=str.GetBuffer(str.GetLength()); </p><p> //提取字符串,把單詞存放在數(shù)組csInput中 </p><p> char seps[]= ","; //字符串以空
60、格分隔符 </p><p> char *token; </p><p> token = strtok( csInput, seps ); </p><p> char *csEditInput[100];</p><p> int index=0; //全局變量 </p><p> wh
61、ile( token != NULL )</p><p> { //把提取到的單詞存放到數(shù)組csEditIput中 </p><p> csEditInput[index]=token; /* 把單詞存放在數(shù)組csEditInput中" */ </p><p> index++; token = strtok( NULL, seps );</p
62、><p> }/* Get next token: */ </p><p> int count=0;</p><p> for(int j=0;j<zysl;j++){</p><p> Max[worksl-1][j]=atoi(csEditInput[count]); Need[worksl-1][j]=M
63、ax[worksl-1][j]-Allocation[worksl-1][j];</p><p> count++; }flag=0;</p><p><b> }</b></p><p> else MessageBox("請(qǐng)按配置說(shuō)明在數(shù)據(jù)輸入?yún)^(qū)輸入相關(guān)矩陣數(shù)據(jù)!","提示",MB_OK);if
64、(flag==0)</p><p><b> {</b></p><p> MessageBox("增加作業(yè)成功!請(qǐng)點(diǎn)擊【配置信息完成】按鈕。","提示",MB_OK);}UpdateData(FALSE);</p><p><b> 5.程序測(cè)試</b></p>
65、<p><b> 5.1界面設(shè)計(jì)</b></p><p> ?。?)主界面如圖5-1。</p><p><b> 圖5-1系統(tǒng)主界面</b></p><p> ?。?)系統(tǒng)使用說(shuō)明如圖5-2。</p><p><b> 圖5-2使用說(shuō)明</b></p&g
66、t;<p><b> 5.2數(shù)據(jù)測(cè)試</b></p><p> ?。?)配置資源及作業(yè)屬性如圖5-3。輸入數(shù)據(jù)為:資源名稱(chēng)n,資源數(shù)量4,作業(yè)數(shù)量2。</p><p><b> 圖5-3資源配置</b></p><p> ?。?)配置資源最大需求量及配置已申請(qǐng)資源如圖5-4和圖5-5。</p>
67、<p> 圖5-4配置資源最大需求量</p><p> 圖5-5配置已申請(qǐng)資源</p><p> (3)安全性算法如圖5-6。</p><p><b> 圖5-6安全性算法</b></p><p> ?。?)系統(tǒng)狀態(tài)信息如圖5-7。</p><p><b> 圖5
68、-7系統(tǒng)狀態(tài)</b></p><p><b> 5.3操作提示</b></p><p> ?。?)修改資源操作結(jié)果提示如圖5-8。</p><p><b> 圖5-8修改資源</b></p><p> (2)分配資源成功和增加作業(yè)成功如圖5-9和圖5-10。</p>
69、<p> 圖5-9 分配資源成功 圖5-10增加作業(yè)成功</p><p> ?。?)修改資源失敗和刪除資源失敗如圖5-11和圖5-12。</p><p> 圖5-11修改資源失敗 圖5-12刪除資源失敗</p><p><b> 6.總結(jié)</b>&
70、lt;/p><p> 操作系統(tǒng)的基本特征是并發(fā)與共享。系統(tǒng)允許多個(gè)進(jìn)程并發(fā)執(zhí)行,并且共享系統(tǒng)的軟、硬件資源。為了最大限度的利用計(jì)算機(jī)系統(tǒng)的資源,操作系統(tǒng)應(yīng)采用動(dòng)態(tài)分配的策略,但是這樣就容易因資源不足,分配不當(dāng)而引起“死鎖”。而我本次課程設(shè)計(jì)就是得用銀行家算法來(lái)避免“死鎖”。銀行家算法就是一個(gè)分配資源的過(guò)程,使分配的序列不會(huì)產(chǎn)生死鎖。</p><p> 課程設(shè)計(jì)過(guò)程中我學(xué)到了很多實(shí)用性的知識(shí)
71、,除了加深自己對(duì)這個(gè)算法的理解,而且對(duì)以前的知識(shí)也做到了溫故而知新。在和同學(xué)做MFC時(shí),發(fā)現(xiàn)自己已經(jīng)忘了好多東西,因此開(kāi)始時(shí)花了很久才弄明白操作的基本步驟。在做課程設(shè)計(jì)的這段日子里,我深刻感受到唯有自己去動(dòng)手,才能了解更多的東西。在此感謝給予我?guī)椭睦蠋熀屯瑢W(xué)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]湯小丹,梁紅兵,哲鳳屏,湯子瀛.計(jì)
72、算機(jī)操作系統(tǒng).第三版.西安:西安電子科技大學(xué)出版社,2007</p><p> [2] 譚浩強(qiáng). C程序設(shè)計(jì).第三版.北京:清華大學(xué)出版社,2005</p><p> [3]張海藩.軟件工程導(dǎo)論.第五版.北京:清華大學(xué)出版社,2008</p><p> [4] 馮博琴.Visual C++與面向?qū)ο蟪绦蛟O(shè)計(jì)教程.第三版. 高等教育出版社; 2010</p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法)
- 操作系統(tǒng)課程設(shè)計(jì)-銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法設(shè)計(jì))
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (3)
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)原理課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)-模擬銀行家算法-課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---模擬實(shí)現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)——銀行家算法的模擬實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論