资源简介
该程序实现作业调度的SRTF算法,只要输入进程号,到达时间,运行所需时间即可,输出的是一条时间轴和对应的一条进程运行流程,表示一个时间点里哪个进程在运行。
很简单,看了就知道~
![](http://www.nz998.com/pic/47656.jpg)
代码片段和文件信息
#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语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论