os課程設(shè)計(jì)---模擬內(nèi)存分配算法mfc實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  設(shè)計(jì)題目:內(nèi)存的連續(xù)分配算法</p><p><b>  班級(jí) : </b></p><p><b>  學(xué)號(hào): </b></p><p><b>  姓名:</b&g

2、t;</p><p><b>  指導(dǎo)老師:</b></p><p>  設(shè)計(jì)時(shí)間:2012年8月</p><p><b>  摘要</b></p><p><b>  主要算法包括:</b></p><p>  固定分區(qū)分配、動(dòng)態(tài)分區(qū)分配、伙

3、伴算法、可重定位分區(qū)分配。</p><p><b>  2、內(nèi)容要求:</b></p><p>  1)定義與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu),如PCB,空閑分區(qū)表;</p><p>  2)至少實(shí)現(xiàn)兩種以上分配算法,且用戶可以選擇在某次執(zhí)行過(guò)程中使用何種算法;</p><p>  3)在使用動(dòng)態(tài)分區(qū)分配或可重定位分區(qū)分配算法時(shí)必須實(shí)

4、現(xiàn)緊湊和對(duì)換功能;</p><p>  4)動(dòng)態(tài)分區(qū)分配和可重定位分區(qū)分配必選一個(gè)實(shí)現(xiàn)。</p><p>  本系統(tǒng)模擬了操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn),實(shí)現(xiàn)了固定分區(qū)分配和動(dòng)態(tài)分區(qū)分配,以及可重定位分區(qū)分配算法,采用PCB定義結(jié)構(gòu)體來(lái)表示一個(gè)進(jìn)程,定義了進(jìn)程的名稱和大小,進(jìn)程內(nèi)存起始地址和進(jìn)程狀態(tài)。內(nèi)存分區(qū)表采用單鏈表來(lái)模擬實(shí)現(xiàn)。</p><p>  關(guān)鍵詞:固定分區(qū)

5、分配、動(dòng)態(tài)分區(qū)分配、可重定位分區(qū)分配。</p><p><b>  目錄</b></p><p>  1. 概述 ……………………….4</p><p>  2. 課程設(shè)計(jì)任務(wù)及要求</p><p>  2.1 設(shè)計(jì)任務(wù) ………………………..4</p><p>

6、;  2.2 設(shè)計(jì)要求 ………………………..4</p><p>  3. 算法及數(shù)據(jù)結(jié)構(gòu)</p><p>  3.1算法的總體思想(流程)………………………5</p><p>  3.2 PCB模塊</p><p>  3.2.1 功能(運(yùn)算)……………………….5</p><p&

7、gt;  3.2.2 數(shù)據(jù)結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu))……………………….5</p><p>  3.2.3 算法(實(shí)現(xiàn))……………………….5</p><p>  3.3 進(jìn)程隊(duì)列模塊</p><p>  3.3.1功能………………………6</p><p>  3.3.2 數(shù)據(jù)結(jié)構(gòu)………………………6</p>

8、;<p>  3.3.3算法………………………6</p><p>  4. 程序設(shè)計(jì)與實(shí)現(xiàn)</p><p>  4.1 程序流程圖……………………..7</p><p>  4.2 程序說(shuō)明(代碼)</p><p>  4.3 實(shí)驗(yàn)結(jié)果……………………..9</p>

9、<p>  5. 結(jié)論……………………..10</p><p>  6. 參考文獻(xiàn)?!?.10</p><p>  7. 收獲、體會(huì)和建議?!?.10</p><p><b>  一:概述</b></p><p>  本系統(tǒng)模擬了操作

10、系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn),實(shí)現(xiàn)了固定分區(qū)分配和動(dòng)態(tài)分區(qū)分配,以及可重定位分區(qū)分配算法,采用PCB定義結(jié)構(gòu)體來(lái)表示一個(gè)進(jìn)程,定義了進(jìn)程的名稱和大小,進(jìn)程內(nèi)存起始地址和進(jìn)程狀態(tài)。內(nèi)存分區(qū)表采用單鏈表來(lái)模擬實(shí)現(xiàn)。</p><p>  固定分區(qū)實(shí)現(xiàn)就是將單鏈表的每個(gè)節(jié)點(diǎn)的大小設(shè)為固定大小,系統(tǒng)默認(rèn)如果按固定分區(qū)分配的話,只能分成20個(gè)相等大小的分區(qū),因此系統(tǒng)只能最多運(yùn)行20個(gè)進(jìn)程。</p><p>

