《操作系统》课程实验报告实验名称:时间片轮转调度算法
班级:****************
学号:*************
姓名:**************
指导老师:***************
成绩:
一、实验目的:
1、测试数据可以随即输入或从文件中读入。
2、必须要考虑到进程的到达时间
3、最终能够计算每一个进程的周转时间的带权周转时间。
4、时间片大小可以不为1,但至少实现时间片大小为1的RR调度。
二、实验内容:
模拟实现时间片轮转调度算法,具体如下:
设置进程体:进程名,进程的到达时间,服务时间,,进程状态(W——等待,R ——运行,F——完成),进程间的链接指针
进程初始化:由用户输入进程名、服务时间进行初始化,同时,初始化进程的状态为W。
显示函数:在进程调度前、调度中和调度后进行显示。
排序函数:对就绪状态的进程按照进入就绪队列的时间排序,新到达的进行应优先于刚刚执行过的进程进入就绪队列的队尾。
调度函数:每次从就绪队列队首调度优一个进程执行,状态变化。并在执行一个时间片后化,服务时间变化,状态变化。当服务时间为0时,状态
变为F。
删除函数:撤销状态为F的进行。
三、实验代码
#include
#include
#include
typedefstruct PCB2
{
char name[10];//进程名
int runtime;//要求运行时间
intfrist;//定义优先数
char zhuangtai; //定义状态,R为就绪,F为完成
};
structshijian {//定义时间片的结构体
char name; //定义进程名
intdaodatime;// 到达时间
intfuwutime; //服务时间
intshengyutime;//剩余时间
char *state;//所处状态
structshijian *next;
};
structshijian *time()
{
inta,i;
structshijian *head, *rear,*p,*q,*t;//定义队首、队尾、P是队尾指针、Q是队首指针和执行时间
head=rear=NULL;//初始化队首和队尾为空
printf("请输入进程数目:");
scanf("%d",&a);