云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 操作系统实验6

操作系统实验6

  • 62 次阅读
  • 3 次下载
  • 2025/7/5 0:54:39

ready = in; } else { while(fst->next != NULL) { fst = fst->next; } in ->next = fst ->next; fst ->next = in; } } void InsertFinish(PCB *in) /*将进程插入到完成队列尾部*/ { PCB *fst; fst = finish; if(finish == NULL) { in->next = finish; finish = in; } else { while(fst->next != NULL) { fst = fst->next; } in ->next = fst ->next; fst ->next = in; } } void PrioCreate() /*优先级调度输入函数*/ { PCB *tmp; int i; printf(\输入进程名字和进程所需时间:\\n\ for(i = 0;i < num; i++) { if((tmp = (PCB *)malloc(sizeof(PCB)))==NULL) { perror(\ exit(1); } scanf(\

getchar(); /*吸收回车符号*/ scanf(\ tmp ->cputime = 0; tmp ->state ='W'; tmp ->prio = 50 - tmp->needtime; /*设置其优先级,需要的时间越多,优先级越低*/ tmp ->round = 0; tmp ->count = 0; InsertPrio(tmp); /*按照优先级从高到低,插入到就绪队列*/ } } void TimeCreate() /*时间片输入函数*/ { PCB *tmp; int i; printf(\输入进程名字和进程时间片所需时间:\\n\ for(i = 0;i < num; i++) { if((tmp = (PCB *)malloc(sizeof(PCB)))==NULL) { perror(\ exit(1); } scanf(\ getchar(); scanf(\ tmp ->cputime = 0; tmp ->state ='W'; tmp ->prio = 0; tmp ->round = 2; /*假设每个进程所分配的时间片是2*/ tmp ->count = 0; InsertTime(tmp); } } void Priority() /*按照优先级调度,每次执行一个时间片*/ { int flag = 1; GetFirst(); while(run != NULL) /*当就绪队列不为空时,则调度进程如执行队列执行*/ { Output(); /*输出每次调度过程中各个节点的状态*/ while(flag) { run->prio -= 3; /*优先级减去三*/ run->cputime++; /*CPU时间片加一*/

run->needtime--;/*进程执行完成的剩余时间减一*/ if(run->needtime == 0)/*如果进程执行完毕,将进程状态置为F,将其插入到完成队列*/ { run ->state = 'F'; run->count++; /*进程执行的次数加一*/ InsertFinish(run); flag = 0; } else /*将进程状态置为W,入就绪队列*/ { run->state = 'W'; run->count++; /*进程执行的次数加一*/ InsertTime(run); flag = 0; } } flag = 1; GetFirst(); /*继续取就绪队列队头进程进入执行队列*/ } } void RoundRun() /*时间片轮转调度算法*/ { int flag = 1; GetFirst(); while(run != NULL) { Output(); while(flag) { run->count++; run->cputime++; run->needtime--; if(run->needtime == 0) /*进程执行完毕*/ { run ->state = 'F'; InsertFinish(run); flag = 0; } else if(run->count == run->round)/*时间片用完*/ { run->state = 'W'; run->count = 0; /*计数器清零,为下次做准备*/ InsertTime(run); flag = 0;

} } flag = 1; GetFirst(); } } 运行结果: 实 验 心 得 教师评阅意见 教师签字

签字日期 年 月 日

搜索更多关于: 操作系统实验6 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

ready = in; } else { while(fst->next != NULL) { fst = fst->next; } in ->next = fst ->next; fst ->next = in; } } void InsertFinish(PCB *in) /*将进程插入到完成队列尾部*/ { PCB *fst; fst = finish; if(finish == NULL) { in->next = finish; finish = in; } el

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com