操作系统处理器调度算法C程序Word文档下载推荐.docx

上传人:b****2 文档编号:1269145 上传时间:2023-04-30 格式:DOCX 页数:9 大小:16KB
下载 相关 举报
操作系统处理器调度算法C程序Word文档下载推荐.docx_第1页
第1页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第2页
第2页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第3页
第3页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第4页
第4页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第5页
第5页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第6页
第6页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第7页
第7页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第8页
第8页 / 共9页
操作系统处理器调度算法C程序Word文档下载推荐.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统处理器调度算法C程序Word文档下载推荐.docx

《操作系统处理器调度算法C程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统处理器调度算法C程序Word文档下载推荐.docx(9页珍藏版)》请在冰点文库上搜索。

操作系统处理器调度算法C程序Word文档下载推荐.docx

cmath>

usingnamespacestd;

intmain()

{

intn,a[100],b[100];

doubles[100],m[100],T=0,W=0;

cout<

<

"

请输入作业数:

endl;

cin>

>

n;

请分别输入各作业到达系统的时间:

for(inti=0;

i<

i++)

{

b[i];

}

请分别输入各作业所运行的时间:

for(i=0;

a[i];

s[0]=0;

s[i+1]=s[i]+a[i];

m[i+1]=(s[i+1]-b[i])/a[i];

T=T+s[i+1]-b[i];

W=W+m[i+1];

}

平均周转时间为:

T/n<

平均带权周转时间为:

W/n<

return0;

4.运行与测试

1.运行程序,输入作业数,如所示。

A1启动界面

2.输入各作业到达系统的时间,如所示。

A2输入各作业到达系统的时间

3.输入各作业所运行的时间,如所示。

A3输入各作业运行的时间

二、最短作业优先算法

1.程序简介

最短作业优先算法以进入系统的作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。

这是一种非剥夺式调度算法,能克服FCFS算法偏爱长作业的缺点,易于实现,但执行效率也不高。

2.分析

1.分两种情况来介绍这种算法,一是各作业到达系统的时间都相同,二是各作业到达系统的时间不同,且以第一个作业到达系统的时间为0作基础。

2.到达系统时间都相同的情况只要累积CPU运行的时间,最后加一个排序函数即可。

3.到达系统时间不相同的情况则是要在前面FCFS的基础上加一个排序函数即可。

4.注意本程序认为第一个作业完成后,其它作业都已经到达系统了。

3.详细设计

运行程序,输入作业数,如所示。

2.输入各作业所运行的时间,如所示。

A2输入各作业所运行的时间

3.输入各作业到达系统的时间,如所示。

A3输入各作业到达系统的时间

三、优先级调度算法

优先级调度算法根据确定的优先级来选取进程/线程,总是选择就绪队列中的优先级最高者投入运行。

本实验介绍的是非剥夺式优先级调度算法,如果在就绪队列中出现优先级更高的就让当前进程/线程继续运行,直到它结束或出现等待事件而主动让出处理器,再调度另一个优先级高的进程/线程运行。

1.先定义一个二维数组a[i][0]代表各作业的优先级,a[i][1]代表各作业运行的时间。

2.输入作业数。

3.根据排序函数得出作业调度顺序。

4.最后,累积得作业周转时间和带权周转时间后分别除以作业数即可得到平均作业周转时间和平均带权周转时间。

voidB(floata[][2],intsize)

{

floatt,p;

size;

for(intj=0;

j<

size-1;

j++)

if(a[j][0]>

a[j+1][0])

t=a[j][0];

a[j][0]=a[j+1][0];

a[j+1][0]=t;

p=a[j][1];

a[j][1]=a[j+1][1];

a[j+1][1]=p;

intmain(void)

floatn,a[100][2];

doubles[100][2],m[100][2],T=0,W=0;

请分别输入各作业优先级和所运行的时间:

cin>

a[i][0]>

a[i][1];

}B(a,n);

作业调度顺序为:

for(i=0;

cout<

a[i][0]<

a[i][1]<

"

;

s[0][1]=0;

s[i+1][1]=s[i][1]+a[i][1];

m[i+1][1]=s[i+1][1]/a[i][1];

T=T+s[i+1][1];

W=W+m[i+1][1];

}cout<

4.运行与测试

1.运行程序,输入作业数,如所示。

2.输入各作业优先级和所运行的时间,如所示。

A2输入各作业的优先级和所运行的时间

四、响应比最高者优先算法

响应比最高者优先算法是介乎这两种算法之间的一种折中的非剥夺式算法,既考虑作业的等待时间,又考虑作业的处理时间,这样既照顾短作业又不会使长作业的等待时间过长,有效地改进调度的性能。

HRRF算法的缺点是每次计算各道作业的响应比会导致一定时间的开销,其性能比SJF算法略差。

1.先定义一个二维数组a[i][0]代表各作业的等待时间,a[i][1]代表各作业运行的时间,a[i][2]代表响应比-1。

voidB(doublea[][3],intsize)

doublet,p,s;

for(inti=2;

for(intj=1;

if(a[j][2]<

a[j+1][2])

s=a[j][2];

a[j][2]=a[j+1][2];

a[j+1][2]=s;

doublen,a[100][3],s[100][3],m[100][3],T=0,W=0;

请分别输入各作业等待时间和所运行的时间:

for(i=1;

a[i][2]=(a[0][1]-a[i][0])/a[i][1];

B(a,n);

m[i+1][1]=(s[i+1][1]-a[i][0])/a[i][1];

T=T+s[i+1][1]-a[i][0];

3.输入各作业等待时间和所运行的时间,如所示。

A2输入各作业等待时间和所运行的时间

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2