短作業優先演算法c 實現

2021-08-19 21:20:04 字數 2583 閱讀 2298

短作業優先:

短作業優先(sjf, shortest job first)又稱為「短程序優先」spn(shortest process next);這是對fcfs演算法的改進,其目標是減少平均周轉時間.

定義對預計執行時間短的作業(程序)優先分派處理機.通常後來的短作業不搶先正在執行的作業.

**為:

#include

#include

#include

using namespace std; 

struct pcb

char name[10];//程序名 

float arrivetime;//標誌程序到達時間 

float needtime;//程序所需的時間 

float starttime;//開始時間

floatfinishtime;//完成時間

float alltime;//總共所用的時間,即周轉時間 

floatdqalltime;//帶權周轉時間

pcb a[200];

void pinput(pcb *p,int n)

cout<<"*-----------------------輸入部分------------------------*">p[i].name;

cin>>p[i].arrivetime;

cin>>p[i].needtime;

void poutput(pcb *p,int n)

float arrivetime;

float needtime;

float starttime;

float finishtime;

float alltime;

float dqalltime;

intj;

cout<<"*------------------輸出部分-------------------*"void psort(pcb *p,int n)

for(inti=0;ifor(int j=0;jif(p[i].arrivetimepcbtemp;

temp=p[i];

p[i]=p[j];

p[j]=temp;

intk;

for(k=0;kif(k==0)

p[k].starttime=p[k].arrivetime;

p[k].finishtime=p[k].arrivetime+p[k].needtime;

else

p[k].starttime=p[k-1].finishtime;

p[k].finishtime=p[k].starttime+p[k].needtime;

//選擇最短作業執行

intm=0;

for(intt=k+1;t<=n-1;t++)

if(p[t].arrivetime<=p[k].finishtime)

m++;

floatmin=p[k+1].needtime;

intnext=k+1;

for(int q=k+1;qif(p[q+1].needtimemin=p[q+1].needtime;

next=q+1;

pcbtemp;

temp=p[k+1];

p[k+1]=p[next];

p[next]=temp;

//執行,計算周轉時間和帶權周轉時間

void pdeal(pcb *p,float arrivetime,floatneedtime,float starttime,float finishtime,float &alltime,float&dqalltime,int n)

intk;

for(k=0;kif(k==0)

p[k].starttime=p[k].arrivetime;

p[k].finishtime=p[k].arrivetime+p[k].needtime;

else

p[k].starttime=p[k-1].finishtime;

p[k].finishtime=p[k].starttime+p[k].needtime;

for(k=0;kp[k].alltime=p[k].finishtime-p[k].arrivetime;

p[k].dqalltime=p[k].alltime/p[k].needtime;

voidpcb(pcb *p,int n)

float arrivetime=0;

float needtime=0;

float starttime=0;

float finishtime=0;

float alltime=0;

float dqalltime=0;

psort(p,n);

pdeal(p,arrivetime,needtime,starttime,finishtime,alltime,dqalltime,n);

poutput(p,n);

int main()

intm;

cout<<"*------------------短作業優先-------------------*">m;

pinput(a,m);

pcb(a,m);

SJF(短作業優先)演算法 C 實現

簡介後續補上。該演算法為非搶占式排程演算法,搶占式sjf演算法 後續補上.include include using namespace std 程序個數 const int n 5 程序結構體 struct process 列印所有程序資訊 void printprocess process a ...

短作業優先SJF

sjf排程演算法 短作業 程序 優先排程演算法sj p f,是指對短作業或短程序優先排程的演算法。它們可以分別用於作業排程和程序排程。短作業優先 sjf 的排程演算法是從後備佇列中選擇乙個或若干個估計執行時間最短的作業,將它們調入記憶體執行。而短程序優先 spf 排程演算法則是從就緒佇列中選出乙個估...

C語言寫的作業系統短作業優先演算法

短作業優先的演算法思想 通過對執行時間的排序然後比較,執行時間短的程序優先執行,第乙個程序的開始時間等於到達時間,完成時間 開始時間 服務時間,當下乙個程序的開始時間 該程序的完成時間時,下乙個程序的開始時間 上乙個程序的完成時間,周轉時間和帶權周轉時間根據公式可以得出 一下是演算法的原始碼 inc...