← Documents Documentation/trace/rv/runtime-verification.rst GitHub 원문 ↗

Linux 6.18.37 · Tracing

런타임 검증

Linux Runtime Verification의 실제 실행 trace 기반 검증, RV monitor와 reactor 구조, online·offline 처리 방식, tracefs 사용자 인터페이스를 설명합니다.

Source pathDocumentation/trace/rv/runtime-verification.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

runtime-verification.rst:1-231

Linux Runtime Verification의 실제 실행 trace 기반 검증, RV monitor와 reactor 구조, online·offline 처리 방식, tracefs 사용자 인터페이스를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ====================
2 Runtime Verification
3 ====================
4
5 Runtime Verification (RV) is a lightweight (yet rigorous) method that
6 complements classical exhaustive verification techniques (such as *model
7 checking* and *theorem proving*) with a more practical approach for complex
8 systems.
9
10 Instead of relying on a fine-grained model of a system (e.g., a
11 re-implementation at instruction level), RV works by analyzing the trace of the
12 system's actual execution, comparing it against a formal specification of
13 the system behavior.
14
15 The main advantage is that RV can give precise information on the runtime
16 behavior of the monitored system, without the pitfalls of developing models
17 that require a re-implementation of the entire system in a modeling language.
18 Moreover, given an efficient monitoring method, it is possible to execute an
19 *online* verification of a system, enabling the *reaction* for unexpected
20 events, avoiding, for example, the propagation of a failure on safety-critical
21 systems.
22
23 Runtime Monitors and Reactors
24 =============================
25
26 A monitor is the central part of the runtime verification of a system. The
27 monitor stands in between the formal specification of the desired (or
28 undesired) behavior, and the trace of the actual system.
29
30 In Linux terms, the runtime verification monitors are encapsulated inside the
31 *RV monitor* abstraction. A *RV monitor* includes a reference model of the
32 system, a set of instances of the monitor (per-cpu monitor, per-task monitor,
33 and so on), and the helper functions that glue the monitor to the system via
34 trace, as depicted below::
35
36 Linux +---- RV Monitor ----------------------------------+ Formal
37 Realm | | Realm
38 +-------------------+ +----------------+ +-----------------+
39 | Linux kernel | | Monitor | | Reference |
40 | Tracing | -> | Instance(s) | <- | Model |
41 | (instrumentation) | | (verification) | | (specification) |
42 +-------------------+ +----------------+ +-----------------+
43 | | |
44 | V |
45 | +----------+ |
46 | | Reaction | |
47 | +--+--+--+-+ |
48 | | | | |
49 | | | +-> trace output ? |
50 +------------------------|--|----------------------+
51 | +----> panic ?
52 +-------> <user-specified>
53
54 In addition to the verification and monitoring of the system, a monitor can
55 react to an unexpected event. The forms of reaction can vary from logging the
56 event occurrence to the enforcement of the correct behavior to the extreme
57 action of taking a system down to avoid the propagation of a failure.
58
59 In Linux terms, a *reactor* is an reaction method available for *RV monitors*.
60 By default, all monitors should provide a trace output of their actions,
61 which is already a reaction. In addition, other reactions will be available
62 so the user can enable them as needed.
63
64 For further information about the principles of runtime verification and
65 RV applied to Linux:
66
67 Bartocci, Ezio, et al. *Introduction to runtime verification.* In: Lectures on
68 Runtime Verification. Springer, Cham, 2018. p. 1-33.
69
70 Falcone, Ylies, et al. *A taxonomy for classifying runtime verification tools.*
71 In: International Conference on Runtime Verification. Springer, Cham, 2018. p.
72 241-262.
73
74 De Oliveira, Daniel Bristot. *Automata-based formal analysis and
75 verification of the real-time Linux kernel.* Ph.D. Thesis, 2020.
76
77 Online RV monitors
78 ==================
79
80 Monitors can be classified as *offline* and *online* monitors. *Offline*
81 monitor process the traces generated by a system after the events, generally by
82 reading the trace execution from a permanent storage system. *Online* monitors
83 process the trace during the execution of the system. Online monitors are said
84 to be *synchronous* if the processing of an event is attached to the system
85 execution, blocking the system during the event monitoring. On the other hand,
86 an *asynchronous* monitor has its execution detached from the system. Each type
87 of monitor has a set of advantages. For example, *offline* monitors can be
88 executed on different machines but require operations to save the log to a
89 file. In contrast, *synchronous online* method can react at the exact moment
90 a violation occurs.
91
92 Another important aspect regarding monitors is the overhead associated with the
93 event analysis. If the system generates events at a frequency higher than the
94 monitor's ability to process them in the same system, only the *offline*
95 methods are viable. On the other hand, if the tracing of the events incurs
96 on higher overhead than the simple handling of an event by a monitor, then a
97 *synchronous online* monitors will incur on lower overhead.
98
99 Indeed, the research presented in:
100
101 De Oliveira, Daniel Bristot; Cucinotta, Tommaso; De Oliveira, Romulo Silva.
102 *Efficient formal verification for the Linux kernel.* In: International
103 Conference on Software Engineering and Formal Methods. Springer, Cham, 2019.
104 p. 315-332.
105
106 Shows that for Deterministic Automata models, the synchronous processing of
107 events in-kernel causes lower overhead than saving the same events to the trace
108 buffer, not even considering collecting the trace for user-space analysis.
109 This motivated the development of an in-kernel interface for online monitors.
110
111 For further information about modeling of Linux kernel behavior using automata,
112 see:
113
114 De Oliveira, Daniel B.; De Oliveira, Romulo S.; Cucinotta, Tommaso. *A thread
115 synchronization model for the PREEMPT_RT Linux kernel.* Journal of Systems
116 Architecture, 2020, 107: 101729.
117
118 The user interface
119 ==================
120
121 The user interface resembles the tracing interface (on purpose). It is
122 currently at "/sys/kernel/tracing/rv/".
123
124 The following files/folders are currently available:
125
126 **available_monitors**
127
128 - Reading list the available monitors, one per line
129
130 For example::
131
132 # cat available_monitors
133 wip
134 wwnr
135
136 **available_reactors**
137
138 - Reading shows the available reactors, one per line.
139
140 For example::
141
142 # cat available_reactors
143 nop
144 panic
145 printk
146
147 **enabled_monitors**:
148
149 - Reading lists the enabled monitors, one per line
150 - Writing to it enables a given monitor
151 - Writing a monitor name with a '!' prefix disables it
152 - Truncating the file disables all enabled monitors
153
154 For example::
155
156 # cat enabled_monitors
157 # echo wip > enabled_monitors
158 # echo wwnr >> enabled_monitors
159 # cat enabled_monitors
160 wip
161 wwnr
162 # echo '!wip' >> enabled_monitors
163 # cat enabled_monitors
164 wwnr
165 # echo > enabled_monitors
166 # cat enabled_monitors
167 #
168
169 Note that it is possible to enable more than one monitor concurrently.
170
171 **monitoring_on**
172
173 This is an on/off general switcher for monitoring. It resembles the
174 "tracing_on" switcher in the trace interface.
175
176 - Writing "0" stops the monitoring
177 - Writing "1" continues the monitoring
178 - Reading returns the current status of the monitoring
179
180 Note that it does not disable enabled monitors but stop the per-entity
181 monitors monitoring the events received from the system.
182
183 **reacting_on**
184
185 - Writing "0" prevents reactions for happening
186 - Writing "1" enable reactions
187 - Reading returns the current status of the reaction
188
189 **monitors/**
190
191 Each monitor will have its own directory inside "monitors/". There the
192 monitor-specific files will be presented. The "monitors/" directory resembles
193 the "events" directory on tracefs.
194
195 For example::
196
197 # cd monitors/wip/
198 # ls
199 desc enable
200 # cat desc
201 wakeup in preemptive per-cpu testing monitor.
202 # cat enable
203 0
204
205 **monitors/MONITOR/desc**
206
207 - Reading shows a description of the monitor *MONITOR*
208
209 **monitors/MONITOR/enable**
210
211 - Writing "0" disables the *MONITOR*
212 - Writing "1" enables the *MONITOR*
213 - Reading return the current status of the *MONITOR*
214
215 **monitors/MONITOR/reactors**
216
217 - List available reactors, with the select reaction for the given *MONITOR*
218 inside "[]". The default one is the nop (no operation) reactor.
219 - Writing the name of a reactor enables it to the given MONITOR.
220
221 For example::
222
223 # cat monitors/wip/reactors
224 [nop]
225 panic
226 printk
227 # echo panic > monitors/wip/reactors
228 # cat monitors/wip/reactors
229 nop
230 [panic]
231 printk
232

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

런타임 검증 개요

1-22

Runtime Verification(RV)은 model checking이나 theorem proving 같은 고전적인 전수 검증 기법을 보완하는 가볍지만 엄밀한 방법으로, 복잡한 시스템에 더 실용적으로 적용할 수 있다.

RV는 instruction 수준에서 시스템을 다시 구현한 세밀한 model에 의존하지 않는다. 실제 시스템 실행 trace를 분석하고 이를 시스템 동작의 formal specification과 비교한다.

주요 장점은 modeling language로 전체 시스템을 다시 구현할 때 생기는 문제 없이, 감시 대상의 runtime 동작에 관한 정확한 정보를 얻는다는 점이다.

효율적인 monitoring 방법이 있다면 system을 online으로 검증할 수 있다. 예상하지 못한 event에 즉시 reaction하여 safety-critical system에서 failure가 전파되는 일을 막을 수 있다.

RV와 전수 검증의 관점
방법검증 입력특징
Model checking / theorem proving세밀한 system model전수 검증이 가능하지만 복잡한 model 구축 필요
Runtime Verification실제 execution trace + formal specification실행 중 정확한 동작 정보와 reaction 제공

RV가 실제 실행을 어떻게 형식 명세와 결합하는지 요약한다.

====================
Runtime Verification
====================

Runtime Verification (RV) is a lightweight (yet rigorous) method that
complements classical exhaustive verification techniques (such as *model
checking* and *theorem proving*) with a more practical approach for complex
systems.

Instead of relying on a fine-grained model of a system (e.g., a
re-implementation at instruction level), RV works by analyzing the trace of the
system's actual execution, comparing it against a formal specification of
the system behavior.

The main advantage is that RV can give precise information on the runtime
behavior of the monitored system, without the pitfalls of developing models
that require a re-implementation of the entire system in a modeling language.
Moreover, given an efficient monitoring method, it is possible to execute an
*online* verification of a system, enabling the *reaction* for unexpected
events, avoiding, for example, the propagation of a failure on safety-critical
systems.

Runtime monitor와 reactor

23-76

monitor는 system runtime verification의 중심이다. 원하는 또는 원하지 않는 동작의 formal specification과 실제 system trace 사이에 위치한다.

Linux에서는 runtime verification monitor를 `RV monitor` 추상화 안에 캡슐화한다. RV monitor는 system reference model, per-CPU·per-task 등의 monitor instance 집합, trace를 통해 monitor와 system을 연결하는 helper function을 포함한다.

Linux RV monitor 구조
Linux kernel tracinginstrumentation이 system event를 전달
Monitor instance(s)reference model과 비교해 verification
Reference modelformal specification 제공
Reactiontrace output / panic / user-specified action

원문의 ASCII 개념도를 Linux realm과 formal realm 사이의 검증 및 reaction 흐름으로 다시 구성했다.

monitor는 system을 검증하고 감시하는 데 그치지 않고 unexpected event에 반응할 수 있다. reaction은 event 발생을 log하는 수준부터 올바른 동작을 강제하는 것, failure 전파를 막기 위해 system을 내리는 극단적인 동작까지 다양하다.

Linux에서 `reactor`는 RV monitor가 사용할 수 있는 reaction 방법이다. 모든 monitor는 기본적으로 자신의 동작을 trace output으로 제공해야 하며, 이것도 하나의 reaction이다. 사용자가 필요에 따라 활성화할 수 있는 추가 reaction도 제공된다.

reactor의 반응 수준
수준
관찰trace output 또는 event logging
강제correct behavior enforcement
차단panic 등으로 system을 내려 failure 전파 방지
확장user-specified reactor

위반 상황에 따라 관찰부터 system 보호까지 다른 강도의 reaction을 선택할 수 있다.

runtime verification 원리와 Linux 적용에 관한 추가 자료로 Bartocci 외의 `Introduction to runtime verification`, Falcone 외의 RV tool taxonomy, Daniel Bristot de Oliveira의 2020년 박사 학위 논문을 제시한다.

Runtime Monitors and Reactors
=============================

A monitor is the central part of the runtime verification of a system. The
monitor stands in between the formal specification of the desired (or
undesired) behavior, and the trace of the actual system.

In Linux terms, the runtime verification monitors are encapsulated inside the
*RV monitor* abstraction. A *RV monitor* includes a reference model of the
system, a set of instances of the monitor (per-cpu monitor, per-task monitor,
and so on), and the helper functions that glue the monitor to the system via
trace, as depicted below::

 Linux   +---- RV Monitor ----------------------------------+ Formal
  Realm  |                                                  |  Realm
  +-------------------+     +----------------+     +-----------------+
  |   Linux kernel    |     |     Monitor    |     |     Reference   |
  |     Tracing       |  -> |   Instance(s)  | <-  |       Model     |
  | (instrumentation) |     | (verification) |     | (specification) |
  +-------------------+     +----------------+     +-----------------+
         |                          |                       |
         |                          V                       |
         |                     +----------+                 |
         |                     | Reaction |                 |
         |                     +--+--+--+-+                 |
         |                        |  |  |                   |
         |                        |  |  +-> trace output ?  |
         +------------------------|--|----------------------+
                                  |  +----> panic ?
                                  +-------> <user-specified>

In addition to the verification and monitoring of the system, a monitor can
react to an unexpected event. The forms of reaction can vary from logging the
event occurrence to the enforcement of the correct behavior to the extreme
action of taking a system down to avoid the propagation of a failure.

In Linux terms, a *reactor* is an reaction method available for *RV monitors*.
By default, all monitors should provide a trace output of their actions,
which is already a reaction. In addition, other reactions will be available
so the user can enable them as needed.

For further information about the principles of runtime verification and
RV applied to Linux:

  Bartocci, Ezio, et al. *Introduction to runtime verification.* In: Lectures on
  Runtime Verification. Springer, Cham, 2018. p. 1-33.

  Falcone, Ylies, et al. *A taxonomy for classifying runtime verification tools.*
  In: International Conference on Runtime Verification. Springer, Cham, 2018. p.
  241-262.

  De Oliveira, Daniel Bristot. *Automata-based formal analysis and
  verification of the real-time Linux kernel.* Ph.D. Thesis, 2020.

Online RV monitor

77-117

monitor는 offline과 online으로 분류한다. offline monitor는 event가 발생한 뒤 system이 생성한 trace를 처리하며, 보통 영구 저장 장치에서 실행 trace를 읽는다. online monitor는 system 실행 중에 trace를 처리한다.

online monitor가 event processing을 system 실행에 붙여 monitoring 동안 system을 막으면 synchronous이다. 반대로 asynchronous monitor는 system 실행과 분리되어 동작한다.

각 유형에는 장점이 있다. offline monitor는 다른 machine에서 실행할 수 있지만 log를 file로 저장하는 작업이 필요하다. synchronous online 방식은 violation이 발생한 바로 그 순간 반응할 수 있다.

monitor 실행 방식 비교
유형처리 방식장점과 비용
Offlineevent 뒤 저장된 trace 분석다른 machine에서 분석 가능, log 저장 비용 필요
Online synchronousevent 처리와 system 실행을 결합위반 순간 reaction 가능
Online asynchronousmonitor 실행을 system에서 분리system blocking을 피하지만 즉시성·동기화 고려 필요

처리 시점과 system 결합도에 따른 장단점을 정리한다.

event 분석 overhead도 중요하다. system의 event 생성 빈도가 같은 system에서 monitor가 처리할 수 있는 속도보다 빠르면 offline 방법만 가능하다.

반대로 event 하나를 monitor가 직접 처리하는 비용보다 event tracing 자체의 비용이 더 크다면 synchronous online monitor의 overhead가 더 낮다.

De Oliveira, Cucinotta, De Oliveira의 2019년 연구는 `Deterministic Automata`에 기반한 deterministic automaton model에서 kernel 안의 synchronous event processing이 같은 event를 trace buffer에 저장하는 것보다 overhead가 낮음을 보였다. userspace 분석을 위한 trace 수집 비용은 이 비교에 포함하지도 않았다.

이 결과가 in-kernel online monitor interface 개발의 동기가 되었다. automaton으로 Linux kernel 동작을 modeling하는 추가 자료로 PREEMPT_RT Linux kernel의 thread synchronization model 논문을 제시한다.

online 검증 선택 기준
event rate > in-system processing capacityoffline trace 분석
trace 저장 비용 > direct event handlingsynchronous in-kernel monitor
violation 즉시 reaction 필요online synchronous

event 빈도와 처리 비용을 기준으로 viable한 monitor 방식을 선택한다.

Online RV monitors
==================

Monitors can be classified as *offline* and *online* monitors. *Offline*
monitor process the traces generated by a system after the events, generally by
reading the trace execution from a permanent storage system. *Online* monitors
process the trace during the execution of the system. Online monitors are said
to be *synchronous* if the processing of an event is attached to the system
execution, blocking the system during the event monitoring. On the other hand,
an *asynchronous* monitor has its execution detached from the system. Each type
of monitor has a set of advantages. For example, *offline* monitors can be
executed on different machines but require operations to save the log to a
file. In contrast, *synchronous online* method can react at the exact moment
a violation occurs.

Another important aspect regarding monitors is the overhead associated with the
event analysis. If the system generates events at a frequency higher than the
monitor's ability to process them in the same system, only the *offline*
methods are viable. On the other hand, if the tracing of the events incurs
on higher overhead than the simple handling of an event by a monitor, then a
*synchronous online* monitors will incur on lower overhead.

Indeed, the research presented in:

  De Oliveira, Daniel Bristot; Cucinotta, Tommaso; De Oliveira, Romulo Silva.
  *Efficient formal verification for the Linux kernel.* In: International
  Conference on Software Engineering and Formal Methods. Springer, Cham, 2019.
  p. 315-332.

Shows that for Deterministic Automata models, the synchronous processing of
events in-kernel causes lower overhead than saving the same events to the trace
buffer, not even considering collecting the trace for user-space analysis.
This motivated the development of an in-kernel interface for online monitors.

For further information about modeling of Linux kernel behavior using automata,
see:

  De Oliveira, Daniel B.; De Oliveira, Romulo S.; Cucinotta, Tommaso. *A thread
  synchronization model for the PREEMPT_RT Linux kernel.* Journal of Systems
  Architecture, 2020, 107: 101729.

사용자 인터페이스와 사용 가능 항목

118-146

사용자 인터페이스는 의도적으로 tracing interface와 닮았으며 현재 `/sys/kernel/tracing/rv/`에 있다.

`available_monitors`를 읽으면 사용 가능한 monitor가 한 줄에 하나씩 표시된다.

# cat available_monitors
wip
wwnr

`available_reactors`를 읽으면 사용 가능한 reactor가 한 줄에 하나씩 표시된다.

# cat available_reactors
nop
panic
printk
RV 최상위 조회 파일
파일읽기 결과
`available_monitors`사용 가능한 monitor 이름을 한 줄씩 출력
`available_reactors``nop`, `panic`, `printk` 등 reactor를 한 줄씩 출력

현재 사용할 수 있는 monitor와 reaction 구현을 조회한다.

The user interface
==================

The user interface resembles the tracing interface (on purpose). It is
currently at "/sys/kernel/tracing/rv/".

The following files/folders are currently available:

**available_monitors**

- Reading list the available monitors, one per line

For example::

   # cat available_monitors
   wip
   wwnr

**available_reactors**

- Reading shows the available reactors, one per line.

For example::

   # cat available_reactors
   nop
   panic
   printk

enabled_monitors

147-170

`enabled_monitors`를 읽으면 활성화된 monitor가 한 줄에 하나씩 나온다. monitor 이름을 쓰면 활성화하고, `!` prefix를 붙인 이름을 쓰면 비활성화한다. file을 truncate하면 활성화된 모든 monitor를 비활성화한다.

# cat enabled_monitors
# echo wip > enabled_monitors
# echo wwnr >> enabled_monitors
# cat enabled_monitors
wip
wwnr
# echo '!wip' >> enabled_monitors
# cat enabled_monitors
wwnr
# echo > enabled_monitors
# cat enabled_monitors
#

둘 이상의 monitor를 동시에 활성화할 수 있다.

monitor 활성화 제어
echo NAME > 또는 >> enabled_monitorsmonitor 활성화
echo '!NAME' >> enabled_monitors해당 monitor 비활성화
echo > enabled_monitors모든 monitor 비활성화

write 방식에 따라 단일 추가, 단일 제거, 전체 제거를 구분한다.

**enabled_monitors**:

- Reading lists the enabled monitors, one per line
- Writing to it enables a given monitor
- Writing a monitor name with a '!' prefix disables it
- Truncating the file disables all enabled monitors

For example::

   # cat enabled_monitors
   # echo wip > enabled_monitors
   # echo wwnr >> enabled_monitors
   # cat enabled_monitors
   wip
   wwnr
   # echo '!wip' >> enabled_monitors
   # cat enabled_monitors
   wwnr
   # echo > enabled_monitors
   # cat enabled_monitors
   #

Note that it is possible to enable more than one monitor concurrently.

monitoring_on

171-182

`monitoring_on`은 monitoring 전체의 on/off switch이며 trace interface의 `tracing_on` switch와 비슷하다.

monitoring_on 동작
작업결과
`0` 쓰기monitoring 중지
`1` 쓰기monitoring 계속
읽기현재 monitoring 상태 반환

monitor 등록 상태를 유지한 채 event monitoring만 멈추거나 재개한다.

이 switch는 enabled monitor를 disable하지 않는다. system에서 받은 event를 per-entity monitor가 처리하는 동작만 멈춘다.

**monitoring_on**

This is an on/off general switcher for monitoring. It resembles the
"tracing_on" switcher in the trace interface.

- Writing "0" stops the monitoring
- Writing "1" continues the monitoring
- Reading returns the current status of the monitoring

Note that it does not disable enabled monitors but stop the per-entity
monitors monitoring the events received from the system.

reacting_on

183-188

`reacting_on`은 reaction 실행을 전체적으로 제어한다. `0`을 쓰면 reaction을 막고 `1`을 쓰면 허용하며, 읽으면 현재 reaction 상태를 반환한다.

reacting_on 동작
작업결과
`0` 쓰기reaction 억제
`1` 쓰기reaction 활성화
읽기현재 reaction 상태 반환

monitoring과 별개로 reactor 실행만 제어한다.

**reacting_on**

- Writing "0" prevents reactions for happening
- Writing "1" enable reactions
- Reading returns the current status of the reaction

monitors 디렉터리

189-204

각 monitor는 `monitors/` 안에 자신의 디렉터리를 가지며 monitor별 file이 그 안에 나타난다. `monitors/`는 tracefs의 `events` 디렉터리와 비슷하다.

# cd monitors/wip/
# ls
desc  enable
# cat desc
wakeup in preemptive per-cpu testing monitor.
# cat enable
0
monitor별 디렉터리
/sys/kernel/tracing/rv/monitors/MONITOR/
descmonitor 설명 조회
enable개별 monitor on/off
reactorsmonitor별 reaction 선택

최상위 monitor 이름 아래에서 설명과 활성 상태 및 reactor를 관리한다.

**monitors/**

Each monitor will have its own directory inside "monitors/". There the
monitor-specific files will be presented. The "monitors/" directory resembles
the "events" directory on tracefs.

For example::

   # cd monitors/wip/
   # ls
   desc  enable
   # cat desc
   wakeup in preemptive per-cpu testing monitor.
   # cat enable
   0

monitor별 파일과 reactor 선택

205-231

`monitors/MONITOR/desc`를 읽으면 해당 `MONITOR`의 설명을 보여 준다.

`monitors/MONITOR/enable`에 `0`을 쓰면 monitor를 비활성화하고 `1`을 쓰면 활성화한다. 읽으면 현재 monitor 상태를 반환한다.

`monitors/MONITOR/reactors`는 사용 가능한 reactor를 나열하고, 해당 monitor에 선택된 reaction은 `[]` 안에 표시한다. 기본값은 아무 동작도 하지 않는 `nop` reactor이다. reactor 이름을 쓰면 그 monitor에 해당 reactor를 활성화한다.

# cat monitors/wip/reactors
[nop]
panic
printk
# echo panic > monitors/wip/reactors
# cat monitors/wip/reactors
nop
[panic]
printk
monitor별 제어 파일
경로기능
`monitors/MONITOR/desc`설명 읽기
`monitors/MONITOR/enable``0` disable, `1` enable, 읽기로 상태 확인
`monitors/MONITOR/reactors`목록 조회와 선택; 선택 항목은 `[]` 표시

개별 monitor의 설명, 활성 상태, reaction을 독립적으로 관리한다.

**monitors/MONITOR/desc**

- Reading shows a description of the monitor *MONITOR*

**monitors/MONITOR/enable**

- Writing "0" disables the *MONITOR*
- Writing "1" enables the *MONITOR*
- Reading return the current status of the *MONITOR*

**monitors/MONITOR/reactors**

- List available reactors, with the select reaction for the given *MONITOR*
  inside "[]". The default one is the nop (no operation) reactor.
- Writing the name of a reactor enables it to the given MONITOR.

For example::

   # cat monitors/wip/reactors
   [nop]
   panic
   printk
   # echo panic > monitors/wip/reactors
   # cat monitors/wip/reactors
   nop
   [panic]
   printk