实验报告材料一(进程调度算法).doc

实验报告材料一(进程调度算法).doc

ID:55917051

大小:104.00 KB

页数:11页

时间:2020-06-14

实验报告材料一(进程调度算法).doc_第1页
实验报告材料一(进程调度算法).doc_第2页
实验报告材料一(进程调度算法).doc_第3页
实验报告材料一(进程调度算法).doc_第4页
实验报告材料一(进程调度算法).doc_第5页
资源描述:

《实验报告材料一(进程调度算法).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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。