监控 wwnr

  • 名称:wwrn - 未运行时唤醒

  • 类型:每任务确定性自动机

  • 作者:Daniel Bristot de Oliveira <bristot@kernel.org>

描述

这是一个每任务采样监控器,定义如下

             |
             |
             v
  wakeup   +-------------+
+--------- |             |
|          | not_running |
+--------> |             | <+
           +-------------+  |
             |              |
             | switch_in    | switch_out
             v              |
           +-------------+  |
           |   running   | -+
           +-------------+

该模型存在缺陷,原因是任务可以在处理器上运行,而无需将其设置为 RUNNABLE 状态。想象一下一个即将休眠的任务

1:      set_current_state(TASK_UNINTERRUPTIBLE);
2:      schedule();

然后想象一个中断(IRQ)发生在第一行和第二行之间,唤醒了任务。砰,唤醒将在任务运行时发生。

  • 那么,我们为什么需要这个模型呢?

  • 为了测试反应器。

规范

Grapviz Dot 文件位于 tools/verification/models/wwnr.dot