实用标准文案
学号 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是结束