高響應比優先演算法實現程序排程模擬

2021-10-07 08:00:20 字數 3818 閱讀 6705

一、實驗要求

1.用視覺化程式設計工具編制程式,在機器上調試執行,並通過上機考核。

2.要求將功能集中在乙個介面中,介面設計美觀,功能完整,使用方便。

二、設計題目

題目1 程序排程模擬程式

目的:熟悉程序排程演算法及其實現

內容:編寫乙個程式完成多道程式的排程

要求:只考慮1個cpu的資源,其他資源不考慮

使用響應比高者優先演算法

程式採用鍵盤輸入,輸入格式為:

ktj1 ys1

……tjk ysk

其中k是作業數(>0),tji提交時間,ysi (i=1~k)是作業預計的執行時間(以分鐘計)tj的輸入格式是xxyy,

其中xx是時,yy是分,如10點28分,輸入為1028。但內部計算要以60進製來算。要求輸出按照作業排程的先後次序輸出結果,

每行為乙個作業狀態,從左到右分別是排程次序,作業號,排程時間,周轉時間和帶權周轉時間,

最後一行輸出兩個數,第一為平均周轉時間,第二為平均帶權周轉時間。

#include

#include

using

namespace std;

struct pcb pcb[10]

;int cnt;

int runningtime =0;

int currenttime =0;

void

input()

}int

add(

int a,

int b)

//得到時刻(xx:yy)(用於時刻+分鐘)

intsub

(int a,

int b)

//得到時長(min)(用於時刻-時刻)

void

hrn()}

cout <<

"排程情況如下:"

<< endl;

cout <<

"排程次序"

<<

" "<<

"作業號"

<<

" "<<

"排程時間"

<<

" "<<

"周轉時間"

<<

" "<<

"帶權周轉時間"

<< endl;

pcb[current]

.turtime = pcb[current]

.sertime;

pcb[current]

.wtutime = pcb[current]

.sertime / pcb[current]

.sertime;

pcb[current]

.begtime = pcb[current]

.arrtime;

//輸出排程次序,作業號,排程時間,周轉時間和帶權周轉時間

cout <<

++n <<

" "

<< current +

1<<

" "

<< pcb[current]

.begtime <<

" "

<< pcb[current]

.turtime <<

" "

<< pcb[current]

.wtutime << endl;

pcb[current]

.finish =1;

runningtime +

= pcb[current]

.sertime;

currenttime = currenttime +

add(pcb[current]

.arrtime, pcb[current]

.sertime)

;for

(i =

0; i < cnt; i++

)for

(i =

0; i < cnt; i++

)//輸出

pcb[current]

.turtime =

sub(currenttime, pcb[current]

.arrtime)

+ pcb[current]

.sertime;

pcb[current]

.wtutime = pcb[current]

.turtime / pcb[current]

.sertime;

pcb[current]

.begtime = currenttime;

cout <<

++n <<

" "

<< current +

1<<

" "

<< pcb[current]

.begtime <<

" "

<< pcb[current]

.turtime

<<

" "

<< pcb[current]

.wtutime << endl;

pcb[current]

.finish =1;

runningtime +

= pcb[current]

.sertime;

currenttime =

add(currenttime, pcb[current]

.sertime)

;for

(int l =

0; l < cnt; l++)}

}else

if(i == cnt -1)

} currenttime =

add(currenttime,

sub(pcb[current]

.arrtime, currenttime));

pcb[current]

.turtime = pcb[current]

.sertime;

pcb[current]

.wtutime = pcb[current]

.sertime / pcb[current]

.sertime;

pcb[current]

.begtime = pcb[current]

.arrtime;

//輸出排程次序,作業號,排程時間,周轉時間和帶權周轉時間

cout <<

++n <<

" "

<< current +

1<<

" "

<< pcb[current]

.begtime <<

" "

<< pcb[current]

.turtime <<

" "

<< pcb[current]

.wtutime << endl;

pcb[current]

.finish =1;

runningtime +

= pcb[current]

.sertime;

currenttime =

add(currenttime, pcb[current]

.sertime)

; i =-1

;//重新開始尋找}}

}void

main()

cout <<

"平均周轉時間和平均帶權周轉時間分別為:"

<< endl;

cout << tur/cnt <<

" "

<< wtu/cnt << endl;

}

高響應比排程演算法

code include stdio.h struct zgxyb zgxyb a 100 void input zgxyb p,int n void print zgxyb p,float arrivetime,float servicetime,float starttime,float fin...

優先順序排程演算法和高響應比優先排程演算法

優先順序排程演算法是基於作業的緊迫程度,由外部賦予作業相應的優先順序,排程演算法是根據該優先順序進行排程的。這樣就可以保證緊迫性作業優先執行。高響應比優先排程演算法則是既考慮了作業等待的時間,又考慮了作業執行時間的排程演算法,因此既照顧了短作業,又不致使長作業的等待時間過長,從而改善了處理機的排程能...

C 高響應比優先演算法

include include string using namespace std struct job 1 其實這個結構體沒有考慮到到達時間的問題,統一認為處理時刻所有作業都已經到達。2 模擬多處理機的時候,不太了解怎麼實現非同步的操作。const int max 5 允許的就緒佇列最大作業數 ...