- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现作业调度算法先来先服务最短作业最短剩余时间
PAGE1 / NUMPAGES7
0956104 朱文君 操作系统 上机报告
一、实验目的:
1.学习处理器各种调度算法的基本思想;
2.通过上机实习,编写程序实现处理器的调度加深对各种算法的理解。
二、实验内容:
1.实验平台:Microsoft Visual C++ 6.0编程环境、Microsoft Office Word软件平台;
2.用C语言编程实现处理器的调度算法:
①先来先服务算法
②最短作业优先算法
③最短剩余时间优先算法;
三、实验步骤:
(一)先来先服务算法
1.说明:先来先服务算法(First Come First Served,FCFS)按照作业进入系统后备作业队列的先后次序来挑选作业,先进入系统的作业将优先被挑选进入主存,创建用户进程,分配所需资源,然后,移入就绪队列。
2.算法实现:#includestdio.h
void main()
{
int i,a,T=0,N,add;
float sum=0;
printf(输入进程数:);
scanf(%d,N);
for(i=1;i=N;i++)
{
printf(\n第%d个进程所需的时间:,i);
scanf(%d,a);
T=T+a;
sum+=T;
printf(\n是否有新的进程进入,输入新的进程数:);
scanf(%d,add);
N=N+add;
}
printf(\n T=%f,sum/N);
}
3.运行结果演示:
(二)最短作业优先算法
1.说明:最短作业优先算法(Shortest Job First,SFJ)以进入系统的作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。
2.算法实现:
#includestdio.h
int De_a(int x,int y,int a[])
{
int i;
if(x==y)
a[x]=0;
else
{
for(i=x;iy;i++)
{
a[i]=a[i+1];
}
a[i]=0;
}
return 1;
}
void main()
{
int N,M,i,j,k,add,flag,a[1000]={0};
float T=0.000,W=0.000,sum=0;
printf(输入进程数:);
scanf(%d,N);
for(i=1;i=N;i++)
{
printf(\n第%d个进程所需的时间:,i);
scanf(%d,a[i]);
}
M=N;
for(i=1;i=N;i++)
{
a[0]=a[1];
for(j=1;j=M;j++)
{
if(a[0]=a[j])
{
a[0]=a[j];
flag=j;
}
}
T=T+(float)a[flag];
sum+=T;
W=W+(float)T/a[flag];
printf( %f ,W);
De_a(flag,M,a);
printf(\n是否有新的进程进入,输入新的进程数:);
scanf(%d,add);
for(k=1;k=add;k++)
{
printf(\n第%d个进程所需的时间:,i);
scanf(%d,a[k+M-1]);
}
N=N+add;
M=M+add-1;
}
printf(平均作业周转时间T=%f\n,sum/N);
printf(平均带权作业周转时间W=%f\n,W/N);
}
3.运行结果演示:
(三)最短剩余时间优先算法
1.说明:最短剩余时间优先算法(Shortest Remaining Time First,SRTF)即当前某进程/线程正在运行,如果有新进程/线程移入就绪队列,若它所需要的CPU运行时间比当前运行进程/线程所需要的剩余CPU时间还短,抢占式最短作业优先算法强行剥夺当前执行者的控制权,调度新进程/线程执行。
2.算法实现:
#includestdio.h
#define N 100
void main()
{
int n,j,k,i,sum=0,flag=1,q,m,x;//sum时间总和
char p;
struct
{
int arrivetime;
int cputime;
int resttime;
}process[N]={{100,100,100},{100,100,100},{100,100,100},{100,100,100},{100,100,100},{100,100,100}};
printf(输入
您可能关注的文档
最近下载
- (2024秋新改)苏教版一年级数学上册《练习五》PPT课件.pptx VIP
- 红色简约大气实用公司介绍产品简介企业宣传模板.ppt
- 2024年中国能源建设集团投资有限公司第一批社会招聘(48人)笔试备考试题及答案解析.docx
- 四新安全教育培训试题及答案.doc
- 城市地下管网建设实施方案.docx
- 【公开课】什么是美术作品+课件-高中美术湘美版(2019)美术鉴赏.pptx VIP
- 2021-2022学年天津部分区高三上学期期末(下学期期初)考试英语试题及答案.pdf
- 中国民航国内航空资料汇编:航路通则.pdf
- 英语-浙江省精诚联盟2024学年高一第一学期10月联考试题和答案.docx
- 个人理财 补充版平时作业.docx
文档评论(0)