操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(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>  計(jì)算機(jī)科學(xué)技術(shù)學(xué)院</b></p><p><b>  操作系統(tǒng)原理</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  題 目:進(jìn)程管理系統(tǒng)</p><p><b>  專(zhuān) 業(yè): </b>

2、;</p><p><b>  班 級(jí): </b></p><p><b>  姓 名: </b></p><p><b>  學(xué) 號(hào): </b></p><p><b>  指導(dǎo)老師: </b></p><p>

3、<b>  年 月 日</b></p><p>  《操作系統(tǒng)原理》課程設(shè)計(jì)任務(wù)書(shū)</p><p>  一、課程設(shè)計(jì)題目(任選一個(gè)題目)</p><p><b>  1.模擬進(jìn)程管理</b></p><p><b>  2.模擬處理機(jī)調(diào)度</b></p>

4、<p><b>  3.模擬存儲(chǔ)器管理</b></p><p><b>  4.模擬文件系統(tǒng)</b></p><p><b>  5.模擬磁盤(pán)調(diào)度</b></p><p><b>  二、設(shè)計(jì)目的和要求</b></p><p><b>

5、  1.設(shè)計(jì)目的</b></p><p>  《操作系統(tǒng)原理》課程設(shè)計(jì)是網(wǎng)絡(luò)工程專(zhuān)業(yè)實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完《操作系統(tǒng)原理》課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于加深對(duì)操作系統(tǒng)的理論、方法和基礎(chǔ)知識(shí)的理解,掌握操作系統(tǒng)結(jié)構(gòu)、實(shí)現(xiàn)機(jī)理和各種典型算法,系統(tǒng)地了解操作系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)思路,培養(yǎng)學(xué)生的系統(tǒng)設(shè)計(jì)能力,并了解操作系統(tǒng)的發(fā)展動(dòng)向和趨勢(shì)。</p><p><b>

6、;  2.基本要求:</b></p><p>  (1)選擇課程設(shè)計(jì)題目中的一個(gè)課題,獨(dú)立完成。</p><p>  (2)良好的溝通和合作能力</p><p>  (3)充分運(yùn)用前序課所學(xué)的軟件工程、程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等相關(guān)知識(shí)</p><p>  (4)充分運(yùn)用調(diào)試和排錯(cuò)技術(shù)</p><p>  (5)

7、簡(jiǎn)單測(cè)試驅(qū)動(dòng)模塊和樁模塊的編寫(xiě) </p><p>  (6)查閱相關(guān)資料,自學(xué)具體課題中涉及到的新知識(shí)。</p><p>  (7)課題完成后必須按要求提交課程設(shè)計(jì)報(bào)告,格式規(guī)范,內(nèi)容詳實(shí)。</p><p><b>  三、設(shè)計(jì)內(nèi)容及步驟</b></p><p>  1.根據(jù)設(shè)計(jì)題目的要求,充分地分析和理解問(wèn)題,明確問(wèn)題

8、要求做什么。</p><p>  2.根據(jù)實(shí)現(xiàn)的功能,劃分出合理的模塊,明確模塊間的關(guān)系。</p><p>  3.編程實(shí)現(xiàn)所設(shè)計(jì)的模塊。</p><p>  4.程序調(diào)試與測(cè)試。采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設(shè)計(jì)測(cè)試數(shù)據(jù)確定疑點(diǎn),通過(guò)修改程序來(lái)證實(shí)它或繞過(guò)它。調(diào)試正確后,認(rèn)真整理源程序及其注釋?zhuān)纬筛袷胶惋L(fēng)格良好的源程

9、序清單和結(jié)果;</p><p>  5.結(jié)果分析。程序運(yùn)行結(jié)果包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。</p><p>  6.編寫(xiě)課程設(shè)計(jì)報(bào)告;</p><p>  設(shè)計(jì)報(bào)告要求:A4紙,詳細(xì)設(shè)計(jì)部分主要敘述本人的工作內(nèi)容</p><p><b>  設(shè)計(jì)報(bào)告的格式:</b></p>&l

