ps
Linuxプロセスのステータスコード(たとえば)をオペレーティングシステムの状態図の状態にマッピングしようとしていますが、マッピングできないようです。 Linuxプロセスの状態が理論的なオペレーティングシステムの状態図と必ずしも一致しないためですか?特に図では、D
///がどこにS
あるのかわかりません。T
I
ps
プロセスステータスコードマニュアルページから:PROCESS STATE CODES Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process: D uninterruptible sleep (usually IO) I Idle kernel thread R running or runnable (on run queue) S interruptible sleep (waiting for an event to complete) T stopped by job control signal t stopped by debugger during the tracing W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z defunct ("zombie") process, terminated but not reaped by its parent
OSプロセスの状態図ウィキペディアから:
〜のように「停止」は「遮断」状態に属していますか?しかし、答えはやや不完全です。
答え1
短い答え:
各州の地図はおおよそ次のとおりです。
状態 | 重要性 |
---|---|
D |
禁止 |
I |
禁止 |
R |
待つか走るか |
S |
禁止 |
T |
ブロック済み(多少) |
t |
ブロック済み(多少) |
W |
禁止(Linux 1.1.30以降は廃止) |
X |
終了しました |
Z |
終了しました |
長い答え:
Linuxで外部に表示されるプロセスステータスコードは、システム管理者が興味を持っている可能性がある単一の文字情報に圧縮しようとするため、情報も含まれます。なぜプロセスがブロックされました(したがってブロック解除可能かどうかと項目)。
「待機」と「実行中」の違いはあいまいです。プロセスが実行される時間が小さすぎて、コンピュータの前に座っている人にとっては、実行する準備ができているプロセス間に大きな違いはありません。そして実行中のプロセス。
さらに、Linuxはプロセス全体ではなく個々のメモリページを交換しないため、「スワップアウトとスタンバイ」または「スワップアウトとブロック」にマップされた状態を見つけることができません。
状態 | 重要性 |
---|---|
D |
プロセスは次のとおりです。禁止そしてその状態できない中断されます(例kill :)。通常、この状態では、カーネルはプロセスの代わりにI / Oを実行し、関連するカーネルコードは割り込みを処理できません。 |
I |
プロセスは、現在やるべきことがなく、現在実行中のカーネルスレッドです。禁止新しい作品を待っています。この状態は技術的にD (通常はカーネルスレッドが中断されないため)と同じです。それ会計/審美的な理由で導入されましたこれは、その状態のプロセスがD システム負荷に寄与すると考えられるからです。 |
R |
プロセスは次のとおりです。待つ走る走る。これは、スケジューラが利用可能なCPUでスケジュールでき、スケジュールするすべてのプロセスです。内部的に、カーネルは実行中のプロセスと待機中のプロセスを区別できますが、これはプロセスステータスコードを介して公開されません。 |
S |
プロセスは次のとおりです。禁止そしてその状態できる中断されたkill 。イベント(sleep 、、、select など)を待つほとんどのシステムコールはこの状態poll に入ります。wait |
T |
プロセスは次のとおりです。禁止などの信号によって派遣されないようにしてくださいSIGSTOP 。この状態は、プロセス自体がイベントを待たず、通常は他のプロセスやユーザー(Ctrl+ Z)の介入によって追加の実行がブロックされるため、理論的な状態である「ブロック」とはまったく一致しません。 |
t |
上記と似ています。プロセスは次のとおりです。禁止イベント自体を待たずにデバッガまたはトレースプロセスによって送出されます。 |
W |
廃止予定です。プロセスは次のとおりです。禁止スワップからRAMにメモリページを読み込むのを待っています。このコードが使用されましたLinux v1.1.30以前。 v2.3.43以降、プロセスはこの状態に入らなくなり、v2.5.50以降、この状態へのすべての参照は削除されました。 |
X |
プロセスは次のとおりです。終了現在、プロセスリストから削除されています。この状態は、ps カーネルが他のCPUコアのプロセスエントリをクリーンアップしている間しばらく実行されたときにのみ発生するため、頻繁には表示されません。 |
Z |
プロセスは次のとおりです。終了プロセスリストのエントリは、親プロセスが終了ステータス情報を収集できるようにするためにのみ存在します。 |