@TOC关于最短剩余时间优先算法-进程调度模拟
算法思想:在就绪队列中,在已到达的进程内挑选剩余执行时间最短的进程进行一个时间单元之后暂停,若有其它新的进程添加进来需要考虑是否剩余时间最短,若有进程比暂停进程更符合算法条件,则该进程抢占CPU进行一个时间片,直到所有的进程都进行完毕。
关于如何理解该算法:该算法是从SJF出发经过延申出来的算法,首先从SJF开始理解,若SRT中没有了时间单元(时间片),则与SJF是一致的。
struct s_pro
{
int PID; //进程PID
int arrivetime; //到达时间
int cputime; //已执行时间
int resttime; //剩余时间
// int zt; //状态【是否结束】
}; //s_ro 结构体类型
需要注意的是就绪队列使用的是可变长度数组vector .
数据结构定义
vector<s_pro>V_S; //创建私有容器
vector<s_pro>temp; //为已到达进程创建载体
具体程序实现如下:
/*
DATE:2019/12/10 8:40
by:LuoBin
function:SRT
*/
#include<iostream>
#include<vector>
#include<time.h>
#include<windows.h>
using namespace std;
// const int key=0; //设置每过两个时间单元,增加一个新进程
int pro_id=0; //设置进程PID
int xttime=0; //记录系统时间
struct s_pro{
int PID; //进程PID
int arrivetime; //到达时间
int cputime; //已执行时间
int resttime; //剩余时间
// int zt; //状态【是否结束】
}; //s_ro 结构体类型
class moni
{
public:
moni()
{
cout<<"moni constructed !"<<endl;
}
void create_s_pro();
void SRT();