处理器优先级调度模拟算法
来源:互联网 发布:js find class 编辑:程序博客网 时间:2024/05/22 01:36
</pre><pre name="code" class="cpp">#include "stdio.h"#include<stdlib.h>#include<conio.h>#define getpch(type)(type*)malloc(sizeof(type))#define NULL 0struct pcb{char name[10];char state; //状态 w为等待,r是准备状态int super; // 优先级,数字越大优先级越小int ntime; //所需时间struct pcb *link; //指向下一个进程的指针}*ready=NULL,*p; //p是当前进程typedef struct pcb PCB;//进程显示函数,显示当前函数void disp(PCB *pr){printf("\nqname\tstate\tsuper\tntime\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->super);printf("|%d\t",pr->ntime);printf("\n");} //进程优先级排列函数void sort(){PCB *first,*second;int insert=0; //插入标记if((ready==NULL)||((p->super)<=(ready->super))) //p的优先级高{p->link=ready; //ready插在p后面ready=p; }else //p的优先级小于ready{first=ready;second=first->link;while(second!=NULL) //循环比较p和second的优先级,遇到比p低的,p插到它前面{if((p->super)<(second->super)) //p优先级比second高,插到second前{p->link=second;first->link=p;second=NULL; //为了跳出循环insert=1;}else //p优先级不高于second ,first和second向后移{first=first->link; second=second->link; }}if(insert==0) //循环后还没插入过(insert=0时),证明p优先级最低,插到队尾{first->link=p; //此时first是队尾p->link=NULL;}}}//进程控制块函数void input(){int i;int num=5; //5个进程for(i=0;i<num;i++){printf("\n进程号No.%d",i+1);p=getpch(PCB);printf("\n输入进程名:");scanf("%s",p->name);printf("输入优先级数:");scanf("%d",&p->super);printf("输入运行时间:");scanf("%d",&p->ntime);printf("\n");p->state='w';p->link=NULL;sort();}}//进程撤销函数void destroy(){p->state='e';printf("\n进程[%s]已完成,\n",p->name);free(p);}//进程就绪函数void running(){p->ntime--;p->super++;}//进程查看函数void check(){PCB *pr,*e;printf("\n***********当前正运行的进程是:%s",p->name);disp(p);pr=ready;printf("\n***********当前就绪的队列为:\n");while(pr!=NULL){pr->state='w';disp(pr);pr=pr->link;}running();if(p->ntime==0){destroy();}else{sort();}}void main(){int h=0;char ch;input();while(ready!=NULL){p=ready;ready=p->link;ch=getchar();h++; //运行次数printf("\nThe excute number:%d\n",h);p->state='r';check();printf("\n按任意键继续。。。。。");ch=getchar();}printf("\n\n进程已经完成。\n");ch=getchar();}
说实话,真不知道操作系统这课上的是神马,这个实验作业(优先级进程调度算法)真没想法,网上找不到实验要求一模一样的,狠了狠心,去了图书馆找,找来的根本有些问题也不是那么符合实验要求。。。。然后又狠了狠心,改了成了我想要的,其实还可以有些改进些地方,比如可以加个结束进程的队列什么的,,原谅我是个又笨又懒惰的人。
0 0
- 处理器优先级调度模拟算法
- 操作系统处理器调度算法c++模拟
- 单处理器进程调度算法的模拟
- cpu优先级调度算法和时间片算法模拟程序
- 操作系统进程调度模拟程序 基于优先级调度和时间片轮转调度算法
- 单处理器调度算法
- 进程优先级调度算法
- 优先级调度算法(PSA)
- 优先级调度算法
- nachos 优先级调度算法
- 模拟操作系统优先级调度进程
- 基于优先级抢占和周期调度的进程调度算法的模拟程序设计
- 单处理器调度算法学习
- 处理器调度及其相关算法
- 时间片轮转算法和优先级调度算法 C语言模拟实现
- 时间片轮转算法和优先级调度算法 C语言模拟实现
- 单处理器进程调度算法模拟,FCFS,RR(q=1),SPN,SRT,HRRN1
- 多优先级队列调度算法
- The connection to adb is down, and a severe error has ocurred
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现
- 中华藏獒网已开始测试运营,欢迎獒园入驻!
- SVN提交文件报错或者从svn加载项目报错的解决方案
- jquery公告栏
- 处理器优先级调度模拟算法
- java调用存储过程和事务
- POJ 1131-Octal Fractions(高精度)
- Axure怎样制作内部框架
- 初探screen
- Service生命周期
- GitHub详细教程
- 揭开linux内核中container_of的神秘面纱
- Node.js调试技巧