监视器 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,唤醒了该任务。嘣,唤醒将在任务运行时发生。

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

  • 为了测试反应器。

规范

tools/verification/models/wwnr.dot 中的 Grapviz Dot 文件