资源简介
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++下的socket异步通信源代码
- SDK入门(用C和C++来调用WindowsAPI)
- vigenere密码加密解密算法实现软件Vc
- C++仿qq程序源代码及程序
- VC++6.0完美运行在win7和win10系统上
- linux下C语言实现读者写者写者优先
- AGC的算法DSP上的
-
xm
l解析 CMarkup类 c++ - C++ 操作注册表
- 航空订票系统航空订票系统航空订票
- 用c++模拟直线插补和圆弧插补二.cpp
- 用c++模拟直线插补和圆弧插补一.cpp
- 用C++模拟直线插补图形
- 银行借贷系统c++ 编程
- 《C++ Primer Plus第6版中文版》源代码和
- kbmMemTable v7.30 FullSource
- 一个老师给的高斯投影正、反算c++源
- 物业管理系统c++ 课程设计源码
- WindowsCE或WM上C++加载显示GIF动画的程序
- 图书馆管理系统c语言编写
- 通讯录管理程序设计的C语言实现
- 获取系统安装软件(vc++源码)
- QICQ网络即时聊天服务器和客户端VC源
- 用C语言编写的井字棋小游戏
- C++ Primer Plus 6th 编程练习答案
- rc4加密解密算法
- 用VC++实现图像连通区域标记
- 数据结构c语言版-单链表的操作程序代
- C/C++语言实现求矩阵的广义逆
- 编译原理-简单编译器课程设计C语言源
评论
共有 条评论