操作系統(tǒng)課程設計-對處理機的調(diào)度_第1頁
已閱讀1頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  2013年12月31日</p><p>  目 錄</p><p>  1設計目的………………………………………………………………………4</p><p>  2設計要求………………………………………………………………………4</

2、p><p>  3設計方案………………………………………………………………………4</p><p>  3.1先到先服務算法…………………………………………………………… …4</p><p>  3.2短進程優(yōu)先算法…………………………………………………………… …6</p><p>  4設計內(nèi)容……………………………………………………………

3、…………8</p><p>  4.1輸入進程信息………………………………………………………… …8</p><p>  4.2先到先服務算法輸出……………………………………………………… …9</p><p>  4.3短進程優(yōu)先算法輸出……………………………………………………… …9</p><p>  5總結……………………………………

4、…………………………………10</p><p>  6參考文獻……………………………………………………………………10</p><p><b>  對處理機的調(diào)度</b></p><p><b>  1.設計目的</b></p><p>  進程是操作系統(tǒng)最重要的概念之一,進程調(diào)度是操作系統(tǒng)內(nèi)核的重

5、要功能,本實驗要求用C語言編寫一個進程調(diào)度模擬程序,使用短作業(yè)優(yōu)先調(diào)度算法,高響應比調(diào)度算法,先到先服務算法實現(xiàn)進程調(diào)度??梢允謩幼枞c喚醒。本實驗可加深對進程調(diào)度算法的理解。</p><p>  在OS中,調(diào)度的實質(zhì)是一種資源分配,調(diào)度算法即指:根據(jù)系統(tǒng)的資源分配策略所規(guī)定的資源分配算法。對于不同的系統(tǒng)和系統(tǒng)目標,通常采用不同的調(diào)度算法,如在批處理系統(tǒng)中,為照顧為數(shù)眾多的短作業(yè),采用短作業(yè)有限調(diào)度算法;把當前處

6、于就緒隊列之首的那個進程調(diào)度到運行狀態(tài),采用先到先服務算法。采用算法時,則要考慮多方面因素,以便達到最佳效果。</p><p><b>  2.設計要求</b></p><p><b>  對處理機的調(diào)度</b></p><p>  設計一個有多個進程共行的進程調(diào)度程序。</p><p>  進程調(diào)

7、度算法:先到先服務算法,短作業(yè)優(yōu)先調(diào)度算法</p><p>  每個進程有一個進程控制塊( PCB)表示。進程控制塊可以包含如下信息:到達時間,服務時間,完成時間,周轉(zhuǎn)時間,帯權周莊時間,平均周轉(zhuǎn)時間,平均帯權周轉(zhuǎn)時間。</p><p>  int ArrivalTime[Max];//到達時間</p><p>  int ServiceTime[Max];//

8、服務時間</p><p>  int FinishTime[Max];//完成時間</p><p>  int WholeTime[Max];//周轉(zhuǎn)時間</p><p>  double WeightWholeTime[Max];//帯權周轉(zhuǎn)時間</p><p>  double AverageWT_FCFS,AverageWT_SJF

9、; //平均周轉(zhuǎn)時間</p><p>  double AverageWWT_FCFS,AverageWWT_SJF;//平均帯權周轉(zhuǎn)時間</p><p><b>  3.設計方案</b></p><p>  3.1 先到先服務算法</p><p>  采用先來先服務FCFS調(diào)度進程運行,計算每個進程的周轉(zhuǎn)時間,帶權周轉(zhuǎn)

10、時間,并且計算所有進程的平均周轉(zhuǎn)時間,帶權平均周轉(zhuǎn)時間</p><p>  void FCFS()//找最早到達的。</p><p><b>  {</b></p><p>  cout<<endl<<"——————先到先服務算法(FCFS)——————"<<endl<<end

