【问题标题】:Measuring a process context switch测量进程上下文切换
【发布时间】:2015-02-20 08:35:18
【问题描述】:

我正在创建一个 C 程序来测量项目的进程切换,但我遇到了一些困难。我使用的方法是创建 2 个管道,父管道和子管道。父级将一个字节写入其管道,然后读取子管道,理论上强制控制子管道。子 e 读取父管道并将一个字节写入子管道。

这是我的问题:

  1. 进程实际上并没有被强制切换。如果我使用睡眠而不是上述方法,那么它们会切换,但我试图不使用睡眠。我如何强制他们切换?

  2. 我正在使用 CLOCK_MONOTONIC 进行测量,但无法确定在哪里开始和停止它。无论我把它们放在哪里,我都会不断收到垃圾值(假设我在每个过程中都放了一个:从一个开始,在另一个停止)。我把时钟放在哪里?

感谢您的帮助。

【问题讨论】:

  • 在信号量上阻止父级。

标签: c operating-system pipe fork


【解决方案1】:
  1. 确保选择无缓冲 i/o。否则 read 和 write 在返回之前等待更多字符,即使只请求一个字节。

  2. 在程序开始时记录 CLOCK_MONOTONIC 并从所有后续时间戳中减去它。通常 CLOCK_MONOTONIC 实现为自系统启动以来的时间。如果您显示您的代码,建议将测量放在哪里会更容易。

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 2016-07-04
    • 1970-01-01
    • 2017-09-09
    • 2011-07-27
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多