设计要求
编程实现进程调度算法的基本过程,设计要求:
(1)能够选择进程调度算法(先来先服务、短进程优先算法和高响应比优先算法)。
(2)可以输入进程数目(至少3个进程),以及各进程的提交时间和运行时间。
(3)能够显示调度过程及相应时间。
设计思路
*定义一个结构体代表进程包括进程的名称,提交时间,运行时间,开始时间,结束时间,周转时间,带权周转时间。
* 分别创建3个函数来完成各个调用进程的算法。
其中各个算法包括进程的接收,排序,计算,输出结果。
先来先服务算法最基础,短进程优先算法相比前者需要进一步确定第一个进程,而高相应比算法更进一步,需要同时排序和计算。
*最后主函数完成程序的引导。
如果这篇文章帮助到了你,请点一下赞,让我知道有人因此受益。
源代码
#define PCBNUM 4
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct PCB
{
int ID;
double tijiao;
double yunxing;
double kaishi;
double jieshu;
double zhouzhuan;
double daiqvanzhouzhaun;
};
void xianlai(){
//先来先服务
PCB s[PCBNUM];
PCB Q;
cout<<"一共4个进程"<<endl;
cout<<"请输入每个进程的进程名,提交时间,运行时长(中间用空格分开)"<<endl;//接受值
for(int i=0;i<PCBNUM;i++){
cin>>s[i].ID >>s[i].tijiao >>s[i].yunxing ;
}
cout<<"名称 提交 运行 开始 结束 周转 带权周转"<<endl;
for(int i=0;i<PCBNUM-1;i++){
//p排序
for(int j=0;j<PCBNUM-1;j++){
if(s[j].tijiao >s[j+1].tijiao )
{
Q=s[j];
s[j]=s[j+1];
s[j+1]=Q;
}
}
}
for(int i=0;i<PCBNUM;i++){
//计算
if(i==0)
s[i].kaishi=s[i].tijiao;
else
{
s[i].kaishi