11、l;</p><p>  for(i=0;i<Num;i++)</p><p><b>  {</b></p><p>  if(ArrivalTime[i]>NowTime)//假如進程到達的時間比現(xiàn)在已經(jīng)運行的時間NowTime大,說明在NowTime時刻進程未到達</p><p><b>  

12、{</b></p><p>  NowTime=ArrivalTime[i];//把進程的到達時間賦給NowTime</p><p><b>  }</b></p><p>  NowTime+=ServiceTime[i];//把進程的服務時間加到NowTime上</p><p>  FinishTime[

13、i]=NowTime;//計算完成時間</p><p>  WholeTime[i]=FinishTime[i]-ArrivalTime[i];//計算周轉(zhuǎn)時間=完成時間-到達時間</p><p>  WeightWholeTime[i]=(double)WholeTime[i]/ServiceTime[i];//計算帶權周轉(zhuǎn)時間=周轉(zhuǎn)時間/服務時間</p><p>

14、;  SumWT+=WholeTime[i];//計算總的周轉(zhuǎn)時間</p><p>  SumWWT+=WeightWholeTime[i];//計算總的帯權周轉(zhuǎn)時間</p><p><b>  }</b></p><p>  AverageWT_FCFS=SumWT/Num;//平均周轉(zhuǎn)時間</p><p>  Ave

15、rageWWT_FCFS=SumWWT/Num;//平均帯權周轉(zhuǎn)時間</p><p>  for(i=0;i<Num;i++)//依次輸出結果</p><p><b>  {</b></p><p>  cout<<"時刻"<<FinishTime[i]-ServiceTime[i]</p

16、><p>  <<": 進程"<<i+1<<"開始運行 "<<" 其完成時間:"</p><p>  <<FinishTime[i]<<" 周轉(zhuǎn)時間:"<<WholeTime[i]</p><p>  &

17、lt;<setprecision(3)<<" 帯權周轉(zhuǎn)時間:"<<WeightWholeTime[i]</p><p>  <<setprecision(3)<<endl;</p><p><b>  }</b></p><p>  cout<<"

18、平均周轉(zhuǎn)時間:"<<AverageWT_FCFS<<endl;</p><p>  cout<<"平均帯權周轉(zhuǎn)時間:"<<AverageWWT_FCFS<<endl;</p><p><b>  }</b></p><p>  3.2短進程優(yōu)先算法<

19、/p><p>  void SJF()//找已經(jīng)到達的且服務時間最短的進程(假定輸入的進程是按照到達時間先后輸入的)</p><p><b>  {</b></p><p>  cout<<endl<<"——————短進程優(yōu)先算法(SJF)——————"<<endl;</p>&

20、lt;p>  int min=0;</p><p>  NowTime=ArrivalTime[0]+ServiceTime[0];//計算第一次的NowTIme</p><p>  FinishTime[0]=NowTime;//計算第一個進程的完成時間</p><p>  ServiceTime_SJF[0]=1000;//賦初值。</p>

21、<p>  cout<<"時刻"<<FinishTime[0]-ServiceTime[0]<<": 進程"<<1<<"開始運行。";</p><p>  int allin=0,j,k;</p><p>  for(i=1;i<Num;i++)//進入循

