日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统-高响应比优先调度算法

發布時間:2023/12/10 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统-高响应比优先调度算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高響應比優先算法

算法思想

響應比算法:(服務時間+等待時間)/服務時間
先將作業按到達時間排序,并將條件最優的作業移動到第一位,之后每次調度作業都更新后面所有作業的響應比,并將最高的響應比往前移。

#include<iostream> #include<iomanip> #include<string.h> using namespace std; struct work{char name[20];//作業名 float arrive;//到達時間 float service;//服務時間 float finish;//完成時間 float T;//周轉時間 float W;//帶權周轉時間 float waitTime;//等待時間 float H;//相應比 };int main(){int n;//作業數 struct work z[20];cin>>n;for(int i=0;i<n;i++){cin>>z[i].name; }for(int i=0;i<n;i++){cin>>z[i].arrive;}for(int i=0;i<n;i++){cin>>z[i].service;}struct work a=z[0];//用一個結構體存儲z[0]或條件最優的作業的值 int min=0;//最優條件的作業的位置 for(int i=1;i<n;i++){if(a.arrive>=z[i].arrive&&a.service>z[i].service){//判斷條件更小或相等的到達時間且更短的服務時間 a=z[i];min=i;}}swap(z[0],z[min]);//將條件最優作業換到z[0]位置 //從z[1]位置開始按到達時間從小到大排序 for(int i=1;i<n-1;i++){for(int j=i+1;j<n;j++){if(z[i].arrive>z[j].arrive)swap(z[i],z[j]);}}//計算完成時間z[0].finish=z[0].arrive+z[0].service;for(int i=1;i<n-1;i++){ if(z[i-1].finish<z[i].arrive){//判斷條件當前到達時間大于上個完成時間 z[i].finish=z[i].arrive+z[i].service;//改變完成時間算法 continue;//繼續下一個循環 }//從i開始每次循環更新等待時間和相應比 for(int l=i;l<n;l++){z[l].waitTime=z[i-1].finish-z[l].arrive;z[l].H=(z[l].service+z[l].waitTime)/z[l].service;}//從i+1開始將更優作業往前移 for(int j=i+1;j<n;j++){if(z[j].arrive<=z[i-1].finish&&z[j].H>z[i].H){//判斷條件到達時間更小或相等且響應比更大的作業swap(z[i],z[j]);for(int k=j;k>i+1;k--){if(z[k].arrive<z[k-1].arrive){swap(z[k],z[k-1]);}else{break;}}}}//按不同情況計算完成時間 if(z[i].arrive>z[i-1].finish){z[i].finish=z[i].arrive+z[i].service;}else{z[i].finish=z[i-1].finish+z[i].service;}//最后兩個作業改變計算方式 if(i==n-2){if(z[i+1].arrive>z[i].finish){z[i+1].finish=z[i+1].arrive+z[i+1].service;}else{z[i+1].finish=z[i].finish+z[i+1].service;} }} //計算周轉時間和帶權周轉時間 for(int i=0;i<n;i++){z[i].T=z[i].finish-z[i].arrive;z[i].W=z[i].T/z[i].service;}for(int i=1;i<n-1;i++){for(int j=i+1;j<n;j++){if(z[i].arrive>z[j].arrive)swap(z[i],z[j]);}}cout<<"作 業 名:";for(int i=0;i<n;i++){cout<<z[i].name;if(i!=n-1)cout<<" ";}cout<<endl;cout<<"到達時間:";for(int i=0;i<n;i++){cout<<z[i].arrive;if(i!=n-1)cout<<" ";}cout<<endl;cout<<"服務時間:";for(int i=0;i<n;i++){cout<<z[i].service;if(i!=n-1)cout<<" ";}cout<<endl;cout<<"完成時間:";for(int i=0;i<n;i++){cout<<z[i].finish;if(i!=n-1)cout<<" ";}cout<<endl;cout<<"周轉時間:";for(int i=0;i<n;i++){cout<<z[i].T;if(i!=n-1)cout<<" ";}cout<<endl;cout<<"帶權周轉時間:";for(int i=0;i<n;i++){cout<<fixed<<setprecision(2)<<z[i].W;if(i!=n-1)cout<<" ";}cout<<endl;return 0; }

總結

以上是生活随笔為你收集整理的操作系统-高响应比优先调度算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。