资源简介
该程序实现作业调度的SRTF算法,只要输入进程号,到达时间,运行所需时间即可,输出的是一条时间轴和对应的一条进程运行流程,表示一个时间点里哪个进程在运行。
很简单,看了就知道~
代码片段和文件信息
#include
#define N 3//进程个数,可以任意修改,这里设置为3个进程
int time=0;//时间轴
int sumTime=0;
void init();
void orderByReachTime();
int search_Shortest_Remain_Job();
void update(int);
int finishOrNot();
void SRTF();
void show();
struct JobStruct
{
int reachTime;//到达时间
int remainTime;//剩余时间
int needTime;//需要运行的总时间
int No;//进程号
int flag;//标志位,1标示已做完该作业,0标示未做完,初始化为0
}Job[N];
void init()//输入结构体数组Job[]数据
{
printf(“Process ReachTime NeedTime\n“);
for(int i=0;i {
scanf(“%d%d%d“&Job[i].No&Job[i].reachTime&Job[i].needTime);
Job[i].remainTime=Job[i].needTime;//刚开始时剩余时间=所需时间
Job[i].flag=0;
sumTime+=Job[i].needTime;
}
}
void orderByReachTime()//按到达时间先后排序数组
{
for(int i=0;i for(int j=i+1;j {
if(Job[i].reachTime>Job[j].reachTime)//按到达时间升序排序
{
struct JobStruct temp=Job[i];
Job[i]=Job[j];
Job[j]=temp;
}
}
}
int search_Shortest_Remain_Job()//寻找最短剩余时间的作业的下标并返回下标
{
int index=-1;
int remain=32767;
for(int i=0;i {
if(Job[i].flag==0)
{
if(time>=Job[i].reachTime)//该作业已到达,可以对其进行判断
{
if(Job[i].remainTime {
remain=Job[i].remainTime;
index=i;
}
}
}
}
return index;//返回最短剩余时间的作业的下标
}
void update(int index)//被调度的作业剩余时间减1,时间轴加1参数index为被调度的作业的下标
{
if(index==-1)
{
printf(“%d “index);
time++;
//return;
}
else
{
printf(“%d “index);
Job[index].remainTime--;
if(Job[index].remainTime==0)//如果作业剩余时间为0,说明作业已做完,置标志位为1
{
Job[index].flag=1;
}
time++;
}
}
int finishOrNot()//判断数组中是否还有没完成的作业,有则返回1,否则返回0
{
for(int i=0;i {
if(Job[i].flag==0)
{
return 1;//说明此时还有作业未做完
}
}
return 0;
}
void SRTF()//最短剩余时间优先算法 Shortest Remaining Time First
{
init();
show();
printf(“Process:“);
while(finishOrNot())
{
int index=search_Shortest_Remain_Job();//返回最少剩余时间的作业的下标
update(index);
//display();
}
}
void show()
{
printf(“Time “);
for(int i=0;i //点,每个时间片对应的是主存中正在运行的一个进程号
{
printf(“%d “i);
}
printf(“\n“);
}
void main()
{
SRTF();
printf(“\n“);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2499 2009-12-27 10:02 SRTF作业调度算法\SRTF.cpp
目录 0 2009-12-27 10:11 SRTF作业调度算法
----------- --------- ---------- ----- ----
2499 2
相关资源
- 决策树实现算法C语言编写
- C语言 小波变换 图像 去噪 源代码
- c语言 链表排序--
- C语言版贪吃蛇设计思路及源代码
- 动态分区分配方式模拟c语言
- 浙江大学C程题库
- 学生系统C语言成绩排名
- 背包问题C语言实现, 动态规划
- linux命令c语言自己实现大概40来个
- c语言实现的动态规划求最短路径长度
- C语言双语词汇对照表
- C语言-遗传算法的排课源码
- C语言模拟路由DV算法
- 用c语言写的OBB旋转及碰撞检测源代码
- 用C语言编写的usb自动识别程序
- 基于51单片机的12864液晶显示C语言源程
- 分治法求格雷码的C语言代码
- C语言C++魔兽全图源码
- linux环境下C语言编程指南 源代码
- 上传的p2p技术C语言源码
- 连连看C语言小游戏开发源代码
- 磁盘调度算法(c语言)44989
- 音乐跑马灯C语言程序
- bpsk的C语言代码
- 用回溯法解决01背包问题C语言实现
- Linux GTK 聊天室 MySql C语言聊天室
- 单片机流水灯C语言
- C语言版本的DES加密解密算法代码!(
- 连连看 C语言 源代码
- spath(A*算法的C语言源代码)
评论
共有 条评论