没有合适的资源?快使用搜索试试~ 我知道了~
操作系统报告进程调度算法模拟.doc
0 下载量 193 浏览量
2023-07-06
00:21:08
上传
评论 1
收藏 379KB DOC 举报
温馨提示
试读
58页
操作系统报告进程调度算法模拟.doc
资源推荐
资源详情
资源评论
《操作系统原理及应用》课程设计报
告
进程调度算法模拟
学院(系): 计算机科学与工程学院
班 级:学号 11403070
学生姓名:
同组人员:
时间: 从 2016 年 12 月 27 日 到 2017 年 01 月 03 日
1.课程设计的目的
《操作系统原理》课程设计我们专业实践性环节之一,是学习完《操作系统原理》课程
后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理
解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,
培养学生的系统设计能力,并了解操作系统的发展动向和趋势。
2.课程设计的内容及要求
先来先服务、短作业优先、时间片轮转、基于静态优先级的调度,基于高响应比优先的
动态优先级调度算法实现,能够输出调度情况,并计算周转时间和平均周转时间。要求使用
链表,进程个数由用户提供,按照进程的实际个数生成 PCB,程序能够让用户选择使用哪种
调度算法,能够在 Linux 环境运行并验证结果。程序要考虑用户界面的友好性和使用方便性。
进程基本信息可从文件读入,也可手动输入。
3、设计原理
3.1 先来先服务调度算法
每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内
存,为它们分配资源创建进程,然后放入就绪队列
3.2 短作业优先调度算法
短作业优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配
给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
3.3 时间片轮转调度算法
系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把 CPU 分配给
队首进程,并令其执行一个时间片。时间片的大小从几 ms 到几百 ms。当执行的时间片用完
时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送
往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一
个时间片。
3.4 静态优先级调度算法
把处理机分配给优先级最高的进程,使之执行。但在其执行期间,只要出现了另一个比其
优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程。这样就可以保证
紧迫性作业优先运行。
3.5 最高响应比优先的动态优先级调度算法
优先权调度算法是为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入最高
优先权优先调度算法。动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进
或随其等待时间的增加而改变的,以便获得更好的调度性能。
4.设计说明
4.1 结构设计
(1) 菜单选择模块。选择相应的进程调度方式,选择相应的数字,进入相应的功能。
(2) 调度算法模块。选择相应的进程调度算法。
(3) 显现输出模块。显示每种进程调度算法情况。
(4) 平均周转时间与平均带权周转时间的计算结果。
(5) 退出系统模块。
4.2 功能设计
(1)菜单选择模块
设计方案:首先将各种进程调度算法放入不同的头文件,在主函数引用,是系统结构更
加清晰。
实现方法:设置一个 menu()方法,让用户选择不同的进程调度算法,menu()方法返回一
个 char 类型字符,以便在主函数的 switch 语句中选择调用不同的进程调度方法。
(2)调度算法模块
A、先来先服务调度算法
设计方案:对于先到达的进程优先分配 CPU,按照先来先服务的原则依次执行各进程。
实现方法:每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将
它们调入内存,为它们分配资源创建进程,然后放入就绪队列
B、短作业优先调度算法
设计方案:短作业优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将
处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再
重新调度。
实现方法:先找到运行时间最短的程序,然后执行,再从剩余的程序中找到运行时间最
短的在执行,依次每次都执行运行时间最短的,直到程序执行完毕。
C、时间片轮转调度算法
设计方案:系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把
CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几 ms 到几百 ms。当执行
的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执
行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时
也让它执行一个时间片。
实现方法:按照轮转的次序分配给每个程序一定的时间执行,执行完成后执行后面的进
程 ,依次循环执行直到所有进程执行完成。
D、静态优先级调度算法
设计方案:把处理机分配给优先级最高的进程,使之执行。但在其执行期间,只要出现
了另一个比其优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程。这
样就可以保证紧迫性作业优先运行。
实现方法:按照优先级从高到低依次执行程序。
E、最高响应比优先的动态优先级调度算法
设计方案:优先权调度算法是为了照顾紧迫型作业,使之在进入系统后便获得优先处理,
引入最高优先权优先调度算法。动态优先权是指在创建进程时所赋予的优先权,是可以随进
程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
实现方法:按照优先级从高到低依次执行程序。
(3)平均周转时间与平均带权周转时间的计算
设计方案:周转时间=完成时间-到达时间
带权周转时间=周转时间/服务时间
平均周转时间=总的周转时间/进程个数
平均带权周转时间=总的带权周转时间/进程个数
实现方法:系统自行根据程序及输入的数据计算出平均周转时间和平均带权周转时
4.3 程序中使用的数据结构及使用的变量说明和作用
(1)结构体
/***先来先服务调度算法结构体***/
struct fcfs{
char name[10]; //作业名
float arrivetime; //作业到达时间
float servicetime; //作业服务时间
float starttime; //作业开始时间
float finishtime; //作业完成时间
float zztime; //周转时间
float dqzztime; //带权周转时间
};
/***短作业优先调度算法结构体***/
struct jcb //作业控制块 JCB,定义为结构体
{
char name[10]; //作业名
float arrivetime; //作业到达时间
float servicetime;//作业服务时间
float starttime; //作业开始时间
float finishtime; //作业完成时间
float zztime; //周转时间
float dqzztime; //带权周转时间
};
/***时间片轮转调度算法结构体***/
struct rr{ //定义时间片轮转调度算法结构体,里面包含得有一个进程相关的信息
char name[10]; //作业名
float arrivetime; //作业到达时间
float servicetime; //作业服务时间
float starttime; //作业开始时间
float finishtime; //作业结束时间
float zztime; //作业周转时间
float dqzztime; //作业带权周转时间
float avzztime; //作业平均周转时间
float avdqzztime; //作业平均带权周转时间
float lefttime; //剩余时间
float stoptime; //停止时间
int timeprice; //时间片设置的大小
};
/***静态优先级调度算法结构体***/
struct sp {
char name[10]; //作业号
float arrivetime; //作业到达时间
float servicetime; //服务时间
float waittime; //等待时间
float starttime; //开始运行时间
float finishtime; //结束运行时间
float zztime; //周转时间
float dqzztime; //带权周转时间
float priority; //优先权
float finish; //是否已经完成
}sta[10];//作业控制块,这是一个结构体数组
/***最高响应比调度算法结构体***/
struct task {
char name[10]; //作业号
剩余57页未读,继续阅读
资源评论
黑色的迷迭香
- 粉丝: 717
- 资源: 4万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现 powell算法 用matlab实现,使用方法内附详细说明.rar
- 基于matlab的手写字体识别程序,并对结果进行保存.rar
- 基于c语言指纹识别demo代码 包括了指纹图像方向图计算、频率计算、gabor滤波器增强,细化,特征点提取,特征点匹配.rar
- 基于c++NSGA-2思想的多目标优化程序,采用进化算法处理多目标实值优化问题.rar
- Linux系统中常用权限管理命令
- Coello Coello等人提出了MOPSO 该程序基于matlab实现针对测试函数matlab程序
- Linux系统中常用权限管理命令
- AIR-AP1815-K9-ME-8-5-182-0.tar For Cisco AP1815
- 实验七.zip
- ESP8266刷固件软件flash-download-tools-v3.6.5,AT固件,机智云固件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功