版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 用銀行家算法和隨機(jī)算法實(shí)現(xiàn)資源分配</p><p><b> 一、需求分析</b></p><p> 為了了解系統(tǒng)的資源分配情況,假定系統(tǒng)的任何一種資源在任一時(shí)刻只能被一個(gè)進(jìn)程使用。任何進(jìn)程已經(jīng)占用的資源只能由進(jìn)程自己釋放,而不能由其他進(jìn)程搶占。當(dāng)進(jìn)程申請(qǐng)的資源不能滿(mǎn)足時(shí),必須等待。因此,只要資源分配算法能保證進(jìn)程的資源請(qǐng)求,且不出現(xiàn)循環(huán)等待
2、,則系統(tǒng)不會(huì)出現(xiàn)死鎖。</p><p> 要求編寫(xiě)系統(tǒng)進(jìn)行資源調(diào)度的程序。一個(gè)是隨機(jī)動(dòng)態(tài)地進(jìn)行資源分配的模擬程序,即只要系統(tǒng)當(dāng)前剩余資源滿(mǎn)足進(jìn)程的當(dāng)前請(qǐng)求,就立即將資源分配給進(jìn)程,以觀(guān)察死鎖產(chǎn)生情況;一個(gè)是采用銀行家算法,有效地避免死鎖的產(chǎn)生。</p><p><b> 二、概要設(shè)計(jì)</b></p><p> 1、系統(tǒng)的主要功能&l
3、t;/p><p> 采用銀行家算法,有效地避免死鎖的產(chǎn)生。</p><p><b> 3、運(yùn)行環(huán)境要求</b></p><p> WINDOWS VC</p><p><b> 4、實(shí)驗(yàn)內(nèi)容概述</b></p><p> 模擬進(jìn)程的資源分配算法,了解死鎖的產(chǎn)生和避
4、免的方法。</p><p><b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 要求</b></p><p> 設(shè)計(jì)3~4個(gè)并發(fā)進(jìn)程,共享系統(tǒng)的10個(gè)同類(lèi)不可搶占的資源。各進(jìn)程動(dòng)態(tài)進(jìn)行資源的申請(qǐng)和釋放。</p><p> 用銀行家算法和隨機(jī)算法分別設(shè)計(jì)一個(gè)資源分配程序,運(yùn)行這兩個(gè)程序,
5、觀(guān)察系統(tǒng)運(yùn)行情況,并對(duì)系統(tǒng)運(yùn)行的每一步情況進(jìn)行顯示。</p><p><b> 提示</b></p><p> ?。?)初始化這組進(jìn)程的最大資源請(qǐng)求和依次申請(qǐng)的資源序列。把各進(jìn)程已占用和需求資源情況記錄在進(jìn)程控制塊中。假定進(jìn)程控制塊的格式如圖所示,其中進(jìn)程的狀態(tài)有:就緒、等待和完成。當(dāng)系統(tǒng)不能滿(mǎn)足進(jìn)程的資源請(qǐng)求時(shí),進(jìn)程處于等待態(tài)。資源需求總量表示進(jìn)程運(yùn)行過(guò)程中隊(duì)資源
6、的總的需求量。</p><p> 已占資源量表示進(jìn)程目前已經(jīng)得到但還未歸還的資源量。因此,進(jìn)程在以后還需要的剩余資源量等于資源需求總量減去已占資源量。顯然每個(gè)進(jìn)程的資源需求總量不應(yīng)超過(guò)系統(tǒng)擁有的資源總量。</p><p> ?。?)銀行家算法分配資源的原則是:當(dāng)某個(gè)進(jìn)程提出資源請(qǐng)求時(shí),假定先分配資源給它,然后查找各進(jìn)程的剩余請(qǐng)求,檢查系統(tǒng)的剩余資源量是否由于進(jìn)程的分配而導(dǎo)致系統(tǒng)死鎖。若能
7、,則讓進(jìn)程等待,否則,讓進(jìn)程的假分配變?yōu)檎娣峙洹?lt;/p><p> ①查找各進(jìn)程的剩余請(qǐng)求,檢查系統(tǒng)的剩余資源量是否能滿(mǎn)足其中一進(jìn)程。如果能,則轉(zhuǎn)②②將資源分配給所選的進(jìn)程,這樣,該進(jìn)程已獲得資源量最大請(qǐng)求,最終能運(yùn)行完。標(biāo)記這個(gè)進(jìn)程為終止進(jìn)程,并將其占有的全部資源歸還給系統(tǒng)。</p><p> 重復(fù)第①步和第②步,直到所有進(jìn)程都標(biāo)記為終止進(jìn)程,或直到一個(gè)死鎖發(fā)生。若所有進(jìn)程都標(biāo)記為終
8、止進(jìn)程,則梯田的初始狀態(tài)是安全的,否則為不安全的。若安全,則正式將資源分配給它,否則,假定的分配作廢,讓其等待。</p><p> ?、塾捎阢y行家算法可以避免死鎖,為了觀(guān)察死鎖現(xiàn)象的發(fā)生,要求采用兩個(gè)算法:銀行家算法和隨機(jī)算法。隨機(jī)算法的分配原則是:當(dāng)進(jìn)程申請(qǐng)資源時(shí),如果系統(tǒng)現(xiàn)存資源數(shù)能滿(mǎn)足 進(jìn)程的當(dāng)前申請(qǐng)量,就把資源分配給進(jìn)程,否則,讓其等待。這樣,隨機(jī)算法可能引起死鎖。</p><p>
9、; 一資源分配模擬算法總框圖</p><p><b> 四、源代碼</b></p><p> #include <iostream></p><p> #include<vector></p><p> #include<fstream></p><p&
10、gt; using namespace std;</p><p> const int TASK_RUNNING=0;</p><p> const int TASK_SUCCEED=1;</p><p> const int TASK_WAITTING=2;</p><p> const int TASK_RLength=10;&
11、lt;/p><p> int Rcs-left=RLength;</p><p> ofstream ff("result.txt");</p><p><b> class pcb</b></p><p><b> {</b></p><p><
12、;b> public:</b></p><p> int p_pid;</p><p> int p_stat;</p><p> int p_apply;</p><p> int p_occupy;</p><p> bool p_issuc;</p><p>
13、 int p_require;</p><p> pcb(int id, int require)</p><p><b> {</b></p><p><b> p_pid=id;</b></p><p> p_require=require;</p><p>
14、 p_stat=TASK-RUNNING;</p><p> p_occupy=0;</p><p> p_issuc=false;</p><p> p_apply=0;</p><p><b> }</b></p><p> friend ostream & operator
15、<<(ostream&cout,const pcb&p)</p><p><b> {</b></p><p> cont<<p.p_pid<<'t'<<p.p_stat<<'\t'<<p.p_require<<'\t'
16、;<<p.p_occupy<<endl;</p><p> return cout;</p><p><b> }</b></p><p><b> };</b></p><p> void rand (vector<int>&resource,v
17、ector<pcb>&pgrp);</p><p> void banker(vector<int>&resource,vector<pcb>&pgrp);</p><p> int main()</p><p> vector<int>resource;</p><p
18、> vector<pcb>pgrp;</p><p> vector<int>::iterator r;</p><p> vector<pcb>::iterator p;</p><p> cout<<"ENTER THE MAX NUMBER FOR THE REQUESTED RESOUR
19、CE:"<<endl;</p><p> cout<<"ID\tREQUESTED"<<endl;</p><p> ff<<"ENTER THE MAX NUMBER FOR THE REQUESTED RESOURCE:"<<endl;</p><p&g
20、t; ff<<"ID\tREQUESTED"<<endl;</p><p> int id,qty;</p><p> for(int i(1);i<=4;i++)</p><p><b> {</b></p><p><b> do</b>
21、;</p><p><b> {</b></p><p> cout<<i<<'\t';</p><p> ff<<i<<'\t';</p><p><b> cin>>qty;</b></p&
22、gt;<p> ff<<qty<<endl;</p><p> } while(qty>Rcs_left||qty<1);</p><p> pgrp.insert(pgrp.begin(),pcb(i,qty));</p><p><b> }</b></p><p
23、> //輸入各進(jìn)程申請(qǐng)資源的總量,以及初始化各進(jìn)程;</p><p> cout<<"ALOGRITHM"<<endl</p><p> <<"Random(R)"<<'\t'</p><p> <<"Banker(B)&quo
24、t;<<endl</p><p> <<"ANY OTHER KEY TO QUIT"<<endl;</p><p> ff<<"ALOGRITHM"<<endl</p><p> <<"Random(R)"<<
25、9;\t'</p><p> <<"Banker(B)"<<endl</p><p> <<"ANY OTHER KEY TO QUIT"<<endl;</p><p> char choice;</p><p> cin>>c
26、hoice;</p><p> ff<<choice<<endl;</p><p> if(choice=='R'||choice=='r' )</p><p> rand(resource,pgrp);</p><p> else if(choice=='B'|
27、|choice=='b')</p><p> banker(resource,pgrp);</p><p><b> else </b></p><p> return(0);</p><p> rerurn(1);</p><p><b> }</b&g
28、t;</p><p> void rand (vector<int>&resource,vector<pcb>&pgrp);</p><p><b> {</b></p><p> vector<pcb>::iterator p,q;</p><p> vect
29、or<pcb>::iterator current;</p><p> vector<int>::iterator r;</p><p><b> int temp;</b></p><p> cout<<"NOW-----BANKER ALOGRITHM"<<endl;
30、</p><p> ff<<"NOW-----BANKER ALOGRITHM"<<endl;</p><p><b> for(;;)</b></p><p><b> {</b></p><p> //select a TASK_RUNNIG
31、 process,maybe different from the former one;</p><p> for (p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p-p_stat=TASK-RUNNING;)</p><p>&
32、lt;b> {</b></p><p> current=p;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(curren
33、t->p_apply==0)</p><p><b> {</b></p><p> cout<<"ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t';</p><p> ff<<&
34、quot;ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t';</p><p> cin>>temp;</p><p> ff<<temp<<endl;</p><p> while(temp>p-&g
35、t;p_require-p->p_occupy)</p><p><b> {</b></p><p> cout<<"beyond the real need!"<<endl;</p><p> cout<<"ENTER THE APPLY FOR THE PROC
36、ESS\n"<<current->p_pid<<'\t';</p><p> ff<<"beyond the real need!"<<endl;</p><p> ff<<"ENTER THE APPLY FOR THE PROCESS\n"<&l
37、t;current->p_pid<<'\t';</p><p> cin>>temp;</p><p> ff<<temp<<endl;</p><p><b> }</b></p><p> p->p_apply=temp;</p
38、><p><b> }</b></p><p> //input the apply for the current process;</p><p> if(current->p_apply >Rcs_left)</p><p> { //has problem</p><p&
39、gt; //apply too much,please wait---</p><p> current->p_stat=TASK_WAITTING;</p><p> cout<<endl<<current->p_pid<<"is waitting\n";</p><p> ff<&
40、lt;endl<<current->p_pid<<"is waitting\n";</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_stat==TASK_RUNNIN
41、G) break;</p><p><b> }</b></p><p> if(p==pgrp.end())</p><p><b> {</b></p><p> cout<<"LOCKED!!!"<<endl;</p>&l
42、t;p> ff<<"LOCKED!!!"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p> //滿(mǎn)足該進(jìn)程當(dāng)前的申請(qǐng)</p><p> resource.insert(
43、resource.begin(),current->p_apply,current->p_pid);</p><p> cout<<temp<<"\tresources are accepted for"<<p->p_pid<<endl;</p><p> cout<<endl;</
44、p><p> ff<<temp<<"\tresources are accepted for"<<p->p_pid<<endl;</p><p><b> ff<<endl;</b></p><p> Rcs_left-=current->p_appl
45、y;</p><p> current->p_occupy+=current->p_apply;</p><p> current->p_occupy=0;</p><p> //看該進(jìn)程是否已滿(mǎn)足</p><p> if(current->p_occupy<current->p_require)&
46、lt;/p><p><b> {</b></p><p> pcb proc(*current);</p><p> pgrp.erase(current);</p><p> pgrp.insert(pgrp.end(),proc);</p><p> //current->p_ap
47、ply=0;</p><p> //delete current and insert into the end</p><p> continue;//go on and should select another process</p><p><b> }</b></p><p><b> //s
48、ucceed</b></p><p> cout<<endl<<"process\t"<<p-p_pid<<"\thas succeed!!"<<endl;</p><p> ff<<endl<<"process\t"<<
49、;p-p_pid<<"\thas succeed!!"<<endl;</p><p> Rcs_left+=current->p_apply;</p><p> resource.clear();</p><p> current->p_stat=TASK_SUCCEED;</p><
50、p><b> //</b></p><p> current->p_occupy=0;</p><p> for (p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_stat==TA
51、SK_WAITTING) </p><p><b> break;</b></p><p><b> }</b></p><p> if(p==pgrp.end())</p><p><b> {</b></p><p> for(q=pgrp
52、.begin();q!=pgrp,end();q++)</p><p><b> {</b></p><p> if(q->p_stat==TASK_RUNNING)</p><p><b> break;</b></p><p><b> }</b></p
53、><p> if(q==pgrp,end())</p><p><b> {</b></p><p> cout<<"SUCCEED!!"<<endl;</p><p> ff<<"SUCCEED!!"<<endl;</p&
54、gt;<p><b> exit(0);</b></p><p><b> }</b></p><p> else continue;</p><p> //there is a process in the queue;</p><p><b> }</b&
55、gt;</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_stat==TASK_WAITTING&&Rcs_left>=p->p_apply)</p><p><
56、;b> break;</b></p><p><b> }</b></p><p> if(p!=pgrp.end())</p><p><b> {</b></p><p> p->p_stat==TASK_RUNNING ;</p><p&g
57、t; pcb proc(*p);</p><p> pgrp.erase(p);</p><p> pgrp.insert(pgrp.end(),proc);</p><p> continue; </p><p><b> }</b></p><p><b> else&l
58、t;/b></p><p><b> {</b></p><p> cout<<"LOCKED!!!"<<endl;</p><p> ff<<"LOCKED!!!"<<endl;</p><p><b> e
59、xit(1);</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void banker(vector<int>&resource,vector&l
60、t;pcb>&pgrp);</p><p><b> {</b></p><p> vector<pcb>::iterator p;</p><p> vector<int>::iterator r;</p><p> vector<pcb>::iterator
61、current,q;</p><p> vector<int>::iterator r;</p><p> pcb proc(0,0);</p><p> int length;</p><p> cout<<"NOW-----BANKER ALOGRITHM"<<endl;&l
62、t;/p><p> ff<<"NOW-----BANKER ALOGRITHM"<<endl;</p><p><b> for(;;)</b></p><p><b> {</b></p><p> for(p=pgrp.begin();p!=pgr
63、p.end();p++)</p><p><b> {</b></p><p> if(p->p_stat==TASK_RUNNING)</p><p><b> {</b></p><p> current=p;</p><p><b> brea
64、k;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(current->p_apply ==0)</p><p><b> {</b></p><p> cout&l
65、t;<"ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t';</p><p> ff<<"ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t'
66、;</p><p> cin>>current->p_apply;</p><p> ff<<current->p_apply<<endl;</p><p> while(current->p_apply>current->p_require>current->p_occupy)&l
67、t;/p><p><b> {</b></p><p> cout<<cout<<"ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t';</p><p> ff<<cout<
68、<"ENTER THE APPLY FOR THE PROCESS\n"<<current->p_pid<<'\t';</p><p> cin>>current->p_apply;</p><p> ff<<current->p_apply<<endl;</p
69、><p><b> }</b></p><p><b> }</b></p><p> if(p->p_apply>Rcs_left;</p><p><b> {</b></p><p> current->p_stat=TAS
70、K_WAITTING;</p><p> proc=*current;</p><p> pgrp.erase(current);</p><p> pgrp.insert(pgrp.end()),proc);</p><p> cout<<endl<<p->p_pid<<"is w
71、aiting!"<<endl;</p><p> ff<<endl<<p->p_pid<<"is waiting!"<<endl;</p><p><b> continue;</b></p><p><b> }</b>
72、</p><p> //假定對(duì)申請(qǐng)資源的進(jìn)程分配資源</p><p> pcb backup(*current);</p><p><b> //backup</b></p><p> length=Rcs_left;</p><p> current->p_occupy+=cur
73、rent->p_apply;</p><p> length-=current->p_apply;</p><p> if(current->p_occupy==current->p_require)</p><p> length-=current->p_require</p><p> current
74、->p_issuc=true;</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_stat==TASK_SUCCEED) CONTINUE;</p><p> if(p==curre
75、nt&&p-p_issuc==true)</p><p><b> continue;</b></p><p> if((p->p_require-p->p_occupy)>length) continue;</p><p><b> else</b></p><
76、;p><b> {</b></p><p> p->p_issue=true;</p><p> length+=p->p_occupy;</p><p><b> continue;</b></p><p><b> }</b></p>
77、<p><b> }</b></p><p> //檢查是否還有標(biāo)志位未設(shè)置的進(jìn)程</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_issuc==fal
78、se&&p->p_stat!=TASK_SUCCEED) break;</p><p><b> }</b></p><p> if(p!=pgrp.end())</p><p><b> {</b></p><p> current->p_occupy=bac
79、kup.p_occupy;</p><p> current->p_stat=TASK_WAITTING;</p><p> cout<<endl<<current->p_pid<<"is waiting."<<endl;</p><p> ff<<endl<&l
80、t;current->p_pid<<"is waiting."<<endl;</p><p> proc=*current;</p><p> pgrp.erase(current);</p><p> pgrp.insert(pgrp.end()),proc);</p><p> f
81、or(p=pgrp.begin();p!=pgrp.end();p++)</p><p> p->p_issuc==false;</p><p><b> continue;</b></p><p><b> }</b></p><p> //分配安全,可對(duì)程序進(jìn)行實(shí)際的分配</
82、p><p> resource.insert(resource.end(),current->p_apply,current->p_pid);</p><p> Rcs_left-=current->apply;</p><p> cout<<endl<<current->p_pid<<"get
83、"<<current->p_apply<<"resource(s)!"<<endl;</p><p> ff<<endl<<current->p_pid<<"get"<<current->p_apply<<"resource(s)!&quo
84、t;<<endl;</p><p> current->p_apply=0;</p><p> if(current->p_occupy<current->p_require)</p><p><b> {</b></p><p> proc=*current;</p&g
85、t;<p> pgrp.erase(current);</p><p> pgrp.insert(pgrp.end()),proc);</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p> p->p_issuc==false;</p><p><b&g
86、t; continue;</b></p><p><b> } </b></p><p> current->p_stat=TASK_ SUCCEED</p><p> current->p_occupy=0;</p><p> cout<<endl<<cur
87、rent->p_pid<<"has finished!!!"<<endl;</p><p> ff<<endl<<current->p_pid<<"has finished!!!"<<endl;</p><p> //歸還全部系統(tǒng)資源</p><
88、;p> resource.clear();</p><p> Rcs_left+=current->p_require;</p><p> for(p=pgrp.begin();p!=pgrp.end();p++)</p><p><b> {</b></p><p> if(p->p_sta
89、t==TASK_WAITTING) </p><p><b> break;</b></p><p><b> }</b></p><p> if(p==pgrp.end())</p><p><b> {</b></p><p> fo
90、r(p=pgrp.begin();q!=pgrp.end();q++)</p><p><b> {</b></p><p> if(q->q_stat==TASK_RUNNING) </p><p><b> break;</b></p><p><b> }<
91、/b></p><p> if(q==pgrp.end())</p><p><b> {</b></p><p> cout<<endl<<"SUCCEED!!"<<endl;</p><p> ff<<endl<<"
92、;SUCCEED!!"<<endl;</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> continue;</b>&
93、lt;/p><p><b> }</b></p><p><b> proc=*p;</b></p><p> pgrp.erase(p);</p><p> pgrp.insert(pgrp.end()),proc);</p><p> p->p_stat=TA
94、SK_RUNNING;</p><p><b> continue;</b></p><p><b> }</b></p><p><b> }</b></p><p> 五、系統(tǒng)測(cè)試及調(diào)試</p><p><b> 1、實(shí)際測(cè)試數(shù)
95、據(jù)</b></p><p> /*程序演示結(jié)果如下:*/</p><p> ENTER THE MAX NUMER FOR THE REQUESTED RESOURCE:</p><p> ID REQUESTED</p><p><b> 1 3</b></p><p
96、><b> 2 5</b></p><p><b> 3 7</b></p><p><b> 4 9</b></p><p><b> ALOGRITHM</b></p><p> Random(R) Banker(B
97、)</p><p> ANY OTHER KEY TO QUIT</p><p><b> r</b></p><p> NOW------BANKER ALOGRITHM</p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b>
98、 4 2</b></p><p> 2 resourceare accepted for 4</p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b> 3 3</b></p><p> 3 resourceare accepted for 3&
99、lt;/p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b> 2 5</b></p><p> 5 resourceare accepted for 2</p><p> process 2 has succeed!</p><p>
100、 ENTER THE APPLY FOR THE PROCESS</p><p><b> 1 2</b></p><p> 2 resourceare accepted for 1</p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b> 4 4
101、</b></p><p> 4 is waiting</p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b> 3 2</b></p><p> 2 resourceare accepted for 3</p><p>
102、 ENTER THE APPLY FOR THE PROCESS</p><p><b> 1 2</b></p><p> beyond the real need!</p><p> ENTER THE APPLY FOR THE PROCESS</p><p><b> 1 1</b&g
103、t;</p><p> 1 resourceare accepted for 1</p><p> process 1 has succeed!!</p><p><b> LOCKED!!!</b></p><p><b> */</b></p><p><
104、b> 2、預(yù)期的結(jié)果</b></p><p><b> 3、系統(tǒng)測(cè)試結(jié)論</b></p><p><b> 六、心得體會(huì)</b></p><p><b> 七、主要參考文獻(xiàn)</b></p><p> [1]、張麗芬 劉利雄 王全玉 操作系統(tǒng)實(shí)驗(yàn)
105、教程 清華大學(xué)出版社2006,3</p><p> [2]、張堯?qū)W.史美林. 計(jì)算機(jī)操作系統(tǒng)教程.清華大學(xué)出版社 2000第2版</p><p> [3]、尤晉元.史美林.陳向群. Windows操作系統(tǒng)原理(重點(diǎn)大學(xué)計(jì)算機(jī)教材).清華大學(xué)出版社 2001年8月第1版</p><p> [4]、蔣東興.Windows Sockets網(wǎng)絡(luò)程序設(shè)計(jì)大全.清華大學(xué)出
溫馨提示
- 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í)現(xiàn)資源分配
- 用銀行家算法實(shí)現(xiàn)資源分配課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法實(shí)現(xiàn)
- 操作系統(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ì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (3)
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法設(shè)計(jì))
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)原理課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---模擬實(shí)現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)——銀行家算法的模擬實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論