【应用C】C语言实现批处理操作系统的高响应比作业调度(+源代码)


01 - 批处理系统

  批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行,本例程的作业的优先级采用高响应比 P P 优先,其中作业的等待时间为 T w T_w ,作业估计运行时间为 T r T_r ,关系为: P = T w T r P =\frac{ T_w}{T_r}
  用C语言模拟一个批处理系统的运行

02 - 程序框架

  系统资源:主存64MB、磁带机4台和打印机2台(假设作业所需资源不会超过系统拥有资源,即免去检查这一步骤),程序主框架如下:

开始
初始化作业Set_Job_Values
开始作业调度Start_Job
结束

  Set_Job_Values()做作业的初始化工作,包括作业名称、作业长度、作业所需资源等等的随机生成,Start_Job()就开启了批处理的高响应比调度,可以细分为如下步骤:

1、后备队列中第一个作业先运行,退出队列,修改系统资源,输出作业名称,Print_Job_Name()
2、系统运行时间+1,正在运行的作业运行时间+1Up_Job_Running_Time()
	判断正在运行的作业中是否有结束,若结束,归还系统资源,Check_Job_Time()
	判断是否还存在作业在运行,若没有,结束程序,check_Job_Run()
3、后备队列中所有作业的等待时间+1Up_Job_Wait_Time()
4、计算后备队列每个作业的响应度,Calculate_Job_Priority()
5、选取出最高响应度的作业job,Select_Hight_Priority_Job()
6、检查job所需资源是否满足
	若满足,退出队列,修改系统资源,输出作业名称,Print_Job_Name()
	若不满足,继续等待
7、执行2							

03 - 源码下载

  链接:百度网盘 提取码:jztn
  包含JBC.h、JBC.c和main.c,其实作业的数据结构如下:

typedef struct jcb
{
	char name[4];      		//作业名
	int length;          	//作业长度,所需主存大小
	int printer;         	//作业执行所需打印机的数量
	int tape;           	//作业执行所需磁带机的数量
	int runtime;        	//作业估计运行时间
	int waittime;       	//作业在系统中的等待时间
    float pri;          	//动态优先级
    int runningtime;    	//作业已经运行的时候
}JCB; 

04 - 结果测试

  编译运行main.c,得到10个作业的调度结果如下:

The job YZY is running
The job YZY is end,using 8s

The job BCS is running
The priority of BCS is 8.00
The job BCS is end,using 1s

The job CGJ is running
The priority of CGJ is 4.50
The job CGJ is end,using 2s

The job JBZ is running
The priority of JBZ is 3.67
The job JBZ is end,using 3s

The job CLR is running
The priority of CLR is 3.50
The job CLR is end,using 4s

The job XQC is running
The priority of XQC is 3.00
The job RWX is running
The priority of RWX is 2.71
The job XQC is end,using 6s

The job PFX is running
The priority of PFX is 3.43
The job PGM is running
The priority of PGM is 3.57
The job RWX is end,using 7s

The job PFX is end,using 7s

The job PGM is end,using 7s

The job TSQ is running
The priority of TSQ is 3.20
The job TSQ is end,using 10s

  观测后部分的作业调度,RWX、PFX和PGM 作业相互竞争,系统根据作业的高响应比进行调度,作业能够有序完成

05 - 总结

  • 模拟了批处理系统的高响应比作业调度
  • 作业最大,随着等待时间越长,就越会被执行
  • 作业越小,越会被执行
  • 作业数量的大小,资源数量都可以进行实际修改

猜你喜欢

转载自blog.csdn.net/Hxj_CSDN/article/details/86489626