资源简介
.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
相关资源
- adt-bundle-windows-x86_6420131030.txt
- 北大青鸟软件工程师全套视频教程.
- 椭球面积和净面积计算工具10.2版.ra
- c_trace.rar
- 学习强国《挑战答题》题库1463.docx
- dc972c123d2a71c9f616d8d4b676e93e.txt
- 39BusNewEnglandSystemhhh.pfd
- pakDetect.rar
- wx随机答题.zip
- windows-linux基线离线扫描脚本.zip
- Unity3D中文离线手册地址.txt
- 串口调试助手.rar
- coursera吴恩达机器学习全套视频和文档
- 敏感词txt.zip
- WebSocket网关.zip
- 123.rar
- AutoNavi.tms
- extjs5-DateTimeField.rar
- PI参数计算.exe
- sweet_liulang_10677113.zip
- 编译原理习题答案,1-8章龙书第二版
- video_capture.rar
- LED点阵显示屏.rar
- NGUI各版本2.6往上.txt
- rar(37)
- MOOC计算机网络结课考试哈尔滨工业大
- 直播源.zip
- GB-T2260-2017年区划代码.pdf
- CentOS7.txt
- 视觉slam.txt
评论
共有 条评论