操作系统实验之作业调度算法
来源:互联网 发布:通过淘宝助理的模块 编辑:程序博客网 时间:2024/06/03 19:39
#include <iostream.h> #include <stdio.h> #include <string.h>#include<stdlib.h> void FCFS(); //先来先服务 void SJF(); //短作业优先void input(); //输入函数 void operation(); //运算输出函数 int n; //全局变量 作业输入量 double avturn; //平均周转时间 double avdqzz; //平均带权周转时间 double t=0.0,k=0.0; //全局变量用来表示总的周转时间和总的带权周转时间 struct HomeWork { int num; //作业号 char name; //进程名 double arrivetime; //到达时间 double servetime; //服务时间 double begintime; //开始时间 double endtime; //完成时间 double turntime; //周转时间 double dqzztime; //带权周转时间 double zgxy; //最高响应比 }HW[10]; void input() { cout<<"请输入要执行作业的数量:"<<endl; cin>>n; for(int i=1;i<=n;i++) { cout<<"请输入第"<<i<<"个作业的数据:"<<endl; HW[i].num=i; cout<<"进程名:"; cin>>HW[i].name; cout<<"到达时间:"; cin>>HW[i].arrivetime; cout<<"服务时间:"; cin>>HW[i].servetime; } } void operation() { for(int i=1;i<=n;i++) { if(i==1) HW[i].begintime=HW[i].arrivetime; //如果是第一个作业开始时间就是到达时间 else HW[i].begintime=HW[i-1].endtime;//如果不是,则作业的开始时间是前一个的结束时间 HW[i].endtime=HW[i].begintime+HW[i].servetime; HW[i].turntime=HW[i].endtime-HW[i].arrivetime; HW[i].dqzztime=HW[i].turntime/HW[i].servetime; } for(i=1;i<=n;i++) { t=t+HW[i].turntime; k=k+HW[i].dqzztime; } avturn=t/n; avdqzz=k/n; cout<<"作业序号 进程名 到达时间 服务时间 开始时间 完成时间 周转时间 带权周转时间 "<<endl; for(i=1;i<=n;i++) cout<<" "<<HW[i].num<<" "<<HW[i].name<<"\t\t"<<HW[i].arrivetime<<" \t"<<HW[i].servetime<<" \t"<<HW[i].begintime<<" \t"<<HW[i].endtime<<" \t"<<HW[i].turntime<<" \t"<<HW[i].dqzztime<<endl; cout<<"平均周转时间:"<<avturn<<endl; cout<<"平均带权周转时间:"<<avdqzz<<endl; } void FCFS() { input(); operation(); t=0.0; k=0.0; } void SJF() { input(); int no; //作业号 double tjtime; //提交时间 double zxtime; //执行时间 for(int i=2;i<=n;i++) for(int j=i+1;j<=n;j++) { if(HW[i].servetime>HW[j].servetime) { no=HW[i].num; HW[i].num=HW[j].num; HW[j].num=no; //作业号互换 tjtime=HW[i].arrivetime; HW[i].arrivetime=HW[j].arrivetime; HW[j].arrivetime=tjtime; //作业到达时间互换 zxtime=HW[i].servetime; HW[i].servetime=HW[j].servetime; HW[j].servetime=zxtime; //作业服务时间互换 } } operation(); t=0.0; k=0.0; } void show(){ cout<<"\n*********************1.先来先服务(FCFS)算法*********************\n"; cout<<"\n*********************2.短作业优先(SJF)算法*********************\n"; cout<<"\n*********************0. exit *********************\n";} void main() { show(); int num=0; char ch;char y; cout<<"请选择:"<<endl; cin>>num;switch(num){case 1: FCFS(); break;case 2: SJF();break;default:return;} }
0 0
- 操作系统实验之作业调度算法
- 【大三操作系统实验】 作业进程调度算法
- 操作系统实验 批处理作业的调度算法
- 操作系统实验三之进程调度算法
- 计算机操作系统实验:作业调度算法的实现
- 操作系统实验二 作业调度
- 操作系统作业调度实验报告
- 操作系统 调度算法实验
- 操作系统实验之批处理系统中作业调度
- 操作系统实验2 作业调度实验
- 操作系统作业调度算法模拟
- 【操作系统】作业调度的算法
- 操作系统的作业调度算法
- 操作系统银行家算法调度实验
- 操作系统实验之处理机调度
- 操作系统实验之磁盘调度
- 操作系统之调度算法
- 《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
- 测试KVM,参考
- 用c语言实现strncmp,strncat,memset, memcmp
- 区分数组指针和指针数组
- [ CSS ] filter:progid:DXImageTransform.Microsoft.AlphaImageLoader
- 打印1到最大的n位数。
- 操作系统实验之作业调度算法
- 单链表的插入 删除 及带环 问题
- new 、delete和malloc、free的解析及区别
- c++中的模板
- epoll详解
- 虚函数
- 斐波那契序列的递归和非递归的实现
- 简单明了,彻底地理解Binder
- 实现简单的迷宫