没有合适的资源?快使用搜索试试~ 我知道了~
CPU调度算法的模拟实现课程设计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 87 浏览量
2022-05-05
22:34:27
上传
评论
收藏 93KB DOC 举报
温馨提示
试读
17页
CPU调度算法的模拟实现课程设计.doc
资源推荐
资源详情
资源评论
设计 1 CPU 调度算法的模拟实现
一、设计目的
1、深入理解 CPU 调度的四种算法:先到先服务算法 FCFS、非抢占最短作业优
先算法 SJF、可抢占优先权调度算法 PRIOR、时间片轮转算法 RR。
2、利用程序设计语言编写算法,模拟实现先到先服务算法 FCFS、非抢占最短
作业优先算法 SJF、可抢占优先权调度算法 PRIOR、时间片轮转算法 RR。
3、针对模拟进程,利用 CPU 调度算法进行调度。
4、进行算法评价,计算平均周转时间和平均等待时间。
二、设计要求
1、调度所需的进程参数由输入产生:采用手工输入参数或产生随机数的方法。
2、针对各个进程模拟算法,输出进程调度结果,包括执行算法的等待时间和周
转时间。
3、根据调度结果对算法进行调试分析,纠正程序错误并对算法进行优化,总结
并输出算法评价指标。
三、设计说明(含系统框图和(或)主要算法的流程图)
(1) 优先权调度
#include "stdio.h"
#include "stdlib.h"
#define N 10
//#define M 10
typedef struct
{
int m;
//int flag;
int priority;//优先级顺序
float zhixing;
float zhouzhuan;
float dq_zhouzhuan;
}process;
//int flag=0;//标志已经执行个进程的个数
//float time=0;//当前共执行的时间
void main()
{
//int plag=0;
float time=0;
int n;
int i,j,temp;
process fcfs[N],*p[N],*q;
float time_zhouzhuan=0,wtime_zhouzhuan=0;
//输入
printf("请输入进程的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
fcfs[i].m=i+1;
//fcfs[i].linshi=0;
//fcfs[i].flag=0;
printf("请输入进程%d 所需的执行时间和进程的优先级:",fcfs[i].m);
scanf("%f %d",&fcfs[i].zhixing,&fcfs[i].priority);
}
printf("haha");
for(i=0;i<n;i++)
{
p[i]=(process*)malloc(sizeof(process));//分配空间
p[i]=&fcfs[i];
}
//按优先级别的排序
for(j=0;j<n-1;j++)
{
printf("ok");//有问题
temp=j;
for(i=j+1;i<n;i++)
{
printf("ky");
if(p[i]->priority>p[temp]->priority)
temp=i;
}
printf("#####");
q=p[j];//交换
p[j]=p[temp];
p[temp]=q;
}
printf("he");
//优先级算法
for(i=0;i<n;i++)
{
time+=p[i]->zhixing;
p[i]->zhouzhuan=time;
p[i]->dq_zhouzhuan=p[i]->zhouzhuan/p[i]->zhixing;
}
for(i=0;i<n;i++)
{
time_zhouzhuan+=p[i]->zhouzhuan;
wtime_zhouzhuan+=p[i]->dq_zhouzhuan;
}
time_zhouzhuan/=n;
wtime_zhouzhuan/=n;
//输出结果
printf("静态优先级算法的进程的执行顺序为:\n");
for(i=0;i<n;i++)
{
printf("%d ",p[i]->m);
}
printf("\n 平均周转时间为%f",time_zhouzhuan);
printf("\n 带权平均周转时间为%f",wtime_zhouzhuan);
} (2) FCFS 和 SJF 综合
#include "stdio.h"
#define getjcb(type) (type*)malloc(sizeof(type))
#define NULL 0
int n=0,time=0;float eti,ewi;
struct jcb{ char name[10]; /* 作业名 */
char state; /* 作业状态 */
int ts; /* 提交时间 */
float super; /* 优先权 */
int tb; /* 开始运行时间 */
int tc; /* 完成时间 */
float ti; /* 周转时间 */
float wi; /* 带权周转时间 */
int ntime; /* 作业所需运行时间 */
char resource[10]; /* 所需资源 */
struct jcb *link; /* 结构体指针 */
} *p,*q,*head=NULL;
typedef struct jcb JCB;
inital(){
剩余16页未读,继续阅读
资源评论
- fdse26792023-02-14资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
老帽爬新坡
- 粉丝: 79
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功