11、  動(dòng)態(tài)分區(qū)的實(shí)現(xiàn)是根據(jù)進(jìn)程所申請(qǐng)的內(nèi)存大小來(lái)決定動(dòng)態(tài)的有系統(tǒng)進(jìn)行分配內(nèi)存空間大小,因此分區(qū)表里的空閑分區(qū)個(gè)數(shù)是不定的,根據(jù)進(jìn)程數(shù)和進(jìn)程大小決定的。</p><p>  可重定位分區(qū)算法比動(dòng)態(tài)分區(qū)算法增加了緊湊和進(jìn)程對(duì)換的功能。</p><p>  二:課程設(shè)計(jì)任務(wù)及要求</p><p><b>  設(shè)計(jì)任務(wù):</b></p>&

12、lt;p>  使用C++ MFC實(shí)現(xiàn)模擬操作系統(tǒng)內(nèi)存分配算法的實(shí)現(xiàn),定義結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu)表示進(jìn)程,定義單鏈表表示內(nèi)存分區(qū)表。</p><p><b>  設(shè)計(jì)要求:</b></p><p>  定義與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu),如PCB,空閑分區(qū)表;</p><p>  至少實(shí)現(xiàn)兩種以上分配算法,且用戶可以選擇在某次執(zhí)行過(guò)程中使用何種算法;<

13、/p><p>  在使用動(dòng)態(tài)分區(qū)分配或可重定位分區(qū)分配算法時(shí)必須實(shí)現(xiàn)緊湊和對(duì)換功能;</p><p>  動(dòng)態(tài)分區(qū)分配和可重定位分區(qū)分配必選一個(gè)實(shí)現(xiàn)。</p><p><b>  三:算法及數(shù)據(jù)結(jié)構(gòu)</b></p><p>  #define free 0//表示進(jìn)程狀態(tài)空閑</p><p> 

14、 #define busy 1//表示進(jìn)程狀態(tài)忙</p><p>  typedef int Status;//表示進(jìn)程狀態(tài)</p><p>  struct PCB//表示進(jìn)程PCB結(jié)構(gòu)體</p><p><b>  {</b></p><p>  CString name;//進(jìn)程name&l

15、t;/p><p>  Status status;//進(jìn)程狀態(tài)busy or free</p><p>  int lStartAddres;//進(jìn)程起始地址</p><p>  int Size;//進(jìn)程大小</p><p><b>  };</b></p><p>  st

16、ruct Node//表示組成鏈表的結(jié)點(diǎn)結(jié)構(gòu)體</p><p><b>  {</b></p><p><b>  PCB data;</b></p><p>  Node *next;</p><p><b>  };</b></p><p>

17、;  class Queue//表示分區(qū)表的單鏈表類</p><p><b>  {</b></p><p><b>  public:</b></p><p><b>  Queue();</b></p><p>  ~Queue(){}</p>&

18、lt;p>  //void Show();//內(nèi)存區(qū)分配情況顯示</p><p>  int GetLength();</p><p>  int GetAllFree();//獲得所有空閑分區(qū)總大小</p><p>  void InitialMemory(int );//初始化內(nèi)存區(qū)域大小</p>&

19、lt;p>  void FixedPartitonAlloc();//固定分區(qū)分配初始化空閑內(nèi)存鏈表</p><p>  bool AllocProFixed(CString ,int );//為進(jìn)程分配內(nèi)存(執(zhí)行固定分區(qū)分配算法)</p><p>  bool AllocProDynamic(CString ,int );//為進(jìn)程分配內(nèi)存(動(dòng)態(tài)分區(qū)分配)<

20、;/p><p>  boolFreeMemory(CString );//釋放進(jìn)程內(nèi)存</p><p>  bool AllMerge(int );//內(nèi)存緊湊分區(qū)算法</p><p>  bool Swaping(int ,PCB&);//進(jìn)程對(duì)換算法</p><p>  Node *GetFirst

21、();//返回頭結(jié)點(diǎn)</p><p>  void Clear();//鏈表節(jié)點(diǎn)清除</p><p><b>  private:</b></p><p>  Node *first;</p><p><b>  };</b></p><p&g

22、t;  #include "StdAfx.h"</p><p>  #include "Queue.h"</p><p>  Queue::Queue()</p><p><b>  {</b></p><p><b>  //默認(rèn)頭結(jié)點(diǎn)數(shù)據(jù)</b></

23、p><p>  first = new Node;</p><p>  first->data.lStartAddres=0;</p><p>  first->data.name="";</p><p>  first->data.Size=0;</p><p>  first-&g