10、t;p>  (1)封面(題目、指導(dǎo)教師、專(zhuān)業(yè)、班級(jí)、姓名、學(xué)號(hào))</p><p>  (2)設(shè)計(jì)任務(wù)書(shū)(3)目錄</p><p><b>  (4)需求分析</b></p><p><b>  (5)概要設(shè)計(jì)</b></p><p>  (6)詳細(xì)設(shè)計(jì)(含主要代碼)</p>&

11、lt;p>  (7)調(diào)試分析、測(cè)試結(jié)果</p><p><b>  (8)用戶使用說(shuō)明</b></p><p>  (9)附錄或參考資料</p><p><b>  四、進(jìn)度安排</b></p><p>  設(shè)計(jì)在學(xué)期的第15、16周進(jìn)行,時(shí)間安排如下:</p><p>

12、;<b>  五、成績(jī)?cè)u(píng)定辦法</b></p><p>  成績(jī)分為優(yōu)(A)、良(B)、中(C)、及格(D)、不及格(E)五個(gè)等級(jí)。其中設(shè)計(jì)表現(xiàn)占30%,驗(yàn)收40%,設(shè)計(jì)報(bào)告占30%。</p><p>  1.設(shè)計(jì)表現(xiàn):教師可依據(jù)學(xué)生使用實(shí)驗(yàn)環(huán)境的能力、觀察和分析實(shí)驗(yàn)現(xiàn)象的能力、實(shí)驗(yàn)結(jié)果和數(shù)據(jù)的正確性以及學(xué)生的課堂紀(jì)律、實(shí)驗(yàn)態(tài)度、保持實(shí)驗(yàn)室衛(wèi)生等方面的表現(xiàn)進(jìn)行綜合考核

13、。</p><p>  2.驗(yàn)收:要求學(xué)生演示設(shè)計(jì)的程序,講解設(shè)計(jì)思路、方法、解決的主要問(wèn)題,教師根據(jù)具體情況向每個(gè)學(xué)生提問(wèn)2至3個(gè)問(wèn)題。</p><p>  3.設(shè)計(jì)報(bào)告:學(xué)生設(shè)計(jì)后應(yīng)按時(shí)完成設(shè)計(jì)報(bào)告。要求:內(nèi)容充實(shí)、寫(xiě)作規(guī)范、項(xiàng)目填寫(xiě)正確完整、書(shū)面整潔等。</p><p><b>  目錄</b></p><p> 

14、 需求分析………………………………………………6</p><p>  1.進(jìn)一步理解進(jìn)程的基本概念 …………………………6</p><p>  2.加強(qiáng)進(jìn)程管理的設(shè)計(jì)及算法 …………………………6 </p><p>  3.觀察和管理進(jìn)程 ………………………………………6</p><p>  概要設(shè)計(jì)……

15、…………………………………………6</p><p>  1.實(shí)驗(yàn)原理………………………………………………6</p><p>  2.?dāng)?shù)據(jù)結(jié)構(gòu)………………………………………………6</p><p>  3. 算法描述………………………………………………6</p><p>  4. 算法流程圖……………………………………………7</p>

16、;<p>  詳細(xì)設(shè)計(jì)………………………………………………8</p><p>  1.源程序代碼……………………………………………8</p><p>  四、 調(diào)試分析及測(cè)試結(jié)果 ………………………………15</p><p>  五、 用戶及用說(shuō)明 ………………………………………17</p><p>  六、 附錄或參考資

17、料 ……………………………………17</p><p><b>  一、需求分析</b></p><p>  1.進(jìn)一步理解進(jìn)程的基本概念。</p><p>  2.加強(qiáng)進(jìn)程管理中主要數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)及進(jìn)程調(diào)度算法。 </p><p>  3.觀察和管理進(jìn)程——系統(tǒng)在運(yùn)行過(guò)程中可顯示或

