计算机操作系统实验报告
-------进程调度算法模拟
姓名:王子强
学号:07160330
计算机 0702 班
一、 题目要求
1.所有就绪进程按 FCFS 排成一个队列,总是把处理机分配给队首的进程
2.模拟短进程调度算法,要求可以自动产生或者手动输入若干进程的名字、到达时间、运行时间;输
出中间每个进程的运行状态,最后产生完成时间、周转时间、带权周转时间的汇总清单
二、 程序结构设计
a) 数据结构定义
class Process //进程类
{
public:
int pId; //进程 ID
string pName; //进程名称
int comeTime; //进程入队时间
int runTime; //进程运行需要时间
int priority; //进程优先级
Process * next; //链表指针
}
class Plist{ //进程链表类
public:
int lId; //进程链表 ID
string lName; //进程链表名称
Process head; //进程链表头
int num; //进程链表中结点个数
public:
void add(Process * p); //向链表尾中加入结点 P
void addByRunTime(Process * p); //向链表中插入结点,以进程运行时间递增顺序排序
void del(int id); //根据 ID 删除链表中的结点
void produceRandom(int n,int style); //随机向链表中插入 N 个进程结点,插入函数根据
Style 值来确定,
//style=0 用 add()函数,style=1 采用 addByRunTime()
void produceByUser(int n,int style); //以用户输入信息向链表中插入 N 个进程结点,插入函
数根据 Style 值来确定,
//style=0 用 add()函数,style=1 采用 addByRunTime()
void run(int style); //以现有链表中的结点模拟 style 相对应的调度算法
//style=0 模拟 FCFS,style=1 模拟最短时间片调度算法
Process * findByComeTime(int comeTime); //返回链表中进入时间小于等于 comeTime 的第一个结
点的指针
};
b) 程序结构图
选择模拟算
法
初始化进
程链表
Plist
程序开始
设置 style=0
FCFS 算法
设置 style=0
最短时间片算
法
根据用户的选择向链
表中插入进程结点
以链表中的结点来模拟用户
选择的调度算法输出结果
程序结束