- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中南大学操作系统原理实验报告
计算机操作系统
实验报告
学 院: 信息科学与工程学院
专业班级: 信息安全1302班
指导老师: 郁博文
学 号: 0906130205
计算机操作系统
1.设计目的
1、增强学生对计算机操作系统基本原理、基本理论、基本算法的理解;
2、提高和培养学生的动手能力。
2.设计要求
1、每人至少选作1题,多做不限;
2、每人单独完成,可以讨论,但每人的设计内容不得完全相同,抄袭或有2人/多人设计完全一样者,不能通过;
3、设计完成后,应上交课程设计文档,文档格式应是学校课程设计的标准格式,所有学生的封面大小、格式也必须一样;
4、同时上交设计的软盘(或以班刻录光盘)。
3.设计题目
调度算法的模拟:模拟各种调度算法,并进行调度性能分析。
4.设计过程
4.1 设计思路
模拟了一个作业调度算法,其中用到了先来先服务算法(FCFS)、短作业优先算法(SJF)、最高响应比优先算法(HRN)三种算法。
如下,分别为三种算法的程序流程图。
4.2 实验过程
图1 - 开始界面
图2 – 输入作业的信息(名字、提交时间、运行时间)
图3 – 选择算法(FCFS、SJF、HRN)
图4、5 – 选择FCFS算法后输出结果
图6、7 – 选择SJF算法后输出结果
图8、9 – 选择HRN算法后输出结果
4.3 调度性能分析
1.先来先服务算法(FCFS)
优点:
能体现公平性;
缺点:
一旦一个较长的作业进入系统后就会长时间的占用系统的资源,这样如果有优先级较高的短作业需要执行的话需要等待很长时间。
2.短作业优先算法(SJF)
优点:
比前者改善了平均周转时间和平均带权周转时间,缩短作业的等待时间,提高系统的吞吐量;
缺点:
对长作业非常不利,可能长时间得不到执行,未能一句作业的紧迫程度来划分执行的优先级,难以准确估计作业的执行时间,从而影响调度性能。
3.最高响应比优先算法(HRN)
优点:
这种算法是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
缺点:
由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。
5.总结
在实验中,由于对算法细节不够熟悉,以及对c语言的遗忘,我遇到了不少困难。因而,在克服这些困难的过程中,我对FCFS算法有了更加深刻而透彻的理解,c语言的一些基本操作也得到了巩固。今后我亦将多多练习,毕竟理论与实践结合才是最好的学习方法。
6.代码附录
#include stdio.h
#include stdlib.h
#define getpch(type)(type*)malloc(sizeof(type))
struct worktime
{
float Tb;//作业运行时刻
float Tc;//作业完成时刻
float Ti;//周转时间
float Wi;//带权周转时间
};
struct jcb
{ /*定义作业控制块JCB?*/
char name[10];//作业名
float subtime;//作业提交时间
float runtime;//作业所需的运行时间
char resource;//所需资源
float Rp;//后备作业响应比
char state;//作业状态
struct worktime wt;
struct jcb *link;//链指针
}*jcb_ready = NULL, *j;
typedef struct jcb JCB;
float T = 0;
void sort()/*?建立对作业进行提交时间排列函数*/
{
JCB *first, *second;
int insert = 0;
if ((jcb_ready == NULL) || ((j-subtime)(jcb_ready-subtime)))/*作业提交时间最短的,插入队首*/
{
j-link = jcb_ready;
jcb_ready = j;
T = j-subtime;
j-Rp = 1;
}
else/*?作业比较
文档评论(0)