基于C语言的短作业优先算法实现
需积分: 9 17 浏览量
更新于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),因为我们只需要使用一个固定大小的队列来存储所有的作业。
该算法的优点在于它可以提高系统的吞吐率和响应速度,但是它也存在一些缺点,如它可能会导致某些作业长时间地等待执行,从而影响系统的整体性能。
结论
短作业优先算法是一种简单而且有效的调度算法,它可以提高系统的吞吐率和响应速度。但是,它也存在一些缺点,因此在实际应用中需要根据具体情况选择合适的调度算法。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-05-21 上传
愤怒的橘子叔
- 粉丝: 0
- 资源: 3
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