文档库

最新最全的文档下载
当前位置:文档库 > 时间片轮转调度算法(vc版)

时间片轮转调度算法(vc版)

时间片轮转调度算法

设计目的:

熟悉各种作业/进程调度算法的原理。

设计要求:

用高级语言编写和调试多个实现不同的作业/进程调度算法的程序。

设计内容:

基于时间片的轮转调度的模拟。

设计一个系统,提供一个界面,供用户输入等待调度的作业信息,显示调度的结果。

//实验名称:时间片轮转调度算法

//实验日期:2008/07/16

//实验者:qhu-hh

//实验环境:Visual C++ 2008 ExPress Edition

//编程语言:C语言

//程序思想:先模拟建立进程就绪链表----置所有进程的到达时间Parrive_time均为0,依PCB链接顺序从第一个进程PCB开始,

////////////////使Pid依次为1,2,3,4……;就绪链表中进程的数量,由常量MAXSIZE 控制;////////////再模拟建立调度函数--------取表头PCB,修改进程执行时间,得到的新时间,即为剩余执行时间,当剩余时间小于或等于0

////////////////时,将此进程的PCB取出,依完成的先后次序链到完成链表中,记录当前完成进程的完成时间Pend_time,

////////////////同时修改就绪链表表头;

////////////最后计算和打印里程调度信息-----计算出各进程周转时间及所有进程的平均周转时间。

#include"stdio.h"

#include"malloc.h"

#define TIMESLICE 2//时间片;

#define MAXSIZE 4//就绪链中进程数量;

typedef struct PCB//定义进程控制块的信息结构;

{

int Pid;//进程标识号;

int Parrive_time;//进程到达时间;

int Pend_time;//进程结束时间;

int Pexe_time;//进程执行时间;

struct PCB *next;//链向一下进程;

}Node,*PNode;

PNode PCurrent=NULL;//定义全局变量,指向当前进程的PCB;

PNode PLast=NULL;//定义全局变量,指向上一进程PCB;

PNode PHead=NULL;//定义全局变量,指向第一个进程的PCB;

PNode PTail=NULL;//全局变量,指向就绪进程链的最后一个进程的PCB;