资源描述:
《实验报告材料一(进程调度算法).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、师大学计算机信息工程学院学生实验报告专业12级物联网班严超学号1208067042日期2014/05/8课程名称操作系统教程实验室名称W4313实验名称进程调度算法指导教师练兴成绩1、实验目的用代码实现模拟操作系统的进程调度,以加深对进程的概念及进程调度算法的理解2、实验原理和容(1)先来先服务(FCFS)调度算法:从“就绪队列”中选择一个最先进入队列的进程,为它分配处理器,使之开始运行。(2)优先数调度算法:根据进程的情况或要求赋予进程一个优先级,进程运行过程中优先级不再改变。每次调度时,就绪队列中优先级最高的进程被率先调度,同级的采用先来先服务(FCFS
2、)。3、实验步骤进程调度算法:(1)编写进程控制块数据结构(2)统一按照FCFS调度算法创建队列(3)在FCFS调度算法中,将就绪队列队首进程调入执行,如果在队列中存在到达时间小于等于当前时间的结点,将该结点的状态设为就绪状态。如果当前进程执行完了,就将其状态改为完成状态,并将其插入到队尾。(4)在优先级调度算法中,将就绪队列队首进程调入执行,如果在队列中存在到达时间小于等于当前时间的结点,将该结点的状态设为就绪状态,并对队列中的结点按优先级数的大小进行排序(队首除外)。如果当前进程执行完了,就将其状态改为完成状态,并将其插入到队尾。(5)输出运行后的结果,
3、如周转时间和带权周转时间。4、程序及运行结果(或实验数据记录及分析)进程调度算法:本次实验让我更加明白进程调度的概念,更加了解进程调度的工作原理。在前期,我是直接将结果显示出来,后来,我又在原有的基础上加了显示每一时刻队列的信息。在编写此代码过程中遇到很多问题,例如指针问题,指针指来指去,总是指错地址。具体代码:#include#include#defineMAX1000typedefstructprogress{intID;//进程名charstate;//进程状态intsuper;//优先数intarrive_tim
4、e;//到达时间intserve_time;//服务时间structprogress*next;}node;node*sortFCFS(node*head,node*q){node*p,*pre;intdone=0;if((head==NULL)
5、
6、((q->arrive_time)<(head->arrive_time)))/*到达时间最先者,插入队首*/{q->next=head;head=q;}else/*进程比较到达时间,插入适当的位置中*/{p=head;pre=p->next;while(pre!=NULL){if((q->arrive_time
7、)<(pre->arrive_time))/*若插入进程比当前进程到达时间小,*/{/*插入到当前进程前面*/q->next=pre;p->next=q;pre=NULL;done=1;}else{p=p->next;pre=pre->next;}}if(done==0)p->next=q;}returnhead;}/*函数功能:创建单链表参数:空返回值:指向节点的指针head*/node*create(){node*head;node*p,*q;intx,count=0;head=NULL;printf("tt请输入进程名【输入-1结束】:");w
8、hile(scanf("%d",&x)!=EOF&&x!=-1){p=(node*)malloc(sizeof(node));printf("tt请输入优先级数【优先数高者优先】:");scanf("%d",&p->super);printf("tt请输入到达时间【到达时间不得小于0】:");scanf("%d",&p->arrive_time);printf("tt请输入服务时间【服务时间必须大于0】:");scanf("%d",&p->serve_time);p->ID=x;p->state='w';p->next=NULL;head=sor
9、tFCFS(head,p);printf("tt请输入进程名(输入-1结束):");}returnhead;}/*函数功能:输出单链表参数:指向节点的指针head返回值:空*/voidprint(node*head){node*p;printf("t
10、--------------------------结点信息情况--------------------------
11、");printf("tt
12、进程名
13、优先级数
14、到达时间
15、服务时间
16、状态
17、");p=head;while(p){printf("tt
18、%8d
19、%8d
20、%8d
21、%8d
22、
23、%8c
24、",p->ID,p->super,p->ar