计算机操作系统调度算法实验代码,计算机操作系统 模拟调度算法实验报告.doc...

本文将详细介绍如何使用C语言实现先来先服务(FCFS)、短作业优先(SJF)和最高优先权优先(HPF)调度算法,通过实例展示它们的工作原理,并深入剖析各自优缺点,同时计算周转时间和带权周转时间,帮助理解调度算法在实际应用中的表现。
摘要由CSDN通过智能技术生成

实验二 调度算法的模拟实现

实验目的

加深对先来先服务算法,短作业优先算法,最高优先权优先调度算法等三种调度算法的理解

利用C语言编写算法,模拟实现先来先服务算法,短作业优先算法,最高优先权优先调度算法。

模拟三种调度算法,对比三种调度算法的优缺点,并计算平均周转时间和平均带权周转时间。

实验开发平台

Microsoft Visual C++ 6.0(使用C语言)

三个调度算法说明

先来先服务调度算法,是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度,就是每次从就绪队列中选择一个最先进入队列的进程,该算法比较有利于长作业,而不利于短作业。另处,FCFS调度算法对CPU繁忙型作业较有利,而不利于I/O繁忙作业。

短作业优先调度算法(SWF),是指对短作业或短进程优先调度的算法,是指分派CPU时,把CPU优先分给最短的作业。它的缺点是对长作业不利,不能保证及时处理解紧迫性的作业。

最高优先权优先调度算法,常用于批处理系统中,既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。它实现了一种较好的折衷,但每要进行高度之前,都须先做响应比的计算,这会增加系统开销。

实验源程序

#include

struct process

{

char name[10];

int dtime;

int ftime;

int youxian;

};

struct process pro[3];

struct process tempPro[3];

void fcfs()//先来先服务

{

//先对这些线程排序,使用冒泡法排序,从小到大

int i,j;

for (i=0;i<3-1;i++)

{

for (j=0;j<2-i;j++)

{

if (pro[j].dtime>pro[j+1].dtime)

{

tempPro[j]=pro[j];

pro[j]=pro[j+1];

pro[j+1]=tempPro[j];

}

}

}

}

void sjf()

//短作业优先

{

//使用冒泡法排序,从小到大

int i,j;

for (i=0;i<3-1;i++)

{

for (j=0;j<2-i;j++)

{

if (pro[j].ftime>pro[j+1].ftime)

{

tempPro[j]=pro[j];

pro[j]=pro[j+1];

pro[j+1]=tempPro[j];

}

}

}

}

void youxian()

//最高优先权优先,假定此处为优先数最大的进程优先服务

{ //使用冒泡法排序,从大到小

int i,j;

for (i=0;i<3-1;i++)

{

for (j=0;j<2-i;j++)

{

if (pro[j].youxian

{

tempPro[j]=pro[j];

pro[j]=pro[j+1];

pro[j+1]=tempPro[j];

}

}

}

}

void print()//输出进程名称

{

int i;

for (i=0;i<3;i++)

{

printf("%s\n",pro[i].name);

}

}

void main()

{

printf("请输入第一个进程的名字 到达时间 服务时间 优先数\n");

scanf("%s %3d %3d %3d",&pro[0].name,&pro[0].dtime,&pro[0].ftime,&pro[0].youxian);

printf("请输入第二个进程的名字 到达时间 服务时间 优先数\n");

scanf("%s %3d %3d %3d",&pro[1].name,&pro[1].dtime,&pro[1].ftime,&pro[1].youxian);

printf("请输入第三个进程的名字 到达时间 服务时间 优先数\n");

scanf("%s %3d %3d %3d",&pro[2].name,&pro[2].dtime,&pro[2].ftime,&pro[2].youxian);

printf("先来先服务调度执行顺序:\n");

fcfs();

print();

printf("短作业优先调度执行顺序:\n");

sjf();

print();

printf("最高优先权优先调度执行顺序:\n");

y

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值