如何实现FCFS处理器调度模拟器
How would I implement a FCFS processor scheduling simulator?
我有一个结构向量,结构看起来像这样:
struct myData{
int ID;
int arrivalTime;
int burstTime;
};
在用这个数据填充我的矢量之后:
1 5 16
4 7 12
3 12 4
2 7 8
如果每一行都是一个单独结构的ID(任意,不表示到达顺序)、arrivalTime和burstTime,我该如何使用"for"或"while"循环来遍历矢量的索引,并以打印出类似内容的方式计算数据?
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
任何关于伪代码或实际代码的帮助都将不胜感激!!!读了几遍这篇文章后,我意识到我对这个问题很一般,但我很想了解如何计算这些数据。
首先,根据到达时间对向量进行排序。然后,下面的代码将完成您要查找的内容。
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-预处理器常量..我做错了什么
- 预处理器:插入结构名称中的前一个行号
- 如何在c++中实现处理器调度模拟器
- C/C++预处理器是否可以检测一些编译器选项
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 在clang++预处理器中确定gcc工具链版本
- 不同/较旧的处理器运行c++代码的方式是否不同
- 用于交叉编译和CMake的预处理器宏的单元测试
- 有没有办法在从编译器获取参数时避免预处理器宏?
- 如何比较两个同名的预处理器宏?
- 从预处理器获取 Windows 版本(C++ Win32)
- 如何在 C++17 STL 并行算法中处理调度?
- 如何摆脱为条件编译定义预处理器宏的需要?
- C 预处理器 - 现有定义的预置路径
- VS2015 预处理器定义与点
- 无法使用迭代器标记调度实例化模板
- 不带预处理器的调用方法/文件的文件名/行号
- 如何实现FCFS处理器调度模拟器
- 为多处理器找到DAG的静态调度-库
- FCFS CPU调度程序在C++