操作系統(tǒng)課程設(shè)計(jì)---用銀行家算法和隨機(jī)算法實(shí)現(xiàn)資源分配_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論