欢迎来到天天文库
浏览记录
ID:10866737
大小:57.50 KB
页数:7页
时间:2018-07-08
《进程调度模拟算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程计算机操作系统原理实验名称进程调度模拟算法院系计算机科学与技术专业班级计0804姓名李超学号200807010409实验日期2011年05月11日实验报告日期2011年05月11日1.内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程;2.要求:①进程数不少于5个;②进程调度算法任选;可以用动态优先数加时间片轮转法实现进程调度,每运行一个时间片优先数减3;③用C语言编程;④程序运行时显示进程调度过程。3.步骤:①设计PCB及其数据结构:进程标识数:ID进程优先数:PRIORITY(优先数越大,优先级越高)进程已占用
2、时间片:CPUTIME,每得到一次调度,值加1;进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0)进程队列指针:NEXT,用来将PCB排成队列进程状态:STATE(一般为就绪,可以不用)②设计进程就绪队列及数据结构;③设计进程调度算法,并画出程序流程图;④设计输入数据和输出格式;结构格式:当前正运行的进程:0当前就绪队列:2,1,3,4⑤编程上机,验证结果。4.提示:假设调度前,系统中有5个进程,其初始状态如下:ID01234PRIORITY93830290可否考虑用数组或链表去实
3、现CPUTIME00000ALLTIME32634STATEreadyreadyreadyreadyready①以时间片为单位调度运行;②每次调度ALLTIME不为0,且PRIORITY最大的进程运行一个时间片;③上述进程运行后其优先数减3,再修改其CPUTIME和ALLTIME,重复②,③④直到所有进程的ALLTIME均变为0。5.书写实验报告①实验题目;②程序中所用数据结构及说明;③清单程序及描述;④执行结果。#include"stdio.h"#include#include#defi
4、negetpch(type)(type*)malloc(sizeof(type))#defineNULL0structpcb//定义进程控制块PCB{charname[10];charstate;intsuper;intruntime;intwaittime;structpcb*link;}*ready,*p;//*ready=NULL,*p;//typedefstructpcbPCB;voidsort()//建立对进程进行优先级排列函数{//PCB*first,*second;pcb*first,*second;intins
5、ert=0;if((ready==NULL)
6、
7、((p->super)>(ready->super)))//优先级最大者,插入队首{p->link=ready;ready=p;}else//进程比较优先级,插入适当的位置中{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super))//若插入进程比当前进程优先数大{p->link=second;first->link=p;second=NULL;insert=1;//插入到当
8、前进程前面}else{first=first->link;second=second->link;}}if(insert==0)first->link=p;}return;}voidsortruntime()//运行时间处理函数{//PCB*first,*second;pcb*first,*second;intinsert=0;if((ready==NULL)
9、
10、((p->runtime)<(ready->runtime)))//处理时间少的插入前边{p->link=ready;ready=p;}else//进程处理时间比较插
11、入合适的位置,插入适当的位置中{first=ready;second=first->link;while(second!=NULL){if((p->runtime)<(second->runtime))//处理时间少的插入前边{p->link=second;first->link=p;second=NULL;insert=1;//插入到当前进程前面}else{first=first->link;second=second->link;}}if(insert==0)first->link=p;}return;}sortwaitt
12、ime()//等待时间处理函数{//PCB*first,*second;pcb*first,*second;intinsert=0;if((ready==NULL)
13、
14、((p->waittime)>(ready->waittime)))//等待时间长的插入到当前队列前面{p-
此文档下载收益归作者所有