操作系统 实验1【短作业优先调度算法(C++代码实现——FCFS\SJF\HRRN)】
发布日期:2021-05-04 01:05:12 浏览次数:50 分类:技术文章

本文共 949 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

  1. FCFS(first come first served):先来先服务,根据到达时间依次执行。

  2. SJF(short job first):根据作业的运行时间从小到大依次执行。

  3. HRRN(highest response ratio next):根据响应比从大到小依次执行,响应比动态计算

周转时间 = 完成时间 - 到达时间

带权周转时间 = 周转时间 / 运行时间

响应比 = (运行时间+已经等待时间) / 运行时间 = 1+已经等待时间 / 运行时间【响应比可能表达方法不同,但是意义是一样的。】

目录


一、实验目的

目的:了解并掌握作业调度的功能,熟悉并掌握各种作业调度算法。

任务:模拟实现先来先服务调度算法(FCFS)或者短作业优先调度算法(SJF)

二、实验内容

(1)实验内容

模拟实现SJF调度。

设置作业体:作业名,作业的到达时间,服务时间,作业状态(W——等待,R——运行,F——完成),作业间的链接指针;

作业初始化:由用户输入作业名、服务时间、到达时间进行初始化,同时,初始化作业的状态为W。

显示函数:在作业调度前、调度中和调度后进行显示。

排序函数:对等待状态的作业按照调度算法排序(不同的调度算法排序方式不同),注意考虑到达时间。

调度函数:每次从等待队列队首调度已到达的适合的作业执行,状态变化。当服务结束时,状态变为F。

删除函数:撤销状态为F的作业。

(2)实验要求

①测试数据可以随即输入或从文件中读入;

②必须要考虑到作业的到达时间;

③最终能够计算每一个作业的周转时间、带权周转时间。

三、实验代码

在这里插入图片描述

1

将程序打包为exe文件

codeblocks下 写程序,先要建立一个工程。写好程序后,选择Build(构建),在工程目录里面就有个Debug或者Release的文件夹,里面就是打包好的exe文件。

  

四、实验结果

输入作业的个数,然后分别输入进程的名称、到达时间、服务时间,对程序进行测试。

测试样例1

测试样例2

五、实验总结

通过此次实验,对进程的常用算法有了更深的理解,知道了FCFS/SJF进程调度算法的实现过程和程序编写。对作业的完成时间、周转时间、带权周转时间等计算掌握地更加熟练。实验中,将理论和实践相结合,对操作系统的学习更加深入。

转载地址:https://blog.csdn.net/weixin_44949135/article/details/116242551 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:操作系统【作业调度算法 调度图 例题(SPF、HPF、HRRN)】
下一篇:编译原理【实验1——扫描器的设计与实现】

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月15日 18时43分23秒