陣列模擬短作業,隊咧模擬時間片轉輪,注釋很清楚,就不贅述
**:
#include#include#include#include#include#include#define r "run" //執行中
#define f "finish" //已完成
#define w "waite" //等待中
#define t "taken" //未提交
#define max 5
struct pcb;
int currenttime;//當前時間
int finish;//已完成數量
char c; //演算法選擇
int visit[max]; //標記是否存在佇列
//建立pcb
void createpcb(struct pcb* pcb)
}/*入隊操作。*/
void enqueue(queue *q,int x)
}/*出隊操作。*/
int dequeue(queue *q)
//列印
void display(struct pcb* pcb)
if(pcb[i].cputime==pcb[i].need&&strcmp(pcb[i].status,w)==0)
} }//取就緒佇列中執行時間最短的程序下標
int shortindex(struct pcb* pcb)
} }
return temp;
}
//比較各個程序之間的到達時間,按公升序排列
void sort(struct pcb* pcb)
} struct pcb temp=pcb[i];
pcb[i]=pcb[minindex];
pcb[minindex]=temp;
}
}//短作業優先
void shortruntime(struct pcb* pcb)
else
else
pcb[index].cputime++;//已用時間片+1
statusconfirm(pcb);
};pcb[index].end=currenttime; //更新完成時間
pcb[index].turnover=pcb[index].end-pcb[index].arrive; //計算周轉時間
pcb[index].useweightturnover= pcb[index].turnover*1.0/pcb[index].need;//計算帶權周轉時間
strcpy(pcb[index].status,f);
currenttime--;
}
}display(pcb);
}//時間片轉輪法
void highpriority(struct pcb* pcb)
else
for(i=0,j=index+1;iif(!visit[j]&&strcmp(pcb[j].status,w)==0)
}index=dequeue(&lq);//取隊頭
visit[index]=0;//不存在佇列中
if(pcb[index].start==-1)
strcpy(pcb[index].status,r);//程序狀態為執行中
display(pcb);
pcb[index].cputime++;//當前程序所用cpu時間增加
if(pcb[index].cputime==pcb[index].need)
else
}
}display(pcb);
}//計算平均帶權周轉時間
float weightturnovertimecount(struct pcb* pcb)
return sum /max;
} //計算平均周轉時間
float turnovertimecount(struct pcb* pcb)
return sum /max;
}//開始程序排程
void start(struct pcb* pcb)
printf("程序名 周轉時間 帶權周轉時間\n");
for(i=0;iprintf("---------------------------------------------\n");
printf("平均周轉時間為:%.2f\n",turnovertimecount(pcb));
printf("平均帶權周轉時間為:%.2f\n", weightturnovertimecount(pcb));
}
//主函式
int main()
先來先服務和短作業優先排程演算法
先來先服務排程演算法 系統按照作業到達的先後次序來進行排程,或者說它優先考慮在系統中等待時間最長的作業,而不管該作業所需執行時間的長短,從後備作業佇列中選擇幾個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源和建立程序。然後把它放入就緒佇列。當程序排程中才有fcfs演算法時,每次排程是從就緒的...
作業系統短作業優先排程演算法
短作業優先排程演算法 sjf 是以作業的長度來計算優先順序,作業越短,優先度越高。作業的長短是作業的執行時間來衡量的。源程式c 編寫,由老師提供的參考 網上查詢 同學之間討論之後完善,非誠勿擾!includeusing namespace std struct node job 10 按服務時間排序...
程序排程 先來先服務和短程序優先排程演算法
系統中有5個程序p1,p2,p3,p4,p5如下。規定程序的優先數越小優先順序越高。試描述在採用先來先服務排程 短程序優先排程演算法時,各個程序的執行過程,並計算這5個程序的平均周轉時間。假設忽略程序的排程時間。答 先來先服務排程演算法執行過程如下 按到達先後p1,p2,p3,p4,p5依次執行 程...