操作系统实验 - 先来先服务的调度算法和短作业优先
更新时间:2023-09-27 14:59:01 阅读量: 综合文库 文档下载
- 操作系统推荐度:
- 相关推荐
学号 实验日期 P71514032 2017.10.27 专业 计算机科学与技术 教师签字 成绩 姓名
实验报告
【实验名称】 【实验目的】
在多道程序或多任务系统中,系统同时处于就绪态的进程有若干个。也就是说能运行的进程数远远大于处理机个数,为了使系统中的各进程能有条不紊的运行,必须选择某种调度策略,以选择一进程占用处理机,所以,要求使用某一种编程语言设计实现模拟单处理机调度的算法,以巩固和加深处理机调度的概念。
本实验要求采用先来先服务的调度算法和短作业优先的调度算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解进程调度、进程队列的概念。
进程调度算法FCFS、FJF
【实验原理】
FCFS调度算法
先来先服务(FCFS)调度算法是一种最简单的调度算法。在进程调度中采
用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
SJF调度算法
短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度
的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运
行。
【实验内容】 问题分析
输入:进程的名称、到达时间、服务时间 输出:进程的完成时间、周转时间、带权周转时间 其中对于任意进程有: 周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间 因此,两个算法的关键是求完成时间
? 数据结构及函数说明
使用的数据结构是数组,进程的名称、到达时间、服务时间、进程的完成时间、周转时间、带权周转时间分别对应于一个数组,这些数组长度相等. struct fcfs
//定义进程的结构体 {
char name[10]; //进程名 float arrivetime; //到达时间 float servicetime; //服务时间 float starttime;//开始时间 float finishtime;//完成时间 float zztime;//周转时间
float dqzztime;//带权周转时间 };
fcfs a[100]; //结构体数组
函数说明
void Finput(fcfs *p,int N) ;//输入函数,初始化
void Fsort(fcfs *p,int N) ;//按到达时间排序,先到达排在前面 void Fsort2(fcfs *p,int N) ;//按进程大小排序,先到达排在前面 void F_method(fcfs *p, int N) //先来先服务算法 void F_method2(fcfs *p,int N)//短作业优先程序 void SJF(fcfs *p,int N); // 短作业优先 void FCFS(fcfs *p,int N); //先来先服务 void SJF(fcfs *p,int N)//短作业优先 void FPrint(fcfs *p,int N)//输出函数
求完成时间算法
1) FCFS算法流程图
开始初始化结构体数组、初始化进程队列,当前时间为0对进程数组按照到达时间小到大进行排序当前时间是否小于当前进程到达时间是当前时间=当前时间+1否当前进程的开始时间等于当前时间当前进程=下一个进程当前进程的结束时间等于开始时间+运行时间当前时间=当前进程结束时间+1否进程数组是否扫描完毕是结束
2) SJF算法流程图
开始初始化结构体数组,输入赋值,当前时间为0对进程数组按照进程运行时间进行小到大排序,标志位为0当前进程为第一个进程当前时间>当前进程的到达时间否当前进程标志位为0否是当前进程开始时间=当前时间结束时间=当前时间+运行书剑是否为最后一个进程是否当前进程标志为1当前进程=下一个进程当前时间=当前时间+1所有标志位都为1否是结束
? 程序
#include
//定义进程的结构体 {
char name[10]; //进程名
float arrivetime; //到达时间 float servicetime; //服务时间 float starttime;//开始时间 float finishtime;//完成时间 float zztime;//周转时间
float dqzztime;//带权周转时间 }; float
arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;
fcfs a[100];
//定义先来先服务算法进程的最大数量
void Finput(fcfs *p,int N) //输入函数 {
int i;
printf(\输入进程的名称、到达时间、服务时间:(例如: x 0 100)\\n\
for(i=0; i<=N-1; i++) {
printf(\输入第%d进程的名称、到达时间、服务时间:\\n\
scanf(\
} }
//输出函数
void FPrint(fcfs *p,int N)//输出函数 {
int k;
printf(\执行顺序:\\n\ printf(\ for(k=1; k printf(\ } printf(\进程名\\t到达时间\\t服务时间\\t开始时间\\t结束时
正在阅读:
操作系统实验 - 先来先服务的调度算法和短作业优先09-27
春江花月夜张若虚02-19
外贸函电 装船须知11-12
新视野B2- U2 补充练习09-30
滇西抗日战争史08-09
C语言入门第7讲 如何控制程序的运行顺序-循环结构05-29
德育工作总结模板4篇班主任德育工作总结11-17
中小学校建筑设计规范GBJ9907-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 先来
- 调度
- 算法
- 优先
- 操作系统
- 作业
- 实验
- 服务
- 防雹队深入开展国语学习教育活动实施方案
- 心理团训策划
- 电工基础第二章测试
- 10、大跨径预应力混凝土连续梁桥合拢施工研究 刘方华 陆海军 刘美茂
- 特级优秀教师事迹材料
- 化工安全概论思考题(第二版)答案
- 常设中国建设工程法律论坛建设工程施工合同纠纷鉴定指引序言
- 关于丹东市少先队工作优秀论文和优秀中队会评选活动的表彰决定
- AutoLISP调用AutoCAD绘图命令
- 6、卫生消杀管理作业规程
- 课程设计任务书-2基于单片机的出租车计价器的设计
- 长沙理工大学电磁学题库
- 药理学模拟试题4
- 高中历史课堂讨论如何更有效
- 微生物分类学 - 图文
- 浙江省金华市婺城区2018届九年级上学期期末考试历史试题
- 小学二年级语文上册第一学期集体备课活动教研记录
- 海南省中高级职称评审条件
- 三位数乘两位数 教学设计
- java实验报告 - - 129074