日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:OpenVMS オペレーティング・システムの概要
第 2 章:DCL を使用したシステムとの会話
第 3 章:ファイル情報の格納
第 4 章:ディレクトリ・ファイルの編成
第 5 章:拡張ファイル指定
第 6 章:ディスクとテープ・ドライブの使用方法
第 7 章:Mail を使用して他のユーザと通信する
第 8 章:EVE エディタによるテキスト・ファイルの編集
第 9 章:ファイルのソートとマージ
第 10 章:資源へのアクセスの制御
第 11 章:デバイスとファイルの論理名定義
第 12 章:シンボル,コマンド,式の定義
第 13 章:コマンド・プロシージャの概要
第 14 章:DCL での拡張プログラミング
第 15 章:レキシカル関数を使用しての情報の取得と処理
第 16 章:プロセスとバッチ・ジョブ
付録 A :文字セット
付録 B :コマンド・プロシージャの例
用語集
索引
PDF
OpenVMS ホーム
OpenVMS

OpenVMS
ユーザーズ・マニュアル


目次 索引

第 16 章
プロセスとバッチ・ジョブ

プロセスとは,システムとの会話を可能にするために, OpenVMS オペレーティング・システムで作成される環境です。プロセスには, 独立プロセス (他のプロセスから独立しているプロセス) と サブプロセス (別のプロセスに従属して存在し,資源を得ているプロセス) があります。メイン・プロセスは親プロセスとも呼ばれ,独立プロセスの 1 つです。本章では,次のことについて説明します。

  • プロセス・コンテキストの解釈

  • サブプロセスの使用

  • 仮想ターミナルで切断されたプロセスへの接続

  • バッチ・ジョブの操作

プロセスの作成方法

ユーザが次のいずれかのタスクを実行すると,システムはプロセスを作成します。

  • ログイン
    システムはユーザがログインするごとにそのユーザ用にプロセスを作成する。

  • バッチ・ジョブの登録
    システムはバッチ・ジョブを受け取るとそのジョブ用にプロセスを作成する。バッチ・ジョブが完了すると,システムはプロセスを削除する。

  • サブプロセスの生成
    ユーザが SPAWN コマンドを使用すると,システムはプロセスを作成する。

  • プログラムの実行
    /DETACHED 修飾子または /UIC=uic 修飾子を使用してプログラムを実行すると,システムはプロセスを作成する。



16.1 プロセス・コンテキストへの割り込み

特権,シンボル,論理名などプロセスが使用する属性を,プロセス・コンテキストといいます。システムは,プロセス固有の特性を ユーザ登録ファイル (UAF) から取得します。UAF は,システムへのアクセスを許可されたユーザをリストして,それぞれのユーザのプロセスの特性を定義します。通常,UAF の管理はシステム管理者が行います。システムは一度に 1 つずつプログラム ( イメージまたは実行可能イメージとも呼ばれる ) を実行しますが,これらのプログラムはプロセスと呼ばれる環境内で実行されます。

現在のプロセスのプロセス・コンテキストを表示するには, SHOW PROCESS/ALL コマンドを使用します。

次の例は,プロセス・コンテキストのサンプルです。

11-DEC-2002 13:30:37.12 (1)  User: CLEAVER (2)  Process ID: 24E003DC  (3)
                            Node: ZEUS         Process name: "CLEAVER"  (4) 
Terminal:           VTA2195:  TNA2170:  (Host: 16.32.123.45 Port: 6789)                                                 (5)
User Identifier:    [DOC,CLEAVER]   (6)
Base priority:      4               (7)
Default file spec:  DISK1:[CLEAVER] (8)
Number of Kthreads: 1 
 
Devices allocated:  ALPHAI$VTA2195: 
 
Process Quotas:                     (9)
 Account name: DOC     
 CPU limit:                      Infinite  Direct I/O limit:        1024 
 Buffered I/O byte count quota:    119616  Buffered I/O limit:      1024 
 Timer queue entry quota:             400  Open file quota:          299 
 Paging file quota:                100080  Subprocess quota:          30 
 Default page fault cluster:           64  AST quota:                798 
 Enqueue quota:                      5000  Shared file limit:          0 
 Max detached processes:                0  Max active jobs:            0 
 
Accounting information:             (10)
 Buffered I/O count:     16424  Peak working set size:      13920 
 Direct I/O count:       12014  Peak virtual size:         185392 
 Page faults:            11113  Mounted volumes:                0 
 Images activated:          68 
 Elapsed CPU time:      0 00:04:18.55 
 Connect time:          0 00:08:22.76 
 
Authorized privileges: 
 NETMBX       TMPMBX 
 
