(57)【特許請求の範囲】
【請求項１】
プログラムロードテーブルと、オンライン処理タスクの一部であるプログラムロード依頼手段とプログラムロード確認手段と、イニシャルロードタスクに対応するプログラムロード手段とから構成される、複数のプログラムをロードするプログラムロード装置であって、
上記プログラムロードテーブルには、ロードするプログラム毎に、属性と少なくとも未ロード、ロード中、ロード済の３つのロード状態を区別する情報と、プログラムのロード完了を上記オンライン処理タスクと上記イニシャルロードタスク間で待ち合わせるロード待ち情報とが記憶され、
上記プログラムロード手段は、上記プログラムロードテーブルに基づき上記ロード状態が未ロードであれば、未ロードであるプログラムのロード状態をロード中に変更してロードして、更に該プログラムのロードを上記オンライン処理タスクが上記ロード待ち情報で待ち合わせていれば該プログラムのロードの完了を上記オンライン処理タスクに通知し、上記ロード状態がロード中であれば、該プログラムのロードの完了を上記ロード待ち情報で待ち合わせる手段を有し、
上記プログラムロード依頼手段は、上記プログラムロードテーブルにあるプログラム名に基づいてプログラムライブラリを検索して上記プログラムの大きさを知りプログラムをロードするメモリ領域を獲得し、上記獲得したメモリ領域のアドレスと大きさを上記プログラムロードテーブルに記憶して上記イニシャルロードタスクを起動する手段を有し、
上記プログラムロード確認手段は、上記プログラムロード手段による上記プログラムのロードと並行して上記プログラムを呼び出すとき、上記ロードテーブルに基づきロード状態が未ロードであれば、ロード中に変更して新たにロードして上記呼び出されるプログラムがロード済の状態となったことを確認して、更に該プログラムのロードを上記イニシャルロードタスクが上記ロード待ち情報で待ち合わせていれば該プログラムのロードの完了を上記イニシャルロードタスクに通知し、ロード状態がロード中であれば、該プログラムのロードの完了を上記ロード待ち情報で待ち合わせる手段を有する、
ことを特徴とするプログラムロード装置。
【請求項２】
プログラムロードテーブル記憶ステップとプログラムロード依頼ステップとプログラムロード確認ステップとプログラムロードステップとから構成される、複数のプログラムをロードするプログラムロード方法であって、
上記プログラムロードテーブル記憶ステップは、ロードするプログラム毎に、属性と少なくとも未ロード、ロード中、ロード済の３つのロード状態を区別する情報と、プログラムのロード完了をオンライン処理タスクとイニシャルロードタスク間で待ち合わせるロード待ち情報とをプログラムロードテーブルに記憶し、
上記プログラムロードステップは、上記プログラムロードテーブルに基づき上記ロード状態が未ロードであれば、未ロードであるプログラムのロード状態をロード中に変更してロードして、更に該プログラムのロードを上記オンライン処理タスクが上記ロード待ち情報で待ち合わせていれば該プログラムのロードの完了を上記オンライン処理タスクに通知し、上記ロード状態がロード中であれば、該プログラムのロードの完了を上記ロード待ち情報で待ち合わせ、
上記プログラムロード依頼ステップは、上記プログラムロードテーブルにあるプログラム名に基づいてプログラムライブラリを検索して上記プログラムの大きさを知りプログラムをロードするメモリ領域を獲得し、上記獲得したメモリ領域のアドレスと大きさを上記プログラムロードテーブルに記憶して上記イニシャルロードタスクを起動し、
上記プログラムロード確認ステップは、上記プログラムロードステップによる上記プログラムのロードと並行して上記プログラムを呼び出すとき、上記ロードテーブルに基づきロード状態が未ロードであれば、ロード中に変更して新たにロードして上記呼び出されるプログラムがロード済の状態となったことを確認して、更に該プログラムのロードを上記イニシャルロードタスクが上記ロード待ち情報で待ち合わせていれば該プログラムのロードの完了を上記イニシャルロードタスクに通知し、ロード状態がロード中であれば、該プログラムのロードの完了を上記ロード待ち情報で待ち合わせる、
ことを特徴とするプログラムロード方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータのオンライン処理システム立ち上げ時のプログラムロード装置と方法に関する。
【０００２】
【従来の技術】
大規模なコンピュータオンライン処理システムではオンライン処理のレスポンス保証のために、電文（トランザクション）処理中に共通的に必要なプログラムのローディングが発生しないようにあらかじめオンラインシステム開始時に共通的なプログラムのローディングを終了しておくイニシャルプログラムロード方式を採用している。
【０００３】
【発明が解決しようとする課題】
このイニシャルロード処理では、プログラムのロード処理は、ロードされるプログラムが動作するタスクが自分の領域内にメモリを確保して、そこにファイルから読み込む必要があり、オンライン立ち上げ処理の一部としてプログラムロード処理（イニシャルロード処理）を組み込む必要があった。このため、イニシャルロード処理と本来のオンライン開始処理とは順次処理せざるを得ず、オンライン立ち上げ処理に時間がかかるという問題があった。
【０００４】
図７に従来技術のオンライン処理開始手順の説明図（その１）を示す。ここにはフローチャートでオンライン処理を開始するときに必要なステップを示してある。
【０００５】
オンライン処理は通常２４時間運転をするので開始処理はシステムの運用開始のときや大々的にシステムの入替えを行ったときなど限られた場合に必要となる。しかし、日常の運用の中でシステムの改善のために一部システムの入替えや何らかのトラブルによってシステムの運転が一部中断するなどは起こりうることであり、このようなときに一部あるいは全システムの再起動が必要となりここで述べるようなオンライン開始処理が動作することになる。このような場合のシステムの再立ち上げの時間は出来るだけすばやく短時間で行われることが望まれる。
【０００６】
フローチャートについて順次説明する。
ステップＳ７１ではまず新たに起動するオンラインシステムが動作する環境としてオンライン処理タスクを発生させる。
【０００７】
ステップＳ７２においては多重仮想記憶システムの１つの仮想記憶装置をこれに割り当て他のオンライン処理と同時並行して動作するようにする。
ステップＳ７３においてオンライン処理の主プログラムのローディングが行われ主プログラムが起動される。
【０００８】
ステップＳ７４では、主プログラムがオンライン処理に必要な多数の副プログラムやサブルーチンをこれらを呼び出したときにローディング動作が発生しないようにあらかじめ実メモリに常駐させるようにページを固定した領域を確保してまとめてローディングする。
【０００９】
これらのプログラムのローディングが終わってから、ステップＳ７５でオンライン開始処理を行う。ここでは、データベースや各種制御用のファイルについて初期設定オープンする。また、メモリ上の制御テーブルについても初期状態に設定しテーブルの初期化を行う。
【００１０】
以上のような準備ができたところで、本来のオンライン業務処理が開始する。すなわち、電文が端末から送られてくればそれぞれに必要な処理を行うプログラムが呼び出されトランザクションの処理が行われる。このとき、必要となる共通的な副プログラムやサブルーチンがすでにローディングされていてレスポンスが早くなるようにしているのである。
【００１１】
このように、ステップＳ７４で示したイニシャルロード処理とステップＳ７５のオンライン開始処理が順に実行されるがここに必要な時間がどのように発生しているかを図８従来技術のオンライン処理開始手順の説明図（その２）にタイムチャートとして示してある。
【００１２】
イニシャルロード処理として複数のプログラムのローディングと各種テーブルなどの初期設定を行うオンライン開始処理と、トランザクション処理で必要となったプログラム呼び出しとが順次動作して行く様子を示している。ここで各処理の時間軸上の要素として「━」で示しているのはＣＰＵ処理すなわちメモリ上のテーブルなどの操作を行っている時間の経過であり、「■」で示しているのはファイルアクセスなどを伴う処理が起動され入出力装置の動作の完了を待っている時間を表している。
【００１３】
イニシャルロード処理ではファイルにあるプログラムライブラリからプログラムを読み出すのが主たる動作であり、■で示すＩ／Ｏ処理待ちの時間が多い。また、オンライン開始処理ではファイルのオープン、ファイル制御表の初期設定などファイルのアクセスもあるがＣＰＵ処理時間の割合が多い。
【００１４】
トランザクション処理では業務データの入出力の他にあらかじめロードしていなかったプログラムの呼び出しでプログラムロード処理が発生することもあることを示している。
【００１５】
上記のことから分かるようにオンライン業務であるトランザクション処理の開始を早くするには、イニシャルロード処理とオンライン開始処理におけるＩ／Ｏ処理待ち時間をいかに有効に使うようにするかが問題である。
【００１６】
本発明はこのような点にかんがみて、
イニシャルロード処理をオンライン開始処理と並行して処理することにより、オンライン立ち上げの処理時間短縮を図ったイニシャルロード処理の実現手段を提供することを目的とする。
【００１７】
【課題を解決するための手段】
上記の課題は下記の如くに構成されたプログラムロード装置と方法によって解決される。
【００１８】
図１は、本発明の構成図である。
３はロードする複数のプログラム毎に属性（プログラム名など）と少なくとも未ロード、ロード中、ロード済の３つのロード状態を区別して記憶するプログラムロードテーブルであり、２は上記プログラムロードテーブル３に基づき、ロード状態が未ロードであるプログラムのロード状態をロード中に変更してプログラムをロードするプログラムロード手段であり、１は上記プログラムロードテーブル３にあるプログラム名に基づいてプログラムライブラリを検索して上記プログラムの大きさを知りプログラムをロードするメモリ領域を獲得し、上記獲得したメモリ領域のアドレスと大きさを上記プログラムロードテーブル３に記憶して上記プログラムロード手段２を起動するプログラムロード依頼手段であり、４は上記プログラムを呼び出すとき、上記プログラムロードテーブル３に基づきロード状態が未ロードであればロード中に変更して新たにプログラムをロードし、上記呼び出されるプログラムがロード済の状態となったことを確認するプログラムロード確認手段である。
【００１９】
上記のような構成により、プログラムロードテーブル３にプログラム名を記憶した複数のプログラムを、プログラムロード依頼手段１から依頼されたプログラムロード手段２が依頼元タスクと並行して動作してロードを行う。
【００２０】
並行して動作する依頼元タスクの処理の中で必要となったプログラムを呼び出すときには、プログラムロード確認手段４によりプログラムロードテーブル３のロード状態により上記プログラムロード手段２が未だロードしてない状態であれば依頼元タスクに属するプログラムロード確認手段４で直接プログラムをロードし、いずれかの手段によりロード済となったことを確認する。
【００２１】
【発明の実施の形態】
図２に本発明の実施の形態の構成図を示す。
２１はオンライン処理タスクを示し、オンライン処理を行う本体のプログラムである。内部は上記した従来技術のオンライン処理開始手順に似ているが最初にイニシャルロード処理ではなくイニシャルロード処理２２の呼び出しとなっている。違いはイニシャルロード処理で行うべき複数のプログラムのローディングについては後述するように２２のイニシャルロード処理で必要なメモリの確保のみを行いイニシャルロード管理テーブル２４にプログラム名、アドレスなどを記憶して、実際のローディングを他のタスク２３に任せてしまうようになっている。
【００２２】
オンライン開始処理、トランザクション処理の内容は上記した従来技術の説明と同様である。ＣＡＬＬとあるのはプログラムの呼び出しをするとき、上記のようにプログラムのローディングを他のタスク２３に任せているため確かにローディングされているか実際にプログラムを呼び出すときに確認する必要があり２５のプログラム呼び出し機能によって同期をとるようにしてある。このとき、イニシャルロードタスク２３が対象のプログラムについてロード処理を開始していない場合には依頼を取り消して直接ロードする機能をも合わせ持つようになっている。
【００２３】
各構成要素を結ぶ線は実線の矢印でプログラムの呼び出し関係あるいは起動をかけることを示しており、点線の矢印では２４のイニシャルロード管理テーブルの参照、更新を行うことを示している。
【００２４】
図１に示す本発明の構成図の手段との対応は次のようになっている。
プログラムロード手段２はイニシャルロードタスク２３、プログラムロード依頼手段１はイニシャルロード処理２２、プログラムロードテーブル３はイニシャルロード管理テーブル２４、プログラムロード確認手段４はプログラム呼び出し機能２５がそれぞれ対応する。
【００２５】
図３にはイニシャルロード管理テーブルの構成を示している。
このテーブルはオンライン処理タスク２１から呼び出されたイニシャルロード処理２２、イニシャルロード処理２２から起動されるイニシャルロードタスク２３とオンライン処理タスク２１のトランザクション処理から呼び出されたプログラム呼び出し機能２５との間で引き渡すべき情報とローディングに関する作業状態、作業の待ち合わせ通知のための情報の交換などを行うためのテーブルでありどの仮想記憶装置の領域にあるタスクからでも参照、更新ができるシステム共通領域にあらかじめ設置しておくものである。
【００２６】
プログラム名の欄にはイニシャルロード処理２２がロードすべきプログラム名を、また、大きさの欄には対応するプログラムについてプログラムライブラリを調べローディングに必要な領域の大きさを記録し、その大きさのロードすべき領域を確保して仮想アドレスと対応する実アドレスを記入する。そしてイニシャルロード処理がこのテーブルに示したプログラムのロードをイニシャルロードタスク２３に依頼するようにする。
【００２７】
ロード状態の欄は、依頼されたイニシャルロードタスク２３がこのイニシャルロード管理テーブル２４に基づいてプログラムを実メモリにローディングするとき、未ロード状態では「０」となっているロード状態の表示をロード作業の進捗にともないロード中「１」、ロード済「２」のように状態表示を変更して行くものである。
【００２８】
依頼元のオンライン処理タスク２１での処理の進捗にともないプログラム呼び出し機能２５が呼び出され、呼び出そうとする対象のプログラムが未ロードなら直接プログラム呼び出し機能２５がそのプログラムのロードを行う。このようにオンライン処理タスクとイニシャルロードタスクの複数のプログラムロード機能が並行して動作するので上記ロード状態表示によりプログラムロードの重複を避けるようにしている。
【００２９】
また、すでにロード中「１」の状態表示があるときにロードしようとするタスクはロードが完了するのを待つことになり、ロードが完了したときには待ちとなっているタスクに通知する必要がある。このため例えば、ロードしたイニシャルロードタスク２３がそのローディング完了をロード待ちタスクであるオンライン処理タスク２１に通知するために通知するべきアドレス（ＥＣＢアドレス）を用意しておき、お互いに連絡できるようにしている。
【００３０】
次に、図４、図５、図６により動作の説明を行う。
図４はイニシャルロード処理のフローチャートである。イニシャルロード処理２２はオンライン処理タスク２１から呼び出され、ロードすべきプログラムに関する情報をイニシャルロード管理テーブルに記憶して、イニシャルロードタスク２３に起動を掛けて呼出元のオンライン処理タスク２１に戻るものである。すなわちタスクとしてはオンライン処理タスク２１の一部として動作する。
【００３１】
ステップＳ４１はイニシャルロード管理テーブル２４のプログラム名欄（図３）以外を全てクリアし未ロードの状態とし、テーブルの先頭から１行ずつ処理をすすめるためにポインタを設定する。
【００３２】
ステップＳ４２ではポインタが示すテーブルの１行を取り出す。
ステップＳ４３では、ポインタの示すプログラム名でロードすべきプログラムを格納しているプログラムライブラリを検索してプログラムが動作するのに必要なメモリ領域の大きさを調べ、テーブルの大きさ項目に記憶する。
【００３３】
ステップＳ４４においては、上記大きさのプログラムをロードすべき領域を獲得する。このとき、ロードしようとしているプログラムは共通的なプログラムであり実メモリに常駐していつでもオンライン処理タスク２１で利用できるようにする必要がありロードする領域を確保するときに「ページ固定」のオプション指定をしておく。確保された仮想アドレスをテーブル上該当の仮想アドレス項目に記憶する。
【００３４】
ステップＳ４５では他のタスク、イニシャルロードタスク２３で実メモリに直接ロードするために、獲得した領域の仮想アドレスをセグメントテーブル、ページテーブルにより実アドレスに変換し、実アドレスの項目に記憶する。
【００３５】
以上が１つのプログラム名に対応するロード依頼のための情報設定であり、ステップＳ４６で処理のポインタがテーブルの最後まできていたかどうかを調べている。
【００３６】
まだ、他のプログラムについて処理が残っているときはステップＳ４７でポインタを進めてステップＳ４２に戻る。
全てのロードすべきプログラムについて処理が終り依頼する情報の設定がされたときにはステップＳ４８でこのテーブルをパラメータとしてイニシャルロードタスク２３を起動する。すなわち、ここから別タスクでローディングを並行処理することになる。
【００３７】
図５はイニシャルロードタスクのフローチャートである。
上記のようにロードすべきプログラムの情報をイニシャルロード管理テーブル２４に設定してパラメータとして起動されたイニシャルロードタスク２３は依頼元のオンライン処理タスク２１と並行してプログラムロード処理を進める。
【００３８】
処理はイニシャルロード管理テーブルの先頭から処理ポインタを設定し順次ロード処理を進める。
ステップＳ５２ではテーブル２４のロード状態表示を調べそのプログラムは未ロードか否かを知る。ロード中、ロード済の場合はイニシャルロードタスクでは該当のプログラムについてはロードを行わない。これらはすでにロード済あるいは他のタスクすなわちオンライン処理タスク２１が先にロードを開始している場合である。これらのタスクは並行して処理を進めるので場合によってはイニシャルロードタスク２３がロードする前にオンライン処理タスク２１の処理が進み実際にトランザクション処理に入ってそのプログラムの呼び出しをしようとする場合が発生する。このようなときロード中であればその完了を待ち、未ロードであれば直ちに自分でロードするようにしている。このとき、重複してイニシャルロードタスクで新たにロードしないようにテーブルのロード状態表示をロード中とするようにしている。
【００３９】
従って未ロード以外のときはステップＳ５７で処理ポインタを進め、ステップＳ５８で終りを確認している。
未ロードの場合ステップＳ５３では先ずロード状態表示を「ロード中」に設定する。これは上記したようにオンライン処理タスク２１でトランザクション処理が進みプログラム呼び出し機能２５が働くときに待たせるための表示である。
【００４０】
ステップＳ５４では処理ポインタの示すプログラム名とロードする領域の実アドレスをパラメータとしてプログラムを実メモリにロードする。
ロードされたことを確認してステップＳ５５ではテーブルのロード状態表示を「ロード済」に変更する。
【００４１】
ステップＳ５６はテーブルのロード待ちタスクの項目に待ちの通知アドレスが表示されているかを調べている。待ちはイニシャルロードタスク２３が、あるプログラムのロードを開始し、ロード中の状態表示をしているときプログラム呼び出し機能がそのプログラムのロード状態がロード中表示であることを確認したときにオンライン処理タスク２１が待ち状態に入ることになりこの状態が発生する。このとき、オンライン処理タスク２１の一部であるプログラム呼び出し機能２５が待ちを解除するための通知アドレスをテーブルに記憶するようにしておく。
【００４２】
上記待ちタスクがあるときにはステップＳ５９でテーブルのロード待ちタスクの項目に記憶されている通知すべきＥＣＢアドレスを用いて待ちタスクに完了を通知する。
【００４３】
図６はプログラム呼び出し機能のフローチャートである。
プログラム呼び出し機能２５はオンライン処理タスク２１から呼び出されてプログラム呼び出しができるかどうか、すなわち、呼び出すプログラムがすでに実メモリにローディングされているか否かを確認する機能を果たすもので、タスクとしてはオンライン処理タスク２１に属する。
【００４４】
まず、ステップＳ６０ではロード状態を確認すべきプログラムの名前でイニシャルロード管理テーブル２４を検索して処理ポインタを設定する。
ステップＳ６１、ステップＳ６２でテーブルのロード状態表示を調べ、指定されたプログラムはロード済か、ロード中かを判定する。
【００４５】
ロード済であれば直ちに確認されたとして呼出元のトランザクション処理に戻る。ロード中であることが分かったときは、イニシャルロードタスク２３がロード処理中でありその完了を待つことになる。すなわち、ステップＳ６３でイニシャルロード管理テーブルにロード待ちタスクの表示をしてオンライン処理タスク２１はステップＳ６４で待ち（ＷＡＩＴ）状態に入る。つまり、ステップＳ１０でイニシャルロードタスク２３がそのプログラムのローディングを完了して通知（ＰＯＳＴ）してくるまで待ち状態となる。
【００４６】
ステップＳ６２で未ロードであることが分かったときは、イニシャルロードタスク２３によるローディングではなくプログラム呼び出し機能２５でプログラムのローディングを行う。
【００４７】
先ずステップＳ６５でテーブルのロード状態表示を「ロード中」とする。
ステップＳ６６でテーブルの処理ポインタで示されるプログラム名とアドレスを指定してプログラムをロードする。
【００４８】
完了したらステップＳ６７でテーブルのロード状態表示をロード済に変更する。これで、必要なプログラムのロードが完了したが、タイミングで他のタスクでそのプログラムのローディング完了を待っているものがなかったかをステップＳ６８で調べる。あったときには、ステップＳ６９で待ちタスクに通知する。
【００４９】
上記した本発明の実施の形態では説明をし易くするためにオンライン処理タスクが１つであるようにして説明したが、複数のオンライン処理タスクで共通のプログラムを常駐化させて利用する場合にもイニシャルロード管理テーブル２４とイニシャルロードタスク２３を共通に利用して同様の並行処理を行わせることも容易である。すなわち、イニシャルロード処理２２ではロードすべきプログラムの属性とロード状態の設定をテーブルの空き行を確認して探して記憶させるようにして、複数のオンライン処理タスクからのロード要求を重複しないようにテーブルに登録する。また、イニシャルロードタスクについては、このタスクの起動を複数のオンライン処理タスク２１から重複して起動を掛けさせるが、各起動されたタスクが並行して動作してもテーブルの状態表示による制御で重複したローディングが発生しないようになっているので問題ない。さらに、待ちタスクへの通知も多重仮想記憶装置を区別して通知するようにしてあるので対応できる。
また、複数の待ちに対する通知を行うためには通知先を示す行列を用いるようにすればよい。
【００５０】
なお、上記説明において複数のタスクで参照するシステム共通領域にあるイニシャルロード管理テーブル２４についての排他制御は断っていないが当然考慮したものとする。
【００５１】
また、本発明の実施の形態としてオンライン処理タスクにおける例として示したが、一般的に複数プログラムを多重仮想記憶装置上に効率良くローディングする必要があるときにも適用可能となるものである。
【００５２】
【発明の効果】
以上の説明から明らかなように本発明によれば大規模なオンライン処理システムにおいてシステムの立ち上げ、再立ち上げなどのときに長時間必要とするイニシャルロード処理をオンライン開始処理と並行して処理することにより、オンライン立ち上げの処理時間の短縮を図ることができ、大規模コンピュータシステムの運転の効率化、と利用者の利便性向上という著しい工業的効果がある。
【図面の簡単な説明】
【図１】本発明の構成図
【図２】本発明の実施の形態の構成図
【図３】イニシャルロード管理テーブル
【図４】イニシャルロード処理のフローチャート
【図５】イニシャルロードタスクのフローチャート
【図６】プログラム呼び出し機能のフローチャート
【図７】従来技術のオンライン処理開始手順の説明図（その１）
【図８】従来技術のオンライン処理開始手順の説明図（その２）
【符号の説明】
１  プログラムロード依頼手段
２  プログラムロード手段
３  プログラムロードテーブル
４  プログラムロード確認手段
【図１】
0003586943.tif 000002
【図２】
0003586943.tif 000003
【図３】
0003586943.tif 000004
【図４】
0003586943.tif 000005
【図５】
0003586943.tif 000006
【図６】
0003586943.tif 000007
【図７】
0003586943.tif 000008
【図８】
0003586943.tif 000009