版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--處理機(jī)調(diào)度問題
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--作業(yè)調(diào)度
- c語言課程設(shè)計(jì)-處理機(jī)低級(jí)調(diào)度模擬系統(tǒng)
- c語言課程設(shè)計(jì)--處理機(jī)低級(jí)調(diào)度模擬系統(tǒng)
- 最終操作系統(tǒng)處理機(jī)調(diào)度算法(劉坤明)20130911
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---作業(yè)調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度報(bào)告
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--驅(qū)動(dòng)調(diào)度
- 操作系統(tǒng)程序調(diào)度課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)---磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程調(diào)度算法
評(píng)論
0/150
提交評(píng)論