gpt4 book ai didi

c++ - 我将如何实现 FCFS 处理器调度模拟器?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:32:16 24 4
gpt4 key购买 nike

我有一个结构 vector ,结构看起来像这样:

struct myData{
int ID;
int arrivalTime;
int burstTime;
};

用这些数据填充我的 vector 后:

1 5 16
4 7 12
3 12 4
2 7 8

其中每一行都是一个单独的结构 ID(任意,不表示到达顺序)、arrivalTime 和 burstTime,我将如何使用“for”或“while”循环遍历我的 vector 索引并计算数据我可以打印出这样的东西的方法吗?

Time 0  Processor is Idle
Time 5 Process 1 starts running
Time 21 Process 2 is running
Time 29 Process 4 is running
Time 41 Process 3 is running

我认为我可以做到的方法是让一个整数跟踪当前时间(当前时间是已经运行的进程的突发时间的总和)但我似乎无法弄清楚一种计算空闲时间(当处理器没有做任何事情并且新任务尚未到达时)以及跟踪其他数字的算法。为了简单起见,我只是决定当两个进程同时到达时,我将处理 ID 号较小的进程。我知道我没有在这里放太多代码来演示我想做什么,但我希望我已经解释得很清楚了。我正在寻找解决此问题的伪代码算法,但我不会拒绝已编码的内容(在 C++ 中?)。

作为附加说明,如果我无法清楚地表达我如何访问我的数据,则:

cout << structVector[0].ID << "\n";
cout << structVector[0].arrivalTime << "\n";
cout << structVector[0].burstTime << "\n";

打印出来

1
5
16

如果您对伪代码或实际代码有任何帮助,我们将不胜感激!!!多次阅读这篇文章后,我意识到我对这个问题的回答非常笼统,但我希望得到一些帮助,只是了解如何计算这些数据。

最佳答案

首先,根据到达时间对 vector 进行排序。然后下面的代码将完成您正在寻找的东西。

int i = 0, time = 0;

while (i < vec.size())
{
if (vec[i]. arrivalTime > time)
cout << "Time " << time << "process is idle";

time += vec[i].arrivalTime;
cout << "Time " << time << " Process " << vec[i].ID << " is running" << endl;

time += vec[i].burstTime;

i++;
}

关于c++ - 我将如何实现 FCFS 处理器调度模拟器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com