日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
シンボル %CALLER_TASK は Ada のタスクだけに使用します。これが評価されると,accept 文のエントリを呼び出したタスクのタスク ID か, %TASK 0 になります。たとえば,アクティブ・タスクが accept 文に対応する一連の文を実行していないときに %CALLER_TASK が評価されると, %TASK 0 になります。
たとえば, 例 16-2 の行 61 ( accept 文の中 ) にブレークポイントが設定されているものとします。この例では,メイン・プログラム (%TASK 1) がエントリ RENDEZVOUS を呼び出すのに応じて,タスク FATHER(%TASK 2) が accept 文を実行します。したがって,そのときに EVALUATE %CALLER_TASK コマンドを入力すれば,呼び出しタスク,つまりメイン・プログラムのタスク ID と評価されます。
DBG> EVALUATE %CALLER_TASK %TASK 1 DBG> |
AST によるエントリ呼び出しの結果がランデブのときに %CALLER_TASK を評価すると,%TASK 0 になります。呼び出し元がタスクでないからです。
16.4 タスク情報の表示
プログラム内のタスクの情報を表示するには,SHOW TASK コマンドを使用します。
SHOW TASK コマンドでは,存在している ( 終了していない ) タスクの情報が表示されます。省略時の設定では,可視タスクの情報が1行だけ表示されます。
第 16.4.1 項 と 第 16.4.2 項 には,それぞれ,SHOW TASK コマンドによって表示される POSIX Threads タスクと Ada タスクの情報が説明されています。
SHOW TASK コマンドでは,プログラム内に現存しているすべてのタスクの情報が表示されます ( 例 16-3 を参照)。
16.4.1 POSIX Threads タスクのタスク情報の表示
例 16-3 POSIX Threadsタスクに対してSHOW TASK/ALLを実行したときの表示例 |
---|
(1) (2) (3) (4) (5) (6) task id state hold pri substate thread_object %TASK 1 SUSP 12 Condition Wait Initial thread %TASK 2 SUSP 12 Mutex Wait T_EXAMP\main\threads[0].field1 %TASK 3 SUSP 12 Delay T_EXAMP\main\threads[1].field1 %TASK 4 SUSP 12 Mutex Wait T_EXAMP\main\threads[2].field1 * %TASK 5 RUN 12 T_EXAMP\main\threads[3].field1 %TASK 6 READY 12 T_EXAMP\main\threads[4].field1 %TASK 7 SUSP 12 Mutex Wait T_EXAMP\main\threads[5].field1 %TASK 8 READY 12 T_EXAMP\main\threads[6].field1 %TASK 9 TERM 12 Term. by alert T_EXAMP\main\threads[7].field1 DBG> |
次の番号は, 例 16-3 の番号に対応しています。
タスクの状態 | 説明 |
---|---|
RUNNING | タスクは現在プロセッサで実行中である。これがアクティブ・タスクである。この状態のタスクが移ることができるのは, READY,SUSPENDED,TERMINATED のいずれかの状態である。 |
READY | タスクは実行適格であり,プロセッサが使用可能になるのを待っている。この状態のタスクが移ることができるのは RUNNING 状態だけである。 |
SUSPENDED | タスクは中断している。つまり,プロセッサが使用できるのを待っているのではなく,あるイベントを待っている。たとえば,タスクは作成されてから起動されるまで中断状態に留まる。この状態のタスクが移ることができるのは,READY 状態または TERMINATED 状態だけである。 |
TERMINATED | タスクは終了している。この状態のタスクは,ほかの状態に移ることはできない。 |
タスクの副次状態 | 説明 |
---|---|
Condition Wait | タスクは POSIX Threads の条件変数を待っている。 |
Delay | タスクは POSIX Threads 遅延への呼び出しで待っている。 |
Mutex Wait | タスクは POSIX Threads ミューテクスを待っている。 |
Not yet started | タスクはまだその起動ルーチンを実行していない。 |
Term. by alert | タスクは警告処理により打ち切られた。 |
Term. by exc | タスクは例外により打ち切られた。 |
Timed Cond Wait | タスクは時限 POSIX Threads 条件変数を待っている。 |
SHOW TASK/FULL コマンドでは,選択した各タスクについての詳細情報が表示されます。 例 16-4 に, POSIX Threads タスクの例でこのコマンドを実行した場合の出力を示します。
例 16-4 POSIX Threadsタスクに対してSHOW TASK/FULLを実行したときの表示例 |
---|
(1) task id state hold pri substate thread_object %TASK 4 SUSP 12 Delay T_EXAMP\main\threads[1].field1 (2) Alert is pending Alerts are deferred (3) Next pc: SHARE$CMA$RTL+46136 Start routine: T_EXAMP\thread_action (4) Scheduling policy: throughput (5) Stack storage: Bytes in use: 1288 (6) Base: 00334C00 Bytes available: 40185 SP: 003346F8 Reserved Bytes: 10752 Top: 00329A00 Guard Bytes: 4095 (7) Thread control block: Size: 293 Address: 00311B78 (8) Total storage: 56613 DBG> |
次の番号は, 例 16-4 の番号に対応しています。
図 16-1 にタスク・スタックを示します。
図 16-1 タスク・スタック図
SHOW TASK/STATISTICS コマンドでは,プログラム内のすべてのタスクについての統計情報が報告されます。 例 16-5 には, POSIX Threads タスクのプログラム例に対して SHOW TASK/STATISTICS/FULL コマンドを実行したときの出力が示されています。この情報により,プログラムの性能を測定できます。スケジューリング ( コンテキスト・スイッチとも呼ぶ ) の合計回数が多いほど,タスキング・オーバヘッドは大きくなります。
例 16-5 POSIX Threadsタスクに対してSHOW TASK/STAT/FULLを実行したときの表示例 (VAX システムの例) |
---|
task statistics Total context switches: 0 Number of existing threads: 0 Total threads created: 0 DBG> |
SHOW TASK/ALLコマンドでは,プログラム内に現存しているすべてのタスクの情報,つまりタスク自体が作成されてからその親がまだ終了していないすべてのタスクの情報が表示されます( 例 16-6 を参照)。
16.4.2 Adaタスクのタスク情報の表示
例 16-6 Adaタスクに対してSHOW TASK/ALLを実行したときの表示例 |
---|
(1) (2) (3) (4) (5) (6) task id pri hold state substate task object * %TASK 1 7 RUN SHARE$ADARTL+130428 %TASK 2 7 HOLD SUSP Accept TASK_EXAMPLE.MOTHER+4 %TASK 4 7 SUSP Entry call TASK_EXAMPLE.FATHER_TYPE$TASK_BODY.CHILD+4 %TASK 3 6 READY TASK_EXAMPLE.MOTHER) DBG> |
次の番号は, 例 16-6 の番号に対応しています。
タスクの副次状態 | 説明 |
---|---|
Abnormal | タスクは強制終了された。 |
Accept | タスクはselect文の外のaccept文で待っている。 |
Activating | タスクはその宣言部分を作成中である。 |
Activating tasks | タスクは自分が作成した各タスクが活動を終了するのを待っている。 |
Completed [abn] | タスクは abort 文のために打ち切られたが,まだ終了していない。Ada でいう打ち切られたタスクとは,その end 文で各依存タスクを待っているタスクである。それらの依存タスクが終了すると,タスクの状態は Terminated に変わる。 |
Completed [exc] | タスクは処理されない例外 1 のために打ち切られたが,まだ終了していない。 Ada でいう打ち切られたタスクとは,その end 文で各依存タスクを待っているタスクである。それらの依存タスクが終了すると,タスクの状態は Terminated に変わる。 |
Completed | タスクは打ち切られている。 abort 文は実行されず,処理されない例外 1 は起こっていない。 |
Delay | タスクは delay 文で待っている。 |
Dependents | タスクは各依存タスクの終了を待っている。 |
Dependents [exc] | タスクは処理されない例外 1 の通知を依存タスクが許すのを待っている。 |
Entry call | タスクはそのエントリ呼び出しが受け付けられるのを待っている。 |
Invalid state | Adaの実行時ライブラリにエラーがある。 |
I/OまたはAST | タスクは入出力 (I/O) の終了かなんらかの AST を待っている。 |
Not yet activated | タスクは,自分を作成したタスクによって起動されるのを待っている。 |
Select or delay | タスクは遅延という代替方法が可能な select 文で待っている。 |
Select or terminate | タスクは終了という代替方法が可能な select 文で待っている。 |
Select | タスクはno else,遅延,終了のいずれも不可能な select 文で待っている。 |
Shared resource | タスクは内部共用リソースを待っている。 |
Terminated [abn] | タスクは abort 文により終了した。 |
Terminated [exc] | タスクは処理されない例外 1 により終了した。 |
Terminated | タスクは正常終了した。 |
Timed entry call | タスクは時限エントリ呼び出しをして待っている。 |
図 16-1 はタスク・スタックを示します。
SHOW TASK/FULL コマンドでは,選択した各タスクについての詳細情報が表示されます。 例 16-7 には,Ada タスク例に対してこのコマンドを実行したときの出力が示されています。
例 16-7 ADAタスクに対してSHOW TASK/FULLを実行したときの表示例 |
---|
(1) task id pri hold state substate task object * %TASK 2 7 RUN TASK_EXAMPLE.MOTHER+4 (2) Waiting entry callers: Waiters for entry BOGUS: %TASK 4, type: CHILD (3) Task type: FATHER_TYPE Created at PC: TASK_EXAMPLE.%LINE 14+22 Parent task: %TASK 1 Start PC: TASK_EXAMPLE.FATHER_TYPE$TASK_BODY (4) Task control block: (5) Stack storage (bytes): Task value: 490816 RESERVED_BYTES: 10640 Entries: 3 TOP_GUARD_SIZE: 5120 Size: 1488 STORAGE_SIZE: 30720 (6) Stack addresses: Bytes in use: 456 Top address: 001EB600 Base address: 001F2DFC (7) Total storage: 47968 DBG> |
次の番号は, 例 16-7 の番号に対応しています。
SHOW TASK/STATISTICS コマンドでは,プログラム内のすべてのタスクについての統計情報が報告されます。 例 16-8 は, VAX プロセッサで Ada タスキング・プログラム例に対して SHOW TASK/STATISTICS/FULL コマンドを実行したときの出力です。この情報により,プログラムの性能を測定できます。スケジューリング ( コンテキスト・スイッチとも呼ぶ ) の総数が多いほど,タスキング・オーバヘッドは大きくなります。
例 16-8 Adaタスクに対してSHOW TASK/STATISTICS/FULLを実行したときの表示例 ( VAX プロセッサの例) |
---|
task statistics Entry calls = 4 Accepts = 1 Selects = 2 Tasks activated = 3 Tasks terminated = 0 ASTs delivered = 4 Hibernations = 0 Total schedulings = 15 Due to readying a higher priority task = 1 Due to task activations = 3 Due to suspended entry calls = 4 Due to suspended accepts = 1 Due to suspended selects = 2 Due to waiting for a DELAY = 0 Due to scope exit awaiting dependents = 0 Due to exception awaiting dependents = 0 Due to waiting for I/O to complete = 0 Due to delivery of an AST = 4 Due to task terminations = 0 Due to shared resource lock contention = 0 DBG> |
目次 | 索引 |
|