Process privileges:                 (11)
 GROUP                may affect other processes in same group 
 TMPMBX               may create temporary mailbox 
 OPER                 operator privilege 
 NETMBX               may create network device 
 
Process rights:                     (12)
 CLEAVER                              resource 
 INTERACTIVE 
 LOCAL 
 
System rights: 
 SYS$NODE_ZEUS 
 
Auto-unshelve: on 
 
Image Dump: off 
 
Soft CPU Affinity: off 
 
Parse Style: Traditional 
 
Home RAD: 0 
 
Scheduling class name: none 
 
Process Dynamic Memory Area         (13)
  Current Size (Kb)         128.00   Current Size (Pagelets)       256 
  Free Space (Kb)           111.18   Space in Use (Kb)           16.81 
  Largest Var Block (Kb)    109.69   Smallest Var Block (bytes)      8 
  Number of Free Blocks         10   Free Blocks LEQU 64 Bytes       4 
 
There is 1 process in this job: (14)
 
  CLEAVER (*) 
 

例を確認するときは,次のことに注意してください。

  1. 現在の日時
    SHOW PROCESS/ALL コマンドを実行した日時。

  2. ユーザ名
    プロセスに関連するアカウントに割り当てられたユーザ名。

  3. プロセス識別番号 (PID)
    システムによってプロセスに割り当てられた固有の番号。 SHOW PROCESS コマンドは,PID を 16 進数で表示する。

  4. プロセス名
    プロセスに割り当てられた名前。プロセス名は一意であるため,あるアカウントでログインした最初のプロセスにはユーザ名が割り当てられ,同じアカウントでログインしたそれ以降のプロセスにはターミナル名が割り当てられる。プロセス名は,DCL の SET PROCESS/NAME コマンドで変更できる。

  5. ユーザ識別コード (UIC)
    プロセスに関連するアカウントに割り当てられたグループとメンバの番号または文字 ( たとえば,[PERSONNEL,RODGERS] ) 。UIC により,ユーザが属するグループが分かる。同じグループに属するユーザ同士は,他のグループのユーザとの間より自由にファイルやシステム資源を共用できる。

  6. 優先順位
    プロセスの現在の優先順位。

  7. 省略時のファイル指定
    現在のデバイスとディレクトリ。現在の省略時の値は,DCL の SET DEFAULT コマンドによって変更することができる。

  8. プロセス・クォータ
    プロセスに関連するクォータ (上限)。クォータは,SHOW PROCESS コマンドに /QUOTAS または /ALL 修飾子を付けて実行することにより確認することができる。

  9. 会計情報
    プロセスのメモリの使用状況と CPU 時間に関する情報。この情報は,時々刻々と更新されており,SHOW PROCESS コマンドに /ACCOUNTING または /ALL 修飾子を付けて実行することにより,最新の情報を得ることができる。

  10. プロセス特権
    プロセスに付与された特権。特権は,特定のシステム・アクティビティを特定のユーザしか実行できないように制限する。特権は,SHOW PROCESS コマンドに /PRIVILEGES または /ALL 修飾子を付けて実行することにより確認することができる。

  11. プロセス・ライト
    アクセス制御リスト (ACL) 保護と一緒に使用されるシステムが定義する識別子。識別子は,ACL の中でユーザを指定する手段である。ACL は,ファイル,デバイス,メールボックスなどのオブジェクトのユーザに許容または拒否されるアクセスの種類を定義するセキュリティ・ツール。

  12. プロセスの動的メモリ空間
    プロセスの現在の動的メモリの使用状況。動的メモリは,イメージが実行されるときにシステムによってそのイメージに割り当てられる。プロセスがそのメモリを必要としなくなった場合には,システムはそれを別のプロセスに割り当てる。この情報は,SHOW PROCESS コマンドに /MEMORY または /ALL 修飾子を付けて実行することにより得られる。

  13. 階層構造の中のプロセス
    親プロセスに属するサブプロセスのリスト。現在のプロセスはその末尾にアスタリスク (*) が付けられる。このリストは,SHOW PROCESS コマンドに /SUBPROCESSES または /ALL 修飾子を付けて実行することにより得られる。



16.2 独立プロセスの使用

独立プロセスは,親プロセスの種類にしたがって,会話型または非会話型のいずれかになります。 DCL の RUN コマンドまたは Create Process システム・サービス ($CREPRC) にユーザが指定する引数に応じて,ユーザまたは OpenVMS オペレーティング・システムがログインを行います。 RUN も $CREPRC も SYS$SYSTEM で LOGINOUT.EXE イメージを実行します。

16.3 サブプロセスの使用

