本实验模拟了时间片轮转调度算法下的单处理机进程调度。
数据结构以进程控制块PCB为基本单位。
逻辑结构简单描述为,存在一个准备就绪的队列,用来组织PCB。
程序开始,需要输入运行时间片长度,再录入程序。程序需要数字编号和执行长度。
位于队列头的PCB出队,变为执行态,执行(与模拟的系统寄存器空间交互),执行完毕后,改为就绪态,再次加入队尾。
</pre><pre name="code" class="cpp">#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<Windows.h>
#include<conio.h>
//进程控制块数据类型
typedef struct pcb
{
int id; //进程号
int count; //进程工作量
char status; //进程状态(R和W和F)
int ax, bx, cx,dx; //进程现场信息,通用寄存器内容
int pc; //进程现场信息,程序计数器内容
int psw; //进程现场信息,程序状态字寄存器内容
struct pcb *next; //下一个进程控制块的位置
} PCB,*QueuePtr;
//就绪队列的指针
typedef struct
{
QueuePtr front;
QueuePtr rear;
} ReadyQueue;
//系统寄存器数据类型
typedef struct
{
int ID;
int COUNT;
char STATUES;
int AX,BX,CX,DX,PC,PSW;
} OsReg