ジョブ関連その他諸々 その1
- 1 タスクの優先順位
-
A−VXはマルチジョブ・マルチタスクのOSなので複数のジョブを同時に動かすことができます。
複数のジョブの間でも、これは最優先して動かしたい、とか、これは合間に動いてくれればいい、とか優先順位を付けたい場合があります。
タスクには優先順位があり、これに優先順位を付けることができます。
ジョブに優先順位を付けたいのにタスクに優先順位とかよくわかりませんが、そうなっています。A−VXのタスクの優先順位は0から15の16レベルに分けられ、数字が大きくなるにしたがって優先順位は低下していきます。優先順位の一番高いのは優先順位0のタスクであり、優先順位の一番低いのは優先順位15のタスクです。
ただし全部の優先順位が自由に付けられるわけではなく、0から3と12から15の優先順位はシステムタスクしか使用できません。
我々が自由に使えるのは4から11の間の8レベルだけです。一般的には会話型ジョブは4から7、バッチジョブは8から11にするようです。会話型ジョブはキー入力したらすぐに反応してほしいので優先順位を高く、人間のキーボード入力が遅いのでその間にバッチ処理すればいいのでバッチジョブは優先順位を低くということです。逆にすると優先順位の高いバッチジョブが休みなく実行されて、会話型ジョブの反応が遅くなります。
優先順位はロードモジュールにだけ設定できます。ジョブストリームやパラメータメンバには設定できません。 設定方法はいくつかあり、ロードモジュールを作るときにリンカのパラメータ:PRIで設定する方法、ライブラリ保守(#LBM)のパラメータ:PRIで設定する方法などがあります。
- 2 時間管理
-
NEC公式のシステム管理説明書で1章設けているのでとりあえず書きます。特にシステム管理説明書に補足することは無いです。
A−VXの時間管理は2つの機能を提供しています。
1つ目はシステム日付、時刻の提供。今の日付や時刻をシステムで保持していて、プログラム側から今の日付時刻を要求されたらその日付時刻を返しますよ、という何の変哲もない機能です。
オフコンの出始めのころの1970年代はそもそも日付を保持していなくて毎回システム起動時に入力しなければならなかったり、そもそも日付を提供していなくて毎回プログラムで入力しなくては行けなかったり、内部に時計は持っていたもののシステムを落とすとリセットされてしまい起動時にセットしなおさなければならなかったり、そういうこともシステムも多かったので、当時としてはこれも目玉となる機能だったということなのかもしれません。
もう一つはインターバルタイマ。ある一定の時間間隔待ち合わせる機能です。例えば10秒ごとに通信が来ているかどうか確認する、などで使用します。
- 3 入出力管理
-
NEC公式のシステム管理説明書で1章設けているのでとりあえず書きます。これは本当にシステム管理説明書に補足することは無いです。
まあシステムは適切に入出力装置からの入力や出力を処理しますよ、ということなのでしょう。
入出力動作の終了には次の3種類があります。
- 正常終了
- 強制終了
- 異常終了
異常終了になるとプログラム側にエラーとして返ってきたり、何かしらのエラーメッセージを出力したりしますということを言いたいのだと思います。
- 4 例外管理
-
例外とは、いつも通りNEC公式のマニュアル、システム管理説明書から引用すると
例外とは、システムの正常な動作を妨げる事象(ハードウェアエラー、不正命令、……)で、ハードウェア/ファームウェアの例外処理機構によって認識され、かつその例外に対応処理するソフトウェアに通知されます。
[システム管理説明書(2009年11月版)−3.6 例外管理]より何か異常状態になるとソフトウェア側にその情報を例外として返却します、ということです。
例外の種類は次のようなものです。
- プログラムエラー
- 不正命令
- アドレッシングエラー
- 特権命令エラー
- 不正リロケーションアドレス
- プッシュスタックエラー
- ポップスタックエラー
- 不正10進数
- タイムアウト
- メモリエラー
- 科学演算におけるゼロ除算
- 入出力エラー
- ダイナミックメモリ不足
プログラムエラーや不正10進数、入出力エラー辺りはときどき見かけます。
- プログラムエラー