C++实现操作系统进程调度(时间片轮转法)

要求:
实现操作系统中的进程调度功能。采用时间片轮转法。

代码:

#include
#include
using namespace std;

//设置进程的数目
static int const MAXNUM=5;

//设计进程类
class process{
public:
    char processName;//进程的名称
    int totalTime;//进程需要的总时间
    int remainTime;//进程当下还需要的时间
    char status;//进程现在的状态
    //进程的构造函数
    process(char ProcessName,int TotalTime,int remainTime,char status);
    //进程的析构函数
    ~process();
};

//进程构造函数的实现
process::process(char ProcessName,int TotalTime,int RemainTime,char Status){
    processName=ProcessName;
    totalTime=TotalTime;
    remainTime=RemainTime;
    status=Status;
}
//进程析构函数的实现
process::~process(){

}


//输出函数,它只是简单的遍历进程数组,而不做任何修改
void Out(process(&processList)[MAXNUM]){
    cout<<"Name\t"<<"TotalTime\t"<<"RequireTime\t"<<"Status"<for(int i=0;icout<"\t"<"\t\t"<"\t\t"<//程序的关键
//改变进程的当下需要时间并做判断
void change(process(&processList)[MAXNUM]){

    for(int i=0;i//如果进程现在的状态是完成,那么就不应该再将其还需要时间减1
        if(processList[i].status!='F'){
            --processList[i].remainTime;
        }else{
            //当其状态为完成状态,跳过这一次修改
            continue;
        }   
        //判断修改以后的进程需要时间是不是小于等于0
        if(processList[i].remainTime<=0){
            //是的话,将其状态改为完成
            processList[i].status='F';
        }else
        {
            //否则它现在就在执行态
            processList[i].status='E';
        }
        //打印修改后的进程数组
        Out(processList);

        //对于那些获取一个时间片以后,仍旧没有完成的进程,应该讲其状态重新换为就绪
        if(processList[i].status!='F'){
            processList[i].status='W';
        }
    }   
}

int main(){
    //sum 记录需要使用多少次change()
    int sum=0;
    //初始化进程数组
    process processList[]={process('A',3,3,'W'),process('B',4,4,'W'),process('C',2,2,'W'),process('D',1,1,'W'),process('E',5,5,'W')};
    cout<<"时间片大小为1,状态位中:W代表就绪(wait),E代表正在执行(execute),F代表已经完成(finish)"<//打印最初的进程状态
    Out(processList);
    //计算总共需要调用函数的次数
    for(int i=0;i//调用函数
    for(int i=0;ireturn 0;
}

运行结果:
C++实现操作系统进程调度(时间片轮转法)_第1张图片
C++实现操作系统进程调度(时间片轮转法)_第2张图片
C++实现操作系统进程调度(时间片轮转法)_第3张图片
C++实现操作系统进程调度(时间片轮转法)_第4张图片

反思:
在写代码之前一定要想清楚问题是什么,这样可以走很少的弯路。本次的代码没有考虑到心性能因素,毕竟是小代码。大家要好好写代码呀!

你可能感兴趣的:(c++,操作系统,c++)