進(jìn)程調(diào)度算法實(shí)驗(yàn)報(bào)告_第1頁(yè)
進(jìn)程調(diào)度算法實(shí)驗(yàn)報(bào)告_第2頁(yè)
進(jìn)程調(diào)度算法實(shí)驗(yàn)報(bào)告_第3頁(yè)
進(jìn)程調(diào)度算法實(shí)驗(yàn)報(bào)告_第4頁(yè)
進(jìn)程調(diào)度算法實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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、 作業(yè)調(diào)度一、 實(shí)驗(yàn)名稱(chēng)作業(yè)調(diào)度算法二、實(shí)驗(yàn)?zāi)繕?biāo)在單道環(huán)境下編寫(xiě)作業(yè)調(diào)度的模擬程序,以加深對(duì)作業(yè)調(diào)度的理解。單道環(huán)境的特點(diǎn)使被調(diào)度的作業(yè)占有所有的資源。實(shí)現(xiàn)的算法有先來(lái)先服務(wù),最短作業(yè)優(yōu)先,最高響應(yīng)比三種作業(yè)調(diào)度算法。三、實(shí)驗(yàn)環(huán)境要求:1.PC機(jī)。2.Windows;3.CodeBlocks 四、實(shí)驗(yàn)基本原理1.本實(shí)驗(yàn)設(shè)計(jì)一個(gè)可指定作業(yè)個(gè)數(shù)的作業(yè)調(diào)度系統(tǒng)??梢暂敵鱿葋?lái)先服務(wù),最短作業(yè)優(yōu)先,最高響應(yīng)比三種作業(yè)調(diào)度算法的結(jié)果。2.先來(lái)先服務(wù)就是按照各個(gè)作業(yè)進(jìn)入系統(tǒng)的自然次序進(jìn)行調(diào)度。最短作業(yè)優(yōu)先就是優(yōu)先調(diào)度并且處理短作業(yè)。最高響應(yīng)比優(yōu)先就是根據(jù)在程序運(yùn)行過(guò)程中的最高響應(yīng)比對(duì)應(yīng)的作業(yè)先進(jìn)行調(diào)度處理。

2、3.在設(shè)計(jì)程序過(guò)程中,將time相關(guān)的內(nèi)容封裝到類(lèi)中,重載了加減乘除和輸入輸出以及比較運(yùn)算符,方便12:00這種形式的數(shù)據(jù)的加減乘除運(yùn)算和比較運(yùn)算, 五、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)1.時(shí)間類(lèi)class time public:time(int x = 0, int y = 0) time:hour = x;time:minute = y;time& operator = (const time &t1)this->hour=t1.hour;this->minute=t1.minute;return *this;time operator + (time t2)int minute

3、s,hours;minutes = (minute + t2.minute) % 60;hours=hour+t2.hour+ (minute + t2.minute) /60;return time(hours,minutes); time operator -(time t2) int minutes,hours;minutes =minute - t2.minute;if (minute<0) minutes += 60;hour-;hours = hour - t2.hour;return time(hours,minutes);friend bool operator <

4、(time t1, time t2)if (t1.hour < t2.hour) return true;else if(t1.hour=t2.hour)if (t1.minute <= t2.minute) return true;return false;friend ostream& operator <<(ostream& out, const time &t1) return out << t1.hour << ":" << t1.minute*1.00 ;friend istre

5、am& operator >>(istream &in, time &t1) int h, m;scanf("%d:%d", &h,&m);t1.hour = h;t1.minute = m;return in;public:int hour;int minute; 2.作業(yè)內(nèi)容typedef struct JOBchar name20;/Job nametime in_time;int run_time;time st_time;time end_time;int round_time;/周轉(zhuǎn)時(shí)間int wait_tim

6、e;double rounds_time;/帶權(quán)周轉(zhuǎn)double reson_radio;/響應(yīng)比job; 六、流程圖 七、源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;class time public:time(int x = 0, int y = 0) time:hour = x;time:minute = y;time& operator = (const time &t1)this

7、->hour=t1.hour;this->minute=t1.minute;return *this;time operator + (time t2)int minutes,hours;minutes = (minute + t2.minute) % 60;hours=hour+t2.hour+ (minute + t2.minute) /60;return time(hours,minutes); time operator -(time t2) int minutes,hours;minutes =minute - t2.minute;if (minute<0) min

8、utes += 60;hour-;hours = hour - t2.hour;return time(hours,minutes);friend bool operator <(time t1, time t2)if (t1.hour < t2.hour) return true;else if(t1.hour=t2.hour)if (t1.minute <= t2.minute) return true;return false;friend ostream& operator <<(ostream& out, const time &

9、t1) return out << t1.hour << ":" << t1.minute*1.00 ;friend istream& operator >>(istream &in, time &t1) int h, m;scanf("%d:%d", &h,&m);t1.hour = h;t1.minute = m;return in;public:int hour;int minute;typedef struct JOBchar name20;/Job name

