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

当前位置:首页 > 使用动态优先权的进程调度算法的模拟实验

使用动态优先权的进程调度算法的模拟实验

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 2:03:42

PCB *head; //head为就绪队列的头指针

PCB *run=NULL; //run为执行进程结点的指针 PCB *block=NULL; //block为阻塞进程的结点 PCB *temp;

printf(\请输入进程的个数:\scanf(\

head=CreatQueue(num); getchar(); temp=head;

while(temp!=NULL) { alltime+=temp->alltime; temp=temp->next; }

while(alltime > 0) { if(head!=NULL) { run=head; //把就绪队列中的第一个进程取出来执行 head=head->next; //就绪队列的头指针指向下一个结点 strcpy(run->state,\ //状态改为执行 run->next=NULL;

/*显示状态*/

printf(\ //显示执行进程 printf(\ //显示就绪进程 temp=head;

while(temp!=NULL) { printf(\ temp=temp->next; }

printf(\

printf(\ //显示阻塞进程 if(block!=NULL) { printf(\ } printf(\ printf(\=======\\n\ printf(\STARTBLOCK BLOCKTIME STATE\\n\ printf(\%d %d %d %d %d %s\\n\

state); temp=head; while(temp!=NULL) { printf(\%d %d %d %d %d %s\\n\time,temp->state); temp=temp->next; } if(block!=NULL) { printf(\%d %d %d %d %d %s\me,block->state); } printf(\ printf(\=======\\n\ /*显示状态*/ 1

/*改变优先数*/

run->priority-=3; //执行进程的优先数减3 temp=head;

while(temp!=NULL) //就绪进程的优先数加1 { temp->priority+=1; temp=temp->next; }

/*改变优先数*/

/*改变执行进程的有关参数*/

run->cputime+=1; //执行进程的已占用CPU时间加1 run->alltime-=1; //还需要的CPU时间减1 if(run->alltime!=0) { if(run->startblock > 0) //如果该进程会被阻塞 { run->startblock-=1; //执行完一个时间片后,开始阻塞的时间减

if(run->startblock==0) //如果阻塞的时间到了 { block=run; //执行转阻塞 strcpy(block->state,\ //状态转阻塞 alltime--; printf(\

continue; } } strcpy(run->state,\ //状态转就绪 head=InsertQueue(head,run); //执行转就绪 run=NULL; }

/*改变执行进程的有关参数*/ alltime--; } else {

/*显示状态*/ printf(\ //显示执行进程 printf(\ //显示就绪进程 printf(\ //显示阻塞进程 if(block!=NULL) { printf(\ } printf(\ printf(\=======\\n\ printf(\STARTBLOCK BLOCKTIME STATE\\n\ if(block!=NULL) { printf(\%d %d %d %d %d %s\me,block->state); } printf(\ printf(\=======\\n\

/*显示状态*/ }

/*改变阻塞进程的有关参数*/

if(block!=NULL) //如果有阻塞进程 { block->blocktime-=1; //被阻塞的时间减1 if(block->blocktime==0) //如果被阻塞的时间到了 { strcpy(block->state,\ //状态转就绪

}

}

}

}

head=InsertQueue(head,block); //阻塞转就绪 block=NULL;

/*改变阻塞进程的有关参数*/ getchar();

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

PCB *head; //head为就绪队列的头指针 PCB *run=NULL; //run为执行进程结点的指针 PCB *block=NULL; //block为阻塞进程的结点 PCB *temp; printf(\请输入进程的个数:\scanf(\head=CreatQueue(num); getchar(); temp=head; while(temp!=NULL) { alltime+=temp->alltime; temp=temp->next; } while(alltime > 0) { if(head!=NULL) { run=head;

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