- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
..WORD完美格式..
..专业知识编辑整理..
学号 专业 计算机科学与技术 姓名
实验日期 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) //输出函数
求完成时间算法
FCFS算法流程图
SJF算法流程图
程序
#include stdio.h
struct fcfs
//定义进程的结构体
{
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(输入进程的名称
文档评论(0)