gpt4 book ai didi

使用 ANSI C 计算先到先服务的等待时间

转载 作者:行者123 更新时间:2023-11-30 18:02:04 25 4
gpt4 key购买 nike

在 Linux 环境下用 ANSI C 编写 CPU 调度程序时,我无法计算每个排队进程的等待时间。基本上,我需要用 4 个 cpu 运行 20+ 个进程,并测量每个进程花费的时间、平均花费的时间、CPU 消耗等。

这是我尝试编码的过程的类比:

Click me for the image

我画的图像是为了简化我的问题......但这是先到先服务的 CPU 调度程序,计数器 A 是 CPU 突发,计数器 B 是设备突发,第 1 行是就绪队列,第 2 行是设备队列...

到目前为止,我可以将任务输出到数组中,但是对于我的作业,我需要找出每个人等待的时间、每个进程的周转时间以及他们的平均值次。

每个人的结构都有一个“arrivalTime”并且可以随时更改每个人结构体还有一个每个计数器所需时间的数组“timeRequired[]”,它是交替的,索引0用于计数器A,索引1用于计数器B,索引2又用于A。每个 person 结构体都有一个 timeRequired[], "arrayPointer"的数组指针

我画的图说的是秒,但实际上是任何时间单位,一个整数,我真的不需要实际的时钟...

到目前为止我所做的是创建了 2 个线程函数,1 个用于 counterA,1 个用于 counterB,当A完成服务完队列中的一个人后,A会将这个人塞到B队列中,当B完成一个人时,它会将其塞到A行中。

我觉得一切都已经准备好了,但我真的不知道从现在开始我需要做什么来计算他们的等待时间......

或者有比使用线程更简单的解决方案吗?

教授给了我们2个文件

辅助方法

[http://pastebin.com/qF7nQsUR]

头文件

[http://pastebin.com/nQQNXnmq]

最佳答案

我会这样处理:

弄清楚如何对输入进行编码。该程序需要以某种方式提供输入“person 1 need...”。
这些定义可以起作用:

struct need {
int person_id, counter_id, duration
};
struct need needs[] = {
{ 1, COUNTER_A, 500 },
{ 1, COUNTER_B, 200 },
...
};

接下来,您需要随时跟踪每个人的位置。
这个结构可以描述一个人现在在做什么:

struct person_activity {
int person_id;
struct need *activity;
int start_time;
}

这些的数组可以描述每个人在任何平局中所做的事情

关于使用 ANSI C 计算先到先服务的等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9479296/

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