- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案
精彩文档
操作系统实验报告(二)
实验题目:进程调度算法
实验环境:C++
实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。
实验内容:编程实现如下算法:
1.先来先服务算法;
2.短进程优先算法;
3.时间片轮转调度算法。
设计分析:
程序流程图:
1.先来先服务算法
初始化PCB,输入进程信息
初始化PCB,输入进程信息
开始
各进程按先来先到的顺序进入就绪队列
就绪队列?
结束
运行
运行进程所需CPU时间
取消该进程
2.短进程优先算法
3.时间片轮转调度算法
实验代码:
先来先服务算法
#include iostream.h
#define n 20
typedef struct
{
?int id;????????? //进程名
?int atime;???????? //进程到达时间
?int runtime;?????? //进程运行时间
}fcs;
void main()
{
?int amount,i,j,diao,huan;
??? fcs f[n];
?cout请输入进程个数:endl;
?cinamount;
?for(i=0;iamount;i++)
?{
? cout请输入进程名,进程到达时间,进程运行时间:endl;
? cinf[i].id;
? cinf[i].atime;
? cinf[i].runtime;
??}
?for(i=0;iamount;i++)???????? //按进程到达时间的先后排序
?{?????????????????????????????? //如果两个进程同时到达,按在屏幕先输入的先运行
? for(j=0;jamount-i-1;j++)
? {? if(f[j].atimef[j+1].atime)
?? {diao=f[j].atime;
? ??f[j].atime=f[j+1].atime;
??? f[j+1].atime=diao;
??? huan=f[j].id;
??? f[j].id=f[j+1].id;
??? f[j+1].id=huan;
?? }
? }
?}
?for(i=0;iamount;i++)
?{
? cout进程:f[i].id从f[i].atime开始,在
?? f[i].atime+f[i].runtime之前结束。endl;
? f[i+1].atime=f[i].atime+f[i].runtime;
?}
}
短进程优先算法
#includestdio.h
#define n 5
#define num 5
#define max 65535
typedef struct pro
{ int PRO_ID;
int arrive_time;
int sum_time;
int flag;
}Pro;//整数排序
int bubble(int temp[])
{
int i,j,tem=0;
for(i=1;inum;i++)
{ int lastX=1;
for(j=0;jnum-i;j++)
{ if(temp[j]temp[j+1])
{ tem=temp[j];
temp[j]=temp[j+1];
temp[j+1]=tem;
lastX=0;
}
}
if(lastX==1) break;
}
return temp[0];
}
//进程排序
Pro bubble(Pro p[])
{
int i,j;
Pro temp={0};
Pro s[num];
for(i=0;inum;i++)
{ s[i]=p[i];
}
for(i=1;inum;i++)
{
int lastX=1;
for(j=0;jnum-i;j++)
{
if(s[j].sum_times[j+1].sum_time)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
lastX=0;
}
}
if(lastX==1) break;
}
return s[0];
}
void SPF(int p)
{
if(n0)
{
int i,j,k,l,tc=0;
Pro seq[n];
Pro temp_seq[n];
文档评论(0)