(57)【要約】【課題】単なる機能追加だけではない拡張性や柔軟性があるようにする。【解決手段】プログラムの処理命令に従って処理を行うプログラム処理方法であって、第１記憶部に第１プログラムを格納し、補助記憶部の第２プログラムを検知し、該第２プログラムを転送して第２記憶部に格納し、前記第１記憶部及び第２記憶部をメモリ空間に配置し、前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１プログラム及び第２プログラムを読み出して実行する。【選択図】　　　　　図１
2004118764.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）プログラムの処理命令に従って処理を行うプログラム処理方法であって、
（ｂ）第１記憶部に第１プログラムを格納し、
（ｃ）補助記憶部の第２プログラムを検知し、
（ｄ）該第２プログラムを転送して第２記憶部に格納し、
（ｅ）前記第１記憶部及び第２記憶部をメモリ空間に配置し、
（ｆ）前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１プログラム及び第２プログラムを読み出して実行することを特徴とするプログラム処理方法。
【請求項２】
前記第２プログラムに前記第１プログラムのシンボル情報によってリンクを行い前記第２記憶部に格納する請求項１に記載のプログラム処理方法。
【請求項３】
（ａ）プログラムの処理命令に従って処理を行うプログラム処理装置であって、
（ｂ）第１プログラムを格納する第１記憶部と、
（ｃ）第２プログラムを格納する少なくとも一つの補助記憶部と、
（ｄ）該補助記憶部の第２プログラムを検知する検知部と、
（ｅ）前記第２プログラムを転送して第２記憶部に格納する転送部と、
（ｆ）前記第１記憶部及び第２記憶部をメモリ空間に配置する配置部と、
（ｇ）前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１プログラム及び第２プログラムを読み出して実行する実行部とを有することを特徴とするプログラム処理装置。
【請求項４】
（ａ）データの処理命令に従って処理を行うデータ処理方法であって、
（ｂ）第１記憶部に第１データを格納し、
（ｃ）補助記憶部の第２データを検知し、
（ｄ）該第２データを転送して第２記憶部に格納し、
（ｅ）前記第１記憶部及び第２記憶部をメモリ空間に配置し、
（ｆ）前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１データ及び第２データを読み出して実行することを特徴とするデータ処理方法。
【請求項５】
（ａ）データの処理命令に従って処理を行うデータ処理装置であって、
（ｂ）第１データを格納する第１記憶部と、
（ｃ）第２データを格納する少なくとも一つの補助記憶部と、
（ｄ）該補助記憶部の第２データを検知する検知部と、
（ｅ）前記第２データを転送して第２記憶部に格納する転送部と、
（ｆ）前記第１記憶部及び第２記憶部をメモリ空間に配置する配置部と、
（ｇ）前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１データ及び第２データを読み出して実行する実行部とを有することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム及びデータの処理方法並びに装置に関するものである。
【０００２】
【従来の技術】
従来、コンピュータ制御の電子機器においては組み込みプログラムを追加したり、差し替えたりするようになっている（例えば、特許文献１参照。）。
【０００３】
図２は従来のプログラム処理装置のメモリマップを示す図である。
【０００４】
図において、レジデントＲＯＭはあらかじめ電子機器の装置内に配設されているＲＯＭである。そして、前記電子機器における組み込みプログラム及びデータは、一般的に、前記レジデントＲＯＭに格納される。また、レジデントモジュールとは前記レジデントＲＯＭ内のプログラムである。
【０００５】
そして、前記電子機器において、レジデントＲＯＭではサポートされていない機能を追加する場合、該機能を実現するためのモジュールをオプションＲＯＭという形式で追加する方式が一般的である。通常、レジデントＲＯＭとオプションＲＯＭとは、図に示されるように、同じアドレス空間の異なるアドレスに配置される。つまり、単一のリンクモジュールを追加及び削除可能な状態で別々のＲＯＭに分けたようなイメージとなる。
【０００６】
また、レジデントＲＯＭとオプションＲＯＭとの間で互いのシンボルを参照する場合、あらかじめ決定したシンボルのアドレスをあらかじめ決定した順序でテーブル化し、該テーブルを固定アドレスに配置する方式が一般的である。このシンボルのアドレスをテーブル化したものをベクタテーブルという。なお、前記シンボルの参照はオプションＲＯＭからレジデントＲＯＭへの一方向であることが一般的である。
【０００７】
【特許文献１】
特開平５−３５３６６号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、前記従来の電子機器におけるオプションＲＯＭにより機能を追加する方式では、図に示されるように、追加するモジュールをメモリデバイス上に配置する必要があった。また、該メモリデバイスを電子機器に追加するためのハードウェア的な拡張スロットの個数には限りがあり、アドレス空間も固定であるため、追加することができるモジュールの個数も前記拡張スロットの個数によって制限されてしまう。
【０００９】
本発明は、前記従来のプログラム処理方法及び装置の問題点を解決して、単なる機能追加だけではない拡張性や柔軟性があるプログラム及びデータの処理方法並びに装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
そのために、本発明のプログラム処理方法においては、プログラムの処理命令に従って処理を行うプログラム処理方法であって、第１記憶部に第１プログラムを格納し、補助記憶部の第２プログラムを検知し、該第２プログラムを転送して第２記憶部に格納し、前記第１記憶部及び第２記憶部をメモリ空間に配置し、前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１プログラム及び第２プログラムを読み出して実行する。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１２】
図１は本発明の第１の実施の形態におけるプログラム処理装置のメモリマップを示す図、図３は本発明の第１の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【００１３】
図３において、１１−１、１１−２…１１−ｎは、プログラム処理装置における装置内部の記憶装置、又は、前記プログラム処理装置に接続された外部の記憶装置であり、補助記憶部として機能する。本実施の形態において、前記プログラム処理装置は、コンピュータ制御の電子機器であればいかなる装置であってもよい。また、前記記憶装置１１−１、１１−２…１１−ｎも情報を格納する装置であればいかなる装置であってもよく、具体的なデバイスが何であるか、又は、どこに存在するかは特に限定されない。すなわち、プログラム処理装置内部に配設されるハードディスクであってもよいし、ネットワークに接続されている記憶装置であってもよい。
【００１４】
そして、２０は第１記憶部としてのレジデントＲＯＭであり、あらかじめ前記プログラム処理装置内に配設されている。前記レジデントＲＯＭ２０は、プログラム処理装置本来の機能を実現するための第１プログラムとしてのレジデントモジュール２３、プログラム処理装置に接続された前記記憶装置１１−１、１１−２…１１−ｎ内から第２プログラムとしてのオプションモジュールを探して検知するための検知部として機能するプログラムとしてのモジュール検索処理部２１、及び、該モジュール検索処理部２１によって検知されたオプションモジュールを転送してプログラム処理装置内の第２記憶部としてのＲＡＭ３０に格納、すなわち、ロードするための転送部として機能するプログラムとしてのモジュールローダ２２を備える。そして、前記ＲＡＭ３０は動的にロードされた第２プログラムとしてのオプションモジュール３１−１、３１−２…３１−ｎを格納する。また、前記ＲＡＭ３０の残りの記憶領域は、本来の使用目的であるワークエリアとして利用される。なお、記憶装置１１−１、１１−２…１１−ｎ及びオプションモジュール３１−１、３１−２…３１−ｎを統合的に説明する場合には、それぞれ、記憶装置１１及びオプションモジュール３１として説明する。
【００１５】
次に、前記構成のプログラム処理装置の動作について説明する。
【００１６】
図４は本発明の第１の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【００１７】
まず、プログラム処理装置の電源を投入すると、レジデントモジュール２３における装置起動処理が実行される。ここで、従来の電子機器では、初期化処理が実行されるのみであったが、本実施の形態におけるプログラム処理装置では、装置起動処理を実行する場合、検知部としてのモジュール検索処理部２１によってオプションモジュール３１を検索するためのモジュール検索が実行される。この場合、該モジュール検索は前記プログラム処理装置に内蔵された又は外部に接続されたすべての記憶装置１１に対して順次実行される。
【００１８】
そして、検索の結果、オプションモジュール３１が検知、すなわち、検出されたか否かを判断し、オプションモジュール３１が検出された場合は、転送部としてのモジュールローダ２２によってモジュールロードを実行する。
【００１９】
ここで、本実施の形態におけるオプションモジュール３１はリンク済のオブジェクトとする。つまり、未定義シンボルも解決されており、アドレスも決定している形式である。オプションモジュール３１からのレジデントＲＯＭ２０のシンボルの参照方法については特に限定しない。オプションモジュール３１はアドレス決定済みのオブジェクトであるので、モジュールローダ２２は、対象となるオプションモジュール３１を配置されるべきアドレスにコピーするだけである。この場合、前記モジュールローダ２２は配置部として機能する。
【００２０】
次に、前記記憶装置１１のすべてに対してモジュール検索が実行されたか否かを判断し、すべての記憶装置１１の検索が終了するまで、前記モジュール検索及びモジュールロードは繰り返し実行される。
【００２１】
そして、モジュール検索及びモジュールロードの結果、前記オプションモジュール３１が前記記憶装置１１から転送され、前記プログラム処理装置内のＲＡＭ３０内に格納されて配置される。
【００２２】
続いて、すべての記憶装置１１に対してモジュール検索及びモジュールロードが終了すると、初期化処理が実行される。該初期化処理において、前記オプションモジュール３１はレジデントモジュール２３によって存在を認識される必要がある。なお、前記オプションモジュール３１の認識方法には様々な方式が考えられる。例えば、オプションモジュール３１がロードされた場合、特定アドレスに特定文字列が書き込まれるようにしておくことによって、レジデントモジュール２３はオプションモジュール３１の存在を認識することが可能である。そして、前記初期化処理において、レジデントモジュール２３の初期化、及び、オプションモジュール３１の初期化が実行される。これにより、プログラム処理装置全体としての初期化を完了する。そして、初期化処理が終了すると、前記プログラム処理装置はレジデントモジュール２３とオプションモジュール３１とを区別することなく動作する。
【００２３】
次に、フローチャートについて説明する。
ステップＳ１　モジュール検索を実行する。
ステップＳ２　オプションモジュール３１が検出されたか否かを判断する。検出された場合はステップＳ３に進み、検出されない場合はステップＳ４に進む。
ステップＳ３　モジュールロードを実行する。
ステップＳ４　すべての記憶装置１１を検索したか否かを判断する。検索した場合はステップＳ５に進み、検索しない場合はステップＳ１に戻る。
ステップＳ５　初期化処理を実行し、処理を終了する。
【００２４】
このように、本実施の形態においては、プログラム処理装置に内蔵された記憶装置１１及び外部に接続された記憶装置１１から、オプションモジュール３１を探し出し、該オプションモジュール３１を取り込む際にプログラム処理装置内部のＲＡＭ３０にロードする。これにより、オプションとして追加するモジュールは必ずしもメモリデバイス上に配置する必要がなくなり、ハードディスクやネットワークに接続されている記憶装置１１に配置されているオプションモジュール３１も追加することが可能となる。また、追加することができる該オプションモジュール３１の個数も拡張スロットの個数などのハードウェア的な制限を受けることがない。
【００２５】
ところで、従来におけるオプションＲＯＭでは、ベクタテーブルを用いるか、レジデントＲＯＭ側のレジデントモジュールのシンボル情報を利用してオプションＲＯＭ側のオプションモジュールをリンクする必要がある。ここで、リンクとは、複数のオブジェクトファイルやライブラリを繋ぎ合わせることによって、実行オブジェクトを生成することである。一般的に、リンクは未定義シンボルの解決、アドレスの決定の動作も含まれる。
【００２６】
そして、ベクタテーブルを用いる方式では、レジデントＲＯＭとオプションＲＯＭとの間で、互いに参照する可能性のあるシンボルはすべてベクタテーブル化する必要がある。また、ベクタテーブルから漏れたシンボルを参照することは不可能である。レジデントＲＯＭ側のシンボル情報を利用してオプションＲＯＭ側のモジュールをリンクする方法の場合、参照するシンボルをあらかじめ決定しておく必要はないが、レジデントＲＯＭ側のシンボルのアドレスはリンクの度に変化するため、レジデントＲＯＭのリンク・バージョンとオプションＲＯＭのリンク・バージョンとが対に対応する必要がある。つまり、あるリンク・バージョンのレジデントＲＯＭのシンボル情報を参照して作成されたオプションＲＯＭは、別のリンク・バージョンのレジデントＲＯＭと組み合わせることができない。
【００２７】
また、前記第１の実施の形態においては、拡張スロットの個数などのハードウェア的な制限というオプションＲＯＭの問題を解決しているが、オプションモジュール３１からレジデントモジュール２３へのシンボルの参照に関する問題が解決されていない。そこで、オプションモジュール３１を取り込む際に動的にリンクを行うことによって、オプションモジュール３１からレジデントモジュール２３へのシンボルの参照に関する問題を解決する本発明の第２の実施の形態について説明する。なお、前記第１の実施の形態と同じ構成を有するもの及び同じ動作については、同じ符号を付与することによってその説明を省略する。
【００２８】
図５は本発明の第２の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【００２９】
図５において、２４はプログラムとしてのリンカ、２５はプログラムデータとしてのレジデントモジュールシンボル情報である。他の構成については本発明の第１の実施の形態と同じであるので説明を省略する。ここで、前記リンカ２４は、モジュール検索処理部２１によって検出されたオプションモジュール３１をレジデントモジュールシンボル情報２５を参照することによって動的にリンクを行って、オプションモジュール３１からレジデントモジュール２３への参照による未定義シンボルを解決し、かつ、オプションモジュール３１の配置されるアドレスを決定する。プログラム処理装置内のＲＡＭ３０はリンカ２４によって動的にリンクが行われたオプションモジュール３１−１、３１−２…３１−ｎを格納する。また、前記ＲＡＭ３０の残りの領域は、本来の使用目的であるワークエリアとして利用される。
【００３０】
次に、前記構成のプログラム処理装置の動作について説明する。
【００３１】
図６は本発明の第２の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【００３２】
まず、プログラム処理装置の電源を投入すると、レジデントモジュール２３における装置起動処理が実行される。ここで、該装置起動処理を行う場合、モジュール検索処理部２１によってモジュール検索が実行される。このとき、該モジュール検索はプログラム処理装置に内蔵又は外部に接続されたすべての記憶装置１１に対して順次実行する。
【００３３】
そして、検索の結果、オプションモジュール３１が検知、すなわち、検出されたか否かを判断し、オプションモジュール３１が検出された場合は、リンカ２４によってリンクが行われる。ここで、本実施の形態におけるオプションモジュール３１は再配置可能なオブジェクトとする。また、レジデントモジュール２３に対するシンボル参照の未定義シンボルも解決していない形式である。前記リンカ２４は、レジデントモジュールシンボル情報２５を参照することによって、動的にリンクを行ってオプションモジュール３１からレジデントモジュール２３への参照による未定義シンボルを解決し、かつ、オプションモジュール３１の配置されるアドレスを決定する。
【００３４】
次に、前記リンカ２４は、リンクによる再配置の結果、決定したオプションモジュール３１のエントリポイントをレジデントモジュール２３に通知する。つまり、オプションモジュール３１の配置されるべきアドレスは動的なリンクによって決定されるため、前記アドレスはリンカ２４のみに格納される。これにより、その存在をレジデントモジュール２３に通知することによって認識させる。
【００３５】
次に、前記記憶装置１１のすべてに対してモジュール検索が実行されたか否かを判断し、すべての記憶装置１１の検索が終了するまで、前記モジュール検索及びリンクは繰り返し実行される。
【００３６】
そして、モジュール検索及びリンクの結果、プログラム処理装置内のＲＡＭ３０内には、オプションモジュール３１−１、３１−２…３１−ｎが配置される。
【００３７】
続いて、すべての記憶装置１１に対してモジュール検索及びリンクが終了すると、初期化処理が実行される。なお、レジデントモジュール２３は既にオプションモジュール３１の存在を認識しているので、初期化処理において、そのエントリポイントをコールすることが可能である。そして、前記初期化処理において、レジデントモジュール２３の初期化、及び、オプションモジュール３１の初期化が実行される、すなわち、エントリポイントをコールすることによってプログラム処理装置全体としての初期化を完了する。そして、初期化処理が終了すると、前記プログラム処理装置はレジデントモジュール２３とオプションモジュール３１とを区別することなく動作する。
【００３８】
次に、フローチャートについて説明する。
ステップＳ１１　モジュール検索を実行する。
ステップＳ１２　オプションモジュール３１が検出されたか否かを判断する。検出された場合はステップＳ１３に進み、検出されない場合はステップＳ１５に進む。
ステップＳ１３　リンクを実行する。
ステップＳ１４　オプションモジュール３１のエントリポイント通知する。
ステップＳ１５　すべての記憶装置１１を検索したか否かを判断する。検索した場合はステップＳ１６に進み、検索しない場合はステップＳ１１に戻る。
ステップＳ１６　初期化処理を実行し、処理を終了する。
【００３９】
このように、本実施の形態においては、オプションモジュール３１を再配置可能な形式で提供し、オプションモジュール３１を取り込む際に動的にアドレス再配置、未定義シンボルの解決などのリンクを行う。これにより、レジデントＲＯＭ２０側の任意のシンボルを参照することが可能となり、かつ、レジデントＲＯＭ２０のリンク・バージョンに対する依存性も発生しない。
【００４０】
ところで、従来におけるオプションＲＯＭでは、単純に機能を追加するだけであり、それ以上の拡張性や柔軟性はない。また、前記第２の実施の形態においては、オプションモジュール３１を取り込む際に動的にリンクを行うことによって、オプションモジュール３１からレジデントモジュール２３へのシンボルの参照に関する問題を解決しているが、このままでは単純に機能を追加するだけであり、それ以上の拡張性や柔軟性を有するものではない。そこで、不具合を持ったレジデントモジュール２３を無効化して、不具合を解消したオプションモジュール３１に差し替えることを可能にする本発明の第３の実施の形態について説明する。なお、前記第１及び第２の実施の形態と同じ構成を有するもの及び同じ動作については、同じ符号を付与することによってその説明を省略する。
【００４１】
図７は本発明の第３の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【００４２】
本実施の形態において、各記憶装置１１−１、１１−２…１１−ｎは、あらかじめ定められた位置に記憶内容を管理するための管理テーブル（例えば、ハードディスク記憶装置のファイルアロケーションテーブル等）を有する。また、電源オンにより、モジュール検索処理部２１は、前記管理テーブルを参照し、各記憶装置に記憶した各モジュールの位置を判断する。そして、各モジュールの位置情報を参照して各モジュールにアクセスを行い、各モジュールを本体のＲＡＭ３０に順次転送し記憶する。
【００４３】
図７において、ＲＡＭ３０はオプションモジュール３１−１、３１−２…３１−ｎの他に編集可能な初期化テーブル３２を格納する。また、前記ＲＡＭ３０の残りの領域は、本来の使用目的であるワークエリアとして利用される。そして、他の構成については前記第２の実施の形態と同じであるので説明を省略する。
【００４４】
次に、前記構成のプログラム処理装置の動作について説明する。
【００４５】
図８は本発明の第３の実施の形態における初期化テーブルの初期の状態を示す図、図９は本発明の第３の実施の形態における初期化テーブルのＲＡＭ上に構成後の状態を示す図、図１０は本発明の第３の実施の形態におけるオプションモジュールの再配置の結果を示す図、図１１は本発明の第３の実施の形態における初期化テーブルの更新結果を示す図、図１２は本発明の第３の実施の形態におけるオプションモジュールの追加及び差し替え結果を示す図、図１３は本発明の第３の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【００４６】
まず、プログラム処理装置の電源を投入すると、レジデントモジュール２３における装置起動処理が実行される。ここで、該装置起動処理を行う場合、まず、編集可能な初期化テーブル３２がＲＡＭ３０上に構成される。ここで、前記初期化テーブル３２は、初期化の際にコールされるべきモジュールのアドレスを管理するテーブルであり、付帯情報としてモジュールの識別子を有する。該モジュールの識別子とは、例えば、そのモジュールの名称を示す文字列などである。なお、初期状態の初期化テーブル３２には、レジデントモジュール２３のみが存在する。
【００４７】
次に、モジュール検索処理部２１によってモジュール検索が実行される。このとき、該モジュール検索はプログラム処理装置に内蔵又は外部に接続されたすべての記憶装置１１に対して順次実行される。そして、検索の結果、オプションモジュール３１が検知、すなわち、検出されたか否かを判断し、オプションモジュール３１が検出された場合は、リンカ２４によってリンクが行われる。ここで、本実施の形態におけるオプションモジュール３１は再配置可能なオブジェクトとする。また、レジデントモジュール２３に対するシンボル参照の未定義シンボルも解決していない形式である。前記リンカ２４は、レジデントモジュールシンボル情報２５を参照することによって、動的にリンクを行ってオプションモジュール３１からレジデントモジュール２３への参照による未定義シンボルを解決し、かつ、オプションモジュール３１の配置されるアドレスを決定する。
【００４８】
次に、前記リンカ２４は、リンクによる再配置の結果、決定したオプションモジュール３１のエントリポイントを初期化テーブル３２に追加する。その際、該初期化テーブル３２内に対象となるオプションモジュール３１と同じモジュール名を持つエントリが存在する場合、バージョン番号が新しい方を残し、古い方はそのエントリを初期化テーブル３２から取り除く。これにより、初期化テーブルから取り除かれたモジュールの初期化処理はコールされない、すなわち、モジュールとして無効化されたこととなる。
【００４９】
次に、前記記憶装置１１のすべてに対してモジュール検索が実行されたか否かを判断し、すべての記憶装置１１の検索が終了するまで、前記モジュール検索、リンク及び初期化テーブル３２の書き換えは繰り返し実行される。そして、モジュール検索及びリンクの結果、プログラム処理装置内のＲＡＭ３０内には、オプションモジュール３１−１、３１−２…３１−ｎが配置される。
【００５０】
続いて、すべての記憶装置１１に対してモジュール検索、リンク及び初期化テーブル３２の書き換えが終了すると、初期化処理が実行される。該初期化処理においては、初期化テーブル３２に登録されているモジュールをコールするだけである。これにより、レジデントモジュール２３の初期化、及び、オプションモジュール３１の初期化が実行される。ただし、無効化されたレジデントモジュール２３の初期化は実行されない。そして、初期化処理が終了すると、前記プログラム処理装置はレジデントモジュール２３とオプションモジュール３１とを区別することなく動作する。
【００５１】
次に、本実施の形態において、実現方式をあるケースに限定した場合について説明する。そして、前記ケースの条件は以下の（１）〜（６）である。
（１）初期化テーブル３２のデフォルト値はレジデントＲＯＭ２０内に格納されている。
（２）オプションモジュール３１はハードディスク等の記憶装置１１に格納されている。
（３）モジュールの付帯情報として、モジュール名とバージョン番号を持つ。該バージョン番号は数値が大きい程新しいと判断する。
（４）検出したオプションモジュール３１は、バージョンの新旧に関わりなくリンクし、ＲＡＭ３０上に展開する。
（５）モジュール名が同じモジュール同士では、バージョンの番号が新しいものを初期化テーブル３２に残す。
（６）初期化テーブル３２は必要十分な大きさの有限サイズの配列として実現する。
【００５２】
この場合も、まず、プログラム処理装置の電源を投入すると、レジデントモジュール２３における装置起動処理が実行される。ここで、該装置起動処理を行う場合、まず、編集可能な初期化テーブル３２をＲＡＭ３０上に構成される。図８においては、初期化テーブル３２をＲＡＭ３０上に構成する前の状態が示されており、図９においては、初期化テーブル３２をＲＡＭ３０上に構成した後の状態が示されている。ここで、前記初期化テーブル３２は、初期化の際にコールされるべきモジュールのアドレスを管理するテーブルであり、付帯情報としてモジュールの識別子を有する。該モジュールの識別子とは、例えば、そのモジュールの名称を示す文字列などである。なお、図９に示されるように、初期状態の初期化テーブル３２には、レジデントモジュール２３のみが存在する。
【００５３】
次に、モジュール検索処理部２１によってモジュール検索が実行される。このとき、該モジュール検索はプログラム処理装置に内蔵又は外部に接続されたすべての記憶装置１１に対して順次実行される。本実施の形態において前記記憶装置１１はハードディスクであるとする。
【００５４】
そして、検索の結果、オプションモジュール３１が検出されたか否かを判断し、オプションモジュール３１が検出された場合、リンカ２４によってリンクが行われる。ここで、本実施の形態におけるオプションモジュール３１は再配置可能なオブジェクトとする。また、レジデントモジュール２３に対するシンボル参照の未定義シンボルも解決していない形式である。前記リンカ２４はレジデントモジュールシンボル情報２５を参照することによって、動的にリンクを行いオプションモジュール３１からレジデントモジュール２３への参照による未定義シンボルを解決し、かつ、オプションモジュール３１の配置されるアドレスを決定する。オプションモジュール３１を配置する記憶領域は、図１０に示されるように、Ｆｒｅｅ　Ａｒｅａから動的に取得される。図１０において、オプションモジュール３１である”ＡＢＣ”がＲＡＭ３０上に再配置されている。
【００５５】
次に、リンカ２４は、リンクによる再配置の結果、決定したオプションモジュール３１のエントリポイントを初期化テーブル３２に追加する。ここで、該初期化テーブル３２内に対象となるオプションモジュール３１と同じモジュール名を持つエントリが存在する場合、バージョン番号の新しい方が残され、古い方はそのエントリを初期化テーブル３２から取り除かれる。これにより、初期化テーブル３２から取り除かれたモジュールの初期化処理はコールされない、すなわち、モジュールとして無効化されたこととなる。
【００５６】
図１１に示される例においては、レジデントモジュール２３にもオプションモジュール３１にもモジュール名”ＡＢＣ”のモジュールが存在する。そして、オプションモジュール３１の”ＡＢＣ”の方が新しいので、初期化テーブル３２がオプションモジュール３１を指すようになっている。
【００５７】
次に、前記記憶装置１１のすべてに対してモジュール検索が実行されたか否かを判断し、すべての記憶装置１１の検索が終了するまで、前記モジュール検索、リンク及び初期化テーブル３２の書き換えは繰り返し実行される。そして、モジュール検索及びリンクの結果、プログラム処理装置内のＲＡＭ３０内には、オプションモジュール３１が配置される。図１２に示される例においては、オプションモジュール３１の”ＤＥＦ”はレジデントモジュール２３の”ＤＥＦ”よりも古いため、レジデントモジュール２３の”ＤＥＦ”が使用される。また、オプションモジュール３１の”ＸＹＺ”は、新規モジュールであるので、単純に初期化テーブル３２に追加される。
【００５８】
続いて、すべての記憶装置１１に対してモジュール検索、リンク及び初期化テーブル３２の書き換えが終了すると、初期化処理が実行される。該初期化処理においては、初期化テーブル３２に登録されているモジュールをコールするだけである。これにより、レジデントモジュール２３の初期化、及び、オプションモジュール３１の初期化が実行される。ただし、無効化されたレジデントモジュール２３の初期化は実行されない。そして、初期化処理が終了すると、前記プログラム処理装置はレジデントモジュール２３とオプションモジュール３１とを区別することなく動作する。
【００５９】
次に、フローチャートについて説明する。
ステップＳ２１　初期化テーブル３２をＲＡＭ３０上に構成する。
ステップＳ２２　モジュール検索を実行する。
ステップＳ２３　オプションモジュール３１が検出されたか否かを判断する。検出された場合はステップＳ２４に進み、検出されない場合はステップＳ２６に進む。
ステップＳ２４　リンクを実行する。
ステップＳ２５　初期化テーブル３２の書き換えを実行する。
ステップＳ２６　すべての記憶装置１１を検索したか否かを判断する。検索した場合はステップＳ２７に進み、検索しない場合はステップＳ２２に戻る。
ステップＳ２７　初期化処理を実行し、処理を終了する。
【００６０】
このように、本実施の形態においては、オプションモジュール３１を取り込む際にプログラム処理装置の初期化に用いる初期化テーブル３２を編集することによってモジュールの差し替えが可能になる。これにより、不具合を持ったレジデントモジュール２３を無効化し、不具合を解消したオプションモジュール３１に差し替えることが可能になる。
【００６１】
また、本実施の形態においては、レジデントモジュール２３が書き換え不可なレジデントＲＯＭ２０に格納されていることを前提としており、そのような状況で効果を発揮するものである。しかし、仮にレジデントモジュール２３が書き換え可能なデバイスに格納されているよう状況に対して適用しても、次のような効果が期待することができる。例えば、レジデントモジュール２３を直接書き換える場合、通常、プログラム処理装置の起動の度にメモリ上に再配置するか、変更が加えられた際に再配置する必要があるが、本実施の形態においては、レジデントモジュール２３をメモリ上に再配置する必要がない。そして、多くの場合、レジデントモジュール２３はそのまま使用されるので、その効果は大きい。
【００６２】
ところで、従来におけるコンピュータ制御による電子機器にオプション機器を追加する場合であり、かつ、オプション機器側には処理装置（ＣＰＵ）を内蔵していない場合、オプション機器に関わるプログラムを、あらかじめ前記電子機器のレジデントＲＯＭ２０側に内蔵しておき、オプション機器が追加された時に前記プログラムを有効にするという方式が一般的である。しかし、該方式では、レジデントＲＯＭ２０の作成時に想定していなかったオプション機器はサポートすることができず、また、該オプション機器のバージョンアップに伴う仕様追加、仕様変更にも対応することができない。そこで、オプション機器内の記憶装置にオプションモジュール３１を内蔵しておき、プログラム処理装置の起動時に前記オプションモジュール３１を取り込むことによって、オプション機器を追加する場合の問題を解決する本発明の第４の実施の形態について説明する。なお、前記第１〜第３の実施の形態と同じ構成を有するもの及び同じ動作については、同じ符号を付与することによってその説明を省略する。
【００６３】
図１４は本発明の第４の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【００６４】
図１４において、１２はプログラム処理装置に接続されるオプション機器である。本実施の形態におけるオプション機器１２は、それ自身には処理装置を内蔵せず、プログラム処理装置本体側の処理装置、すなわち、コンピュータによって制御されるものである。前記オプション機器１２内には該オプション機器１２に関わるオプションモジュールを内蔵するオプション機器内記憶装置１３が存在する。図１４に示される例において前記オプション機器１２は一つであるが、二つであっても、三つであってもよく、いくつであってもよい。
【００６５】
そして、モジュール検索処理部２１は、記憶装置１１−１、１１−２…１１−ｎ及びオプション機器内記憶装置１３からオプションモジュール３１を検索する。また、前記ＲＡＭ３０の残りの領域は、本来の使用目的であるワークエリアとして利用される。
【００６６】
次に、前記構成のプログラム処理装置の動作について説明する。
【００６７】
図１５は本発明の第４の実施の形態におけるプログラム処理装置の動作を示す第１のフローチャート、図１６は本発明の第４の実施の形態におけるプログラム処理装置の動作を示す第２のフローチャート、図１７は本発明の第４の実施の形態における初期化テーブルの例を示す図である。
【００６８】
まず、プログラム処理装置の電源を投入すると、レジデントモジュール２３における装置起動処理が実行される。ここで、該装置起動処理を行う場合、まず、編集可能な初期化テーブル３２がＲＡＭ３０上に構成される。ここで、前記初期化テーブル３２は、初期化の際にコールされるべきモジュールのアドレスを管理するテーブルであり、付帯情報としてモジュールの識別子を有する。そして、前記初期化テーブル３２には、図１７に示されるように、モジュールの識別子とアドレスとが対応付けて格納される。前記モジュールの識別子とは、例えば、そのモジュールの名称を示す文字列などである。なお、初期状態の初期化テーブル３２には、レジデントモジュール２３のみが存在する。
【００６９】
次に、モジュール検索処理部２１によってモジュール検索が実行される。このとき、該モジュール検索はプログラム処理装置に内蔵又は外部に接続されたすべての記憶装置１１に対して順次実行される。そして、検索の結果、オプションモジュール３１が検知、すなわち、検出されたか否かを判断し、オプションモジュール３１が検出された場合は、リンカ２４によってリンクが行われる。ここで、本実施の形態におけるオプションモジュール３１は再配置可能なオブジェクトとする。また、レジデントモジュール２３に対するシンボル参照の未定義シンボルも解決していない形式である。前記リンカ２４は、レジデントモジュールシンボル情報２５を参照することによって、動的にリンクを行ってオプションモジュール３１からレジデントモジュール２３への参照による未定義シンボルを解決し、かつ、オプションモジュール３１の配置されるアドレスを決定する。
【００７０】
次に、前記リンカ２４は、リンクによる再配置の結果、決定したオプションモジュール３１のエントリポイントを初期化テーブル３２に追加する。その際、該初期化テーブル３２内に対象となるオプションモジュール３１と同じ識別子を持つエントリが存在する場合、そのエントリを初期化テーブル３２から取り除く。これにより、初期化テーブルから取り除かれたモジュールの初期化処理はコールされないことになり、すなわち、モジュールとして無効化されたこととなる。
【００７１】
次に、前記記憶装置１１のすべてに対してモジュール検索が実行されたか否かを判断し、すべての記憶装置１１の検索が終了するまで、前記モジュール検索、リンク及び初期化テーブル３２の書き換えは繰り返し実行される。
【００７２】
次に、モジュール検索処理部２１によってプログラム処理装置に接続されたオプション機器内憶装置１３に対するモジュール検索が実行される。そして、検索の結果、オプションモジュール３１が検出されたか否かを判断し、オプションモジュール３１が検出された場合はリンカ２４によってリンクが行われる。
【００７３】
次に、リンカ２４はリンクによる再配置の結果、決定したオプションモジュール３１のエントリポイントを初期化テーブル３２に追加する。その際、該初期化テーブル３２内に対象となるオプションモジュール３１と同じ識別子を持つエントリが存在する場合、そのエントリを初期化テーブル３２から取り除く。
【００７４】
続いて、前述された処理をすべてのオプション機器内憶装置１３に対して実行されたか否かを判断し、すべてのオプション機器内憶装置１３の検索が終了するまで繰り返し実行する。そして、モジュール検索及びリンクの結果、プログラム処理装置内のＲＡＭ３０内には、オプションモジュール３１−１、３１−２…３１−ｎが配置される。
【００７５】
次に、初期化処理を実行する。該初期化処理においては、初期化テーブル３２に登録されているモジュールがコールされる。そして、初期化処理が終了すると、前記プログラム処理装置はレジデントモジュール２３とオプションモジュール３１とを区別することなく動作する。
【００７６】
次に、フローチャートについて説明する。
ステップＳ３１　初期化テーブル３２をＲＡＭ３０上に構成する。
ステップＳ３２　記憶装置１１に対するモジュール検索を実行する。
ステップＳ３３　オプションモジュール３１が検出されたか否かを判断する。検出された場合はステップＳ３４に進み、検出されない場合はステップＳ３６に進む。
ステップＳ３４　リンクを実行する。
ステップＳ３５　初期化テーブル３２の書き換えを実行する。
ステップＳ３６　すべての記憶装置１１を検索したか否かを判断する。検索した場合はステップＳ３７に進み、検索しない場合はステップＳ３２に戻る。
ステップＳ３７　オプション機器１２内のオプション機器内憶装置１３に対するモジュール検索を実行する。
ステップＳ３８　オプションモジュール３１が検出されたか否かを判断する。検出された場合はステップＳ３９に進み、検出されない場合はステップＳ４１に進む。
ステップＳ３９　リンクを実行する。
ステップＳ４０　初期化テーブル３２の書き換えを実行する。
ステップＳ４１　すべてのオプション機器１２を検索したか否かを判断する。検索した場合はステップＳ４２に進み、検索しない場合はステップＳ３７に戻る。ステップＳ４２　初期化処理を実行し、処理を終了する。
【００７７】
このように、本実施の形態においては、オプション機器１２に関わるモジュールを前記オプション機器１２側のオプション機器内記憶装置１３に配置し、プログラム処理装置本体の起動時にプログラム処理装置本体側に取り込むようになっている。これにより、新規のオプション機器１２のサポート、又は、オプション機器１２のバージョンアップに伴う仕様追加、仕様変更に対して、レジデントモジュール２３を変更することなく対応することが可能となる。
【００７８】
なお、前記第１〜第４の実施の形態において、プログラムと記載されているが、プログラムにより使用されるデータをプログラムと同様に処理してもよい。すなわち、「プログラム」という語を「データ」と置き換えてもよい。
【００７９】
また、本発明は前記実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能であり、それらを本発明の範囲から排除するものではない。
【００８０】
【発明の効果】
以上詳細に説明したように、本発明によれば、プログラム処理方法においては、プログラムの処理命令に従って処理を行うプログラム処理方法であって、第１記憶部に第１プログラムを格納し、補助記憶部の第２プログラムを検知し、該第２プログラムを転送して第２記憶部に格納し、前記第１記憶部及び第２記憶部をメモリ空間に配置し、前記第１記憶部及び第２記憶部から前記メモリ空間の配置に従って前記第１プログラム及び第２プログラムを読み出して実行する。
【００８１】
この場合、拡張性や柔軟性があるプログラム処理方法を得ることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるプログラム処理装置のメモリマップを示す図である。
【図２】従来のプログラム処理装置のメモリマップを示す図である。
【図３】本発明の第１の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【図４】本発明の第１の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【図５】本発明の第２の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【図６】本発明の第２の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【図７】本発明の第３の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【図８】本発明の第３の実施の形態における初期化テーブルの初期の状態を示す図である。
【図９】本発明の第３の実施の形態における初期化テーブルのＲＡＭ上に構成後の状態を示す図である。
【図１０】本発明の第３の実施の形態におけるオプションモジュールの再配置の結果を示す図である。
【図１１】本発明の第３の実施の形態における初期化テーブルの更新結果を示す図である。
【図１２】本発明の第３の実施の形態におけるオプションモジュールの追加及び差し替え結果を示す図である。
【図１３】本発明の第３の実施の形態におけるプログラム処理装置の動作を示すフローチャートである。
【図１４】本発明の第４の実施の形態におけるプログラム処理装置の構成を示すブロック図である。
【図１５】本発明の第４の実施の形態におけるプログラム処理装置の動作を示す第１のフローチャートである。
【図１６】本発明の第４の実施の形態におけるプログラム処理装置の動作を示す第２のフローチャートである。
【図１７】本発明の第４の実施の形態における初期化テーブルの例を示す図である。
【符号の説明】
１１、１１−１、１１−２、１１−ｎ　　記憶装置
２０　　レジデントＲＯＭ
２１　　モジュール検索処理部
２２　　モジュールローダ
２３　　レジデントモジュール
２４　　リンカ
３０　　ＲＡＭ
３１、３１−１、３１−２、３１−ｎ　　オプションモジュール
【図１】
2004118764.tif 000003
【図２】
2004118764.tif 000004
【図３】
2004118764.tif 000005
【図４】
2004118764.tif 000006
【図５】
2004118764.tif 000007
【図６】
2004118764.tif 000008
【図７】
2004118764.tif 000009
【図８】
2004118764.tif 000010
【図９】
2004118764.tif 000011
【図１０】
2004118764.tif 000012
【図１１】
2004118764.tif 000013
【図１２】
2004118764.tif 000014
【図１３】
2004118764.tif 000015
【図１４】
2004118764.tif 000016
【図１５】
2004118764.tif 000017
【図１６】
2004118764.tif 000018
【図１７】
2004118764.tif 000019