SPAWN コマンドを使用すると,現在のプロセスのサブプロセスを作成できます。このサブプロセスの中で,ユーザはシステムと会話して,サブプロセスからログアウトして親プロセスに戻ったり,親プロセスとサブプロセスを切り替えたりできます。一度に 1 つのプロセスしか実行できません。

システム上のそれぞれのユーザは, ジョブ階層構造 によって表現されます。ジョブ階層構造とは,メイン・プロセスを頂点とし,それに属するすべてのプロセスとサブプロセスからなる階層をいいます。サブプロセスは親プロセスに従属し,親プロセスが終了すると削除されます。省略時の設定では,サブプロセスは,親プロセスの名前の後にアンダスコアと固有の番号を付けた名前を持ちます。たとえば,親プロセス名が DOUGLASS の場合,サブプロセスには DOUGLASS_1,DOUGLASS_2 というような名前が付けられます。

16.3.1 Spawn タスクによるサブプロセスの使用

タスクに割り込み,2 番目のタスクを実行してから,元のタスクに戻るには, Ctrl/Y を使用してタスクに割り込んだ後, 2 番目のタスクを実行するサブプロセスを生成し,そのサブプロセスを終了してから, CONTINUE コマンドを入力して元のタスクに戻ります。省略時の設定では,ユーザがサブプロセスを作成すると,親プロセスはハイバネート状態になり,サブプロセスの中で DCL レベルでユーザに制御が渡されます。省略時のディレクトリは親プロセスの現在のディレクトリです。たとえば,Ctrl/Y を押して EVE 編集セッションに割り込んだ場合には, CONTINUE コマンドを入力してから Ctrl/W を押して画面を再表示します。

16.3.2 サブプロセスの使用による複数のタスクの実行

最初のタスクの実行を続けながら,2 番目のタスクを実行するには, SPAWN/NOWAIT コマンドでサブプロセスを作成します。 SPAWN/NOWAITは,非会話型のバッチに似たサブプロセスを生成し,入力を必要としないコマンドを実行するときにだけ使用します。

親プロセスとサブプロセスの両方が同時に実行されるため,双方がターミナルを制御しようとします。混乱が生じるのを避けるため,次の修飾子やパラメータも指定してください。

  • /OUTPUT 修飾子
    サブプロセスが,ターミナルではなく,指定されたファイルに出力を書き込むように指定する。

  • SPAWN コマンド・パラメータまたは /INPUT 修飾子
    サブプロセスが,ターミナルから入力を読み込むのではなく,指定されたコマンドを実行するように指定する。

SPAWN コマンドの /INPUT 修飾子を指定すると,サブプロセスは非会話型のプロセスとして生成され,重大エラーまたはファイルの終端を検出すると終了します。 DCL レベルでは,Ctrl/Z がファイルの終端標識として扱われます。

16.3.3 サブプロセスの作成

ユーザが作成するそれぞれのプロセスは一意であるため,通常は,あるプロセスで実行されたコマンドが他のプロセスに影響することはありません。ただし,ターミナルの制御はプロセス間で受け渡されるため,ターミナル属性に影響するコマンド (たとえば,SET TERMINAL) は,そのターミナルを制御するすべてのプロセスに影響を及ぼします。たとえば,1 つのプロセスがエコー表示を禁止し,それを復元せずに終了した場合には,次にターミナルを制御するプロセスでもエコー表示は禁止されたままになります。変更したターミナル属性は,SET TERMINAL コマンドによって再設定します。

次の例では,ユーザは,Ctrl/Y を押してコマンド・イメージ (TYPE コマンド) に割り込んでサブプロセスを生成し,そのサブプロセスを終了してから元のプロセスに戻ります。

$ TYPE MICE.TXT
Once the weather turns cold, mice may find a crack in the 
foundation and enter your house.  They are looking for food and 
shelter from the harsh weather ahead.
   .
   .
   .
[Ctrl/Y]
$ SPAWN
%DCL-S-SPAWNED, process DOUGLASS_1 spawned 
%DCL-S-ATTACHED, terminal now attached to process DOUGLASS_1
$ MAIL
MAIL>
   .
   .
   .
MAIL> EXIT
$ LOGOUT
  Process DOUGLASS_1 logged out at 31-DEC-1999 12:42:12.46
%DCL-S-RETURNED, control returned to process DOUGLASS
$ CONTINUE
Once inside, they may gnaw through electrical wires and raid 
your food. Because mice reproduce so quickly, what started 
as one or two mice can quickly become an invasion.  If you seal 
the cracks and holes on the exterior of your foundation, you can 
prevent these rodents from ever getting in.



16.3.4 サブプロセスの終了

