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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  2013年12月31日</p><p>  目 錄</p><p>  1設(shè)計(jì)目的………………………………………………………………………4</p><p>  2設(shè)計(jì)要求………………………………………………………………………4</

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

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

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

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

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

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

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

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

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

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

12、{</b></p><p>  NowTime=ArrivalTime[i];//把進(jìn)程的到達(dá)時(shí)間賦給NowTime</p><p><b>  }</b></p><p>  NowTime+=ServiceTime[i];//把進(jìn)程的服務(wù)時(shí)間加到NowTime上</p><p>  FinishTime[

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

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

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

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

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

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

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

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

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

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

23、/b></p><p>  while(ArrivalTime[j]<=NowTime && j<Num)//已經(jīng)到達(dá)的進(jìn)程</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)到達(dá)的進(jìn)程數(shù)&

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

27、/p><p><b>  else</b></p><p><b>  {</b></p><p>  if(ServiceTime_SJF[min]>ServiceTime_SJF[k])//比較,找到服務(wù)時(shí)間最短的進(jìn)程</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)時(shí)使用</p><p>  Now

29、Time+=ServiceTime[min];//累加當(dāng)前時(shí)間</p><p>  FinishTime[min]=NowTime;//完成時(shí)間</p><p><b>  }</b></p><p>  for(i=0;i<Num;i++)//計(jì)算周轉(zhuǎn)時(shí)間,帶權(quán)周轉(zhuǎn)時(shí)間,總的周轉(zhuǎn)時(shí)間和總的帶權(quán)周轉(zhuǎn)時(shí)間</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)時(shí)間</p><p>  AverageWWT_SJF=SumWWT/Num;//平均帶權(quán)周轉(zhuǎn)時(shí)間</p><p> 

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論