基于C语言的短作业优先算法实现
需积分: 9 151 浏览量
更新于2024-09-15
收藏 4KB TXT 举报
操作系统课设 - 短作业优先算法实现
操作系统课设是计算机科学中一个重要的领域,涉及到计算机系统的设计、实现和优化。短作业优先算法是操作系统中常用的调度算法之一,该算法的主要思想是将处理器分配给当前可运行的作业中执行时间最短的那个,从而提高系统的吞吐率和响应速度。
在该课设中,我们将使用 C 语言实现短作业优先算法,并对其进行详细的分析和讨论。
短作业优先算法
短作业优先算法是一种非抢占式的调度算法,它的核心思想是将处理器分配给当前可运行的作业中执行时间最短的那个。该算法的优点在于它可以提高系统的吞吐率和响应速度,从而提高系统的整体性能。
算法实现
在该课设中,我们使用 C 语言实现了短作业优先算法。该算法的实现主要涉及到以下几个方面:
1. 作业的定义:我们定义了一个名为 `job` 的类,该类包含了作业的名称、到达时间、运行时间、开始时间、完成时间、周转时间和平均周转时间等信息。
2. 作业的排队:我们使用一个队列来存储所有的作业,并使用一个指针来指向当前正在执行的作业。
3. 作业的调度:我们使用一个循环来遍历队列中的所有作业,并选择当前可运行的作业中执行时间最短的那个作为下一个执行的作业。
4. 作业的执行:我们使用一个循环来执行当前选择的作业,并更新该作业的状态信息。
代码实现
以下是该算法的代码实现:
```c
#include <iostream>
#include <string>
using namespace std;
class time {
public:
void settime() {
cin >> hour >> minute;
}
void showtime() {
cout << "" << hour << ":" << minute << "";
}
int hour;
int minute;
};
string job_name;
time enter_time;
int run_time;
time start_time;
time finish_time;
int circulate_time;
float average_circulate_time;
class job {
public:
void set() {
cin >> job_name;
enter_time.settime();
cin >> run_time;
start_time.settime();
}
void display() {
int j, k, min, hou;
j = run_time / 60;
k = run_time - j * 60;
finish_time.minute = start_time.minute + k;
if (finish_time.minute >= 60) {
finish_time.minute = finish_time.minute - 60;
finish_time.hour = start_time.hour + j + 1;
} else {
finish_time.hour = start_time.hour + j;
}
if (finish_time.minute >= enter_time.minute) {
min = finish_time.minute - enter_time.minute;
hou = finish_time.hour - enter_time.hour;
circulate_time = hou * 60 + min;
} else {
min = finish_time.minute + 60 - enter_time.minute;
hou = finish_time.hour - 1 - enter_time.hour;
circulate_time = hou * 60 + min;
}
average_circulate_time = circulate_time;
}
int circulate_time;
float average_circulate_time;
};
void job::set() {
cin >> job_name;
enter_time.settime();
cin >> run_time;
start_time.settime();
}
void job::display() {
// ...
}
```
算法分析
该算法的时间复杂度为 O(n),其中 n 是作业的数量。该算法的空间复杂度为 O(1),因为我们只需要使用一个固定大小的队列来存储所有的作业。
该算法的优点在于它可以提高系统的吞吐率和响应速度,但是它也存在一些缺点,如它可能会导致某些作业长时间地等待执行,从而影响系统的整体性能。
结论
短作业优先算法是一种简单而且有效的调度算法,它可以提高系统的吞吐率和响应速度。但是,它也存在一些缺点,因此在实际应用中需要根据具体情况选择合适的调度算法。
2017-11-28 上传
2009-12-26 上传
149 浏览量
2023-11-11 上传
2023-10-26 上传
2023-07-16 上传
2024-01-02 上传
2024-01-01 上传
2023-05-14 上传
愤怒的橘子叔
- 粉丝: 0
- 资源: 3
最新资源
- ASP.NET数据库高级操作:SQLHelper与数据源控件
- Windows98/2000驱动程序开发指南
- FreeMarker入门到精通教程
- 1800mm冷轧机板形控制性能仿真分析
- 经验模式分解:非平稳信号处理的新突破
- Spring框架3.0官方参考文档:依赖注入与核心模块解析
- 电阻器与电位器详解:类型、命名与应用
- Office技巧大揭秘:Word、Excel、PPT高效操作
- TCS3200D: 可编程色彩光频转换器解析
- 基于TCS230的精准便携式调色仪系统设计详解
- WiMAX与LTE:谁将引领移动宽带互联网?
- SAS-2.1规范草案:串行连接SCSI技术标准
- C#编程学习:手机电子书TXT版
- SQL全效操作指南:数据、控制与程序化
- 单片机复位电路设计与电源干扰处理
- CS5460A单相功率电能芯片:原理、应用与精度分析