24、t;data.status=busy;</p><p>  first->next=NULL;</p><p><b>  }</b></p><p>  int Queue::GetLength()</p><p><b>  {</b></p><p><b&

25、gt;  int n=0;</b></p><p>  Node *p=first;</p><p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p><b>  n++;</

26、b></p><p><b>  }</b></p><p><b>  return n;</b></p><p><b>  }</b></p><p>  Node *Queue::GetFirst()</p><p><b>  

27、{</b></p><p>  return first;</p><p><b>  }</b></p><p>  int Queue::GetAllFree()</p><p><b>  {</b></p><p><b>  int n=0;&

28、lt;/b></p><p>  Node *p=first;</p><p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  if (p->data.status==free)<

29、/p><p><b>  {</b></p><p>  n+=p->data.Size;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return n;</b>&l

30、t;/p><p><b>  }</b></p><p>  //void Queue::Show()</p><p><b>  //{</b></p><p>  //Node *p=first;</p><p>  //while(p->next)</p&g

31、t;<p><b>  //{</b></p><p>  //p=p->next;</p><p>  //cout<<"分區(qū)號(hào):"<<p->data.name<<endl;</p><p>  //cout<<"分區(qū)狀態(tài):&

32、quot;<<(p->data.status==busy ?"busy":"free")<<endl;</p><p>  //cout<<"分區(qū)起始地址:"<<p->data.lStartAddres<<endl;</p><p>  //cout&

33、lt;<"分區(qū)大小:"<<p->data.Size<<endl;</p><p>  //cout<<"--------------------------------\n";</p><p><b>  //}</b></p><p><b&g

34、t;  //}</b></p><p>  void Queue::InitialMemory(int i)</p><p><b>  {</b></p><p><b>  PCB tmp;</b></p><p>  tmp.name="";</p>

35、<p>  tmp.status=free;</p><p>  tmp.lStartAddres=0;</p><p>  tmp.Size=i;</p><p>  Node *s=new Node;</p><p>  s->data=tmp;</p><p>  first->next

36、=s;</p><p>  s->next=NULL;</p><p><b>  }</b></p><p>  void Queue::Clear()</p><p><b>  {</b></p><p><b>  Node *q;</b>

37、</p><p>  Node *p=first->next;</p><p>  while(p->next)</p><p><b>  {</b></p><p><b>  q=p;</b></p><p>  p=p->next;</p>

38、;<p><b>  delete q;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Queue::FixedPartitonAlloc()</p><p><b>  {<

39、/b></p><p><b>  PCB tmp;</b></p><p>  int AllSize=first->next->data.Size;</p><p>  int perSize=AllSize/20;</p><p>  first->next->data.Size=pe

40、rSize;</p><p>  Node *p= first;</p><p>  for (int i=1;i<20;i++)</p><p><b>  {</b></p><p>  while(p->next)</p><p><b>  {</b>&l

41、t;/p><p>  p=p->next;</p><p><b>  }</b></p><p>  tmp.name="";</p><p>  tmp.status=free;</p><p>  tmp.lStartAddres=i*perSize+1;</p&

42、gt;<p>  tmp.Size=perSize;</p><p>  Node *s= new Node;</p><p>  s->data=tmp;</p><p>  p->next=s;</p><p>  s->next=NULL;</p><p><b>  }

43、</b></p><p><b>  }</b></p><p>  bool Queue::AllocProFixed(CString _name,int _size)</p><p><b>  {</b></p><p><b>  PCB tmp;</b>&

44、lt;/p><p>  Node *p= first;</p><p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  if (p->data.Size>=_size&&p-

45、>data.status==free)</p><p><b>  {</b></p><p>  p->data.name=_name;</p><p>  p->data.status=busy;</p><p>  return true;</p><p><b>

46、;  }</b></p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  void Queue::SortList()</p><p><b>  {</b

47、></p><p>  Node *p=NULL;</p><p>  Node *q=NULL;</p><p>  for(p=first->next;p->next;p=p->next)</p><p>  for (q=p->next;q;q=q->next)</p><p>

48、;<b>  {</b></p><p>  if (p->data.Size>q->data.Size)</p><p><b>  {</b></p><p><b>  PCB tmp;</b></p><p>  tmp=p->data;<

49、/p><p>  p->data=q->data;</p><p>  q->data=tmp;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

50、<p>  //動(dòng)態(tài)分區(qū)分配算法(最佳適應(yīng)算法)</p><p>  bool Queue::AllocProDynamic(CString _name,int _size)</p><p><b>  {</b></p><p>  Node *p=first;</p><p>  Node *q=NUL

51、L;//用來(lái)記錄最佳插入點(diǎn)位置</p><p>  int ch=0;//用來(lái)記錄最小碎片值</p><p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  //分區(qū)大小正好和進(jìn)程

52、大小相等</p><p>  if (p->data.status==free&&p->data.Size==_size)</p><p><b>  {</b></p><p>  p->data.name=_name;</p><p>  p->data.status=busy

53、;</p><p>  return true;</p><p><b>  }</b></p><p>  if (p->data.status==free&&p->data.Size>_size)</p><p><b>  {</b></p>&

54、lt;p>  ch=p->data.Size-_size;</p><p><b>  q=p;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  /*</b><

55、/p><p>  //分區(qū)大小大于進(jìn)程大小,分割分區(qū),并按大小分區(qū)排序</p><p>  if (p->data.Size>_size&&p->data.status==free)</p><p><b>  {</b></p><p>  Node *s=new Node;</p&

56、gt;<p>  int tmp=p->data.Size-_size;</p><p>  if (tmp>_size)</p><p><b>  {</b></p><p>  s->data.lStartAddres=p->data.lStartAddres;</p><p>

57、;  s->data.Size=_size;</p><p>  s->data.name=_name;</p><p>  s->data.status=busy;</p><p>  p->data.lStartAddres+=_size;</p><p>  p->data.Size=tmp;</p&

58、gt;<p>  s->next=q->next;</p><p>  q->next=s;</p><p>  SortList();//對(duì)分區(qū)鏈表進(jìn)行按大小有小到大排序</p><p>  return true;</p><p><b>  }</b></p>&

59、lt;p><b>  else</b></p><p><b>  {</b></p><p>  s->data.lStartAddres=p->data.lStartAddres+tmp;</p><p>  s->data.name=_name;</p><p>  s

60、->data.Size=_size;</p><p>  s->data.status=busy;</p><p>  p->data.Size=tmp;</p><p>  s->next=p->next;</p><p>  p->next=s;</p><p>  SortLi

61、st();//對(duì)分區(qū)鏈表進(jìn)行按大小有小到大排序</p><p>  return true;</p><p><b>  }</b></p><p><b>  */</b></p><p><b>  }</b></p><p><b&g

62、t;  while(p)</b></p><p><b>  {</b></p><p>  if (p->data.status==free&&p->data.Size>=_size)</p><p><b>  {</b></p><p>  if

63、(p->data.Size-_size<ch)</p><p><b>  {</b></p><p>  ch=p->data.Size-_size;</p><p><b>  q=p;</b></p><p><b>  }</b></p>

64、<p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  if(q==NULL)</p><p><b>  {</b></p><p>  return fa

65、lse;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Node *s=new Node;</p><p>  s->data.lStartAddr

66、es=q->data.lStartAddres+ch;</p><p>  s->data.name=_name;</p><p>  s->data.Size=_size;</p><p>  s->data.status=busy;</p><p>  q->data.Size=ch;</p>

67、<p>  s->next=q->next;</p><p>  q->next=s;</p><p>  return true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  bool Qu

68、eue::FreeMemory(CString _name)</p><p><b>  {</b></p><p>  Node *p=first;</p><p><b>  Node *q;</b></p><p>  while(p->next)</p><p>

69、;<b>  {</b></p><p><b>  q=p;</b></p><p>  p=p->next;</p><p>  if (p->data.name==_name)</p><p><b>  {</b></p><p> 

70、 p->data.name="";</p><p>  p->data.status=free;</p><p>  //進(jìn)行相鄰分區(qū)合并</p><p>  if (q->data.status==free)</p><p><b>  {</b></p><p

71、>  q->data.Size+=p->data.Size;</p><p>  q->next=p->next;</p><p><b>  }</b></p><p>  //判斷是否為鏈表尾</p><p>  if (p->next!=NULL)</p><

72、p><b>  {</b></p><p>  if (p->next->data.status==free)</p><p><b>  {</b></p><p>  p->data.Size+=p->next->data.Size;</p><p>  p-

73、>next=p->next->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p><b&

74、gt;  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  bool Queue::AllMerge(int _size)</p><p><b>  {</b></p><p>  Node

75、*p=first;</p><p><b>  Node *q;</b></p><p>  int sum=0;</p><p>  bool flag=true;//標(biāo)志是否為第一次找到free分區(qū)</p><p>  while(p->next)</p><p><b&g

76、t;  {</b></p><p>  while(p->next)</p><p><b>  {</b></p><p><b>  q=p;</b></p><p>  p=p->next;</p><p>  if (p->data.st

77、atus==free&&flag)</p><p><b>  {</b></p><p>  sum=p->data.Size;</p><p>  q->next=p->next;</p><p>  flag=false;</p><p><b>

78、  break;</b></p><p><b>  }</b></p><p>  if (!flag&&p->data.status==busy)</p><p><b>  {</b></p><p>  //對(duì)數(shù)據(jù)進(jìn)行重定位</p><p

79、>  p->data.lStartAddres-=sum;</p><p><b>  }</b></p><p>  if (p->data.status==free&&!flag)</p><p><b>  {</b></p><p>  p->data

80、.Size+=sum;</p><p>  //對(duì)數(shù)據(jù)進(jìn)行重定位</p><p>  p->data.lStartAddres-=sum;</p><p>  if (p->data.Size>=_size)</p><p><b>  {</b></p><p>  retur

81、n true;</p><p><b>  }</b></p><p>  q->next=p->next;</p><p>  sum=p->data.Size;</p><p><b>  break;</b></p><p><b>  }&

82、lt;/b></p><p><b>  }</b></p><p><b>  while(p)</b></p><p><b>  {</b></p><p><b>  q=p;</b></p><p>  p=p-&g

83、t;next;</p><p>  if (p->data.status==free)</p><p><b>  {</b></p><p>  p->data.Size+=sum;</p><p>  //對(duì)數(shù)據(jù)進(jìn)行重定位</p><p>  p->data.lStartAd

84、dres-=sum;</p><p>  if (p->data.Size>_size)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p>  q->next=p-&

85、gt;next;</p><p>  sum=p->data.Size;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  

86、{</b></p><p>  //對(duì)數(shù)據(jù)進(jìn)行重定位</p><p>  p->data.lStartAddres-=sum;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</

87、b></p><p>  return false;</p><p><b>  }</b></p><p>  bool Queue::Swaping(int needSize ,PCB &pro)</p><p><b>  {</b></p><p>  

88、Node *p=first;</p><p>  //Node *q;</p><p>  while(p->next)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  if (p->data.Size>=needSiz

89、e)</p><p><b>  {</b></p><p>  pro=p->data;</p><p>  p->data.name="";</p><p>  p->data.status=free;</p><p>  return true;<

90、/p><p><b>  }</b></p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  四:程序設(shè)計(jì)與實(shí)現(xiàn)。</p><p><b

91、>  流程圖</b></p><p>  固定分區(qū)分配流程圖:</p><p>  默認(rèn)1000KB內(nèi)存大小</p><p>  總共分為20個(gè)相等大小分區(qū)</p><p><b>  動(dòng)態(tài)分區(qū)分配算法:</b></p><p>  可重定位分區(qū)分配算法:</p&

92、gt;<p><b>  實(shí)驗(yàn)結(jié)果:</b></p><p>  五:收獲,體會(huì)和建議</p><p>  此次課程設(shè)計(jì)讓我進(jìn)一步加深了對(duì)操作系統(tǒng)內(nèi)存分配算法的的理解,此次試驗(yàn)自己花了不少時(shí)間研究課本和課外資料,在寫可重定位分區(qū)分配算法遇到了內(nèi)存緊湊算法方面的難題,如何對(duì)內(nèi)存剩余空間大小進(jìn)行緊湊利用,花了好些時(shí)間不斷的實(shí)驗(yàn),不斷的調(diào)試代碼,最后終于寫好了

93、,并加以測(cè)試代碼的健壯性,完成并測(cè)試了本次操作系統(tǒng)課程設(shè)計(jì)。期間雖然遇到了很多困難,但自己最后因?yàn)檫@些困難而收獲到了不少知識(shí),加強(qiáng)了自己動(dòng)手寫代碼的能力,對(duì)代碼調(diào)式技術(shù)進(jìn)一步掌握,對(duì)操作系統(tǒng)也產(chǎn)生了更濃厚的興趣,自己一定還要多花時(shí)間研究操作系統(tǒng),爭(zhēng)取進(jìn)一步理解操作系統(tǒng)并能夠?qū)?yōu)秀算法加以運(yùn)用到自己以后的代碼中。</p><p>  六:參考資料和書(shū)籍。</p><p>  《Visual

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論