资源简介
.c
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
typedef char string[10]; //定义string为含有10个字符元素的字符数组类型
struct task {
string name; //作业名称*
int arrTime; //作业到达时间*
int serTime; //作业要求服务时间*
int waiTime; //等待时间
int begTime; //开始运行时间
int finTime; //结束运行时间
int turTime; //周转时间
double priority; //优先权
int finish; //是否已经完成 finish=0表示没有完成 finish=1表示已经完成
}JCB[10]; //定义JCB为包含十个结构体的数组
void print(int iint timesint a);
int num; //记录输入的作业数量
int FIFO_waitTime=0;
int HRN_waitTime=0;
void init()//初始化
{
int i;
FIFO_waitTime=0;
HRN_waitTime=0;
for(i=0;i {
JCB[i].begTime=0;
JCB[i].finTime=0;
JCB[i].waiTime=0;
JCB[i].turTime=0;
JCB[i].finish=0;
}
}
/***************录入作业信息****************/
void input()
{
int i;
system(“cls“);
printf(“\n请输入作业数量: “);
scanf(“%d“ &num);
for(i=0;i {
printf(“\n请输入作业 NO.%d:\n“i+1);
printf(“ 作业名称: \t“);
scanf(“%s“JCB[i].name);
printf(“ 到达时间: \t“);
scanf(“%d“&JCB[i].arrTime);
printf(“ 服务时间: \t“);
scanf(“%d“&JCB[i].serTime);
JCB[i].priority = 1; //初始化每个作业的优先权都为1
JCB[i].finish =0;
}
}
/***************************先来先服务算法***********************/
void FIFO()
{
int SturTime=0;
int ij;
int maxmax_j;
struct task t;
//按照到达时间排序
for(j=0;j {
max=JCB[j].arrTime;
max_j=j;
for(i=j;i {
if(JCB[i].arrTime {
max=JCB[i].arrTime;
max_j=i;
}
}
t=JCB[max_j];
JCB[max_j]=JCB[j];
JCB[j]=t;
}
for(i=0;i {
if(i==0){
JCB[i].begTime=JCB[i].arrTime;
JCB[i].waiTime=0;
JCB[i].finTime=JCB[i].begTime+JCB[i].serTime;
}else{
if(JCB[i-1].finTime-JCB[i].arrTime>0){
//表明在上一个作业被调度后,当前作业已经在后备队列中了
JCB[i].waiTime=JCB[i-1].finTime-JCB[i].arrTime;
JCB[i].begTime=JCB[i-1].finTime;
}else{
JCB[i].waiTime=0;
JCB[i].begTime=JCB[i].arrTime;
}
JCB[i].finTime=JCB[i].begTime+JCB[i].serTime;
}
FIFO_waitTime+=JCB[i].waiTime;
JCB[i].turTime=JCB[i].finTime-JCB[i].arrTime;
SturTime+=JCB[i].turTime;
}
for(i=0;i {
if(i==0)
print(i20);
else
print(i10);
}
printf(“等待时间总和:\t%d“FIFO_waitTime);
printf(“\t平均周转时间:\t%d\n“SturTime/num);
}
/******************最高响应比优先算法*****************/
void HRN()
{
int pre;
int SturTime=0;
int current;//记录当前操作的作业的下标
int count=1ijSserviceTimeRelativeMinSerTime=INT_MAX;
double min=INT_MINmax=INT_MAX;
int startTime;
//第一个被调度的作业就是最先到达的那个几个
for(i=0;i {
if(JCB[i].arrTime {
max=JCB[i].arrTime;
current=i;
}
}
for(i=0;i {
if(JC
相关资源
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
- 联想启天M4350 BIOS升级文件
- 操作系统教程课后答案华中科技大学
评论
共有 条评论