SPAWN コマンドによって作成されたサブプロセスを終了するには,次のいずれかのコマンドを使用します。

  • LOGOUT
    LOGOUT コマンドでサブプロセスを終了すると,そのサブプロセスは ( それが作成した他のサブプロセスとともに ) 削除され,親プロセスに戻る。

  • ATTACH
    ATTACH コマンドでサブプロセスを終了すると,そのサブプロセスはハイバネート状態になり,ターミナルの制御は指定されたプロセスに渡される。 ATTACH コマンドのパラメータとしてプロセス名を指定するか, ATTACH コマンドの /IDENTIFIER 修飾子の値としてプロセス識別番号 (PID) を指定しなければならない。

次の例は,DOUGLASS_1 サブプロセスを終了して, DOUGLASS プロセスに接続する方法を示しています。

$ ATTACH DOUGLASS
%DCL-S-RETURNED, control returned to process DOUGLASS 
$ SHOW PROCESS
11-DEC-2002 10:34:58.50   User: DOUGLASS         Process ID:   2061C478 
                          Node: ALPHAI           Process name: "DOUGLASS" 
Terminal:           VTA2195:  TNA2170:  (Host: 16.32.123.45 Port: 6789) 
 
User Identifier:    [DOC,DOUGLASS] 
Base priority:      4 
Default file spec:  DISK1:[DOUGLASS] 
Number of Kthreads: 1 
 
Devices allocated:  ALPHAI$VTA2195: 
 
Soft CPU Affinity: off



16.3.5 サブプロセス・コンテキスト

サブプロセス・コンテキストは,サブプロセスが親プロセスから受け継ぐ環境です。省略時の設定では,サブプロセスは,省略時の値,特権,シンボル,論理名,制御文字,メッセージ形式,チェック状態,キー定義を受け継ぎます。これらの項目が集まってサブプロセスの環境が形成されます。

次の項目は,親プロセスからは受け継がれません。

  • プロセス識別番号 (PID)
    システムは,作成したそれぞれのプロセスに固有の PID を割り当てる。

  • プロセス名
    省略時の設定では,サブプロセス名は,親プロセスの名前の後にアンダスコアと整数を付けたもの。別のプロセス名を指定するには, SPAWN コマンドに /PROCESS 修飾子を使用する。プロセス名は一意でなければならない。

  • 作成したコマンド
    SET COMMAND コマンドを使用して親プロセスで定義したコマンドは,サブプロセスにコピーされない。作成されたコマンドをサブプロセスで使用するには,SET COMMAND を使用してサブプロセスに対してそのコマンドを作成しなければならない。

  • 特権を付与する特権
    サブプロセスを生成する場合,プロセス・コンテキストには,親プロセスの特権は含まれるが,特権を付与するための特権は含まれない。たとえば,Mail でサブプロセスを生成して,特権付き操作を実行したい場合には,Mail を起動する前に親プロセスで正しい特権を設定しておかなければならない。

サブプロセスが親プロセスのコンテキスト項目の一部を受け継がないようにするには,次の SPAWN 修飾子を使用します。

SPAWN コマンド修飾子 禁止または変更される項目
/CARRIAGE_CONTROL, /PROMPT DCL プロンプト
/NOCLI CLI (コマンド言語インタプリタ。省略時の設定では DCL 。)
/NOKEYPAD キーパッド定義
/NOLOGICAL_NAMES 論理名
/NOSYMBOL シンボル

/SYMBOL 修飾子と /LOGICAL_NAMES 修飾子は,システムが定義するシンボル ($SEVERITY や $STATUS など) やシステムが定義する論理名 (SYS$COMMAND や SYS$OUTPUT など) には影響を及ぼしません。

論理名やシンボルをサブプロセスにコピーすると,時間(数秒)がかかるため,サブプロセスの中で論理名やシンボルを使用する予定がなければ, SPAWN コマンドに /NOLOGICAL_NAMES と /NOSYMBOL 修飾子を使用するとよいでしょう。サブプロセスを頻繁に使用する場合には,ATTACH コマンドを使用すると,最も効率良くサブプロセスで作業を開始したり終了したりできます。この方法を使用すると,システムが新しいサブプロセスを作成するのを待つことなく,親プロセスとサブプロセスとの間で制御を迅速に切り換えることができます。

16.4 仮想ターミナルでの切断されたプロセスの接続

仮想ターミナルが使用可能な状態にあるときに,モデム回線の接続が断たれた場合,プロセスは切断された仮想ターミナル・プロセスとしてシステム上にアクティブ状態のまま存在し続けます。ユーザは,システム管理者によって指定された時間 ( 省略時の値は 900 秒,すなわち 15 分 ) 内にプロセスに再接続しなければなりません。この時間内にプロセスに再接続しないと,プロセスは削除されます。

  注意
UIC (利用者識別コード) の一致する仮想ターミナル・プロセスにしか接続できません。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.