版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《 操作系統(tǒng) 》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 系 別: 信息科學(xué)與技術(shù)系 </p><p> 專業(yè)班級(jí): </p><p> 學(xué)生姓名:
2、 </p><p> 指導(dǎo)教師: </p><p><b> 目 錄</b></p><p> 一、課程設(shè)計(jì)目的和意義3</p><p> 二、課程設(shè)計(jì)題目描述及算法3</p><p> 三、課程設(shè)計(jì)報(bào)告內(nèi)容3</p&g
3、t;<p><b> 1.算法描述3</b></p><p><b> 2.數(shù)據(jù)結(jié)構(gòu)4</b></p><p> 3.主要函數(shù)說(shuō)明4</p><p><b> 4.算法流程圖5</b></p><p> 5.運(yùn)行結(jié)果及說(shuō)明7</p>
4、<p> 6.附錄清單及分析8</p><p><b> 四、總結(jié)14</b></p><p> 一、課程設(shè)計(jì)目的和意義</p><p> 了解掌握銀行家算法,學(xué)會(huì)模擬實(shí)現(xiàn)資源分配,同時(shí)有要求編寫和調(diào)試一個(gè)系統(tǒng)分配資源的簡(jiǎn)單模擬程序,觀察死鎖產(chǎn)生的條件,并使用適當(dāng)?shù)乃惴?,有效的防止和避免死鎖的發(fā)生</p>
5、<p> 二、課程設(shè)計(jì)題目描述及算法</p><p> 題目:銀行家算法設(shè)計(jì)</p><p> 設(shè)計(jì)要求:編制銀行家算法通用程序,并檢測(cè)所給狀態(tài)的系統(tǒng)安全性。設(shè)進(jìn)程I提出請(qǐng)求Request[N],則銀行家算法按如下規(guī)則進(jìn)行判斷。</p><p> (1)如果Request[N]<=NEED[I,N],則轉(zhuǎn)(2);否則,出錯(cuò)。</p&g
6、t;<p> (2)如果Request[N]<=AVAILABLE,則轉(zhuǎn)(3);否則,出錯(cuò)。</p><p> (3)系統(tǒng)試探分配資源,修改相關(guān)數(shù)據(jù):</p><p> AVAILABLE=AVAILABLE-REQUEST</p><p> ALLOCATION=ALLOCATION+REQUEST</p><p&g
7、t; NEED=NEED-REQUEST</p><p> (4)系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則試探險(xiǎn)性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。</p><p> 上述三個(gè)矩陣存在如下關(guān)系:Need[i,j]= Max[i,j]- Allocation[i,j]</p><p> 三、課程設(shè)計(jì)報(bào)告內(nèi)容</p><p><
8、b> 1.算法描述</b></p><p> 設(shè)Request[i] 是進(jìn)程Pi的請(qǐng)求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類型的資源,當(dāng)Pi發(fā)出資源請(qǐng)求后,系統(tǒng)按下面步驟進(jìn)行檢查:</p><p> ?。?)如果Requesti[j]<=Need[i,j],便轉(zhuǎn)向步驟2;否則認(rèn)為出錯(cuò),因?yàn)樗枰馁Y源數(shù)已超過(guò)它所宣布的最大值。<
9、/p><p> ?。?)如果Requesti[j]<=Available[j],便轉(zhuǎn)向步驟3;否則,表示尚無(wú)足夠資源,Pi須等待。</p><p> ?。?)系統(tǒng)試探著把資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:</p><p> Available[j]:=Available[j]-Requesti[j];</p><p> A
10、llocation[i,j]:=Allocation[i,j]+Requesti[j];</p><p> Need[i,j]:=Need[i,j]-Requesti[j];</p><p> ?。?)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進(jìn)程Pi,以完成本次分配;否則,將本次的試探分配作廢,恢復(fù)原來(lái)的資源分配狀態(tài),讓進(jìn)程Pi等待。<
11、;/p><p><b> 2.數(shù)據(jù)結(jié)構(gòu)</b></p><p> (1) 可利用資源向量Available。這是一個(gè)含有n個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類可利用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源的數(shù)目,其數(shù)值隨該類資源的分配和回收而動(dòng)態(tài)地改變。如果Available[j]=K,則表示系統(tǒng)中現(xiàn)有Rj類資源K個(gè)。</p><p&
12、gt; ?。?)最大需求矩陣Max。這是一個(gè)m*n的矩陣,它定義了系統(tǒng)中n個(gè)進(jìn)程中每一個(gè)進(jìn)程對(duì)m類資源的最大需求。如果Max[i,j]=K,則表示進(jìn)程i需要Rj類資源的最大數(shù)目為K。</p><p> ?。?)分配矩陣Allocation。這也是一個(gè)m*n的矩陣,它定義了系統(tǒng)中每一類資源當(dāng)前已分配給每一進(jìn)程的資源數(shù)。如果Allocation[i,j]=K,則表示進(jìn)程i當(dāng)前已分得Rj類資源的數(shù)目為K。</p&
13、gt;<p> (4)需求矩陣Need。這也是一個(gè)n*m的矩陣,用以表示每一個(gè)進(jìn)程尚需的各類資源數(shù)。如果Need[i,j]=K,則表示進(jìn)程i還需要Rj類資源K個(gè),方能完成其任務(wù)。</p><p> (5) 工作數(shù)組Work.。這是一個(gè)含有n個(gè)元素的數(shù)組,它代表可以提供分配的資源數(shù),初始值是Available中的數(shù)值,隨著資源的回收,它的值也會(huì)改變,公式是Work[i]=Work[i]+Alloc
14、ation[i]。</p><p><b> 3.主要函數(shù)說(shuō)明</b></p><p> ?。?) Main() 主函數(shù):用來(lái)顯示資源的分配情況和提示信息,同時(shí)用Main函數(shù)來(lái)調(diào)用其它子程序。 </p><p> ?。?)Safe() 函數(shù):用來(lái)檢查是否有安全序列,如果存在則返回一個(gè)‘1’給主函數(shù),否則返回‘0’。</p>&l
15、t;p> (3) Disp() 函數(shù):用來(lái)顯示隨機(jī)生成的資源包括Max、Need、Allocation、Available。</p><p> (4) Request() 函數(shù):用來(lái)進(jìn)行資源請(qǐng)求,分為手動(dòng)的和隨機(jī)申請(qǐng)。同時(shí)對(duì)申請(qǐng)的資源進(jìn)行判斷,檢查申請(qǐng)是否有效,如果有效則返回一個(gè)‘1’給主函數(shù),否則返回‘0’。</p><p><b> 4.算法流程圖</b&g
16、t;</p><p><b> N</b></p><p><b> Y</b></p><p><b> Y </b></p><p><b> N</b></p><p><b> Y</b>&l
17、t;/p><p><b> Y </b></p><p><b> Y</b></p><p><b> Y</b></p><p><b> 5.運(yùn)行結(jié)果及說(shuō)明</b></p><p> 圖1 不存在安全序列</p&
18、gt;<p> 隨機(jī)分配完資源后,進(jìn)行安全檢查,在檢查過(guò)程中在屏幕上顯示檢查信息,上圖為資源分配不安全時(shí)顯示的信息。若在程序中不將int i,j,k,h,l;改為int I; 在檢查Available是否滿足Need時(shí)將檢查m*n遍,并存在表達(dá)有歧異,改后就不需要全部檢查,而是Available只要有一個(gè)不滿足Need就停止檢查。</p><p><b> 圖2 存在安全路徑</
19、b></p><p> 存在安全路徑后,在屏幕上顯示變化過(guò)程和安全路徑。提示是否申請(qǐng)資源。</p><p> 由上圖可知,進(jìn)程p0最大需要的三種資源數(shù)分別為10 7 9,需求資源數(shù)為4 3 1,當(dāng)前已分配資源數(shù)為6 4 8,可利用資源數(shù)為11 6 11。p1、p2同理。</p><p> 三個(gè)矩陣存在如下關(guān)系:Need[i,j]= Max[i,j]- A
20、llocation[i,j]</p><p> process[0]->need[0]</p><p> work[0]=17—已分配資源數(shù)6,可分配資源數(shù)11,則最大分配數(shù)17</p><p> 同理work[1]=10 、work[2]=19</p><p> Process[0]->need[1]</p>
21、<p> Work[0]=22—已分配資源數(shù)5,可分配17,則總可分配資源數(shù)22</p><p><b> 后面的同理。</b></p><p><b> 圖3 為申請(qǐng)資源</b></p><p> 選擇1則進(jìn)行隨機(jī)資源分配,選擇2則進(jìn)行手動(dòng)資源分配。</p><p><
22、b> 圖4 手動(dòng)分配</b></p><p> 為保證程序只在選擇的數(shù)為0、1或2時(shí)繼續(xù)進(jìn)行,使用If語(yǔ)句進(jìn)行判斷,不是選擇的這三個(gè)進(jìn)程數(shù)時(shí)終止程序并提示重新輸入。</p><p> 圖5 給p0手動(dòng)配后生成的圖形</p><p><b> 與</b></p><p> 圖6 隨機(jī)分配生成的圖
23、形</p><p><b> 比較</b></p><p> 當(dāng)手動(dòng)輸入的數(shù)小于所需資源數(shù)時(shí),所需數(shù)減小,已分配數(shù)增多,p0原需要4 3 1, 手動(dòng)分配1 2 1后,為3 1 0,已分配變?yōu)? 6 9,p1 、p2同理;當(dāng)手動(dòng)資源數(shù)為4 4 2時(shí),need為0 0 0,但allocation為10 8 11,并不等于10 7 9 ,出現(xiàn)錯(cuò)誤。</p>
24、<p><b> 圖7 隨機(jī)分配</b></p><p> 當(dāng)選擇1時(shí),進(jìn)行隨機(jī)分配,隨機(jī)分配的資源數(shù)為3 2 1,無(wú)法滿足需要,產(chǎn)生錯(cuò)誤。</p><p><b> 6.附錄清單及分析</b></p><p> #include<stdio.h></p><p>
25、 #include <stdlib.h></p><p> #include<time.h></p><p> #define M 3</p><p> #define N 3</p><p> int Need[M][N],Allocation[M][N],Avalible[N],Max[M][N],fini
26、sh[N];</p><p> //Need :進(jìn)程需要的資源數(shù)Allocation:進(jìn)程已分配的資源; Avalible:進(jìn)程可供分配的資源</p><p> void display(int *a,int n) //顯示一維數(shù)組</p><p> { int i;</p><p> for(i=0;i<n;i++)&
27、lt;/p><p> printf("%3d",a[i]);</p><p><b> }</b></p><p> void disp() //顯示資源列表</p><p> { int i;//--原為int i,j,k,h,l,改后Available只要有一個(gè)不滿足Need就停
28、止檢查;</p><p> printf("Nnumber\t Max\t\t need\t\t allocation\t avalible\n");</p><p> for(i=0;i<M;i++)</p><p> {printf("p%d\t",i);//--分別顯示P0,P1,P2的Max,N
29、eed,Allocation,Avalible</p><p> display(Max[i],N);</p><p> printf("\t");</p><p> display(Need[i],N);</p><p> printf("\t");</p><p>
30、 display(Allocation[i],N);</p><p> printf("\t");</p><p><b> if(i==0)</b></p><p> display(Avalible,N);</p><p> printf("\n");</p>
31、;<p><b> } }</b></p><p> void grand(int *a,int *b,int n) //分配資源</p><p><b> { int i;</b></p><p> for(i=0;i<n;i++)</p><p> a[i]=
32、b[i];</p><p><b> }</b></p><p> int check(int *a,int *b,int n) //檢查Allocation是否與Max相等</p><p><b> { int i;</b></p><p> for(i=0;i<n;i+
33、+)</p><p> {if(a[i]<b[i]) return 0;}</p><p><b> return 1;</b></p><p><b> }</b></p><p> int compare(int *a,int *b,int n) //比較數(shù)組的大小<
34、/p><p><b> { int i;</b></p><p> ;//原本為char flag</p><p> for(i=0;i<n;i++)</p><p> { if (a[i]<b[i])</p><p><b> return 0;</
35、b></p><p><b> }</b></p><p><b> return 1;</b></p><p><b> }</b></p><p> int comp(int *a,int *b,int n,int m) //比較數(shù)組</p&
36、gt;<p><b> {int i;</b></p><p> for(i=0;i<n;i++)</p><p> { if (a[i]>b[i])</p><p> { if(m==1)</p><p> printf("request Number%d resouce
37、have an error request overflow avalible[%d]\n",i+1,i);</p><p><b> if(m==2)</b></p><p> printf("request Number%d resouce have an error request overflow Need[%d]\n",i+
38、1,i);</p><p> return 0; }}</p><p><b> return 1;</b></p><p><b> }</b></p><p> void dec(int *a,int *b,int n) //數(shù)組相減</p><p
39、> { int i;</p><p> for(i=0;i<n;i++)</p><p> a[i]-=b[i];</p><p><b> }</b></p><p> char input() //輸入數(shù)據(jù)</p><p>
40、; { char c;</p><p> c=getchar()-0x30;</p><p><b> return c;</b></p><p><b> }</b></p><p> void add(int *a,int *b,int n,int m) //數(shù)組相加
41、</p><p><b> { int i ;</b></p><p> for(i=0;i<n;i++)</p><p> a[i]+=b[i];</p><p> for(i=0;i<n;i++)</p><p> { if(m==0) printf("Aval
42、ible[%d]=%d ",i,a[i]);</p><p> if(m==3)printf("\n");</p><p> if(m==1) printf("work valuese changed work[%d]=%d\n",i,a[i]);</p><p><b> }</b>
43、</p><p> printf("\n");</p><p><b> }</b></p><p> int safe()//檢查安全序列</p><p> { int i,count=0,n,r1=1;//原為int i,count=0,n,j,r1=1;</p>
44、<p> int work[N],sr[M],flag;</p><p> int finish1[N];</p><p> grand(work,Avalible,N);</p><p> printf("check safe list......\n");</p><p> for(i=0;i<
45、;N;i++)</p><p> finish1[i]=-1;</p><p> for(n=0;n<M;n++)</p><p> { for(i=0;i<M;i++)</p><p> { flag=compare(work,Need[i],N);</p><p> if (flag==0)
46、{printf("can't satisfy process[%d]->need[%d] ",n,i);break;}</p><p> if(finish1[i]==-1&&flag==1&&finish[i]==-1)</p><p> { printf("find a right need----proc
47、ess[%d]->need[%d]\n",n,i);</p><p> add(work,Allocation[i],N,r1);</p><p> finish1[i]=1; sr[count]=i;</p><p> count++; //記錄安全序列</p><p><b> } }}</b
48、></p><p> if(count>=M)</p><p> { printf("-----have an safe list-----\n");</p><p> for(i=0;i<M;i++)</p><p> { if(i!=M-1)</p><p> p
49、rintf("p%d->",sr[i]);</p><p><b> else</b></p><p> printf("p%d\n",sr[i]);</p><p> } return 1; }</p><p><b> else</b><
50、;/p><p> { printf("after check there no safe list.....\n");</p><p> printf("can't apply resouce\n");</p><p><b> return 0;</b></p><p&g
51、t;<b> } }</b></p><p> int ran_request()//隨機(jī)請(qǐng)求資源</p><p> { int i,flag1,flag2,r1=1,r2=2,r3=3;</p><p> int request[N],pn;//N=3</p><p> pn=rand()%2;
52、//pn進(jìn)程標(biāo)志</p><p> printf("Process[%d] call for resouce\n",pn); //隨機(jī)進(jìn)程X請(qǐng)求資源</p><p> for(i=0;i<N;i++)</p><p> request[i]=rand()%5; //將隨機(jī)資源給request[i],i=1,2,3,其實(shí)r
53、equest是現(xiàn)在將要給予的資源</p><p> //而且request[1],[2],[3]即代表3種不同的資源類型</p><p> for(i=0;i<M;i++)</p><p> finish[i]=-1; </p><p> printf("random produce request[%
54、d]:",N); //隨機(jī)產(chǎn)生分配數(shù)</p><p> display(request,N); //顯示request[]數(shù)組</p><p> printf("\n");</p><p> if(finish[pn]==-1) //finish記錄進(jìn)程是否分配完成
55、 </p><p><b> {</b></p><p> flag1=comp(request,Avalible,N,r1);//flag1</p><p> flag2=comp(request,Need[pn],N,r2);//flag2</p><p> if(flag1==1&&a
56、mp;flag2==1)</p><p><b> { </b></p><p> printf("call for request availible");//顯示需求有效</p><p> dec(Avalible,request,N);//Avalible-request,指針形式,下2同</p>
57、<p> dec(Need[pn],request,N);//Need-request</p><p> add(Allocation[pn],request,N,r3);//Allocation+request</p><p><b> disp();</b></p><p> if(safe()==1)</p>
58、;<p><b> { </b></p><p> if(check(Allocation[pn],Max[pn],N)==1)</p><p><b> { </b></p><p> add(Avalible,Allocation[pn],N,0);</p><p>
59、; finish[pn]=1; </p><p><b> }</b></p><p> return 1; </p><p><b> }</b></p><p><b> else</b></p><p><b> return
60、 0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> printf("the resouce have assingned\n");<
61、;/p><p><b> }</b></p><p> int request() //手動(dòng)申請(qǐng)資源</p><p> { int request[N],pn;</p><p> int i,flag1,flag2,r1=1,r2=2,r3=3;</p><p>
62、for(i=0;;i++)</p><p><b> {</b></p><p> printf("please input the request number which you want:");</p><p> scanf("%d",&pn);</p><p
63、> printf("\n");</p><p> if(pn>=0 && pn<=2) break;</p><p><b> else </b></p><p> printf(" input error,please input again!\n");//非
64、進(jìn)程數(shù)0、1、2警告</p><p><b> }</b></p><p> printf("please input the request number:\n");</p><p> for(i=0;i<N;i++)</p><p><b> {</b><
65、/p><p> printf("The %d request:\n",i);</p><p> scanf("%d",&request[i]);</p><p><b> }</b></p><p> for(i=0;i<N;i++)</p><
66、;p> finish[i]=-1;</p><p> printf("random produce request[%d]:",N);</p><p> display(request,N); </p><p> printf("\n");</p><p> if(finish[pn]=
67、=-1) //finish記錄進(jìn)程是否分配完成 </p><p><b> {</b></p><p> flag1=comp(request,Avalible,N,r1);//flag1</p><p> flag2=comp(request,Need[pn],N,r2);//flag2</p
68、><p> if(flag1==1&&flag2==1)</p><p><b> { </b></p><p> printf("call for request availible");//顯示需求有效</p><p> dec(Avalible,request,N);//A
69、valible-request,指針形式,下2同</p><p> dec(Need[pn],request,N);//Need-request</p><p> add(Allocation[pn],request,N,r3);//Allocation+request</p><p><b> disp();</b></p>
70、<p> if(safe()==1)</p><p><b> { </b></p><p> if(check(Allocation[pn],Max[pn],N)==1)</p><p><b> { </b></p><p> add(Avalible,Alloc
71、ation[pn],N,0);</p><p> finish[pn]=1; </p><p><b> }</b></p><p> return 1; </p><p><b> }</b></p><p><b> else</b><
72、;/p><p><b> return 0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> printf("the
73、resouce have assingned\n");</p><p><b> }</b></p><p> int main()</p><p> {int i,j,s_flag;</p><p><b> char c,s;</b></p><p>
74、 int av[N],s_ll[M][N];</p><p> for(i=0;i<M;i++)</p><p> {finish[i]=-1;}</p><p> srand(time(NULL));</p><p> for(i=0;i<M;i++)</p><p> for(j=0;j<
75、;N;j++)</p><p> { Allocation[i][j]=rand()%10;</p><p> Need[i][j]=rand()%10;</p><p> Max[i][j]=Allocation[i][j]+Need[i][j];</p><p><b> }</b></p>
76、<p> for(i=0;i<N;i++)</p><p> {Avalible[i]=rand()%12; }</p><p> disp();s_flag=safe();</p><p> if(s_flag==1)</p><p> { printf("request resource---(Y/N)
77、\n");</p><p> c=getchar();</p><p> if(c=='Y'||c=='y')</p><p><b> {</b></p><p> N1: printf("1---------random request resouce
78、\n");</p><p> printf("2---------request resouce by man\n");</p><p> grand(av,Avalible,N); //保存原始的available的值</p><p> for(i=0;i<M;i++)</p><p&g
79、t;<b> { </b></p><p> grand(s_ll[i],Allocation[i],N);}//grand函數(shù)為分配資源函數(shù)</p><p> getchar();</p><p> Mnu:s=getchar();</p><p> switch(s) //進(jìn)行分配選擇<
80、/p><p><b> { </b></p><p> case '1':if(ran_request()==1) //ran_request()隨機(jī)請(qǐng)求資源</p><p><b> {</b></p><p> printf ("continue request(Y
81、/N)\n");</p><p> getchar();c=getchar();</p><p> if(c=='Y'||c=='y')</p><p> goto N1; }</p><p><b> else</b></p><p><b
82、> { </b></p><p> grand(Avalible,av,N);</p><p> for(i=0;i<M;i++)</p><p> grand(Allocation[i],s_ll[i],N); }</p><p> //grand(int *a,int *b,int n)/為分配資源函數(shù),
83、b按n大小賦值于a</p><p><b> break;</b></p><p> case '2':if(request()==1) //--request()手動(dòng)申請(qǐng)資源</p><p><b> {</b></p><p> printf("continue
84、 request(Y/N)\n");</p><p> getchar();c=getchar();</p><p> if(c=='Y'||c=='y')</p><p><b> goto N1;}</b></p><p><b> else </b
85、></p><p><b> {</b></p><p> grand(Avalible,av,N);//grand(int *a,int *b,int n)</p><p> //為分配資源函數(shù),b按n大小賦值于a</p><p> for(i=0;i<M;i++)</p><p
86、> grand(Allocation[i],s_ll[i],N);}</p><p><b> break;</b></p><p> default:printf("input error,please input agin...\n");goto Mnu;</p><p><b> }}</
87、b></p><p> if(c=='N'||c=='n')</p><p> printf("Thank for your use....\n"); } </p><p> return 0; }</p><p><b> 六、總結(jié)</b></p
88、><p> 通過(guò)這次的課程設(shè)計(jì),我了解掌握了銀行家算法,學(xué)會(huì)模擬實(shí)現(xiàn)資源分配,同時(shí)通過(guò)編寫和調(diào)試一個(gè)系統(tǒng)分配資源的簡(jiǎn)單模擬程序,觀察到了死鎖產(chǎn)生的條件,并使用適當(dāng)?shù)乃惴ǎ行У姆乐购捅苊馑梨i的發(fā)生。</p><p> 雖然操作系統(tǒng)是以前學(xué)的,再接觸時(shí)遺忘了許多,但是通過(guò)老師的講解,同學(xué)的幫助,自己也仔細(xì)地看了這次課程設(shè)計(jì)的實(shí)驗(yàn)指導(dǎo),撿回了許多東西,對(duì)于銀行家算法的設(shè)計(jì)、編寫的思路變得清晰。
89、通過(guò)幾天反復(fù)的閱讀實(shí)驗(yàn)指導(dǎo),仔細(xì)的思考出現(xiàn)的問(wèn)題,反復(fù)推敲、測(cè)試與修改,終于能完滿的完成課程設(shè)計(jì)任務(wù)。課程設(shè)計(jì)的時(shí)間雖然不長(zhǎng),但帶了給我知識(shí),也帶給了我戰(zhàn)勝困難、完成任務(wù)的歡樂(lè)。希望以后有更多的機(jī)會(huì)接觸這類的課程設(shè)計(jì)。</p><p><b> 課程設(shè)計(jì)成績(jī):</b></p><p> 注:教師按學(xué)生實(shí)際成績(jī)(平時(shí)成績(jī)和業(yè)務(wù)考核成績(jī))登記并錄入教務(wù)MIS系統(tǒng),由系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(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ì)-模擬銀行家算法-課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---模擬實(shí)現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)——銀行家算法的模擬實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論