(57)【要約】  【課題】  複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出して実行用メモリ内の連続メモリ領域の予め定められた配置領域へ配置する場合に，極力，連続した大サイズのワーク領域を確保できること。  【解決手段】  プログラムモジュールｄ４〜ｄ５を予め定められた選択可能性の高いものほど実行用メモリの連続メモリ領域の先頭側となる領域に配置するとともに，プログラムモジュールのうち一の利用側プログラムモジュールｄ５の実行に他の被利用側プログラムモジュールｄ４を実行することが必須であるがその逆は成立しない利用・被利用関係にあるものについては，被利用側プログラムモジュールｄ４と利用側プログラムモジュールｄ５とをこの順に連続メモリ領域の先頭側から連続して配置する。【選択図】図３
2005148778.tif 000002
【特許請求の範囲】
【請求項１】
任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた配置領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，をコンピュータに実行させるためのブート用プログラムにおいて，
前記プログラムモジュールを予め定められた選択可能性の高いものほど前記連続メモリ領域の先頭側となる領域に配置する第１のプログラム配置処理をコンピュータに実行させるためのブート用プログラム。
【請求項２】
任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた配置領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，をコンピュータに実行させるためのブート用プログラムにおいて，
前記プログラムモジュールのうち一の利用側プログラムモジュールの実行に他の被利用側プログラムモジュールを実行することが必須であるがその逆は成立しない関係にあるものについては，前記被利用側プログラムモジュールと前記利用側プログラムモジュールとをこの順に前記連続メモリ領域の先頭側から連続して配置する第２のプログラム配置処理をコンピュータに実行させるためのブート用プログラム。
【請求項３】
前記第１又は第２のプログラム配置処理により全ての前記プログラムモジュールが配置された後に，さらに予め選択された前記オプション機能に対応するもの以外の前記プログラムモジュールが配置された領域を解放してワーク領域に割り当てる領域解放処理もコンピュータに実行させるための請求項１又は２のいずれかに記載のブート用プログラム。
【請求項４】
前記プログラムモジュールが符号化されて前記待機用メモリに記憶されており，
前記第１又は第２のプログラム配置処理が，
前記符号化された前記プログラムモジュールを前記連続メモリ領域内の空き領域に復号化する復号化処理と，前記復号化された前記プログラムモジュールのうち予め選択された前記オプション機能に対応するものであり，かつ前記連続メモリ領域の予め定められた配置領域以外に位置するものを該予め定められた配置領域に移動させる移動処理と，を行うものである請求項１又は２のいずれかに記載のブート用プログラム。
【請求項５】
同時に選択され得ない関係にある前記オプション機能各々に対応する前記プログラムモジュールについて，その前記連続メモリ領域における前記予め定められた配置領域が重複して設定されてなる請求項４に記載のブート用プログラム。
【請求項６】
任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，を実行する情報処理装置において，
前記プログラムモジュールのうち予め定められた選択可能性の高いものほど前記連続メモリ領域の先頭側となる領域に配置する第１のプログラム配置処理を実行してなることを特徴とする情報処理装置。
【請求項７】
任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，を実行する情報処理装置において，
前記プログラムモジュールのうち一の利用側プログラムモジュールの実行に他の被利用側プログラムモジュールを実行することが必須であるがその逆は成立しない関係にあるものについては，前記被利用側プログラムモジュールと前記利用側プログラムモジュールとをこの順に前記連続メモリ領域の先頭側から連続して配置する第２のプログラム配置処理を実行してなることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた配置領域に配置する処理をコンピュータに実行させるためのブート用プログラム及びそれを実行する情報処理装置に関するものである。
【背景技術】
【０００２】
一般に，機器組込用のコントローラ（情報処理装置の一例）は，演算処理手段であるＣＰＵ及び実行用メモリ（以下，実行メモリという）であるＲＡＭ等を備え，電源ON等の起動時にＣＰＵがＲＯＭ等に記憶されたブート用プログラムを実行することにより，ＲＯＭ等の待機用メモリ（以下，保存メモリという）に圧縮（符号化の一例）されて記憶されているプログラムモジュールを，伸張（復号化の一例）しながら実行メモリの連続したメモリ領域に展開して配置した後に，ＣＰＵがそのプログラムモジュールを実行することが一般的である。その際，前記連続メモリ領域のうち，プログラムモジュールが配置された領域以外の領域が，ワーク領域として割り当てられる。
近年，組込用コントローラが搭載される機器のオプション機能が多様化しているため，それらオプション機能に対応した数多くのプログラムモジュールが組込用コントローラに搭載（記憶）され，実行メモリの容量も増大化する傾向にある。
ここで，メモリ消費の効率化の観点からすれば，選択されたオプション機能に対応するプログラムモジュールのみを搭載すれば効率的である。しかし，オプション機能の組合せ毎に必要なプログラムモジュールのみを記憶した保存メモリ（ＲＯＭ）やブート用プログラムを用意すること，或いはオプション機能の拡張の度に保存メモリやブート用プログラムを更新することは煩雑であるため，対応するオプション機能が選択（即ち，オプション機器が接続）されているか否かを問わず，出荷時に全てのオプション機能に対応した全プログラムモジュールが搭載されることが多い。
また，プログラムモジュールは，保存メモリに符号化されて記憶されているため，それを復号化して実行メモリに展開しなければ，各プログラムモジュールを識別できないことが多く，この場合，必要なプログラムモジュールのみを実行メモリに展開（復号化）するという処理を実行できない。このため，全てのプログラムモジュールを実行メモリに配置することになり，選択されていないオプション機能に対応するプログラムモジュールも実行メモリに配置される結果，無駄に実行メモリが消費されていた。
これに対応するため，例えば，特許文献１には，選択された機能に対応する（実行する必要のある）プログラムについて，特殊な再配置の処理を行うことにより，必要なプログラムのみ実行メモリにロード（配置）する技術が示されている。
【特許文献１】特開平０１−１８８３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら，組込用コントローラで採用されるＣＰＵやＯＳ（オペレーションシステム）では，プログラムモジュールの実行メモリ内での動作アドレスの再配置処理が困難な場合が多く，特許文献１に示される技術を採用できない場合が多いという問題点があった。また，再配置処理は一般に複雑であり，予期しない問題（バグ）が発生しやすいという問題や，再配置処理に時間を要して起動時間が長くなるという問題が生じていた。
また，実行メモリに全てのプログラムモジュールを配置した後に，未選択のオプション機能に対応したプログラムモジュールが配置された領域をワーク領域として解放した場合，複数の小サイズの不連続なワーク領域が生じやすいという問題点があった。即ち，近年の機器の高機能化に伴い，一定サイズ以上の連続したワーク領域を必要とする処理が多く，不連続な細切れのワーク領域では実質的に有効活用できないという問題である。
従って，本発明は上記事情に鑑みてなされたものであり，その目的とするところは，複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出して実行用メモリ内の連続メモリ領域の予め定められた配置領域へ配置する場合に，極力，連続した大サイズのワーク領域を確保できるブート用プログラム及びそれを実行する情報処理装置を提供することにある。
【課題を解決するための手段】
【０００４】
上記目的を達成するために第１の発明は，任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた配置領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，をコンピュータに実行させるためのブート用プログラムにおいて，前記プログラムモジュールを予め定められた選択可能性の高いものほど前記連続メモリ領域の先頭側となる領域に配置する第１のプログラム配置処理をコンピュータに実行させるためのブート用プログラムとして構成されるものである。
これにより，選択される可能性の低いオプション機能に対応したプログラムモジュールが前記連続メモリ領域の後尾側にまとめて配置されるので，その配置領域をワーク領域とすれば，まとまったワーク領域を確保できる可能性が高くなり，また，そのワーク領域と元々プログラムモジュールが配置される予定のない後尾側のワーク領域とが連続する可能性が高くなるので，連続した大サイズのワーク領域を確保できる可能性が高くなる。
【０００５】
また，第２の発明は，任意に選択される複数のオプション機能に対応した複数のプログラムモジュールを待機用メモリ内から読み出し，これを実行用メモリ内の連続メモリ領域の各々予め定められた配置領域に配置する処理と，前記プログラムモジュールが配置された領域以外の領域をワーク領域に割り当てる処理と，をコンピュータに実行させるためのブート用プログラムにおいて，前記プログラムモジュールのうち一の利用側プログラムモジュールの実行に他の被利用側プログラムモジュールを実行することが必須であるがその逆は成立しない関係（利用・被利用関係）にあるものについては，前記被利用側プログラムモジュールと前記利用側プログラムモジュールとをこの順に前記連続メモリ領域の先頭側から連続して配置する第２のプログラム配置処理をコンピュータに実行させるためのブート用プログラムとして構成されるものである。
これにより，前記被利用側プログラムモジュールと前記利用側プログラムモジュールとの両方が非選択機能（選択されなかったオプション機能）に対応するものである場合は，両プログラムモジュールの配置領域が連続しているので，その配置予定領域をまとめて連続した大サイズのワーク領域とすることができる。また，前記利用側プログラムモジュールのみが非選択機能に対応するものである場合でも，その後尾側がワーク領域である場合にそれと連続して大サイズのワーク領域を形成することができる。
【０００６】
ここで，前記第１及び第２の発明において，非選択機能に対応するプログラムモジュールの配置予定領域をワーク領域とする処理としては，次の２通りが考えられる。
その１つは，前記第１又は第２のプログラム配置処理により全ての前記プログラムモジュールが配置された後に，さらに予め選択された前記オプション機能に対応するもの以外の前記プログラムモジュールが配置された領域を解放してワーク領域に割り当てる領域解放処理もコンピュータに実行させるものである。
もう１つは，前記プログラムモジュールが符号化されて前記待機用メモリに記憶されており，前記第１又は第２のプログラム配置処理が，前記符号化された前記プログラムモジュールを前記連続メモリ領域内の空き領域に復号化する復号化処理と，前記復号化された前記プログラムモジュールのうち予め選択された前記オプション機能に対応するものであり，かつ前記連続メモリ領域の予め定められた配置領域以外に位置するものを該予め定められた配置領域に移動させる移動処理と，を行うものである。
また，後者の場合，同時に選択され得ない関係にある前記オプション機能各々に対応する前記プログラムモジュールについて，その前記連続メモリ領域における前記予め定められた配置領域が重複して設定されたものが考えられる。
これにより，排他関係にあるオプション機能に対応するプログラムモジュールが，各々別個の領域に配置されることがない。従って，排他関係にあるプログラムモジュールが非選択機能に対応するものである場合に，その配置予定領域（予め定められた配置領域）が各々別個にワーク領域として散在することがなくなるので，連続した大サイズのワーク領域を確保できる可能性が高くなる。
また，本発明は，前記ブート用プログラムの各処理を実行する情報処理装置として捉えたものであってもよい。
【発明の効果】
【０００７】
前記第１の発明によれば，前記プログラムモジュールを予め定められた選択可能性の高いものほど前記連続メモリ領域の先頭側となる領域に配置するので，選択される可能性の低いオプション機能に対応したプログラムモジュールが前記連続メモリ領域の後尾側にまとめて配置され，その配置領域をワーク領域とすれば，連続した大サイズのワーク領域を確保できる可能性が高くなる。
また，前記第２の発明によれば，利用・被利用関係にあるプログラムモジュールについては，被利用側プログラムモジュールと利用側プログラムモジュールとをこの順に前記連続メモリ領域の先頭側から連続して配置するので，利用・被利用の両プログラムモジュールの配置予定領域をまとめて連続した大サイズのワーク領域とすることができる。また，利用側プログラムモジュールのみが非選択機能に対応するものである場合でも，その後尾側がワーク領域である場合にそれと連続して大サイズのワーク領域を形成することができる。
以上より，極力，連続した大サイズのワーク領域を確保することが可能となる。
さらに，前記プログラムモジュールが符号化されて前記待機用メモリに記憶されており，前記第１又は第２のプログラム配置処理が，前記符号化された前記プログラムモジュールを前記連続メモリ領域内の空き領域に復号化する復号化処理と，前記復号化された前記プログラムモジュールのうち予め選択された前記オプション機能に対応するものであり，かつ前記連続メモリ領域の予め定められた配置領域以外に位置するものを該予め定められた配置領域に移動させる移動処理と，を行うものである場合，同時に選択され得ない関係にある前記オプション機能各々に対応する前記プログラムモジュールについて，その前記連続メモリ領域における前記予め定められた配置領域が重複して設定されたものであれば，排他関係にあるプログラムモジュールが非選択オプション機能に対応するものである場合に，その配置予定領域が各々別個にワーク領域として散在することがなくなるので，連続した大サイズのワーク領域を確保できる可能性が高くなる。
【発明を実施するための最良の形態】
【０００８】
以下添付図面を参照しながら，本発明の実施の形態について説明し，本発明の理解に供する。尚，以下の実施の形態は，本発明を具体化した一例であって，本発明の技術的範囲を限定するものではない。
ここに，図１は本発明の実施の形態に係るブート用プログラムＸを実行するコントローラＡの概略構成を表すブロック図，図２はブート用プログラムＸに従ってコントローラＡが実行するブート処理の手順を表すフローチャート，図３は全てのアプリプログラムが展開された主メモリ内のデータ構成例を表す図，図４は不要なアプリプログラムの配置予定領域がワーク領域とされた状態の主メモリ内のデータ構成例を表す図，図５は空き領域にアプリプログラムが展開（伸張）された状態の主メモリ内のデータ構成例を表す図，図６は排他関係にあるオプション機能の１つが選択された場合におけるアプリプログラムの配置後の主メモリ内のデータ構成例を表す図，図７は本発明を用いない場合において不要なアプリプログラムの配置予定領域がワーク領域とされた状態の主メモリ内のデータ構成例を表す図である。
【０００９】
まず，図１のブロック図を用いて，本発明の実施の形態に係るブート用プログラムＸを実行する情報処理装置の一例であるコントローラＡの構成について説明する。
コントローラＡは，各種プログラムを実行するＣＰＵ１と，各種メモリの制御を行うメモリコントローラ２と，前記ＣＰＵ１により当該コントローラＡの起動時（電源ＯＮ時）に実行されるブート用プログラムＸを記憶するブートコード用ＲＯＭ（ＢＯＯＴコード用ＲＯＭ３）と，前記ＣＰＵ１がブート用プログラムＸを実行することにより後述する主メモリ５（前記実行用メモリの一例）に展開される複数のアプリケーションプログラム（以下，アプリプログラムという）を記憶するアプリコード用ＲＯＭ（前記待機用メモリの一例）と，前記ＣＰＵ１により前記アプリプログラムが実行される際に，該アプリプログラムを一時記憶するＲＡＭである主メモリ５（前記実行用メモリの一例）と，各種入出力デバイスとの間のデータの入出力を制御するインターフェースであるＩ／Ｏ部６とを具備し，これらがアドレスバス及びデータバスを備えたシステムバス２０を介して接続されている。
前記Ｉ／Ｏ部６には，前記入出力デバイスとして，情報の表示手段であるＬＥＤ部７，情報入力手段である入力キー（Ｋｅｙ）８，後述するオプションデバイスの接続状態に関する情報（以下，オプション接続情報という）を記憶する記憶手段であるＥＥＰＲＯＭ９が接続されている。以上が，前記Ｉ／Ｏ部６に接続される標準の入出力デバイスである。
さらに，前記Ｉ／Ｏ部６には，任意に選択される複数のオプション機能に対応したオプションデバイスとして，各種データが記憶されるＨＤＤ（ハードディスクドライブ）１０と，テキストや記号のデータ等のより高度な情報表示手段であるＬＣＤ（液晶表示手段）１１と，外部機器とのデータ通信インターフェースであるＵＳＢ部１２とが任意に接続され得る。
【００１０】
前記アプリコード用ＲＯＭ４に記憶される前記アプリプログラムには，当該コントローラＡが搭載される装置の制御に関する各種演算処理プログラム及び前記オプションデバイスを含めた全ての前記入出力デバイスそれぞれごとに該入出力デバイスに対してデータの入出力処理を実行する前記デバイス制御ログラムに加え，ここでは，当該コントローラＡの基本プログラムであるＯＳ等も含まれるものとする。
また，前記アプリコード用ＲＯＭ４（待機用メモリ）に記憶される前記アプリプログラムは，メモリ容量を抑制するために，圧縮処理（符号化の一例）が施されている。このため，前記ＣＰＵ１は，前記アプリコード用ＲＯＭ４内の圧縮された前記アプリプログラムを伸張（復号化の一例）して前記主メモリに展開しなければ，各アプリプログラムの種類を識別できない。符号化としては，機密保持のために暗号化することや，該暗号化と圧縮との両方の処理を施すこと等も考えられる。
このように圧縮された前記アプリプログラムを，以下，圧縮コードという。
【００１１】
（第１の実施の形態）
次に，図２のフローチャートを用いて，ブート用プログラムＸに従ってコントローラＡのＣＰＵ１が実行するブート処理の手順について説明する。前記ＣＰＵ１は，当該コントローラＡに電源が投入された際に，前記システムバス２０及び前記メモリコントローラ２を介して，前記ブートコード用ＲＯＭ３内からブート用プログラムＸを読み出しながら図２に示すブート処理を実行する。また，以下に示すＣＰＵ１が実行する処理において，各メモリ３，４，５間のデータ転送や，各メモリ３，４，５へのアクセスは，前記システムバス２０及び前記メモリコントローラ２を介して行われる。以下，Ｓ１，Ｓ２，…は，処理手順（ステップ）の番号を表す。
まず，ＣＰＵ１は，前記圧縮コード（圧縮（符号化）されたアプリプログラム）を前記アプリコード用ＲＯＭ４から読み出し，これを前記主メモリ５内の連続メモリ領域の最後尾側アドレスに転送（Ｌｏａｄ）する（Ｓ１）。
次に，ＣＰＵ１は，前記主メモリ５に転送された前記圧縮コードに含まれる前記アプリプログラムの全てを，順次伸張（復号化）しながら前記主メモリ５内の連続メモリ領域の先頭アドレス側（例えば，最先頭アドレス）から後尾側へ向けて配置する（Ｓ２）。
【００１２】
図３は，Ｓ２の処理により，全てのアプリプログラムが展開された実行用メモリ内のデータ構成例を表す。
図３に示すように，前記主メモリ５内の連続メモリ領域の最後尾側アドレスに前記圧縮コードｄ１が配置され，前記主メモリ５内の連続メモリ領域の先頭アドレス側から後尾側へ向けて，ＯＳ部コードｄ２，基本アプリ部コードｄ３，ＨＤＤ部コードｄ４，ＬＣＤ部コードｄ５及びＵＳＢ部コードｄ６の各アプリプログラムが配置される。
ここで，前記ＯＳ部コードｄ２は，ＯＳ（オペレーションシステム）のプログラムである。また，前記基本アプリ部コードｄ３は，当該コントローラＡが搭載される装置の標準の機能に対応する各種演算処理及び前記Ｉ／Ｏ部６に接続される標準の入出力デバイスの入出力処理を実行するアプリプログラムである。従って，前記ＯＳ部コードｄ２及び前記基本アプリ部コードｄ３は，当該コントローラＡに必須のアプリプログラムである。
一方，前記ＨＤＤ部コードｄ４，前記ＬＣＤ部コードｄ５及び前記ＵＳＢ部コードｄ６は，各々，オプションデバイスである前記ＨＤＤ１０，前記ＬＣＤ１１及び前記ＵＳＢ１２に対する入出力処理を実行するアプリプログラムである。従って，任意の選択機能であるＨＤＤ接続機能，ＬＣＤ接続機能及びＵＳＢ接続機能の各オプション機能が選択された場合に，その機能を実現するものとして必要となるアプリプログラムである。ここで，前記ＨＤＤ部コードｄ４，前記ＬＣＤ部コードｄ５及び前記ＵＳＢ部コードｄ６が，任意に選択される複数のオプション機能に対応した複数のプログラムモジュールの一例である。
【００１３】
ところで，オプションデバイスは，選択される可能性が高いものから順に並べると，前記ＨＤＤ１０，前記ＬＣＤ１１，前記ＵＳＢ１２となり，これは予め定まるものである。
本ブート用プログラムＸの処理では，図３に示すように，前記主メモリ５内の連続メモリ領域の先頭側から順番に，まず，必須のプログラムである前記ＯＳ部コードｄ２及び前記基本アプリ部コードｄ３を続けて配置し，さらに続けて，オプション機能に対応する各アプリプログラムｄ４，ｄ５，ｄ６（プログラムモジュール）を，選択される可能性が高い機能に対応する上記順番で配置する（即ち，予め定められた選択可能性の高いものほど前記連続メモリ領域の先頭側となる領域に配置する第１のプログラム配置処理の一例）。
また，前記ＨＤＤ部コードｄ３と前記ＵＳＢ部コードｄ６とは各々独立したプログラムであり，相互に依存関係（他方が存在しなければ実行できないという関係）はない。同様に，前記ＨＤＤ部コードｄ３と前記ＵＳＢ部コードｄ６とについても各々独立している。
しかし，前記ＬＣＤ部コードｄ５（前記利用側プログラムモジュールの一例）を実行するには，前記ＨＤＤ部コードｄ４（前記被利用側プログラムモジュールの一例）を実行することが必須であるがその逆は成立しない利用・被利用関係にある。これは，前記ＬＣＤ１１は，表示用データを多く必要とするため，そのデータを記憶するために，大容量の記憶手段である前記ＨＤＤ１０の接続（ＨＤＤ接続機能の選択）が必須だからである。
本ブート用プログラムＸの処理では，被利用側である前記ＨＤＤ部コードｄ４と利用側である前記ＬＣＤ部コードｄ５とをこの順に前記連続メモリ領域の先頭側から連続して配置する（前記第２のプログラム配置処理の一例）。
以上示した配置順序は，前記圧縮コードを生成する際に，その伸張時に上記順序で伸張されるよう予め設定されている。また，各アプリプログラムの配置位置は，例えば，ブート用プログラムＸのロジックに予め組み込まれること等により設定される。
【００１４】
次に，ＣＰＵ１は，図３のように配置した伸張後の各アプリプログラムの容量（サイズ）を確認する（Ｓ３）。
この容量確認の処理としては，例えば，図３に示すように，各アプリプログラムの先頭部に，先頭位置であることを表す先頭符号ｄ１０（図３では“A5A5FFFF"）を設けておき，ブート用プログラムＸの処理によってその先頭符号ｄ１０の存在位置を検索し，検出した先頭符号ｄ１０から次の先頭符号ｄ１０までの間のデータサイズをプログラム容量として検出する処理等が考えられる。
なお，図３の例では，各アプリプログラムの容量は，それぞれ１Mbyteである。
次に，ＣＰＵ１は，前記ＥＥＰＲＯＭ９に記憶された設定情報を前記Ｉ／Ｏ部６，前記システムバス２０及び前記メモリコントローラ２を介して読み出す（Ｓ４）。
この設定情報には，前記オプションデバイス１０〜１２のうち，いずれが接続されているか（即ち，いずれのオプション機能が選択されているか）に関する情報が含まれる。
【００１５】
次に，ＣＰＵ１は，前記設定情報の参照により，前記ＨＤＤ１０が接続されているか（ＨＤＤ接続機能が選択されているか）を判別する（Ｓ５）。ここで，ＨＤＤ１０が接続されていないと判別した場合は，前記ＨＤＤ部コードｄ４とこれを利用する関係にある前記ＬＣＤ用コードｄ５の両配置領域をワーク領域として解放する（Ｓ６）。これは，ＨＤＤ接続機能が選択されていなければ，これを利用する関係にあるＬＣＤ接続機能が選択されていることはあり得ないからである。
また，前記ＨＤＤ１０が接続されていると判別した場合は，前記設定情報に基づいて前記ＬＣＤ１１が接続されているか否かをチェックし（Ｓ７），接続されていない場合は対応する前記ＬＣＤ部コードｄ５の配置領域をワーク領域として解放する（Ｓ８）。
いずれも接続されている場合は，いずれの配置領域も開放しない。
さらに，前記設定情報に基づいて前記ＵＳＢ１２が接続されているか否かをチェックし（Ｓ９），接続されていない場合には対応する前記ＵＳＢ部コードｄ６をワーク領域として解放する（Ｓ１０）。
これらＳ５〜Ｓ１０の処理により，Ｓ１及びＳ２の処理（前記第１のプログラム配置処理及び前記第２のプログラム配置処理の一例）により全ての前記アプリプログラム（プログラムモジュール）が連続メモリ領域に配置された後に，さらに予め選択されたオプション機能に対応するもの以外の前記アプリプログラムが配置された領域を解放してワーク領域に割り当てられることになる（前記領域解放処理の一例）。
次に，各アプリプログラム（プログラムモジュール）が配置された領域以外の領域（図３の例では，前記ＵＳＢ部コードｄ６の後端アドレスより後尾アドレス側の領域，前記圧縮コードｄ１が一時記憶された領域を含む）をワーク領域に割り当てるとともに，その領域とＳ６，Ｓ８，Ｓ１０においてワーク領域として解放された領域のスタートアドレス（先頭アドレス）を所定の変数に設定する（Ｓ１１）。さらに，このスタートアドレスを基にして，各ワーク領域の初期化を行う（Ｓ１２）。この初期化は，例えば，ゼロクリア処理と該ゼロクリア処理を行った領域が未使用である旨を表す変数設定処理等である。
最後に，ＣＰＵ１は，前記ＯＳ部コードｄ２の実行を開始（ＯＳを起動）した後，ブート用プログラムＸによるブート処理を終了する。
これにより，以後のプログラム実行中に，前記スタートアドレスを基にして各ワーク領域が一時作業領域として使用される。
【００１６】
ブート用プログラムＸの処理では，図３に示したように，前記アプリプログラム（プログラムモジュール）を予め定められた選択可能性の高いものほど前記主メモリ５の連続メモリ領域の先頭アドレス側となる領域に配置するので，選択される可能性の低いオプション機能に対応したアプリプログラムが後尾アドレス側にまとめて配置され，その配置領域をワーク領域とすることにより，連続した大サイズのワーク領域を確保できる可能性が高くなる。
また，利用・被利用関係にある前記アプリプログラムについては，被利用側プログラムモジュールと利用側プログラムモジュールとをこの順に前記連続メモリ領域の先頭アドレス側から連続して配置するので，利用・被利用の両アプリプログラムの配置領域（配置予定領域）をまとめて連続した大サイズのワーク領域とすることができる。
例えば，ＨＤＤ接続機能とＬＣＤ接続機能とが選択されなかった場合，前記ＨＤＤ部コードｄ４と前記ＬＣＤ部コードとの両プログラムモジュールの配置領域（配置予定領域）をまとめて，連続した大サイズのワーク領域とすることができる。
また，利用側アプリプログラムのみが非選択機能に対応するものである場合でも，その後尾アドレス側がワーク領域である場合にそれと連続して大サイズのワーク領域を形成することができる。
例えば，ＨＤＤ接続機能が選択（デバイス１０が接続）され，ＬＣＤ接続機能が非選択（デバイス１１が非接続）の場合があり得るが，この場合，実行する必要のない前記ＬＣＤ部コードｄ５が先頭アドレス側に配置されると，その配置領域をワーク領域としても，後尾アドレス側の他のワーク領域と分断されてしまう。しかし，図３に示した順番で配置することにより，前記ＬＣＤ部コードｄ５の配置位置の後尾アドレス側がワーク領域である場合に，それと連続して大サイズのワーク領域を形成することができる。
【００１７】
図４は，図２に示したブート処理により，不要なアプリプログラムの配置予定領域がワーク領域とされた状態の前記主メモリ５における連続メモリ領域のデータ構成例を表す。
図４に示す例は，オプション機能として，ハードディスク接続機能のみが選択（即ち，オプションデバイスとして前記ＨＤＤ１０のみが接続）された場合の例を表す。
この場合，前述したように，非選択のオプション機能に対応するアプリプログラム（プログラムモジュール）である前記ＬＣＤ部コードｄ５及び前記ＵＳＢ部コードｄ６がワーク領域（ワークエリア）として解放され，さらにその解放領域が，元々アプリプログラムの配置予定がない後尾アドレス側のワーク領域と連続するため，連続メモリ領域の後尾アドレス側に大サイズ（図４の例では13MByte）のワーク領域が確保されている。ＨＤＤ接続機能は，他の機能よりも選択される可能性が高いため，図４に示すようなメモリ状態となる可能性は高い。
ちなみに，本実施の形態に示す例では，使用・不使用に関わらず，全てのオプション機能に対応する全アプリプログラムをそのまま連続メモリ領域に残しておく場合のワーク領域のサイズは11MByteとなる。
図７は，本発明を用いない場合において，不要なアプリプログラムの配置予定領域がワーク領域とされた状態の実行用メモリ内のデータ構成例を表す。ここでは，不要なアプリプログラムをワーク領域として解放するが，選択可能性の高い機能に対応したアプリプログラムである前記ＨＤＤ部コードｄ４を，他のアプリプログラムより後尾アドレス側に配置する設定である場合の例について示す。この場合，前記主メモリ５の連続メモリ領域において，図７に示すように，ワーク領域として解放された領域が，元々アプリプログラムの配置予定がない後尾アドレス側のワーク領域と分断されるので，ワーク領域の総サイズは同様に確保できるが，連続したワーク領域のサイズを最大限に確保できない。
【００１８】
（第２の実施の形態）
ところで，図２に示したブート処理では，全ての前記アプリプログラムが前記連続メモリ領域に配置された後に，予め選択されたオプション機能に対応するもの以外の前記アプリプログラムが配置された領域を解放してワーク領域に割り当てるものであった。しかし，非選択機能に対応するアプリプログラムの配置予定領域をワーク領域とするための処理としては，以下のようなものも考えられる。
前述したように，前記アプリプログラム（プログラムモジュール）は圧縮（符号化）された前記圧縮コードｄ１として前記アプリコード用ＲＯＭ４（前記待機用メモリの一例）に記憶されているため，前記圧縮コードｄ１のままでは，各アプリプログラムの種類（内容）を識別できない。このため，前記圧縮コードｄ１に含まれる複数のアプリプログラムのうち，予め選択されたオプション機能に対応するもののみを伸張（復号化）して前記主メモリ５に展開するということはできない。
そこで，前記ブート用プログラムＸにおけるＳ２〜Ｓ１０の処理（図２）の代わりに，前記圧縮コードｄ１（符号化されたプログラムモジュール）を前記連続メモリ領域内の空き領域に伸張（復号化）する伸張処理（前記復号化処理の一例）と，伸張（復号化）された前記アプリプログラムのうち予め選択されたオプション機能に対応するものであり，かつ前記連続メモリ領域の予め定められた配置領域以外に位置するものをその予め定められた配置領域に移動させる移動処理とを実行するようにする。ここで，予め選択されたオプション機能がいずれであるかは，前記ＥＥＰＲＯＭ９内の前記設定情報を参照することにより判別する。さらに，前記伸張処理においては，後の移動処理が最小限となるように，伸張後のデータの出力先を，極力，各アプリプログラムについて予め定められた配置領域と一致するように設定しておくことが望ましい。
また，各アプリプログラムの移動処理については，例えば，各アプリプログラム内の予め定められた位置（配置領域）に，配置開始アドレスを設定しておき，空き領域に伸張（復号化）した後にこれを参照し，指定されたアドレス（領域）に移動させることが考えられる。
【００１９】
図５は，空き領域に前記アプリプログラムが展開（伸張）された状態の前記主メモリ５内のデータ構成例を表す。
図５に示すように，各アプリプログラムの先頭から既定データ長の位置に，各アプリプログラムの識別情報ｄ１１（"A5A5FF1"〜"A5A5FF4"）が設定され，これに続く既定データ長の位置に，各アプリプログラムの配置開始アドレスｄ１２（即ち，移動先）が設定されている。
これにより，前記識別情報ｄ１１と前記設定情報との対比によって非選択機能に対応するアプリプログラムであると判別した場合は，そのアプリプログラムは前記配置開始アドレスｄ１２へ移動させず，選択された機能に対応するアプリプログラムであると判別した場合は，さらに，現在位置するアドレスが前記配置開始アドレスｄ１２と一致するか否かを判別し，一致しない場合には，そのアプリプログラムを前記配置開始アドレスｄ１２へ移動させる処理を実行する。現在位置するアドレスが前記配置開始アドレスｄ１２と一致する場合は，移動させずそのままにする。その結果，予め選択されたオプション機能に対応するアプリプログラムのみを，連続メモリ領域の予め定められた配置領域（位置）に配置することになる。
図５の例では，空き領域に展開された段階でのアプリプログラムの位置と，予め定められたアプリプログラムの配置位置（即ち，前記配置開始アドレスｄ１２で指定された位置）とが一致していないのは，前記ＵＳＢ部コードｄ６のみである。よって，前記ＵＳＢ接続機能が選択されている場合，これに対応する前記ＵＳＢ部コードｄ６の位置が移動される。
【００２０】
また，前記したように，アプリプログラムを空き領域に展開（伸張）した後に必要に応じて配置位置を移動させる場合，同時に選択され得ない排他関係にあるオプション機能各々に対応する前記アプリプログラム（プログラムモジュール）について，その前記主メモリ５内の連続メモリ領域における配置領域を重複して設定することが考えられる。
例えば，仮に前記ＬＣＤ接続機能と前記ＵＳＢ接続機能とは同時に選択され得ない機能であるとした場合，図５に示すように，前記ＬＣＤ部コードｄ５における前記配置開始アドレスｄ１２と，前記ＵＳＢ部コードｄ６における前記配置開始アドレスｄ１２とを同じアドレス（即ち，重複した配置領域）に設定しておく。このように，配置領域を重複設定しても，各アプリプログラムが排他関係にあるので，その領域には選択された機能に対応する１つのアプリプログラムのみが配置されるか，或いはいずれのアプリプログラムも配置されないことになる。
図６は，図５に示した前記配置開始アドレスｄ１２の設定である場合に，排他関係にあるオプション機能の１つが選択された場合（前記ＬＣＤ接続機能が選択されず，前記ＵＳＢ接続機能が選択された場合）におけるアプリプログラムの配置後の前記主メモリ５内のデータ構成例を表す。
上記処理により，排他関係にあるオプション機能間において，相対的に選択される可能性が高い前記ＬＣＤ接続機能が選択されず，それより選択される可能性の低い前記ＵＳＢ接続機能が選択された場合でも，図６に示すように，前記ＬＣＤ部コードｄ５の配置予定領域が他のワーク領域と分断されることなく連続した大サイズのワーク領域を確保できる。
【産業上の利用可能性】
【００２１】
本発明は，複数のプログラムモジュールを待機用メモリ内から実行用メモリへ展開するブート用プログラム等への利用が可能である。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態に係るブート用プログラムＸを実行するコントローラＡの概略構成を表すブロック図。
【図２】ブート用プログラムＸに従ってコントローラＡが実行するブート処理の手順を表すフローチャート。
【図３】全てのアプリプログラム（プログラムモジュール）が展開された主メモリ内のデータ構成例を表す図。
【図４】不要なアプリプログラムの配置予定領域がワーク領域とされた状態の主メモリ内のデータ構成例を表す図。
【図５】空き領域にアプリプログラムが展開（伸張）された状態の主メモリ内のデータ構成例を表す図。
【図６】排他関係にあるオプション機能の１つが選択された場合におけるアプリプログラムの配置後の主メモリ内のデータ構成例を表す図。
【図７】排他関係にあるオプション機能の１つが選択された場合におけるアプリプログラムの配置後の主メモリ内のデータ構成例を表す図。
【符号の説明】
【００２３】
１…ＣＰＵ
２…メモリコントローラ
３…ブートコード用ＲＯＭ
４…アプリコード用ＲＯＭ（待機用メモリ）
５…主メモリ（実行用メモリ）
６…Ｉ／Ｏ部
７…ＬＥＤ
８…入力キー
９…ＥＥＰＲＯＭ
１０…ハードディスクドライブ
１１…ＬＣＤ（液晶表示手段）
１２…ＵＳＢ部
２０…システムバス
ｄ１…圧縮（符号化）されたアプリプログラム（プログラムモジュール）
ｄ２，ｄ３，ｄ４，ｄ５，ｄ６…アプリプログラム（プログラムモジュール）
Ｓ１，Ｓ２，，，…処理手順（ステップ）
【図１】
2005148778.tif 000003
【図２】
2005148778.tif 000004
【図３】
2005148778.tif 000005
【図４】
2005148778.tif 000006
【図５】
2005148778.tif 000007
【図６】
2005148778.tif 000008
【図７】
2005148778.tif 000009