1 / 16
文档名称:

OS短作业优先调度算法C语言.doc

格式:doc   大小:45KB   页数:16页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

OS短作业优先调度算法C语言.doc

上传人:xd3225 2022/1/22 文件大小:45 KB

下载得到文件列表

OS短作业优先调度算法C语言.doc

相关文档

文档介绍

文档介绍:.
0 / 16
采用短作业优先调度算法调度程序
学 号:
__
专 业:
指导
日 期:
.
目录
一、实验题目3
二、课程设计的目的3
三、设计内容3
四、设计要求3
五、主要数据结名<name>、到达时间<arrivetime>、服务时间<servicetime>、开始执行时间<starttime>、完成时间<finishtime>、周转时间<zztime>、带权周转时间<dqzztime>、执行顺序〔order〕。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间+到达时间;带权周转时间=周转时间/服务时间;<第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间>。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁〔如果服务时间相同则看它们的到达时间,到达时间短的先执行〕;如果到达时间和服务时间相同,则按先来先服务算法执行。
六、程序运行结果
1 进入操作界面如下
2输入进程的信息
3 各时刻进程的状态
4 进程信息
5 平均带权周转时间界面
七、流程图
4 / 16
.
本次课程设计主要是通过比较各个进程的优先级以与各进程所需要占用的CPU时间来确定哪个作业优先运行,短作业优先调度算法除了能保证优先级更高的作业优先运行外,还能使相同优先级的前提下,所需CPU时间最短的那个作业优先运行,次外,本次课程设计还增加了阻塞时间和被阻塞时间来对个进程的运行加以控制。 此次课程设计的总体流程图如下:
5 / 16
.
开 始
输入进程的个数:num
r
队列中是否只有一个进程?
执行时间处理函数:Time<>
Y
结 束
Sort<>
输入进程的信息:name starttime servicetime
N
执行判断函数:Run<>
输出最后信息:Output<>
6 / 16
.
八、源程序文件
#include<iostream>
#define MaxNum 100
using namespace std;
struct Process_struct{
int Number; //进程编号
char Name[MaxNum]; //进程名称
int ArrivalTime; //到达时间
int ServiceTime; //开始运行时间
int FinishTime; //运行结束时间
int WholeTime; //运行时间
int run_flag; //调度标志
int order; //运行次序
double WeightWholeTime; //周转时间
double AverageWT_FCFS,AverageWT_SJF; //平均周转时间
double AverageWWT_FCFS,AverageWWT_SJF; //平均带权周转时间
}Process[MaxNum];
int N; //实际进程个数
int SJF<>; //短作业优先
int SJF<>{ //短作业优先算法
int temp_time=0; //当期那时间
int i=0,j;
7 / 16
.
int number_schedul,temp_counter; //进程编号,当前已执行进程个数
float run_time;
run_time=Process[i].WholeTime;
j=1;
while<<j<N>&&<Process[i].ArrivalTime==Process[j].ArrivalTime>> //判断是否有两个进程同时到达
{
if<Process[j].WholeTime<Process[i].WholeTime>
{
run_time=Process[i].WholeTime;
i=j;
}
j++;
}
//查找下一个被调度的进程
//对找到的下一个被调度的进程求相应的参数
number_schedul=i;
Process[number_schedul].ServiceTime=Process[number_schedul].ArrivalTime;