作业调度算法--短作业优先 操作系统_处理器管理_编程题
生活随笔
收集整理的這篇文章主要介紹了
作业调度算法--短作业优先 操作系统_处理器管理_编程题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
操作系統_處理器管理_編程題
作業調度算法–短作業優先
輸入N個作業,輸入每個的作業名字,到達的時間,服務的時間,根據短作業優先算法,計算出每個作業的完成的時間,周轉的時間,帶權周轉的時間(其中保留2位小數)。
輸入的格式:
第1行輸入作業的數目,第2行輸入作業名字,第3行輸入到達的時間,第4行輸入服務的時間。
輸出的格式:
根據到達的時間由小到大排序,第1行輸出作業名字,第2行輸出到達的時間,第3行輸出服務的時間,第4行輸出完成的時間,第5行輸出完成的時間,第6行輸出帶權周轉的時間。
輸入的樣例:
給出了1組輸出。如下:
輸出的樣例:
給出了相應輸出。如下:
代碼
#include <bits/stdc++.h> using namespace std;struct process{char name[16];double C_T; double R_T;double F_T;double cir_T;double W_C;int finished; }Process[1024];int n; void Input(){ cin>>n;for(int i=0;i<n;i++){cin>>Process[i].name;Process[i].finished = 0;}for(int i=0;i<n;i++){cin>>Process[i].C_T;}for(int i=0;i<n;i++){cin>>Process[i].R_T;} } //輸出 void Output(){printf("作 業 名:");for(int i=0;i<n;i++){cout<<Process[i].name;if(i<n-1){printf(" "); }}printf("\n");printf("到達時間:");for(int i=0;i<n;i++){cout<<Process[i].C_T;if(i<n-1){printf(" "); }}printf("\n");printf("服務時間:");for(int i=0;i<n;i++){cout<<Process[i].R_T;if(i<n-1){printf(" "); }}printf("\n");printf("完成時間:");for(int i=0;i<n;i++){cout<<Process[i].F_T; if(i<n-1){printf(" "); }}printf("\n");printf("周轉時間:");for(int i=0;i<n;i++){cout<<Process[i].cir_T;if(i<n-1){printf(" "); }}printf("\n");printf("帶權周轉時間:");for(int i=0;i<n;i++){printf("%.2f",Process[i].W_C);if(i < n-1) {printf(" ");}}} bool cmp(process p1,process p2){ return p1.C_T<p2.C_T; } int main(){Input();sort(Process,Process+n,cmp);int finished_count = 0; int unfinish_pos = 0; double now_time;while(finished_count<n){if(now_time<Process[unfinish_pos].C_T){ now_time = Process[unfinish_pos].C_T; }double min_R_T = INT_MAX; int pos = 0; for(int i = unfinish_pos;(i < n && now_time >= Process[i].C_T);i++){ if(Process[i].finished == 1) continue ;if(Process[i].R_T < min_R_T){min_R_T = Process[i].R_T;pos = i;}}{now_time += Process[pos].R_T; Process[pos].F_T = now_time;Process[pos].cir_T = now_time - Process[pos].C_T;Process[pos].W_C = Process[pos].cir_T / Process[pos].R_T;Process[pos].finished = 1;if(pos == unfinish_pos){ unfinish_pos = pos + 1;} finished_count++;}}Output();return 0; } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的作业调度算法--短作业优先 操作系统_处理器管理_编程题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈你对面向过程与面向对象的理解
- 下一篇: 作业调度算法--高响应比优先 操作系统_