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

当前位置:首页 > 进程调度算法模拟带答案版

进程调度算法模拟带答案版

  • 62 次阅读
  • 3 次下载
  • 2025/6/8 1:13:26

break; case 4:

printf(\对进程按响应比高优先调度。\\n\\n\ hrrn();

poutput();

break;

case 5:

printf(\进行时间片轮转调度。\\n\ rr();

poutput(); break; } }

int rr() /*轮转*/ {

float rr_time; /* */ int i,temp_counter=0; int run_begin_flag[MAX]={0};

/*循环变量、已经全部完成的进程数量、进程是否第一次运行用于计算进程的开始运行时间*/ float time_temp,rest_time[MAX]={0};

/*当前时间、被调度的进程还剩下多少时间没被执行*/

printf(\请输入时间片包含的单位时间个数:\\n\ scanf(\

time_temp=tasks[0]e_time; un_time; }

/*轮转调度*/

while (temp_counter

for(i=0;i

if(rest_time[i]<=rr_time) un_end_time=time_temp; }

else un_begin_time=time_temp;

rest_time[i]=0; temp_counter++;

tasks[i].order=temp_counter; tasks[i].run_flag=1;

if(tasks[i].run_flag==0) un_begin_time=time_temp;

run_begin_flag[i]=1;

/*如果开始第一次运行标志为0,记录开始运行时间、改变标记*/ }

tasks[i].run_end_time=tasks[i].run_begin_time+tasks[i].run_time; tasks[i].run_flag=1;

time_temp=tasks[i].run_end_time; number_schedul=i;

tasks[number_schedul].order=i+1; } return 0; }

/*非抢占式优先级调度,默认tasks[0]是最早到达的进程,进程已按到达先后顺序排成了队列。*/ int ps() {

float temp_time=0; int i=0,j;

int number_schedul,temp_counter; /*正在被调度执行的进程编号和已经调度完成的进程个数*/

int max_priority;

max_priority=tasks[i].priority; j=1;

/* 从从到达时间最早且相同的进程中遍历,查找第一个被调度的进程*/

while ((j

if (tasks[j].priority>tasks[i].priority) {

max_priority=tasks[j].priority; i=j; } j++; }

/*对第一个被调度的进程求相应的参数*/ number_schedul=i;

tasks[number_schedul].run_begin_time=tasks[number_schedul]e_time;

tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;

tasks[number_schedul].run_flag=1;

temp_time=tasks[number_schedul].run_end_time; tasks[number_schedul].order=1; temp_counter=1;

/*循环查找下一个被调度的进程,直到所有的tasks[j].run_flag ==1*/

while (temp_counter

max_priority=0; for(j=0;j

{ if((tasks[j]e_time<=temp_time)&&(!tasks[j].run_flag)) if (tasks[j].priority>max_priority) {

max_priority=tasks[j].priority; number_schedul=j; } }

/*对找到的下一个被调度的进程求相应的参数*/

tasks[number_schedul].run_begin_time=temp_time;

tasks[number_schedul].run_end_time=tasks[number_schedul].run_begin_time+tasks[number_schedul].run_time;

tasks[number_schedul].run_flag=1;

temp_time=tasks[number_schedul].run_end_time; temp_counter++;

tasks[number_schedul].order=temp_counter; } return 0; }

int sjf() /*非抢占式短作业优先,默认tasks[0]是最早到达的进程,进程已按到达先后顺序排成了队列 。*/ {

float temp_time=0; int i=0,j;

搜索更多关于: 进程调度算法模拟带答案版 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

break; case 4: printf(\对进程按响应比高优先调度。\\n\\n\ hrrn(); poutput(); break; case 5: printf(\进行时间片轮转调度。\\n\ rr(); poutput(); break; } } int rr() /*轮转*/ { float rr_time; /* */ int i,temp_counter=0; int run_begin_flag[MAX]={0}; /*循环变量、已经全部完

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价: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