版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 操作系統(tǒng)</b></p><p><b> 課程設(shè)計說明書</b></p><p> 題目: 銀行家算法模擬 </p><p> 2013年 1月 9日</p><p> 課程設(shè)計(論文)任務(wù)書</p>&l
2、t;p> 計算機科學(xué)與工程學(xué)院 計算機科學(xué)與技術(shù)系 </p><p> 2013年 1月 9日</p><p><b> 摘 要</b></p><p> 銀行家算法是一個用來預(yù)防系統(tǒng)進入死鎖狀態(tài)的算法,用它可以判斷系統(tǒng)的安全性,如果系統(tǒng)當(dāng)前處于安全狀態(tài),則可以為申請資源的進程
3、分配資源;如果不是安全狀態(tài),則不能為申請資源的進程分配資源。 銀行家算法執(zhí)行過程中,首先判斷申請資源的進程所申請的資源數(shù)目是否合法,若是合法的,則可以為其進行試分配,再利用安全性算法求出安全序列,如果存在安全序列,則說明可以給申請資源的進程分配資源,分配成功,繼續(xù)為其它進程服務(wù)。如果找不到安全序列,則說明為該進程分配資源后系統(tǒng)會進入不安全狀態(tài),所以不能為該進程分配資源,使該進程進入阻塞狀態(tài)。若申請資源的進程申請的資源數(shù)目不合法,則不需要
4、進行試分配,直接使其進入阻塞狀態(tài),處理其他申請資源的進程。 </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è)計思想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è)計4</b></p><p><b> 3.1算法設(shè)計4
7、</b></p><p><b> 3.2模塊設(shè)計5</b></p><p><b> 4.詳細設(shè)計6</b></p><p> 4.1程序流程圖6</p><p> 4.2主要函數(shù)的核心代碼6</p><p><b> 5.程序測試
8、12</b></p><p> 5.1界面設(shè)計12</p><p> 5.2數(shù)據(jù)測試13</p><p> 5.3操作提示14</p><p><b> 6.總結(jié)16</b></p><p><b> 參考文獻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)中,雖可以借助多個進程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)吞吐量,但可能發(fā)生一種危險——死鎖,即多個進程在運
10、行過程中因爭奪資源而造成的一種僵局,若無外力作用,將無法再向前推進。如此,尋求一種避免死鎖的方法便顯得有為重要。死鎖的產(chǎn)生一般的原因有兩點:競爭資源和進程間推進順序非法。因此,我們只需在當(dāng)前的有限資源下,找到一組合法的執(zhí)行順序,便能很好的避免死鎖,我們稱它為安全序列。而銀行家算法起源于銀行系統(tǒng)的發(fā)放貸款,和計算機操作系統(tǒng)的資源分配完全符合,因此可以借鑒該算法的思想,設(shè)計出一種有效的算法程序,解決該問題。</p><p
11、><b> 1.3死鎖</b></p><p> 所謂死鎖: 是指兩個或兩個以上的進程在執(zhí)行過程中,因爭奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進下去。此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。 由于資源占用是互斥的,當(dāng)某個進程提出申請資源后,使得有關(guān)進程在無外力協(xié)助下,永遠分配不到必需的資源而無法繼續(xù)運行,這就產(chǎn)生了一種特
12、殊現(xiàn)象:死鎖。</p><p> 在計算機系統(tǒng)中,涉及軟件,硬件資源都可能發(fā)生死鎖。例如:系統(tǒng)中只有一臺CD-ROM驅(qū)動器和一臺打印機,某一個進程占有了CD-ROM驅(qū)動器,又申請打印機;另一進程占有了打印機,還申請CD-ROM。結(jié)果,兩個進程都被阻塞,永遠也不能自行解除。</p><p><b> 1.4安全性</b></p><p>
13、全序列的的實際意義在于:系統(tǒng)每次進行資源分配后,如果對于系統(tǒng)中新的資源狀況,存在一個安全序列,則至少存在一條確保系統(tǒng)不會進入死鎖的路徑。按照該序列,銀行家可以實施一個有效的分配過程使得所有客戶得到滿足,行家算法的核心在于安全序列的產(chǎn)生。安全序列正是一種安全的進程推進順序。</p><p><b> 1.5算法設(shè)計思想</b></p><p> 我們可以把操作系統(tǒng)看
14、作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進程向操作系統(tǒng)請求分配資源相當(dāng)于用戶向銀行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進程分配資源,當(dāng)進程首次申請資源時,要測試該進程對資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請量分配資源,否則就推遲分配。當(dāng)進程在執(zhí)行中繼續(xù)申請資源時,先測試該進程已占用的資源數(shù)與本次申請的資源數(shù)之和是否超過了該進程對資源的最大需求量。若超過則拒絕分配資源,若沒有超過則再測試系
15、統(tǒng)現(xiàn)存的資源能否滿足該進程尚需的最大資源量,若能滿足則按當(dāng)前的申請量分配資源,否則也要推遲分配。</p><p><b> 2.需求分析</b></p><p><b> 2.1基本要求</b></p><p> (1)從鍵盤輸入當(dāng)前系統(tǒng)的資源信息,包括當(dāng)前可用資源,每個進程對各類資源的最大需求量,每個進程當(dāng)前已分配
16、的各個資源量和每個進程尚需要的各個資源量,輸出結(jié)果顯示在界面上。 </p><p> ?。?)輸入進程請求,按照設(shè)計好的安全性算法進行檢查,得到結(jié)果并輸出整個執(zhí)行過程的相關(guān)信息和最終結(jié)果(主要包括資源分配表和安全序列)。 </p><p> (3)要求要有各種異常的處理,程序的可控制性和可連續(xù)性執(zhí)行。包括對進程的存在有無檢查,請求向量的不合法檢查,試分配失敗后的數(shù)據(jù)恢復(fù)和重新接受進程
17、請求等。</p><p><b> 2.2模塊劃分</b></p><p><b> ?。?)分配模塊</b></p><p> 輸入一組資源及作業(yè)的數(shù)量,分配資源及作業(yè)的各項屬性。再配置作業(yè)的資源最大需求量及已申請的資源屬性。以及資源的添加、修改、刪除和分配功能,此外,還有對作業(yè)的添加。</p><
18、;p><b> (2)判定模塊</b></p><p> 通過銀行家算法對已經(jīng)分配完畢的資源及作業(yè)的屬性進行判斷,判斷申請是否大于需求,若大于則出錯,則提示出錯信息;判斷申請是否大于當(dāng)前資源,若大于則出錯,則提示出錯信息。</p><p><b> ?。?)檢查模塊</b></p><p> 根據(jù)銀行家算法進行
19、資源分配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之中,以避免死鎖的發(fā)生。當(dāng)資源分配可行時,則分配;若安全性算法不能通過,則不予分配,以保證系統(tǒng)的安全和死鎖的不發(fā)生。</p><p><b> 3.總體設(shè)計</b></p><p><b> 3.1算法設(shè)計</b></p><p> (1)銀行家算法的實現(xiàn),需要用到
20、以下主要數(shù)據(jù):</p><p> int Max[100][100]={0};//各進程所需各類資源的最大需求</p><p> int Avaliable[100]={0};//系統(tǒng)可用資源</p><p> CString name[100]={""};//資源的名稱</p><p> int Allocati
21、on[100][100]={0};//系統(tǒng)已分配資源</p><p> int Need[100][100]={0};//還需要資源</p><p> int Request[100]={0};//請求資源向量</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è)屬性配置:這是對資源和作業(yè)的分配過程,在實現(xiàn)銀行家算法之前,需有資源和作業(yè)的屬性信息,才可以驗證銀行家算法及安全性算法,最終實現(xiàn)銀行家算法。</p><p> b)銀行家算法:銀行家算法是對資源分配進行判斷,判斷資源分配的可行性,以免導(dǎo)致死鎖的發(fā)生,是避免死鎖的重要一步。</p><p> c) 安全性算法:安全性算法是對于安全性檢查算法主要是根據(jù)銀行家算
24、法進行資源分配后,檢查資源分配后的系統(tǒng)狀態(tài)是否處于安全狀態(tài)之中。</p><p> (2) 銀行家算法中用到的主要數(shù)據(jù)結(jié)構(gòu):</p><p> 可利用資源向量 int Available[j] j為資源的種類。</p><p> 最大需求矩陣 int Max[i][j] i為進程的數(shù)量。 </p><p>
25、 分配矩陣 int Allocation[i][j] </p><p> 需求矩陣 int need[i][j]= Max[i][j]- Allocation[i][j] </p><p> 申請各類資源數(shù)量 int Request i[j] i進程申請j資源的數(shù)量 </p><p> 工作向量 in
26、t Work[x] int Finish[y]</p><p><b> 3.2模塊設(shè)計</b></p><p> ?。?)主要模塊如圖3-1。</p><p><b> 圖3-1主要模塊</b></p><p> ?。?)子模塊如圖3-2。</p><p>&l
27、t;b> 圖3-2子???lt;/b></p><p><b> 4.詳細設(shè)計</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> 此處代碼的實現(xiàn)的功能是添加資源名稱,資源數(shù)量和作業(yè)數(shù)量,并且在下一步操作后提示資源是否成功添加。由于輸入的資源數(shù)不止一個,輸入的數(shù)據(jù)可能會出錯,因此這里用到了if條件語句和for循環(huán)語句。當(dāng)輸入的數(shù)據(jù)不合法時,彈出對話框提示出錯。</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ù)輸入成功!若不配置資源,請配置作業(yè)數(shù)量!\n系統(tǒng)現(xiàn)在共有"+conver(4-dqzysl)+"個資源。\n當(dā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("錯誤!當(dāng)前系統(tǒng)支持資源數(shù)目為3個!您已經(jīng)分配3個了!請配置作業(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;否則,認為出錯,因為它所需要的資源數(shù)已超過它所宣布的最大值。 </p><p> b如果Request<Available or Request=Available,則轉(zhuǎn)向步驟c;否則,表示系統(tǒng)中尚無足夠的資源,進程必須
36、等待。</p><p> c.系統(tǒng)試探把要求的資源分配給進程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]) { //判斷申請是否大于需求,若大于則出錯</p><p> msg="進程 "+conver(i)+"申請的資源大于它需要的資源\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]){ //判斷申請是否大于當(dāng)前資源,若//大于則出
39、錯 </p><p> msg="進程"+conver(i)+"申請的資源大于系統(tǒng)現(xiàn)在可利用的資源\n";</p><p> msg+=" 分配出錯,不予分配!\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è)置兩個向量 ①工作向量Work。它表示系統(tǒng)可提供進程繼續(xù)運行所需要的各類資源數(shù)目,執(zhí)行安全算
41、法開始時,Work=Allocation; ②布爾向量Finish。它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成,開始時先做Finish[i]=false,當(dāng)有足夠資源分配給進程時,令Finish[i]=true。</p><p> b.從進程集合中找到一個能滿足下述條件的進程: ①Finish[i]=false ②Need<or=Work 如找到,執(zhí)行步驟c;否則,執(zhí)行步驟d。 </p>
42、;<p> c.當(dāng)進程P獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行: Work=Work+Allocation; Finish[i]=true; 轉(zhuǎn)向步驟b。 </p><p> d.如果所有進程的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++){//輸出運行進程數(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> (4)修改資源</b></p><p> 輸入的資源可能不符合自己的需要,或者需要用到其他的資源,這時可以不必重新輸入資源數(shù)量,在原有的基礎(chǔ)進行修改即可,此段代碼的作用就是修改資源的名稱和數(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("請在
52、資源的名稱和資源數(shù)量輸入合法數(shù)據(jù)!","提示",MB_OK);</p><p> UpdateData(FALSE);}</p><p><b> ?。?)刪除資源</b></p><p> 資源不需要的時候應(yīng)該刪除,當(dāng)資源名稱不存在和輸入的資源名稱為空時,提示重新進行操作。</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("該資源名稱不存在,請重新輸入!","提示",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("資源名稱不能為空,請重新輸入!","提示",MB_OK); </p><p> UpdateData(FALSE);}</p><p> (6)增加資源和輸出矩陣</p><p> 資源的數(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("請按配置說明在數(shù)據(jù)輸入?yún)^(qū)輸入相關(guān)矩陣數(shù)據(jù)!","提示",MB_OK);if
64、(flag==0)</p><p><b> {</b></p><p> MessageBox("增加作業(yè)成功!請點擊【配置信息完成】按鈕。","提示",MB_OK);}UpdateData(FALSE);</p><p><b> 5.程序測試</b></p>
65、<p><b> 5.1界面設(shè)計</b></p><p> ?。?)主界面如圖5-1。</p><p><b> 圖5-1系統(tǒng)主界面</b></p><p> ?。?)系統(tǒng)使用說明如圖5-2。</p><p><b> 圖5-2使用說明</b></p&g
66、t;<p><b> 5.2數(shù)據(jù)測試</b></p><p> (1)配置資源及作業(yè)屬性如圖5-3。輸入數(shù)據(jù)為:資源名稱n,資源數(shù)量4,作業(yè)數(shù)量2。</p><p><b> 圖5-3資源配置</b></p><p> ?。?)配置資源最大需求量及配置已申請資源如圖5-4和圖5-5。</p>
67、<p> 圖5-4配置資源最大需求量</p><p> 圖5-5配置已申請資源</p><p> ?。?)安全性算法如圖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> ?。?)分配資源成功和增加作業(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)允許多個進程并發(fā)執(zhí)行,并且共享系統(tǒng)的軟、硬件資源。為了最大限度的利用計算機系統(tǒng)的資源,操作系統(tǒng)應(yīng)采用動態(tài)分配的策略,但是這樣就容易因資源不足,分配不當(dāng)而引起“死鎖”。而我本次課程設(shè)計就是得用銀行家算法來避免“死鎖”。銀行家算法就是一個分配資源的過程,使分配的序列不會產(chǎn)生死鎖。</p><p> 課程設(shè)計過程中我學(xué)到了很多實用性的知識
71、,除了加深自己對這個算法的理解,而且對以前的知識也做到了溫故而知新。在和同學(xué)做MFC時,發(fā)現(xiàn)自己已經(jīng)忘了好多東西,因此開始時花了很久才弄明白操作的基本步驟。在做課程設(shè)計的這段日子里,我深刻感受到唯有自己去動手,才能了解更多的東西。在此感謝給予我?guī)椭睦蠋熀屯瑢W(xué)。</p><p><b> 參考文獻</b></p><p> [1]湯小丹,梁紅兵,哲鳳屏,湯子瀛.計
72、算機操作系統(tǒng).第三版.西安:西安電子科技大學(xué)出版社,2007</p><p> [2] 譚浩強. C程序設(shè)計.第三版.北京:清華大學(xué)出版社,2005</p><p> [3]張海藩.軟件工程導(dǎo)論.第五版.北京:清華大學(xué)出版社,2008</p><p> [4] 馮博琴.Visual C++與面向?qū)ο蟪绦蛟O(shè)計教程.第三版. 高等教育出版社; 2010</p
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計---銀行家算法
- 操作系統(tǒng)課程設(shè)計銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計(銀行家算法)
- 操作系統(tǒng)課程設(shè)計-銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計(銀行家算法設(shè)計)
- 操作系統(tǒng)課程設(shè)計--銀行家算法 (3)
- 操作系統(tǒng)課程設(shè)計---銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計--銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計---銀行家算法實現(xiàn)
- 操作系統(tǒng)課程設(shè)計報告—銀行家算法
- 操作系統(tǒng)原理課程設(shè)計--銀行家算法
- 操作系統(tǒng)課程設(shè)計報告—銀行家算法
- 操作系統(tǒng)課程設(shè)計---銀行家算法報告
- 操作系統(tǒng)課程設(shè)計-模擬銀行家算法-課程設(shè)計
- 操作系統(tǒng)課程設(shè)計報告---模擬實現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計——銀行家算法的模擬實現(xiàn)
評論
0/150
提交評論