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

歡迎訪問 生活随笔!

生活随笔

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

windows

操作系统短作业优先(SJF)调度算法

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

一,算法代碼

#include<stdio.h>struct sjf { //定義進程的結構體??? char name[10];//進程名??? float arrivetime;//到達時間??? float servicetime;//服務時間??? float starttime;//開始時間??? float finishtime;//完成時間??? float zztime; //周轉時間??? float dqzztime;//帶權周轉時間};struct sjf b[100];//定義短作業優先算法進程的最大數量void Sinput(struct sjf *p,int N) { //輸入函數??? int i;??? printf("輸入進程的名稱、到達時間、服務時間:(例如?? : x 0 100)\n");??? for(i=0; i<=N-1; i++) {??????? printf("輸入第%d進程的名稱、到達時間、服務時間:",i+1);??????? scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);??? }}//輸出函數void SPrint( struct sjf *p,float arrivetime,float servicetime,???????????? float starttime,float finishtime,float zztime,float dqzztime,int N) {??? int k;??? printf("\n執行順序:\n");??? printf("%s",p[0].name);??? for(k=1; k<N; k++) {??????? printf("-%s",p[k].name);??? }??? printf("\n進程名\tarrive\tservice\tstart\tfinish\tzhouzhuan\tdaiquanzz\n");??? for(k=0; k<=N-1; k++) {??????? printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n\n",??????? p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,??????? p[k].zztime,p[k].dqzztime);??? }??? printf("\n");??? } ??? void Ssort(struct sjf *p,int N) ??? { //按短作業優先算法排序??????? int i,j;??????? for( i=1; i<=N-1; i++)??????????? for( j=1; j<=i; j++)??????????????? if(p[i].servicetime<p[j].servicetime) {??????????????????? struct sjf temp;??????????????????? temp=p[i];??????????????????? p[i]=p[j];??????????????????? p[j]=temp;??????????????? }??? }//運行結果??? void Sdeal(struct sjf *p,float arrivetime,float servicetime,??? float starttime,float finishtime,float zztime,float dqzztime,int N)??? {??????? int k;??????? for(k=0; k<=N-1; k++) {??????????? if(k==0) {??????????????? p[k].starttime=p[k].arrivetime;??????????????? p[k].finishtime=p[k].arrivetime+p[k].servicetime;??????????? } else {??????????????? p[k].starttime=p[k-1].finishtime;??????????????? //開始時間 =??? 前一個進程的完成時間??????????????? p[k].finishtime=p[k-1].finishtime+p[k].servicetime;??????????????? //結束時間=前一個進程的完成時間? + 現在進程的服務時間??????????? }??????? }??? for(k=0; k<=N-1; k++) {??????? p[k].zztime=p[k].finishtime-p[k].arrivetime;??????? //? 周轉時間 =完成時間 -到達時間??????? p[k].dqzztime=p[k].zztime/p[k].servicetime;??????? //帶權周轉時間=周轉時間 /服務時間??? }}void SJF(struct sjf *p,int N){??? float arrivetime=0,servicetime=0,starttime=0,??? finishtime=0,zztime=0,dqzztime=0;??? Ssort(p,N);??? Sdeal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);??? SPrint(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);}void main() { //主函數??? int M;??? printf("-----------短作業優先調度算法-----------\n");??? printf("輸入進程數:");??? scanf("%d",&M);??? Sinput(b,M);??? SJF(b,M);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113

二,算法截圖

本算法轉自:https://wenku.baidu.com/view/c38baaf3fad6195f302ba668.html

???????????

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

總結

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

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