前へ | 次へ | 目次 | 索引 |
OpenVMS VAX Version 6.1 では,Mathematics 実行時ライブラリ(RTL)のイメージ MTHRTL.EXE,UVMTHRTL.EXE,および VMTHRTL.EXE が更新され,DEC Fortran Version 6.0 をサポートするための新しいエントリ・ポイントが含まれるようになりました。(UVMTHRTL.EXE は,MTHRTL.EXE の別形式のイメージです。次の段落の MTHRTL.EXE の記述も UVMTHRTL.EXE に適用されます。)
MTHRTL.EXE に追加されたエントリ・ポイントが多いため,このイメージの転送ベクタが拡張され,グローバル・セクションの照合識別子が増えました。そのため,OpenVMS VAX Version 6.1 以前のシステムでは,DEC Fortran Version 6.0 をインストールしない限り,このバージョンの MTHRTL.EXE をリンクしたイメージを実行することはできません。また,新しい MTHRTL.EXE をリンクしたイメージを DECmigrate により変換して OpenVMS Alpha で実行することはできません。
旧バージョンの OpenVMS VAX で実行できるようにイメージをリンクするには,サポートされる最も古いバージョンの SYS$LIBRARY ディレクトリから .EXE ファイルと .OLB ファイルをコピーし,新規作成したディレクトリに保存し,このディレクトリを指す論理名 SYS$LIBRARY を定義して,リンクします。OpenVMS VAX でも MTHRTL.EXE または UVMTHRTL.EXE のどちらかを参照するためにシステム論理名 MTHRTL を定義するので,旧ディレクトリのイメージのそのコピーを参照するために論理名として MTHRTL をプロセス・テーブルまたはジョブ・テーブルに定義する必要があります。
$ DEFINE/USER SYS$LIBRARY disk:[OLD_SYSLIB] $ DEFINE/USER MTHRTL SYS$LIBRARY:MTHRTL.EXE $ LINK . . . |
DECmigrate を使用して変換するイメージは,OpenVMS VAX Version 5.5-2 以前の SYS$LIBRARY ファイルをリンクする必要があります。
5.19 POSIX スレッド・ライブラリ
ここでは,POSIX スレッド・ライブラリ(旧名称は,DECthreads)に関するリリース・ノートをまとめます。
5.19.1 プロセス・ダンプ
V7.3
POSIX スレッド・ライブラリで実行時に修正不能な重大エラー(アプリケーション内のデータ破損によって損傷したデータ構造など)が検出されると,ライブラリにより実行中のイメージが終了されることがあります。終了中に,ライブラリによりプロセス・ダンプ・ファイルの作成がトリガーされます(このファイルは,ANALYZE/PROCESS_DUMP によりエラー診断に使用されます)。このようなプロセス・ダンプ・ファイルのサイズは,エラー時のプロセスのアドレス空間に依存するため,非常に大きくなることがあります。
5.19.2 動的 CPU 構成の変更
V7.3
OpenVMS Version 7.3 以降,POSIX スレッド・ライブラリは,マルチプロセッサ Alpha システムを実行する CPU の数の動的変化に対応するようになりました。1 つのイメージに対して,複数のカーネル・スレッドが使用できるように指定(LINK/THREADS_ENABLE 修飾子または THREADCP コマンド動詞により)すると,POSIX スレッド・ライブラリが,アプリケーションの明白な並列処理を監視して,利用可能な CPU の数を最大とする数のカーネル・スレッドを作成します。それぞれのカーネルスレッドは,OpenVMS エグゼクティブによってスケジューリングされて別々の CPU で実行されるので,同時に実行することができます。
アプリケーションの実行中,オペレータは CPU を個別に停止または開始することができます。このような動的変化を反映して,これ以降にイメージがアクティブ化されたときに作成できるカーネル・スレッドの数が変化します。また,現在実行中のイメージにも反映されるようになりました。
CPU を追加または除去すると,スレッド・ライブラリは,追加,除去後のアクティブな CPU の数を照会し,プロセスが現在使用しているカーネル・スレッドの数と比較します。現在 CPU がカーネル・スレッドよりも多い場合,ライブラリは既存の POSIX スレッドを CPU まで延長します(必要に応じて,すぐに,または後に新しいカーネル・スレッドを作成します)。逆に CPU がカーネル・スレッドよりも少ない場合,ライブラリは余分のカーネル・スレッドを強制的にハイバネートさせ,残りのカーネル・スレッド上で POSIX スレッドを再度スケジューリングします。これにより,プロセスに関する限り,利用可能な数以上のカーネル・スレッドが,CPU リソースを奪い合うということがなくなります。
5.19.3 スレッド・プログラムの高度デバッグ
V7.3
POSIX スレッド・ライブラリは,監視ツールとデバッグ・ツールをサポートするための,高度なデータ収集機能を備えています。これらの機能は,OpenVMS Alpha システム上のスレッド・プログラムのための新しいデバッグ,分析ツールであるビジュアル・スレッドをサポートします。ビジュアル・スレッドは,OpenVMS Version 7.3 でライセンスされており,監視機能,自動デバッグ機能,およびマルチスレッド・アプリケーションのパフォーマンス評価機能を備えています。
5.19.4 POSIX 1003.4a Draft 4 インタフェースの廃止
V7.0
POSIX スレッド・ライブラリの POSIX 1003.4a,Draft 4("d4")インタフェースは,将来のリリースで廃止される予定です。POSIX 1003.4a,Draft 4 インタフェースを使用して作成されたアプリケーションは,POSIX スレッド・ライブラリで提供される新しい POSIX 1003.1c 標準("pthread")インタフェースに移行しなければなりません。移行に役立つように,このリリースで Draft 4 POSIX 1003.4a インタフェースの互換性モードが提供されます。互換性モードは,将来のリリースでは削除されます。
5.19.5 NUMA システムでサポートされる複数の RAD
V7.3-1
OpenVMS Version 7.3-1 またはそれ以降では,Compaq POSIX スレッド・ライブラリはすべてのリソース・アフィニティ・ドメイン(Resource Affinity Domain: RAD)の CPU を使用して,1 つのプロセス内のスレッドを実行できます。以前は,スレッドを実行する場合,プロセスが属する RAD の CPU しか使用できませんでした。現在では,アプリケーションの作業負荷に応じて,スレッド・ライブラリは他の RAD 内の CPU で実行するカーネル・スレッドを作成および使用して,アプリケーションの POSIX スレッドを実行することができます。1 つのマルチスレッド・プロセスで NUMA システム内のすべての CPU を使用することが可能です。
5.20 特権付きインタフェースと構造体
ここでは,特権付きコードと構造体に関するリリース・ノートをまとめます。
5.20.1 スレッド単位のセキュリティは特権付きコードとデバイス・ドライバに影響する
V7.3-1
Version 7.2 では,セキュリティ・プロファイルを I/O Request Packet(IRP)に添付するために使用される方法が変更されました。
OpenVMS の Version 7.2 より前のバージョンでは,要求者のプロセス単位の Access Rights Block(ARB)セキュリティ構造のアドレスは IRP 構造に含まれていました。OpenVMS Alpha Version 7.2 以降,新しいセキュリティ・プロファイル構造(Persona Security Block,PSB)のアドレスは,ARB アドレスの機能置換として IRP に追加されました。
I/O サブシステムは PSB 内の参照カウンタを介して,PSB へのアクセスを管理します。I/O サブシステムは IRP の作成時にこの参照カウンタを増分し,その IRP の I/O の後処理時にカウンタを減分します。このカウンタが 0 になると,PSB 構造はデッドロック状態になります。
1 つの要求に対して複数の I/O 操作を行うために IRP のコピーを作成またはクローンし,コピーした IRP を後処理のために I/O サブシステムに渡すデバイス・ドライバは,これらの追加の IRP の PSB への特別な参照を明らかにするために,コードを変更しなければなりません。このような変更は,コピーされた IRP にある PSB アドレスを NSA_STD$REFERENCE_PSB ルーチンに渡すことで行います。NSA_STD$REFERENCE_PSB のインクルード・ファイルとルーチン呼び出しは次のとおりです。
#include <security-macros.h> /* Increment REFCNT of PSB that is now shared by both IRPs */ nsa_std$reference_psb(irp->irp$ar_psb); |
デバイス・ドライバは,次の状況でこの変更を行わなければなりません。
デバイス・ドライバは IRP を複製した後,I/O 後処理のためにキューに登録する前に,NSA_STD$REFERENCE_PSB を呼び出さなければなりません。
デバイス・ドライバは IRP を複製した後,I/O 後処理のためにキューに登録する前に,NSA_STD$REFERENCE_PSB を呼び出さなければなりません。
これらのステップを実行するデバイス・ドライバは,たいていはプロシージャ記述子のアドレスを IRP$L_PID に格納しています。したがって,IRP を複製するほとんどのデバイス・ドライバは,ソース・コードの変更,再リンク,再コンパイルを行わなくても,OpenVMS Version 7.2 またはそれ以降で正しく機能できるはずです。
このような状況で NSA_STD$REFERENCE_PSB を呼び出さないと,PSB 内の追跡情報が破壊され,システム障害が発生する可能性があります。
NSA_STD$REFERENCE_PSB を呼び出すようにデバイス・ドライバのコードを変更する場合は,OpenVMS Version 7.2 またはそれ以降で動作するように,ドライバを再コンパイルおよび再リンクしなければなりません。
5.20.2 OpenVMS フォーク・スレッド作成のための IPL 要件の強制
V7.3-1
OpenVMS フォーク実行スレッドを作成するためには,いくつかのルーチンを特権コードで使用します。これらのルーチンは,任意のプロセスのシステム・コンテキストに依存しないで実行されます。これらのルーチンには 4 つの形式があり,どの形式を使用するかは,直系のフォークとキューに入っているフォークのどちらが必要かと,使用されている言語インタフェースで決まります。
これらのルーチンは,実行中に,誤って別の CPU に再スケジュールされないようにするため,IPL$_RESCHED 以上で呼び出す必要があります。このような再スケジュールが行われると,システムがハングする可能性があります。
OpenVMS V7.3-1 では,SYSTEM_CHECK の値を 1 に設定すると,これらのルーチンによって,まずシステムの IPL がチェックされます。IPL が IPL$_RESCHED の値よりも小さい場合,システムは SPLINVIPL バグ・チェックで失敗します。
性能上の理由から,SYSTEM_CHECK の値を 0 に設定すると(デフォルト),IPL は検証されません。不正なコードを使用すると,プロセス・コンテキストでこれらのルーチンの実行中に別の CPU への再スケジュールが発生した場合は(IPL$_RESCHED よりも小さい値を指定した場合など),システムがハングする可能性があります。
5.21 Record Management Services(RMS)
ここでは,RMS に関するリリース・ノートをまとめます。
5.21.1 照合キーを指定する CONVERT/NOSORT で発生する可能のある CONVERT-I-SEQ エラー
V7.3
/NOSORT 修飾子および出力ファイルのキー・タイプに照合キーを指定する CONVERT コマンドでは,潜在的な動作の変更による影響があります。
CONVERT コマンドの /NOSORT 修飾子は,主キーが入力ファイルですでにソート順に並べられているため,Convert ユーティリティでソートしないことを表します。OpenVMS Version 7.3 より前のバージョンの Convert ユーティリティでは,出力ファイルに指定されたキーに照合キー・タイプが含まれる場合,/NOSORT が指定されているかどうかに関係なく,入力ファイルが必ずソートされるという欠陥がありました。OpenVMS Version 7.3 では,Convert ユーティリティが修正され,出力ファイルのキーの 1 つが照合キーである場合でも,コマンド・ラインの /NOSORT 修飾子に正しく従うように修正されています。
そのため,以前に照合キー欠陥の 2 次的な影響で成功していた CONVERT 操作でも,入力ファイルが主キーによってソートされていない場合で,コマンド・ラインに /NOSORT が指定されているときには,%CONVERT-I-SEQ メッセージが表示されることがあります。入力ファイルが主キーによってソートされていない場合は,/NOSORT 修飾子は,使用しないでください。
5.22 LIB$FIND_IMAGE_SYMBOL---『RTL Library(LIB$)Manual』の正誤情報
V7.3-1
『OpenVMS RTL Library(LIB$)Manual』の,LIB$FIND_IMAGE_SYMBOL に対する flags 引数の説明には誤りがあります。flags は,参照渡しとして説明されていますが,この記述は誤りで,戻り値としてエラー・メッセージ LIB-F-INVARG が返されます。flags を値で渡すと,LIB$FIND_IMAGE_SYMBOL は問題なく機能します。
この誤りは,『OpenVMS RTL Library(LIB$)Manual』の次のリリースで修正される予定です。
5.23 RTL の LIB$FIND_IMAGE_SYMBOL シグナル通知による警告
V7.1
LIB$FIND_IMAGE_SYMBOL は,起動されているイメージにコンパイル警告が発生したモジュールが含まれていることを示すために,警告(LIB$_ EOMWARN)を通知することがあります。LIB$FIND_IMAGE_SYMBOL で使用される条件ハンドラは,この状況を特殊な場合として取り扱わなければなりません。
LIB$_EOMWARN が通知された後,LIB$FIND_IMAGE_SYMBOL が実行を続行するには,条件ハンドラが SS$_CONTINUE で終了しなければなりません。この理由から,LIB$FIND_IMAGE_SYMBOL の条件ハンドラとして LIB$SIG_TO_RET を使用することは適切ではありません。
5.24 Screen Management(SMG$)機能のドキュメント
『OpenVMS RTL Screen Management(SMG$)Manual』の最後にある参照情報のトピックに,次の情報を追加します。
V7.2
"Any condition value returned by the $ DELPRC system service"
誤っているシンボル名 | 正しいシンボル名 |
---|---|
SMG$L_PASTEBOARD_ID | SMG$L_PBD_ID |
SMG$L_ARG | SMG$L_USER_ARG |
SMG$B_CHARACTER | SMG$B_CHAR |
V7.1
"The terminal characteristic /LINE_EDITING should be set for your terminal for these flags to work as expected. /LINE_EDITING is the default."
(「これらのフラグが正しく機能するには,端末に対して端末属性 /LINE_EDITING を設定しなければなりません。/LINE_EDITING は省略時の設定です。」)
キーパッド・モードを変更すると,物理端末の設定も変更されます。これは,keyboard-id 引数によって指定される仮想キーボードだけでなく,すべての仮想キーボードに対するグローバルな変更です。 |
ここでは,SORT32 ユーティリティのリリース・ノートをまとめます。Hypersort で修正されていない問題に対応する場合,または Hypersort に実装されていない機能を使用する場合に SORT32 を使用することをお勧めします。
SORT32 は,OpenVMS Alpha Version 7.3-1 向けに更新されています。SORT32 の新しいバージョンは V07-005 です。
5.25.1 SORT32 と VFC 出力ファイルに対する /PROCESS=TAG
V7.3-1
SORT32 では,Alpha 上で VFC 出力ファイルに対する /PROCESS=TAG をサポートできるようになりました。
5.25.2 SORT32 と NAM$L_ESA
V7.3-1
SORT32 では,Alpha 上で NAM$L_ESA を正しく使用できるようになりました。
5.25.3 過大なキーに対する SORT32 の診断機能(Alpha)
V7.3-1
SORT32 では,Alpha 上で過大なキーを診断する場合に BADLOGIC ではなく,BAD_KEY を使用するように変更されました。この変更により,Alpha 上の Hypersort の診断処理により適合できるようになりました。
前へ | 次へ | 目次 | 索引 |