10、time in_time;int run_time;time st_time;time end_time;int round_time;/周轉(zhuǎn)時(shí)間int wait_time;double rounds_time;/帶權(quán)周轉(zhuǎn)double reson_radio;/響應(yīng)比job;double sum_time;/全部作業(yè)周轉(zhuǎn)時(shí)間和double sums_time;/全部作業(yè)帶權(quán)周轉(zhuǎn)時(shí)間和int n;/job counts/重載 maxtime maxn(time t1, time t2) if(t1.hour>t2.hour)return t1;else if(t1.hour=t2.hour

11、)if (t1.minute > t2.hour) return t1;return t2;/eg: 120轉(zhuǎn)化成 2:0time m_exchange_h(int run_time) time run;run.hour = run_time / 60;run.minute = run_time % 60;return run;/eg: 2:0 轉(zhuǎn)化成 120int h_exchange_m(time t1) return t1.hour * 60 + t1.minute;/先來(lái)先服務(wù);void job_input(job *x) cout << "作業(yè)t進(jìn)入時(shí)間t

12、估計(jì)運(yùn)行時(shí)間(分鐘)t開(kāi)始時(shí)間t結(jié)束時(shí)間t周轉(zhuǎn)時(shí)間(分鐘)t帶權(quán)周轉(zhuǎn)時(shí)間" << endl;for (int i = 0; i < n; i+) cout << <<"t"<< xi.in_time<<"tt"<< xi.run_time <<"ttt"<< xi.st_time << "tt"<<xi.end_time <<"tt"

13、<<xi.round_time <<"tt"<< xi.rounds_time << endl;cout << "作業(yè)平均周轉(zhuǎn)時(shí)間 T=" << sum_time/n<< endl;cout << "作業(yè)平均帶權(quán)周轉(zhuǎn)時(shí)間 T=" << sums_time / n << endl;void FCFS(job *x) sum_time = 0;sums_time = 0;time run = m_exchange_h(x

14、0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + run;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_time;sums_time += x0.rounds_time;for (int i = 1; i < n; i+) xi.st_time = maxn(xi.in_time, xi - 1.end_time

15、);xi.end_time = xi.st_time + m_exchange_h(xi.run_time);xi.round_time = h_exchange_m(xi.end_time - xi.in_time);xi.rounds_time = xi.round_time*1.0 / xi.run_time;sum_time += xi.round_time;sums_time += xi.rounds_time;cout << "n【先來(lái)先服務(wù)作業(yè)調(diào)度算法計(jì)算結(jié)果】n" << endl;job_input(x);/短作業(yè)優(yōu)先;void SJ

16、F(job *x) int flag100000 ;memset(flag, 0, sizeof(flag);sum_time = 0;sums_time = 0;time run = m_exchange_h(x0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + run;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_t

17、ime;sums_time += x0.rounds_time;int i = 1;/已經(jīng)運(yùn)行的程序int e = 0;/上一個(gè)運(yùn)行的程序flag0 = 1;while (i <n) int temp = -1;int time_min = 99999999;for (int j = 1; j < n; j+) if (xj.in_time<xe.end_time&&flagj!=1&&xj.run_time<time_min) /cout<<"小于:"<<<<endl

18、;time_min = xj.run_time;temp = j;if (temp != -1) xtemp.st_time = xe.end_time;e = temp;else e+;xe.st_time = xe.in_time;xe.end_time = xe.st_time + m_exchange_h(xe.run_time);xe.round_time = h_exchange_m(xe.end_time - xe.in_time);xe.rounds_time = xe.round_time*1.0 / xe.run_time;sum_time += xe.round_time

19、;sums_time += xe.rounds_time;flage = 1;i+;cout << "n【短作業(yè)優(yōu)先調(diào)度算法計(jì)算結(jié)果】n" << endl;job_input(x);/最高響應(yīng)比優(yōu)先;void HRN(job *x) int flag100000;memset(flag, 0, sizeof(flag);sum_time = 0;sums_time = 0;time run = m_exchange_h(x0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + ru

20、n;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_time;sums_time += x0.rounds_time;int i = 1;/已經(jīng)運(yùn)行的程序int e = 0;/上一個(gè)運(yùn)行的程序flag0 = 1;while (i <n) int temp = -1;double radio_max = 0;for (int j = 1; j < n; j+) if (xj.in_ti

21、me<xe.end_time&&flagj != 1) xj.reson_radio=h_exchange_m(xe.end_time- xj.in_time)*1.0/ xj.run_time;if (xj.reson_radio > radio_max) temp = j;radio_max=xj.reson_radio;if (temp != -1) xtemp.st_time = xe.end_time;e = temp;else e+;xe.st_time = xe.in_time;xe.end_time = xe.st_time + m_exchange

22、_h(xe.run_time);xe.round_time = h_exchange_m(xe.end_time - xe.in_time);xe.rounds_time = xe.round_time*1.0 / xe.run_time;sum_time += xe.round_time;sums_time += xe.rounds_time;flage = 1;i+;cout << "n【最高響應(yīng)比調(diào)度算法計(jì)算結(jié)果】n" << endl;job_input(x);int main()cout << "作業(yè)總數(shù): " ;cin >> n

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論