21xrx.com
2024-11-05 17:19:04 Tuesday
登录
文章检索 我的文章 写文章
使用FCFS调度算法实现C++作业调度算法
2023-07-03 00:03:28 深夜i     --     --
FCFS 调度算法 C++ 作业 实现

FCFS(First-Come-First-Serve)调度算法是一种常用的进程调度算法,其原理是按照作业提交的先后顺序,依次将作业放入CPU队列,并按照顺序执行。本文将介绍如何使用FCFS调度算法实现C++作业调度。

首先,我们需要定义两个类——Job和Schedule。Job类表示一个作业,包含作业名称、执行时间、完成时间、等待时间等属性,以及计算作业完成时间和等待时间的函数。Schedule类表示作业调度,包含一个Job类型的数组,以及将作业按照FCFS算法调度执行的方法。

下面是Job类的定义:


class Job{

public:

  char name;

  int executeTime;

  int finishTime;

  int waitTime;

  Job(char n, int e)

    name = n;

    executeTime = e;

    finishTime = 0;

    waitTime = 0;

  

  void calculate(int start){

    finishTime = start + executeTime;

    waitTime = start;

  }

};

Job类中的calculate函数用于计算作业的完成时间和等待时间,它的参数start表示作业开始执行的时间。

下面是Schedule类的定义:


class Schedule{

public:

  Job* jobArray;

  int jobNum;

  Schedule(int n){

    jobNum = n;

    jobArray = new Job[n];

  }

  void FCFS(){

    int start = 0;

    for (int i = 0; i < jobNum; i++){

      jobArray[i].calculate(start);

      start = jobArray[i].finishTime;

    }

  }

};

Schedule类中的FCFS函数用于按照FCFS算法调度作业,它的实现步骤是依次计算每个作业的完成时间和等待时间,start变量表示上一个作业结束的时间,初始值为0。

最后,我们在主函数中创建一个Schedule类的实例,并利用该实例的jobArray属性存储作业。然后调用FCFS函数按照FCFS算法调度作业。

下面是完整的代码实现:


#include<iostream>

using namespace std;

class Job{

public:

  char name;

  int executeTime;

  int finishTime;

  int waitTime;

  Job(char n, int e)

    name = n;

    executeTime = e;

    finishTime = 0;

    waitTime = 0;

  

  void calculate(int start){

    finishTime = start + executeTime;

    waitTime = start;

  }

};

class Schedule{

public:

  Job* jobArray;

  int jobNum;

  Schedule(int n){

    jobNum = n;

    jobArray = new Job[n];

  }

  void FCFS(){

    int start = 0;

    for (int i = 0; i < jobNum; i++){

      jobArray[i].calculate(start);

      start = jobArray[i].finishTime;

    }

  }

};

int main(){

  int n;

  cout << "Please input the number of jobs: ";

  cin >> n;

  Schedule schedule(n);

  cout << "Please input the execute time of each job:" << endl;

  for (int i = 0; i < n; i++){

    char name = 'A' + i;

    int executeTime;

    cout << name << ": ";

    cin >> executeTime;

    schedule.jobArray[i] = Job(name, executeTime);

  }

  schedule.FCFS();

  cout << "Result:" << endl;

  for (int i = 0; i < n; i++){

    cout << schedule.jobArray[i].name << " " << schedule.jobArray[i].waitTime << " " << schedule.jobArray[i].finishTime << endl;

  }

  return 0;

}

以上代码实现了使用FCFS调度算法实现C++作业调度算法的功能。用户可以输入作业数量,以及每个作业所需的执行时间。程序将输出每个作业的名称、等待时间和完成时间。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复