时间片轮转调度算法实验报告

时间片轮转调度算法实验报告

ID:9048420

大小:6.75 MB

页数:14页

时间:2018-04-15

时间片轮转调度算法实验报告_第1页
时间片轮转调度算法实验报告_第2页
时间片轮转调度算法实验报告_第3页
时间片轮转调度算法实验报告_第4页
时间片轮转调度算法实验报告_第5页
资源描述:

《时间片轮转调度算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验概述:【实验目的及要求】用C语言编程实现时间片轮转调度算法【实验原理】基于时间片轮转调度算法思想用C语言编程实现【实验环境】(使用的软件)VisualC++6.0实验内容:本实验模拟在单处理机情况下处理机调度,用C语言编程实现先来先服务和最短作业优先调度算法。【实验方案设计】时间片大小固定,由用户输入。进程个数由用户输入。a.每个进程用一个PCB表示。PCB包括进程名,到达时间,运行时间,剩余时间,进程状态,链接指针。其中,进程名,到达时间和运行时间由用户输入,剩余时间的初值等于运行时间。为简单起见,进程状态设为三种:就绪,运行和完成。链接指针指向下一个进程的PCB;b.按照进程到达的先

2、后顺序排成一个队列。设置一个队头指针指向队列中第一个进程,并设置一个队尾指针指向队列中的最后一个进程;c.执行调度时,先选择队首的第一个进程运行。另外设置一个指向当前运行进程的指针;d.由于本实验是模拟实验,所以对选中进程并不实际启动运行,而只是执行:l被选中进程的状态置为运行态;l被选中进程的剩余时间减去时间片大小;l按照队列的顺序依次输出每个进程的进程名,到达时间,运行时间,剩余时间,进程状态。用这三个操作来模拟进程的一次运行;d.进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针,以指示应运行进程。同时还应判断该进程的剩余时间是否为0。如果不为0

3、,则等待下一轮的运行;如果该进程的剩余时间为0,则将该进程的状态置为完成态,并退出队列;f.若处于就绪态的进程不为空,则重复第d步和第e步直到所有进程都运行完为止。【实验过程】(实验步骤、记录、数据、分析)测试用例1:屏幕显示:Pleaseinputtheprocessname,arrivetimeandruntime输入:121232343屏幕显示:Pleaseinputtheslice1屏幕输出结果:********************************************namearriverunreststate1

4、210running2322ready3433ready********************************************namearriverunreststate2321running3433ready********************************************namearriverunreststate2321ready3432running********************************************namearriverunreststate2320running3432ready*************

5、*******************************namearriverunreststate3431running********************************************namearriverunreststate3430running********************************************测试数据2:231123542测试数据3:【结论】(结果)测试数据1的运行结果(截图):测试数据2的运行结果:测试数据3的运行结果:源程序代码:#include"stdio.h"#include"stdlib.h"structs

6、tud{intname;intarrive;intrun;intrest;char*state;structstud*next;};structstud*create(){inta,i;structstud*head,*rear,*p,*q,*t;head=rear=NULL;printf("Pleaseinputtheprocessnumber:");scanf("%d",&a);printf("Pleaseinputtheprocessname,arrivetimeandruntime:Forexample:121");for(i=0;i

7、ud*)malloc(sizeof(structstud));scanf("%d%d%d",&p->name,&p->arrive,&p->run);p->rest=p->run;p->state="ready";if(rear==NULL){head=p;p->next=NULL;rear=p;}else{t=NULL;q=head;while(q&&q->arrivearrive){t=q;q=q

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

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

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