【www.guakaob.com--高中作文】
//服务时间
int run_time;
};
float fcfs(pcb pro[],int n)
{
struct pcb;
int i;
//time为当前时间
float time=0;
//temp=(pcb)malloc(sizeof(pcb));
cout<<"进程调度情况如下:"<<endl;
cout<<"进程号 到达时间 服务时间:"<<endl;
for(i=0;i<n;i++)
{ time+=pro[i].run_time;
cout<<pro[i].pno<<" "<<pro[i].come_time<<"
"<<pro[i].run_time<<endl;
}
return 0;
}
float sjp(pcb pro[],int n)
{
int i,first=0,count,flag[20],k,min;
float time=0;
//调度第一个到达内存的进程
for(i=0;i<n;i++)
{
if(pro[first].come_time!=pro[i].come_time){ if(pro[first].come_time>pro[i].come_time) first=i;}
else if(pro[first].run_time>pro[i].run_time) first=i;
flag[i]=0;
}
flag[first]=0;
time=(float)pro[first].run_time;
cout<<pro[first].pno<<" "<<pro[first].come_time<<"
"<<pro[first].run_time<<endl;
//pro_temp[0]=pro[first];
count=n-1;
while(count)
{
k=0;
//设置一个较大的阈值
min=32767;
//找到一个未被访问的,作业较短的且已经到达内存的作业调度 , for(i=0;i<n;i++)
if((i!=first)&&(flag[i]==0)&&(time>=pro[i].come_time)&&(min>pro[i].run_time)) {
k=i;
min=pro[i].run_time;
}
//访问后置标记为访问
flag[k]=1;
time+=pro[k].run_time;
cout<<pro[k].pno<<" "<<pro[k].come_time<<"
"<<pro[k].run_time<<endl;
//每调度一个作业,count减1
count--;
}
return 0;
}【高中政治短作业优先法是华罗庚统筹算法的变异】
int main()
{
int i,j;
pcb pro[100];
cout<<"输入进程数i:"<<endl;
cin>>i;
for(j=0;j<i;j++)
{
cout<<"输入进程:";
cin>>pro[j].pno>>pro[j].come_time>>pro[j].run_time; }
cout<<fcfs(pro,j)<<endl;
cout<<sjp(pro,j)<<endl;
}
操作系统课程设计
短作业优先调度算法
学 院 专 业 学 号 学 生 姓 名 指导教师姓名
2014-3-18
目 录
一、实验课题.....................................................................................
二、课程设计的目的..........................................................................
三、设计内容.....................................................................................
四、设计要求.....................................................................................
五、主要数据结构及其说明...............................................................
六、程序运行结果............................................................................
七、源程序文件.................................................................................
八、实验体会.....................................................................................
九、参看文献.....................................................................................
实验题目
采用短作业优先算法的进程调度程序
课程设计的目的
操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动
手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。
进一步巩固和复习操作系统的基础知识。
培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。
提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
设计内容
设计并实现一个采用短作业优先算的进程调度算法演示程序
设计要求
1. 每一个进程有一个PCB,其内容可以根据具体情况设定。
2. 进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定 3. 可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、进程优先级的初始化
4. 可以在运行中显示各进程的状态:就绪、执行 (由于不要求设置互斥资源与进程间同步关系,故只有两种状态) 5. 具有一定的数据容错性
主要数据结构及其说明
算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。优点是SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。缺点
是该算法对长作业不利;完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业游戏那调度。
该程序定义了一个进程数据块(struct spf),该数据块有进程名(name)、到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时间(finishtime)、周转时间(zztime)、平均周转时间(averzztime)。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间-到达时间;(第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间)。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁(如果服务时间相同则看它们的到达时间,到达时间短的先执行);如果到达时间和服务时间相同,则按先来先服务算法执行。
程序运行结果
1 进入操作界面如下
2输入进程的数目
3输入进程的信息
短作业(进程)优先调度算法
1. 短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。该算法对长作业不利,完全未考虑作业的紧迫程度。
2. 流程图
3. 代码
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
struct sjf{
char name[10];
float arrivetime;
float servicetime;
float starttime;
float finishtime;
float zztime;
float dqzztime;
};
sjf a[100];
void input(sjf *p,int N)
{ int i;
printf("intput the process's name & arrivetime & servicetime:\nfor exmple: a 0 100\n");
for(i=0;i<=N-1;i++)
{
printf("input the %dth process's information:\n",i+1);
scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].serviceti
me);
}
}
void Print(sjf *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N)
{int k;
printf("run order:");
printf("%s",p[0].name);
for(k=1;k<N;k++)
{printf("-->%s",p[k].name);
}
printf("\nthe process's information:\n");【高中政治短作业优先法是华罗庚统筹算法的变异】
printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tdqzz\n"); for(k=0;k<=N-1;k++)
{ printf("%s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t%-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);
}
}
//pai xu
void sort(sjf *p,int N)
{
for(int i=0;i<=N-1;i++)
for(int j=0;j<=i;j++)
if(p[i].arrivetime<p[j].arrivetime)
{
sjf temp;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
//yun xing jieduan
void deal(sjf *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N)
{ int k;
for(k=0;k<=N-1;k++)
{
if(k==0)
{
p[k].starttime=p[k].arrivetime;
p[k].finishtime=p[k].arrivetime+p[k].servicetime;} else
{
p[k].starttime=p[k-1].finishtime;
p[k].finishtime=p[k-1].finishtime+p[k].servicetime;}
}
for(k=0;k<=N-1;k++)
{
p[k].zztime=p[k].finishtime-p[k].arrivetime; p[k].dqzztime=p[k].zztime/p[k].servicetime;
}
}
void sjff(sjf *p,int N)
短作业优先调度算法
学 院 计算机科学与技术 专 业 学 号 学 生 姓 名 指导教师姓名
2014-3-18
目录
一、 实验题目............................................................................................................
二、 课程设计的目的................................................................................................
三、 设计内容............................................................................................................
四、 设计要求............................................................................................................
五、 主要数据结构及其说明....................................................................................
六、 程序运行结果....................................................................................................
七、 源程序文件........................................................................................................
八、 实验体会............................................................................................................ 九 参考文献………………………………………………………………………………………………………
实验题目
采用短作业优先算法的进程调度程序
课程设计的目的
操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动
手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。
进一步巩固和复习操作系统的基础知识。
培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。
提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
设计内容
设计并实现一个采用短作业优先算的进程调度算法演示程序
设计要求
1. 每一个进程有一个PCB,其内容可以根据具体情况设定。
2. 进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定
3. 可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、进程优先级的初始化
4. 可以在运行中显示各进程的状态:就绪、执行 (由于不要求设置互斥资源与进程间同步关系,故只有两种状态)
5. 具有一定的数据容错性
主要数据结构及其说明
算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。优点是SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。缺点是该算法对长作业不利;完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业游戏那调度。
该程序定义了一个进程数据块(struct spf),该数据块有进程名(name)、到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时间(finishtime)、周转时间(zztime)、带权周转时间(dqzztime)。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间-到达时间;带权周转时间=周转时间/服务时间;(第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间)。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁(如果服务时间相同则看它们的到达时间,到达时间短的先执行);如果到达时间和服务时间相同,则按先来先服务算法执行。
程序运行结果
1 进入操作界面如下
2输入进程的数目【高中政治短作业优先法是华罗庚统筹算法的变异】
3输入进程的信息
4 运行顺序
操作系统实验
题目:
实现非抢占式短作业优先调度算法
要求:
1. 系统共有100个随机到达的作业。要求为每个作业设定到达时间和需要运行的时间。
2. 按照短作业优先进行调度,直到所有作业完成。
3. 计算每个作业的周转时间,计算平均周转时间。
提交报告
1. 实验报告打印稿(参照学校有关报告格式)。
2. 刻录一张光盘。光盘内容:用学号+姓名为每个同学建立目录,文件包括报告的电子版,
程序源代码。
一、主要数据结构及其说明
算法的基本概念和原理:本次课程设计主要是采用短作业优先算法进程的进程调度过程。短作业优先调度算法,是指对短作业或短进程优先调度的算法。他们可以分别用于作业调度和进程调度,短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行。而短进程优先调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给他,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再度重新调度。本程序采用了非抢占式短作业优先调度。而非抢占式这种方式,一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才再把处理机分配给其它进程,决不允许某进程抢占已经分配出去的处理机。这种调度方式的优点是实现简单,系统开销小,适用于大多数的批处理系统环境。但它难以满足紧急任务的要求——立即执行,因而可能造成难以预料的后果。因此,在要求比较严格的实时系统中,不宜采用这种调度方式。本课程设计主要是在满足要求多道单处理机的情况下进行短作业的优先调度。
算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作
业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。优点是SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。缺点
是该算法对长作业不利;完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业游戏那调度。
该程序定义了一个进程数据块(struct Process_),该数据块有进程名(name)、到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时间(finishtime)、周转时间(zztime)、带权周转时间(dqzztime)、执行顺序(order)。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间+到达时间;带权周转时间=周转时间/服务时间;(第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间)。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁(如果服务时间相同则看它们的到达时间,到达时间短的先执行);如果到达时间和服务时间相同,则按先来先服务算法执行。
二、程序运行结果
1 进入操作界面如下
2输入进程的信息
3 各时刻进程的状态
4 进程信息
5 平均带权周转时间界面
三、流程图
本次课程设计主要是通过比较各个进程的优先级以及各进程所需要占用的CPU时间来确定哪个作业优先运行,短作业优先调度算法除了能保证优先级更高的作业优先运行外,还能使相同优先级的前提下,所需CPU时间最短的那个作业优先运行,次外,本次课程设计还增加了阻塞时间和被阻塞时间来对个进程的运行加以控制。 此次课程设计的总体流程图如下:
上一篇:数学古典概率公式
下一篇:汕头二模答案2016