18、打印各進(jìn)程的狀態(tài)及有關(guān)參數(shù)的變化情況。</p><p><b>  二、概要設(shè)計(jì)</b></p><p><b>  1.實(shí)驗(yàn)原理</b></p><p>  定義PCB的數(shù)據(jù)結(jié)構(gòu),用鏈表的形式管理進(jìn)程,采用多級(jí)反饋隊(duì)列調(diào)度的算法模擬進(jìn)程的控制,最終完成有創(chuàng)建、撤銷(xiāo)、調(diào)度、阻塞、喚醒進(jìn)程等功能。</p>&l

19、t;p><b>  2.?dāng)?shù)據(jù)結(jié)構(gòu)</b></p><p><b>  類(lèi):</b></p><p>  class queuenode</p><p>  class queue</p><p><b>  函數(shù):</b></p><p>  vo

20、id enqueue( char &item);</p><p>  char dequeue();</p><p>  void del(char item);</p><p>  void display();</p><p>  int find(char item);</p><p>  int ise

21、mpty()</p><p><b>  3.算法描述</b></p><p>  1-1、創(chuàng)建進(jìn)程,根據(jù)進(jìn)程的順序依次放入就緒隊(duì)列。</p><p>  2-1、執(zhí)行進(jìn)程——管理系統(tǒng)將就緒隊(duì)列中的第一個(gè)進(jìn)程調(diào)入運(yùn)行隊(duì)列;</p><p>  2-2、將阻塞隊(duì)列中進(jìn)程調(diào)入就緒隊(duì)列;</p><p>

22、;  2-3、封鎖進(jìn)程——管理系統(tǒng)將就緒隊(duì)列中的第一個(gè)進(jìn)程調(diào)入阻塞隊(duì)列;</p><p>  2-4、結(jié)束進(jìn)程——管理系統(tǒng)撤銷(xiāo)所選進(jìn)程;</p><p><b>  2-5、結(jié)束程序。</b></p><p><b>  4. 算法流程圖</b></p><p><b>  三、詳細(xì)設(shè)計(jì)&

23、lt;/b></p><p><b>  1.源程序代碼</b></p><p>  #include<iostream.h></p><p>  class queuenode</p><p><b>  {</b></p><p>  friend cl

24、ass queue;</p><p><b>  private:</b></p><p>  char data;</p><p>  queuenode * link;</p><p>  queuenode (char d=0,queuenode * l=NULL): data(d),link(l){}</p