22、環(huán),從第二個到達的進程開始</p><p><b>  {</b></p><p>  k=1;min=0;</p><p>  if(allin==0)//找到已經(jīng)到達的進程個數(shù)</p><p><b>  {</b></p><p><b>  j=0;<

23、/b></p><p>  while(ArrivalTime[j]<=NowTime && j<Num)//已經(jīng)到達的進程</p><p><b>  {</b></p><p><b>  j++;</b></p><p>  if(j>=Num)<

24、/p><p><b>  {</b></p><p><b>  allin=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>&l

25、t;/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  j=Num;</b></p><p><b>  }</b></p><p>  j=j-1;//j是已經(jīng)到達的進程數(shù)&

26、lt;/p><p>  while(k<=j)//從已經(jīng)到達的進程里找到服務時間最短的進程</p><p><b>  {</b></p><p>  if(ServiceTime_SJF[k]==0)//進程的服務時間如果等于0,則跳過該進程</p><p><b>  k++;</b><

27、/p><p><b>  else</b></p><p><b>  {</b></p><p>  if(ServiceTime_SJF[min]>ServiceTime_SJF[k])//比較,找到服務時間最短的進程</p><p><b>  min=k;</b>&l

28、t;/p><p><b>  k++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ServiceTime_SJF[min]=0;//找完后置零,便于下一次循環(huán)時使用</p><p>  Now

29、Time+=ServiceTime[min];//累加當前時間</p><p>  FinishTime[min]=NowTime;//完成時間</p><p><b>  }</b></p><p>  for(i=0;i<Num;i++)//計算周轉(zhuǎn)時間,帶權周轉(zhuǎn)時間,總的周轉(zhuǎn)時間和總的帶權周轉(zhuǎn)時間</p><p&

30、gt;<b>  {</b></p><p>  WholeTime[i]=FinishTime[i]-ArrivalTime[i];</p><p>  WeightWholeTime[i]=(double)WholeTime[i]/ServiceTime[i];</p><p>  SumWT+=WholeTime[i];</p>

31、;<p>  SumWWT+=WeightWholeTime[i];</p><p><b>  }</b></p><p>  AverageWT_SJF=SumWT/Num;//平均周轉(zhuǎn)時間</p><p>  AverageWWT_SJF=SumWWT/Num;//平均帶權周轉(zhuǎn)時間</p><p> 

32、 cout<<" 其完成時間:"<<FinishTime[0]<<" 周轉(zhuǎn)時間:"<<WholeTime[0]<<setprecision(3)<<" 帯權周轉(zhuǎn)時間:"<<WeightWholeTime[0]<<setprecision(3)<<endl;</

33、p><p>  for(i=1;i<Num;i++)//輸出結果</p><p><b>  {</b></p><p>  cout<<"時刻"<<FinishTime[i]-ServiceTime[i]<<": 進程"<<i+1<<&quo

34、t;開始運行 "<<" 其完成時間:"<<FinishTime[i]<<" 周轉(zhuǎn)時間:"<<WholeTime[i]<<setprecision(3)<<" 帯權周轉(zhuǎn)時間:"<<WeightWholeTime[i]<<setprecision(3)<<en

35、dl;</p><p><b>  }</b></p><p>  cout<<"平均周轉(zhuǎn)時間:"<<AverageWT_SJF<<endl;</p><p>  cout<<"平均帯權周轉(zhuǎn)時間:"<<AverageWWT_SJF<<

36、endl;</p><p><b>  }</b></p><p><b>  4.設計內(nèi)容</b></p><p>  4.1 輸入進程信息</p><p>  4.2 先到先服務算法輸出</p><p>  4.3 短進程優(yōu)先算法輸出</p><p&g

37、t;<b>  5.總結</b></p><p>  通過此次課程設計,更深入的理解了各個進程調(diào)度算法,及實現(xiàn)過程。增進了VC編程的水平。對進程或作業(yè)先來先服務、短作業(yè)優(yōu)先算法以及進程調(diào)度的概念和算法,有了更深入的認識!初步理解了操作系統(tǒng)對于作業(yè)處理的基本思想!并加深了我對于操作系統(tǒng)理論的理解。在此過程中,遇到了困難,能及時請教同學,查詢相關資料,及時解決了問題,但仍有不足之處,將會在今后學

38、習中更加努力。</p><p><b>  參考文獻</b></p><p>  [1] 張堯?qū)W主編.計算機操作系統(tǒng)教程(第三版).北京:清華大學出版社,2006 </p><p>  [2] 張堯?qū)W編.計算機操作系統(tǒng)教程(第三版)習題解答與實驗指導.北京:清華大學出版社,2006 </p><p>  [3] 湯子瀛

39、主編.計算機操作系統(tǒng)(第三版).西安:西安電子科技大學出版社,2001 </p><p>  [4] 張坤等編.操作系統(tǒng)實驗教程.北京:清華大學出版社,2008 </p><p>  [5] 張麗芬等編.操作系統(tǒng)實驗教程.北京:清華大學出版社,2006</p><p>  [6] 屠祁等編.操作系統(tǒng)基礎(第三版).北京:清華大學出版社,2000 </p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論