资源简介
c语言,运行成功,比较基础,单道批处理系统作业调度模拟程序:采用先来先服务(FCFS),最短作业优先(SJF)和响应比高者优先(HRN)三种作业调度算法
代码片段和文件信息
#include
#include
#include
#include
#define LENGTH sizeof(struct job)
struct job
{
int name; //作业名
int subtime; //作业提交时刻(例如到达食堂的时刻)
int runtime; //作业所需运行时间(预估)
//char resource; //所需资源
char state; //作业状态:W 就绪,R 运行,F 完成
int Tb; //作业运行开始时刻(例如开始吃饭的时刻)
int Tc; //作业运行完成时刻(例如吃饭完成的时刻)
int Ti; //周转时间(完成时刻-提交时刻)
float Rp; //后备作业响应比:Rp=(Tc-subtime)/runtime响应比可以看成带权周转时间的预期
float Wi; //带权周转时间 (周转时间/运行时间) Wi=(Tc-subtime)/(Tc-Tb)
struct job * next; //后续作业
};
int choose=0subt=0;//选择三种优先方式中的一种、最新作业提交时刻
struct job *head*temp;
struct job *p1*p2;
//待执行作业数、已运行作业数、作业数、总周转时间、运行完成时刻之和、运行开始时刻之和
int len=0rlen=0num=0allTi=0allTc=0allTb=0;
int main()
{
void input(); //输入作业信息
void sort2(); //对队列中的作业进行排序,按作业运行时间由低到高
void sort3(); //对队列中的作业进行排序,按响应比由高到低
void run(); //运行head指向的作业
void printfinish(); //打印运行完成的作业
void printend(); //打印平均周转时间:allTi/num、带权平均周转时间:allTi/(allTc-allTb)
char ch;
printf(“请输入1-31=FCFS,2=SJF3=HRN:“);
scanf(“%d“&choose);
input();
printf(“\n请输入c了解作业运行情况\n“);
--len;
++rlen;
while(len>=0)
{
ch=getchar();
if(ch==‘c‘&&len==0)
{
system(“cls“);
printf(“待执行作业个数:%d\n“len);
printf(“已执行作业个数:%d\n“rlen);
run();
printend();
break;
}
if(ch==‘c‘)
{
system(“cls“);
printf(“待执行作业个数:%d\n“len);
printf(“已执行作业个数:%d\n“rlen);
if(choose==1)
{
}
if(choose==2)
{
sort2();
}
if(choose==3)
{
sort3();
}
run();
printfinish();
printf(“\n请输入c继续运行\n“);
}
}
return 0;
}
void input() //输入作业信息
{
srand(time(0));
char ch;
for(;;)
{
printf(“\n请输入c继续输入作业信息,输入f结束输入作业信息\n“);
ch=getchar();
if(ch==‘f‘) break;
if(ch==‘c‘)
{
if(len==0)
{
head=p1=(struct job *)malloc(LENGTH);
p1->name=len+1;
p1->subtime=0;
p1->runtime=rand()%5+1;
p1->state=‘W‘;
p1->Tb=0;
p1->Tc=0;
p1->Ti=p1->Tc-p1->subtime;
p1->Rp=0;
p1->Wi=0;
printf(“**********job%d**********\n“++len);
printf(“name=%d\n“p1->name);
printf(“subtime=%d\n“p1->subtime);
printf(“runtime=%d\n“p1->runtime);
printf(“state=%c\n“p1->state);
printf(“Tb=%d\n“p1->Tb);
printf(“Tc=%d\n“p1->Tc);
printf(“Ti=%d\n“p1->Ti);
printf(“Rp=%f\n“p1->Rp);
printf(“Wi=%f\n“p1->Wi);
num=len;
}
else
{
p2=(struct job *)malloc(LENGTH);
p2->name=len+1;
p2->subtime=0;
p2->runtime=rand()%5+1;
p2->state=‘W‘;
p2->Tb=0;
p2->Tc=0;
p2->Ti=p2->Tc-p2->subtime;
p2->Rp=0;
p2->Wi=0;
printf(“**********job%d**********\n“++len);
printf(“name=%d\n“p2->name);
printf(“subtime=%d\n“p2->subtime);
printf(“runtime=%d\n“p2->runtime);
printf(“state=%c\n“p2->state);
printf(“Tb=%d\n“p2->Tb);
printf(“Tc=%d\n“p2->Tc);
printf(“Ti=%d\n“p2->Ti);
printf(“Rp=%f\n“p
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
评论
共有 条评论