25、><p><b>  };</b></p><p>  class queue</p><p><b>  {</b></p><p><b>  public:</b></p><p>  queue():rear(NULL),front(NULL){};

26、</p><p><b>  ~queue();</b></p><p>  void enqueue( char &item);</p><p>  char dequeue();</p><p>  void del(char item);</p><p>  void display

27、();</p><p>  int find(char item);</p><p>  int isempty(){return front==NULL;}</p><p><b>  private:</b></p><p>  queuenode *front,*rear;</p><p>

28、<b>  };</b></p><p>  queue::~queue()</p><p><b>  {</b></p><p>  queuenode * p;</p><p>  while(front!=NULL)</p><p><b>  {</

29、b></p><p>  p=front;front=front->link;delete p;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void queue::enqueue(char &item)</p>

30、<p><b>  {</b></p><p>  if(front==NULL)front=rear=new queuenode(item,NULL);</p><p>  else rear=rear->link=new queuenode(item,NULL);</p><p><b>  }</b&g

31、t;</p><p>  char queue::dequeue()</p><p><b>  {</b></p><p>  queuenode *p=front;</p><p>  char f=p->data;front=front->link;</p><p><b&

32、gt;  delete p;</b></p><p><b>  return f;</b></p><p><b>  }</b></p><p>  void queue::display()</p><p><b>  {</b></p><

33、;p>  queuenode *p;</p><p><b>  p=front;</b></p><p>  while(p!=NULL)</p><p>  {cout<<p->data<<"->";</p><p>  p=p->link;<

34、;/p><p><b>  }</b></p><p>  cout<<"NULL";</p><p><b>  }</b></p><p>  queue::find(char item)</p><p>  { queuenode *w;

35、</p><p><b>  w=front;</b></p><p>  M:while(w!=NULL)</p><p><b>  {</b></p><p>  if(item==w->data)</p><p>  {return 1;break;</

36、p><p><b>  }</b></p><p><b>  else</b></p><p>  {w=w->link;</p><p><b>  goto M;</b></p><p><b>  }</b></p

37、><p><b>  }</b></p><p>  if(w==NULL) return 0;</p><p><b>  }</b></p><p>  void queue::del( char item)</p><p>  { queuenode *q,*b;<

38、;/p><p><b>  q=front;</b></p><p>  while(q->data!=item)</p><p><b>  {b=q;</b></p><p>  q=q->link;</p><p><b>  }</b>&

39、lt;/p><p>  if(q==front) {front=front->link; delete q;}</p><p>  else if(q==rear) {rear=b;rear->link=NULL;delete q;}</p><p>  else {b->link=q->link; delete q;}</p>

40、<p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b>  char a;</b></p>&l

41、t;p>  cout<<"\n[-----------操作系統(tǒng)之進(jìn)程管理模擬系統(tǒng)(先來(lái)先服務(wù)算法)------------]\n"<<endl;</p><p>  queue execute,ready,clog; //執(zhí)行,就緒,阻塞</p><p>  cout<<"\n[-------請(qǐng)用戶輸入進(jìn)程名及其

42、到達(dá)cpu的順序(結(jié)束進(jìn)程數(shù)請(qǐng)輸入x)------]\n"<<endl;</p><p><b>  char r;</b></p><p><b>  r='x';</b></p><p>  for(int i=0;;i++)</p><p><b&g

43、t;  { </b></p><p>  char e[100];</p><p>  cout<<"輸入進(jìn)程名:"<<" ";</p><p>  cin>>e[i];</p><p>  if(e[i]!=r)</p><p&g

44、t;  ready.enqueue(e[i]);</p><p><b>  else</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  A: cout<<"\n [----------

45、--請(qǐng)(學(xué)號(hào))用戶(姓名)選擇操作------------]\n";</p><p>  cout<<"\n [1、執(zhí)行進(jìn)程……2、將阻塞隊(duì)列中進(jìn)程調(diào)入就緒隊(duì)列………]\n";</p><p>  cout<<"\n [3、封鎖進(jìn)程…………………4、結(jié)束進(jìn)程 …………………]\n";</p><p

46、>  cout<<"\n [5、退出程序………………………………………………… ]\n選項(xiàng): ";</p><p><b>  cin>>n;</b></p><p><b>  if(n==1)</b></p><p><b>  {</b><

47、/p><p>  if(!execute.isempty ())</p><p><b>  {</b></p><p>  cout<<"已經(jīng)有進(jìn)程在執(zhí)行!,此操作不能執(zhí)行\(zhòng)n";</p><p><b>  char w;</b></p><p&g

48、t;  cout<<endl;</p><p>  cout<<"如果要繼續(xù)請(qǐng)輸入#;如果要退出按其它任意鍵"<<endl;</p><p>  cout<<"要選擇的操作:";</p><p><b>  cin>>w;</b></p&g

49、t;<p>  if(w=='#')goto L;</p><p>  else goto E;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>&

50、lt;p>  if(!ready.isempty())</p><p><b>  {</b></p><p>  a=ready.dequeue();</p><p><b>  if(a!=r)</b></p><p>  execute.enqueue(a);</p>&l

51、t;p><b>  goto L;</b></p><p><b>  }</b></p><p>  else goto L;</p><p><b>  }</b></p><p><b>  }</b></p><p>

52、  else if(n==2)</p><p><b>  {</b></p><p>  if(!clog.isempty())</p><p><b>  {</b></p><p>  a=clog.dequeue ();</p><p><b>  if(a

53、!=r)</b></p><p>  ready.enqueue(a);</p><p><b>  goto L;</b></p><p><b>  }</b></p><p>  else goto L;</p><p><b>  }</b

54、></p><p>  else if(n==3)</p><p><b>  {</b></p><p>  if(!execute.isempty())</p><p><b>  {</b></p><p>  a=execute.dequeue ();</

55、p><p><b>  if(a!=r)</b></p><p>  clog.enqueue(a);</p><p><b>  goto L;</b></p><p><b>  }</b></p><p>  else goto L;</p>

56、;<p><b>  }</b></p><p>  else if(n==4)</p><p><b>  {</b></p><p>  cout<<"\n請(qǐng)輸入要結(jié)束的進(jìn)程名: ";</p><p><b>  cin>>a;

57、</b></p><p>  if(execute.find (a)||ready.find (a)||clog.find (a))</p><p><b>  {</b></p><p>  if(execute.find(a))</p><p>  {execute.del(a);}</p>

58、<p>  else if(ready.find(a))</p><p>  {ready.del(a);}</p><p>  if(clog.find(a))</p><p>  {clog.del(a);}</p><p>  cout<<"\n結(jié)束進(jìn)程成功!\n"<<endl;&

59、lt;/p><p><b>  goto L;</b></p><p><b>  } </b></p><p><b>  else</b></p><p>  cout<<"沒(méi)有此進(jìn)程"<<endl;</p><p

60、><b>  goto L;</b></p><p><b>  L: </b></p><p>  if(n==1||n==2||n==3||n==4)</p><p><b>  {</b></p><p>  cout<<"執(zhí)行隊(duì)列"

61、<<endl;</p><p>  execute.display();</p><p>  cout<<endl;</p><p>  cout<<"就緒隊(duì)列"<<endl;</p><p>  ready.display();cout<<endl;</p

62、><p>  cout<<"阻塞隊(duì)列"<<endl;</p><p>  clog.display();cout<<endl;</p><p><b>  goto A;</b></p><p><b>  }</b></p><

63、;p><b>  else </b></p><p><b>  if(n==5);</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  cout<<"\n你的輸入

64、錯(cuò)誤!\n";</p><p><b>  goto A;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  E:;} </b></p><p>  四、

65、調(diào)試分析及測(cè)試結(jié)果</p><p><b>  五、用戶使用說(shuō)明</b></p><p>  用戶通過(guò)VC++ 即可運(yùn)行改程序。需說(shuō)明的是主函數(shù)是實(shí)現(xiàn)進(jìn)程管理的入口,在入口處需輸入進(jìn)程名稱,然后輸入進(jìn)程的狀態(tài)選項(xiàng),如果完畢后,則通過(guò)相應(yīng)的調(diào)度算法進(jìn)行進(jìn)程機(jī)的調(diào)度,同時(shí)也將結(jié)果顯示在屏幕上。</p><p>  本次實(shí)驗(yàn)通過(guò)模擬多個(gè)進(jìn)程的同步運(yùn)

66、行,實(shí)現(xiàn)了進(jìn)程就緒,運(yùn)行,阻塞三個(gè)狀態(tài)的轉(zhuǎn)換,并可以根據(jù)用戶要求改變進(jìn)程的狀態(tài)。</p><p><b>  六、附錄及參考資料</b></p><p>  [1]王紅 ,《操作系統(tǒng)實(shí)訓(xùn)》,中國(guó)水利水電出版社,2005</p><p>  [2]張紅光,《UNIX操作系統(tǒng)試驗(yàn)教程》,機(jī)械工程出版社,2006</p><p&g

溫馨提示

  • 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)論