(57)【要約】【課題】  端末の不揮発性メモリ上でソフトウェアの更新を行う際に、オーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮できるソフトウェア更新技術を実現する。【解決手段】  サーバ装置１において、データサイズ分析用情報入力部１０１が端末の不揮発性メモリに格納される格納データのデータサイズを分析するためのデータサイズ分析用情報を入力し、仮格納位置情報入力部１０２が各格納データの仮の格納位置を示す仮格納位置情報を入力し、格納位置指定情報生成部１０３がデータサイズ分析用情報入力部１０１及び仮格納位置情報入力部１０２からの情報に基づいて、各格納データの間に余裕領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成し、改訂があった場合には、余裕領域を用いて新版の格納データを格納するよう指示する格納位置指定情報を生成する。【選択図】        図１
2005251045.tif 000002
【特許請求の範囲】
【請求項１】
所定の不揮発性メモリを対象とし、前記不揮発性メモリにおけるデータの格納位置を管理する情報処理装置であって、
前記不揮発性メモリに格納される複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得するデータサイズ分析用情報取得部と、
前記不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を取得する仮格納位置情報取得部と、
前記データサイズ分析用情報取得部により取得されたデータサイズ分析用情報に基づき各格納データのデータサイズを分析し、分析した各格納データのデータサイズと前記仮格納位置情報取得部により取得された仮格納位置情報とに基づき、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成する格納位置指定情報生成部とを有することを特徴とする情報処理装置。
【請求項２】
前記格納位置指定情報生成部は、
各格納データの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記格納位置指定情報生成部は、
複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記データサイズ分析用情報取得部は、
格納データの改訂が行われる場合に、新版の複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得し、
前記仮格納位置情報取得部は、
旧版の格納データについて前記格納位置指定情報生成部により生成された格納位置指定情報を仮格納位置情報として取得し、
前記格納位置指定情報生成部は、
前記データサイズ分析用情報取得部により取得されたデータサイズ分析用情報に基づき新版の各格納データのデータサイズを分析し、分析した新版の各格納データのデータサイズと前記仮格納位置情報取得部により取得された旧版の格納データの格納位置指定情報とに基づき、新版の複数の格納データの間に空き領域を配置して新版の各格納データの格納位置を指定する格納位置指定情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記格納位置指定情報生成部は、
新版の各格納データの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記格納位置指定情報生成部は、
新版の複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記格納位置指定情報生成部は、
旧版の格納データの格納位置指定情報において指定された格納位置と同じ格納位置を新版の各格納データに対して指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記格納位置指定情報生成部は、
格納データの改訂により新版においてデータサイズが変化する格納データが存在する場合に、旧版の格納データの格納位置指定情報において当該格納データの格納位置として指定されている領域と当該格納データについて設けられている空き領域とを合わせた格納候補領域にデータサイズが変化した新版の格納データが格納可能か否かを判断し、
前記格納候補領域に格納可能な場合に、データサイズが変化した新版の格納データを前記格納候補領域に格納するよう指定する格納位置指定情報を生成し、
前記格納候補領域に格納できない場合に、データサイズが変化した新版の格納データを格納可能な空き領域を検索し、検索した空き領域にデータサイズが変化した新版の格納データを格納するよう指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項９】
前記格納位置指定情報生成部は、
格納データの改訂により新たな格納データが生成された場合に、旧版の格納データの格納位置指定情報において空き領域として指定されている領域に新たに生成された格納データを格納するよう指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項１０】
前記格納位置指定情報生成部は、
各グループのデータサイズが、前記不揮発性メモリに新版の格納データを格納する際に用いられるワークメモリのメモリサイズ以下となるように新版の複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項６に記載の情報処理装置。
【請求項１１】
前記格納位置指定情報生成部は、
新版のいずれかの格納データのデータサイズが、前記不揮発性メモリに新版の格納データを格納する際に用いられるワークメモリのメモリサイズ以上となる場合に、それぞれのパーツのデータサイズがワークメモリのメモリサイズ以下となるように当該新版の格納データを複数のパーツに分割し、各パーツの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項１２】
前記格納位置指定情報生成部は、
ワークメモリのメモリサイズ以上のデータサイズを有する新版の格納データがセクションごとに分割可能なコンパイル済みファイルである場合に、各セクションの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記格納位置指定情報生成部は、
ワークメモリのメモリサイズ以上のデータサイズを有する新版の格納データがセクションごとに分割可能なＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋｉｎｇ  Ｆｏｒｍａｔ）形式のコンパイル済みファイルである場合に、各セクションの間に空き領域を配置するよう指定する格納位置指定情報を生成することを特徴とする請求項１１に記載の情報処理装置。
【請求項１４】
前記情報処理装置は、更に、
格納データの改訂が行われる度に、前記格納位置指定情報生成部により生成された旧版の格納データの格納位置指定情報と新版の格納データの格納位置指定情報とを比較し、両者の差分を抽出し、抽出した差分を示す差分情報を生成する差分情報生成部を有することを特徴とする請求項４に記載の情報処理装置。
【請求項１５】
前記差分情報生成部は、
格納データ単位に、旧版の格納データの格納位置指定情報と新版の格納データの格納位置指定情報とを比較し、両者の差分を抽出することを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
前記差分情報生成部は、
セクションごとに分割可能なコンパイル済みファイルを格納データとし、前記格納位置指定情報生成部により旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報が生成されている場合に、セクション単位に、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報とを比較し、両者の差分を抽出することを特徴とする請求項１４に記載の情報処理装置。
【請求項１７】
前記差分情報生成部は、
セクションごとに分割可能なＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋｉｎｇ  Ｆｏｒｍａｔ）形式のコンパイル済みファイルを格納データとし、前記格納位置指定情報生成部により旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報が生成されている場合に、セクション単位に、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報とを比較し、両者の差分を抽出することを特徴とする請求項１４に記載の情報処理装置。
【請求項１８】
前記差分情報生成部は、
コンパイル前のＣ言語の関数ごとに分割可能なコンパイル済みファイルを格納データとし、前記格納位置指定情報生成部により旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報が生成されている場合に、コンパイル前のＣ言語の関数単位に、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報とを比較し、両者の差分を抽出することを特徴とする請求項１４に記載の情報処理装置。
【請求項１９】
所定の不揮発性メモリを対象とし、前記不揮発性メモリにおけるデータの格納位置を管理する格納位置管理方法であって、
前記不揮発性メモリに格納される複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得するデータサイズ分析用情報取得ステップと、
前記不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を取得する仮格納位置情報取得ステップと、
前記データサイズ分析用情報取得ステップにより取得されたデータサイズ分析用情報に基づき各格納データのデータサイズを分析し、分析した各格納データのデータサイズと前記仮格納位置情報取得ステップにより取得された仮格納位置情報とに基づき、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成する格納位置指定情報生成ステップとを有することを特徴とする格納位置管理方法。
【請求項２０】
所定の不揮発性メモリを対象とし、前記不揮発性メモリにおけるデータの格納位置の管理をコンピュータに実行させるプログラムであって、
前記不揮発性メモリに格納される複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得するデータサイズ分析用情報取得処理と、
前記不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を取得する仮格納位置情報取得処理と、
前記データサイズ分析用情報取得処理により取得されたデータサイズ分析用情報に基づき各格納データのデータサイズを分析し、分析した各格納データのデータサイズと前記仮格納位置情報取得処理により取得された仮格納位置情報とに基づき、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成する格納位置指定情報生成処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、特に携帯電話機・ＰＤＡ等の組み込み情報機器に関わる。
【背景技術】
【０００２】
近年、携帯電話機等の組み込み端末では、高機能化が進み、以前パーソナルコンピュータに使用されていたものと同程度のＣＰＵを備え、搭載されるＲＡＭや不揮発性メモリ（フラッシュＲＯＭやバックアップ電源つきＳＲＡＭ等）の容量も飛躍的に増加している。それに伴い、不揮発性メモリ上に搭載されるソフトウェアは複雑化・大規模化している。このため、組み込み端末の開発においては、このような大規模ソフトウェアの品質の維持が非常に大きな課題となっており、実際に市場に出回った組み込み端末に不具合が発見される例が後を絶たない。製品の納期を遵守しながらソフトウェアを全く不具合のない状態で出荷することが事実上困難となってきているため、出荷後にユーザの手元でソフトウェアを更新する手段が実現されてきている。
【０００３】
例えば、特開２００１−２７３１４７号公報では、バージョンアップされた情報およびその旧情報から差分情報を生成し、端末機器に送信する情報配布処理を提供する技術が開示されている。具体的には、サーバ計算機は、保持している情報のうち、バージョンアップされた情報およびその旧情報を有し、旧情報とバージョンアップされた情報とによって差分情報を生成する差分情報生成手段を有し、端末機器は、端末機器が保持する情報を最新の情報にバージョンアップする手段を有し、サーバ計算機から差分情報が送信されたとき、その差分情報および端末機器が保持する情報をもとにバージョンアップされた情報を生成する。
【０００４】
また、複雑化・大規模化にともない、搭載されるソフトウェアのオペレーティングシステムも、以前よりも高機能なものが採用されるようになってきており、ファイルシステムの広範囲な使用が進んできている。従来は、出荷後にユーザの手元で追加・修正されるデータのみファイルシステムで管理する等の方法が用いられることが多かったが、最近では、アプリケーションプログラムや、基本ソフトウェアの一部も、ファイルシステムの下に管理されるようなアーキテクチャが採用される例が増えてきている。
【０００５】
ファイルシステム上のシステムのソフトウェア更新方法の従来の例としては、ＵＮＩＸ（登録商標）におけるｐａｔｃｈコマンドが有名である。ｐａｔｃｈコマンドは、新旧のディレクトリ構造をファイルシステム上で比較した差分ファイルを入力として、旧版のディレクトリ構造に差分ファイルの内容を適用することにより新版のディレクトリ構造へ更新する機能を持つ。この際に、個々のファイルの更新はファイルシステムの機能を利用することによりおこなわれる。具体的には、旧版のディレクトリ構造の中に存在する複数のファイルのうち、差分ファイル中に差分情報が記載されているファイルのみをオープン（ｏｐｅｎ）し、ファイルの内容を読み込み（ｒｅａｄ）、差分情報との照合を行なったのち、新版のファイルと一致するような書き込み（ｗｒｉｔｅ）をおこない、ファイルをクローズ（ｃｌｏｓｅ）する。このｏｐｅｎ／ｒｅａｄ／ｗｒｉｔｅ／ｃｌｏｓｅといった機能はファイルシステムによって提供されるものであり、この一連の作業をおこなうことにより、ファイルシステムが搭載されている物理的なデバイス（ハードディスクドライブやフラッシュメモリ等）の内容を間接的に書き換えていることになる。例えば、上記の一連の操作においてファイルのサイズに変更が生じた場合には、ｃｌｏｓｅが行なわれる際に、ファイルシステム中に格納されている対応するファイルのファイルサイズの情報の書き換えが行なわれる。
【特許文献１】特開２００１−２７３１４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
一般にファイルシステムは、物理的なデバイス上では、ファイルシステム全体の管理情報を格納する領域・ディレクトリ構造を管理する領域・ファイルデータを格納する領域等に分かれている。上記のようなファイル更新の操作が行なわれた場合には、ファイルデータ領域が書き換えられると同時に、ファイルシステムの管理領域やディレクトリ構造の管理領域にも書き換えが発生する。また、ファイルのサイズが変更になった場合に、デバイス上の空き領域が不足する場合には、ファイルデータの再配置をおこなうことにより空き領域を確保する操作（ガーベジコレクション）が発生することがある。
【０００７】
このため、ｐａｔｃｈコマンドのように、ファイルシステム上の操作により、複数のファイルに対して更新がおこなわれる場合には、一部のファイルに対する更新のみ完了している各中間段階においてもファイルシステム上の情報が完全であることが保証されるため、管理情報の書き換えが複数回発生したり、ガーベジコレクションが複数回発生する等のオーバーヘッドが発生し、ソフトウェア更新の完了までの時間に影響する。
【０００８】
本発明の目的の１つは、以上のような課題を解決することにあり、ファイルシステムが物理的には不揮発性メモリ上に配置されている場合に、ファイルシステムが適用する（ｏｐｅｎ／ｒｅａｄ／ｗｒｉｔｅ／ｃｌｏｓｅなどの）機能を用いずに、オーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮できるソフトウェア更新技術を実現することである。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、
所定の不揮発性メモリを対象とし、前記不揮発性メモリにおけるデータの格納位置を管理する情報処理装置であって、
前記不揮発性メモリに格納される複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得するデータサイズ分析用情報取得部と、
前記不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を取得する仮格納位置情報取得部と、
前記データサイズ分析用情報取得部により取得されたデータサイズ分析用情報に基づき各格納データのデータサイズを分析し、分析した各格納データのデータサイズと前記仮格納位置情報取得部により取得された仮格納位置情報とに基づき、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成する格納位置指定情報生成部とを有することを特徴とする情報処理装置。
【発明の効果】
【００１０】
本発明によれば、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成するため、ソフトウェア更新の際のオーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮することができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
図１は、本実施の形態に係るサーバ装置（情報処理装置）１の構成例を示す図である。本実施の形態に係るサーバ装置１は、携帯電話機、ＰＤＡ等の組み込み端末（以下、端末または端末装置という）の不揮発性メモリにおけるプログラムやファイルデータ等の格納位置を指定することを主な役割とする。
【００１２】
また、図２３は、本実施の形態に係るサーバ装置１と端末装置２との関係を示す図であり、サーバ装置１と端末装置２とがネットワーク３で接続され、サーバ装置１より各種情報を端末装置２に送信することが可能である。
【００１３】
図１において、データサイズ分析用情報入力部１０１は、端末が格納する格納データ（プログラムやファイルデータ等）のデータサイズを分析するためのデータサイズ分析用情報を入力する。データサイズ分析用情報の内容については、後述する。なお、データサイズ分析用情報入力部１０１はデータサイズ分析用情報取得部の例である。仮格納位置情報入力部１０２は、端末の不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を入力する。仮格納位置情報の内容については、後述する。なお、仮格納位置情報入力部１０２は、仮格納位置情報取得部の例である。格納位置指定情報生成部１０３は、データサイズ分析用情報入力部１０１から入力されたデータサイズ分析用情報と仮格納位置情報入力部１０２から入力された仮格納位置情報に基づいて、各格納データの間に所定の余裕領域（空き領域）を配置して各格納データの格納位置を指定する格納位置指定情報を生成する。格納位置指定情報書込／読出部１０４は、格納位置指定情報生成部１０３により生成された格納位置指定情報を格納位置指定情報記憶部１０６に書き込み、また、所定の場合に、格納位置指定情報記憶部１０６から格納位置指定情報を読み出す。出力部１０５は、格納位置指定情報生成部１０３により生成された格納位置指定情報を出力する。格納位置指定情報記憶部１０６は、格納位置指定情報書込／読出部１０４の制御に従い、格納位置指定情報を記憶する。
【００１４】
なお、サーバ装置１は、図示していないが、例えばマイクロプロセッサ等のＣＰＵ、半導体メモリ等や磁気ディスク等の記録手段を有する計算機により実現することができる。記録手段に、サーバ装置１に含まれる各構成要素の機能を実現するプログラムを記録し、ＣＰＵがこれらのプログラムを読み込むことによりサーバ装置１の動作を制御し、各構成要素の機能を実現することも可能である。
【００１５】
図２は端末の代表的なハードウェア構成を示す図である。端末はＣＰＵを備え、バスを経由してネットワークと通信するための通信手段、ＲＡＭ、不揮発性メモリ（ＲＯＭ）、キーなどの入力手段、表示手段と接続されている。不揮発性メモリには、ブートローダ、カーネル、ファイルシステム、および書き換え用プログラムが格納されている。ファイルシステム中には、端末の機能に必要な実行プログラムが格納されている。
【００１６】
次に、図２１を参照して、サーバ装置１の動作を説明する。なお、以下の説明では、端末の不揮発性メモリに初版の格納データを格納する際の各格納データの格納位置を指定する場合について説明する。
【００１７】
先ず、ステップＳ２２０１において、データサイズ分析用情報入力部１０１がデータサイズ分析用情報を入力する（データサイズ分析用情報取得ステップ）。データサイズ分析用情報とは、端末が格納する格納データのデータサイズを分析するための情報であり、例えば、ディレクトリツリー及び端末の不揮発性メモリに格納される他の格納データ（ブートヘッダ・カーネル・書き換えプログラム）である。図４は、ステップＳ２２０１において、入力されるディレクトリツリーの例を示す図である。本ディレクトリツリーの内容が不揮発性メモリ上のファイルシステム上に置かれる。図において、ルート（根元）のディレクトリの名前は”／”であり、その下にｄｉｒ１とｄｉｒ２というディレクトリが配置されている。ディレクトリｄｉｒ１の下にはファイルｆｉｌｅ１が、ディレクトリｄｉｒ２の下にはｆｉｌｅ２およびｆｉｌｅ３が、それぞれ配置されている。
【００１８】
次に、ステップＳ２２０２において、仮格納位置情報を入力する（仮格納位置情報取得ステップ）。仮格納位置情報とは、格納位置指定情報の生成に用いる各格納データの仮の格納位置を示す情報であり、例えば、図３に示す不揮発性メモリ構成情報である。不揮発性メモリ構成情報には、不揮発性メモリに搭載するそれぞれのデータ領域の開始番地を記述する。データ領域に重なりが生じないように、十分に余裕をとることが必要である。図において、不揮発性メモリにはブートヘッダ・カーネル・ファイルシステムヘッダ・ディレクトリ情報・ファイルデータ・書き換えプログラムのそれぞれが配置され、たとえばブートヘッダは１６進数のアドレスで０ｘ００００００００番地、ファイルデータは０ｘ００４０００００番地から配置されるようになっている。ファイルシステムヘッダ・ディレクトリ情報・ファイルデータはファイルシステムの構成要素であり、ディレクトリツリーの内容から作成されるファイルシステムに対応して配置される。
【００１９】
次に、ステップＳ２２０３において、ステップＳ２２０１で入力された情報とステップＳ２２０２で入力された情報とに基づいて格納位置指定情報を生成する（格納位置指定情報生成ステップ）。この格納位置指定情報の生成については、後述するが、格納位置指定情報生成部１０３は、ステップＳ２２０１及びステップＳ２２０２で入力された情報を入力とし、指定された開始アドレスにそれぞれの情報を配置することにより、それぞれ格納位置指定情報である不揮発性メモリイメージ情報及び不揮発性メモリ配置情報を作成する。ファイルシステムについては、ディレクトリツリーからディレクトリツリーを作成し、ファイルシステムヘッダ・ディレクトリ情報・ファイルデータを作成する。これはたとえば、ＵＮＩＸ（登録商標）オペレーションシステムを組み込みシステムに使用する際にＲＯＭ上に実装するファイルシステムとして多用されているＣｒａｍＦＳファイルシステムであれば、ｍｋｃｒａｍｆｓというプログラムを使用することにより可能である。ＣｒａｍＦＳの場合、ファイルシステムヘッダはスーパーブロックと呼ばれており、ディレクトリ情報はｉ−ｎｏｄｅ領域と呼ばれている。
【００２０】
ステップＳ２２０３において格納位置指定情報（不揮発性メモリイメージ情報及び不揮発性メモリ配置情報）が生成された後は、ステップＳ２２０４で格納位置指定情報が出力部１０５から出力され、また、ステップＳ２２０５で格納位置指定情報書込／読出部１０４により格納位置指定情報が格納位置指定情報記憶部１０６に格納される。
図５は格納位置指定情報生成部１０３により生成される、格納位置指定情報の一つである不揮発性メモリイメージ情報の例を示す図である。図において、斜線部は余裕領域（空き領域）であり、データが何も配置されず不揮発性メモリの初期状態となっている。たとえば、カーネルの開始アドレスが０ｘ００１０００００、ファイルシステムヘッダの開始アドレスが０ｘ００２０００００と不揮発性メモリ構成情報に指定されていたが、カーネルのサイズが０ｘ００２０００００−０ｘ００１０００００＝０ｘ１０００００バイトよりも小さい場合には、このような余裕領域が不揮発性メモリ上に発生することになる。ディレクトリツリーにより作成されたファイルシステムヘッダ・ディレクトリ情報もそれぞれ指定された位置に配置される。
【００２１】
ｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３はファイルデータであり、ディレクトリツリー中に与えられた各ファイルの内容である。図において、ファイルシステムヘッダ・ディレクトリ情報・およびそれぞれのファイルデータの間には、余裕領域が設けられている。格納位置指定情報生成部１０３は、このような余裕領域を自動的に挿入する。自動的に挿入する余裕領域のサイズを決定するための方法としては、最も単純にはそれぞれのデータの開始アドレスを一定間隔とすることが考えられる。
【００２２】
図６は格納位置指定情報生成部１０３により生成される、格納位置指定情報の一つである不揮発性メモリ配置情報の例を示す図である。不揮発性メモリ配置情報は、格納位置指定情報生成部１０３が、不揮発性メモリ構成情報（仮格納位置情報）に基づき、それぞれのデータを不揮発性メモリ上に配置した際の結果を示したものであり、基本的に不揮発性メモリ構成情報を包含するものである。例えば、ブートヘッダは不揮発性メモリ上でのサイズが０ｘ０００８００４２バイトであったため、余裕領域はそのアドレスからスタートしている。なお、ファイルシステムヘッダ・ディレクトリ情報・およびｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３のそれぞれの後ろの余裕領域は、格納位置指定情報生成部１０３が自動的に挿入したものであるが、本実施の形態においてはそれぞれのデータの間隔を０ｘ００１０００００バイト刻みで増加させている（それぞれ開始アドレスが０ｘ００２０００００、０ｘ００３０００００、０ｘ００４０００００、０ｘ００５０００００、０ｘ００６０００００となっている）。そのためこのような開始アドレスの配置になっており、余裕領域が自動的に配置される。
【００２３】
ここで、図２２を用いて、格納位置指定情報の生成手順（ステップＳ２２０３）の内容を説明する。図２１のステップＳ２２０２で入力された不揮発性メモリ構成情報（仮格納位置情報）に示された順に、各格納データを順に分析対象とし、ステップＳ２３０１において、対象となる格納データのデータサイズをステップＳ２２０１で入力されたディレクトリツリーやブートヘッダ・カーネル・書き換えプログラム（データサイズ分析用情報）をもとに算出する。次に、ステップＳ２３０２において、当該格納データの開始アドレスに算出したデータサイズを加算する。次に、ステップＳ２３０２で求めた加算値に対応するアドレスを余裕領域の開始アドレスに指定し（ステップＳ２３０３）、指定した余裕領域の開始アドレスを不揮発性メモリ構成情報（仮格納位置情報）に書き込む（ステップＳ２３０４）。次に、全ての格納データについて余裕領域の開始アドレスが書き込まれたか否かを確認し（ステップＳ２３０５）、全ての格納データについて余裕領域の開始アドレスの書き込みが終了している場合（ステップＳ２３０５でＹｅｓ）は、処理を終了する。なお、全ての格納データについて余裕領域の開始アドレスが書き込みまれた不揮発性メモリ構成情報（仮格納位置情報）が不揮発性メモリ配置情報となり、この不揮発性メモリ配置情報をイメージ情報にデータ変換したものが不揮発性メモリイメージ情報となる。一方、余裕領域の開始アドレスの書き込みが行われていない格納データが存在する場合（ステップＳ２３０５でＮｏ）は、不揮発性メモリ構成情報（仮格納位置情報）の順序で次の格納データを分析対象とし（ステップＳ２３０６）、ステップＳ２３０１に戻る。
【００２４】
さて、作成された不揮発性メモリイメージ情報は、初版においては端末上の不揮発性メモリ上に書き込まれて、端末が出荷される。端末の出荷後に不具合が発生した場合には、不揮発性メモリ上の端末ソフトウェアを修正しなければならない。本実施の形態においては、不具合修正対象をファイルシステム上のディレクトリツリー内に存在するファイルと仮定する。ディレクトリツリー内のファイルに不具合が発生した場合には、まずディレクトリツリー上のファイルを改修した修正版を人手により作成し、その後新版のディレクトリツリーに対して、不揮発性メモリイメージ情報及び不揮発性メモリ配置情報の作成をおこなう。
【００２５】
新版のディレクトリツリーが作成された後、データサイズ分析用情報入力部１０１には、新版のディレクトリツリーがデータサイズ分析用情報として入力され、仮格納位置情報入力部１０２には、初版の場合と異なり、不揮発性メモリ構成情報の代わりに、初版の際に作成された不揮発性メモリ配置情報が、仮格納位置情報として入力される。なお、初版の際に作成された不揮発性メモリ配置情報は、格納位置指定情報記憶部１０６に記憶されているので、格納位置指定情報書込／読出部１０４が初版の際に作成された不揮発性メモリ配置情報を格納位置指定情報記憶部１０６から読み出して格納位置指定情報生成部１０３に提供してもよい。この場合は、格納位置指定情報書込／読出部１０４が仮格納位置情報取得部として機能することになる。不揮発性メモリ配置情報には、ファイルシステムの構成要素であるファイルシステムヘッダ・ディレクトリ情報・およびｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３というそれぞれのファイルデータの開始アドレスが含まれる。新版の不揮発性メモリイメージ作成時には、これらの開始アドレスを変えないような配置をおこなう。
【００２６】
つまり、格納位置指定情報生成部１０３は、データサイズ分析用情報入力部１０１及び仮格納位置情報入力部１０２（または格納位置指定情報書込／読出部１０４）からの情報に基づき、新版の各格納データの間に空き領域を配置して新版の各格納データの格納位置を指定する格納位置指定情報を生成するが、その際に、格納データの改訂により新版においてデータサイズが変化する格納データが存在する場合に、旧版の格納データの格納位置指定情報において当該格納データの格納位置として指定されている領域と当該格納データについて設けられている空き領域とを合わせた領域（格納候補領域）にデータサイズが変化した新版の格納データを格納するよう指定する格納位置指定情報を生成する。また、データサイズの変更がない格納データについては、当該格納データの格納位置及び空き領域は旧版のままとする。
【００２７】
なお、従来は、余裕領域の挿入をおこなわず、しかも第２版以降も初版でおこなったのと同様に不揮発性メモリ構成情報から不揮発性メモリイメージの作成をおこなっていたため、ファイルのサイズが変化した場合に、初版と第２版以降ではメモリイメージにアドレスのずれが生じていた。このようなアドレスのずれは、端末上でソフトウェア更新のために不揮発性メモリ領域に書き込みをおこなう際に、不揮発性メモリ領域の書き込みが必要な領域が増加することになる。たとえば、本実施の形態では、ｆｉｌｅ１のみを修正する場合には、ｆｉｌｅ１の修正の影響は余裕領域に吸収され、ｆｉｌｅ２やｆｉｌｅ３に影響を与えることはない。しかし、余裕領域を設けない場合には、ｆｉｌｅ１のサイズが増加することにより、ｆｉｌｅ２やｆｉｌｅ３の開始アドレスも後ろにずれることになる。その結果、ｆｉｌｅ２やｆｉｌｅ３には修正がないにもかかわらず、端末上ではアドレスのずれに対応するために、ｆｉｌｅ２、ｆｉｌｅ３を表すメモリ領域を書き直す必要が出てくる。一方、本実施の形態においては、余裕領域の挿入と、不揮発性メモリ配置情報の利用により、それぞれのデータが、旧版と同じ開始アドレスから配置されることが保証されるため、上記のようなずれが生じず、ソフトウェア更新時の不揮発性メモリ書き込み量を減少させることが可能となる。本実施の形態においては、ｆｉｌｅ２、ｆｉｌｅ３に関しては、端末上で上書きをおこなう必要がない。
【００２８】
図７は第２版作成時に格納位置指定情報生成部１０３が出力する不揮発性メモリ配置情報の例である。図７では、ｆｉｌｅ１のみに変更が生じ、ｆｉｌｅ１のサイズが変わっている場合の不揮発性メモリ配置情報の例を示している。この場合、ｆｉｌｅ１のサイズが増加しているので、ｆｉｌｅ１の後ろの余裕領域のサイズが減少している。一方で、他の格納データについては、それぞれの格納データの開始アドレス及び余裕領域の開始アドレスは変化していない。
【００２９】
このように、本実施の形態では、不揮発性メモリに格納される複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得するデータサイズ分析用情報取得部と、不揮発性メモリにおける各格納データの仮の格納位置を示す仮格納位置情報を取得する仮格納位置情報取得部と、データサイズ分析用情報取得部により取得されたデータサイズ分析用情報に基づき各格納データのデータサイズを分析し、分析した各格納データのデータサイズと仮格納位置情報取得部により取得された仮格納位置情報とに基づき、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成する格納位置指定情報生成部とを有する情報処理装置について説明した。
【００３０】
また、本実施の形態では、各格納データの間に空き領域を配置するよう指定する格納位置指定情報を生成する場合について説明した。
【００３１】
また、複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成することも可能である。
【００３２】
また、データサイズ分析用情報取得部は、格納データの改訂が行われる場合に、新版の複数の格納データのデータサイズの分析のために用いられるデータサイズ分析用情報を取得し、仮格納位置情報取得部は、旧版の格納データについて格納位置指定情報生成部により生成された格納位置指定情報を仮格納位置情報として取得し、格納位置指定情報生成部は、データサイズ分析用情報取得部により取得されたデータサイズ分析用情報に基づき新版の各格納データのデータサイズを分析し、分析した新版の各格納データのデータサイズと仮格納位置情報取得部により取得された旧版の格納データの格納位置指定情報とに基づき、新版の複数の格納データの間に空き領域を配置して新版の各格納データの格納位置を指定する格納位置指定情報を生成する。
【００３３】
また、本実施の形態では、新版の各格納データの間に空き領域を配置するよう指定する格納位置指定情報を生成する場合について説明した。
【００３４】
また、新版の複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成することも可能である。
【００３５】
また、本実施の形態では、旧版の格納データの格納位置指定情報において指定された格納位置と同じ格納位置を新版の各格納データに対して指定する格納位置指定情報を生成する。
【００３６】
以上のように、本実施の形態によれば、複数の格納データの間に空き領域を配置して各格納データの格納位置を指定する格納位置指定情報を生成するため、ソフトウェア更新の際のオーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮することができる。
【００３７】
実施の形態２．
図８は、新版においてファイルサイズが大きく増加した場合に格納位置指定情報生成部１０３により生成される不揮発性メモリ配置情報の例を示す図である。この場合、ｆｉｌｅ１のサイズが０ｘ００１３３３３２に増加している。この場合には、初版におけるｆｉｌｅ１の後ろの余裕領域内に増加量が収まらないため、ｆｉｌｅ１の移動がおこなわれる。すなわち、ｆｉｌｅ３の後ろの余裕領域内に新たに０ｘ００７０００００番地にｆｉｌｅ１を配置する。このことにより、余裕領域のサイズを越えた場合にも、ｆｉｌｅ２、ｆｉｌｅ３の書き込み位置に影響が生じないため、端末上でのソフトウェア更新において、不揮発性メモリの書き込み量を削減することが可能となる（ｆｉｌｅ２、ｆｉｌｅ３を上書きする必要がない）。
【００３８】
なお、サーバ装置１の構成は、図１に示したものと同様であり、説明は省略する。
【００３９】
このように、本実施の形態では、格納データの改訂により新版においてデータサイズが増加する格納データが存在する場合に、旧版の格納データの格納位置指定情報において当該格納データの格納位置として指定されている領域と当該格納データについて設けられている空き領域とを合わせた格納候補領域にデータサイズが増加した新版の格納データが格納可能か否かを判断し、格納候補領域に格納可能な場合には、実施の形態１で示したように、データサイズが増加した新版の格納データを格納候補領域に格納するよう指定する格納位置指定情報を生成し、格納候補領域に格納できない場合に、データサイズが増加した新版の格納データを格納可能な空き領域（図８の例では、ｆｉｌｅ３の後ろの領域）を検索し、検索した空き領域にデータサイズが増加した新版の格納データを格納するよう指定する格納位置指定情報を生成する。
【００４０】
以上より、本実施の形態によれば、いずれかの新版の格納データが余裕領域のサイズを越えた場合にも、他の格納データの書き込み位置に影響が生じないため、端末上でのソフトウェア更新において、他の格納データの上書きをする必要がなく、不揮発性メモリの書き込み量を削減することが可能となる。
【００４１】
実施の形態３．
新版において、ファイルが新たに追加されるケースも考えられる。
【００４２】
図９はファイルが新たに追加された場合の新版のディレクトリツリーの例を示す図である。本例では、ディレクトリｄｉｒ２の下にｆｉｌｅ２１が追加されている。
【００４３】
本実施の形態においては、基本的にメモリ上でのファイルの配置の順番は、ファイル名の辞書的配列としている。したがって、仮に図のようなディレクトリツリーが初版において与えられた場合には、ｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ２１、ｆｉｌｅ３の順にメモリ上に配置されることになる。しかし、第２版以降においては、端末上での不揮発性メモリ書き込み量の削減のためには、初版のファイルの順序を極力変化させることなく配置することが望ましい。そこで、本実施の形態においては、新規ファイルの追加は、既存のファイルがすでに配置されている領域ではなく、余裕領域に対しておこなう。
【００４４】
図１０はファイル数が増加した場合の格納位置指定情報生成部１０３により生成される不揮発性メモリ配置情報の例を示す図である。図において、ｆｉｌｅ２１は辞書的配列であればｆｉｌｅ２とｆｉｌｅ３の間に配置されるべきところであるが、これがｆｉｌｅ３の後ろの余裕領域上に配置されている。このように、格納位置指定情報生成部１０３は、ファイルが新規に追加された場合には余裕領域に配置を行うよう指定する格納位置指定情報を生成する。
【００４５】
なお、サーバ装置１の構成は、図１に示したものと同様であり、説明は省略する。
【００４６】
このように、本実施の形態では、格納データの改訂により新たな格納データが生成された場合に、旧版の格納データの格納位置指定情報において空き領域として指定されている領域に新たに生成された格納データを格納するよう指定する格納位置指定情報を生成する。
【００４７】
以上より、本実施の形態によれば、第２版以降において、初版のファイルの順序を極力変化させることなく新たなファイルを配置することができ、端末上での不揮発性メモリ書き込み量を削減することが可能になる。
【００４８】
実施の形態４．
ところで、端末側で端末ソフトウェアの更新をおこなう際には、不揮発性メモリ上の内容を書き換えなければならない。端末は、サーバ装置１からネットワーク３を経由して送信される差分コマンドに従って不揮発性メモリの書き換えをおこなう。その際に、端末のＲＡＭ上に一旦不揮発性メモリに書き込む単位のイメージが作成される。
【００４９】
図１１は端末上でのソフトウェア書き換えの全体的な手順を示す。まず、差分コマンドをネットワーク経由でダウンロードし（ステップＳ１１０１）、次に差分コマンドに従って不揮発性メモリイメージを書き換える（ステップＳ１１０２）。
【００５０】
なお、従来のソフトウェア更新は、図２０にあるような手順でおこなわれる。これは、例えばＵＮＩＸ（登録商標）で多用されるｐａｔｃｈプログラムを使用した場合にあてはまる。まず、端末は差分情報（パッチ）をダウンロードする（ステップＳ２００１）。差分情報には、どのファイルに対してどのような修正を施すべきかが記述されている。次に、差分情報に含まれるそれぞれのファイルに対して、ファイルシステムの機能を用いて書き換えをおこなう（ステップＳ２００２）。たとえば、あるファイルを修正する場合には、そのファイルをオープン（ｏｐｅｎ）し、書き込み（ｗｒｉｔｅ）をおこない、クローズ（ｃｌｏｓｅ）する。このｏｐｅｎ／ｗｒｉｔｅ／ｃｌｏｓｅといった機能は、ファイルシステムの機能として提供されるものであり、内部的には、ファイルデータ領域のほかに、ファイルシステムヘッダやディレクトリ情報の領域への書き換えの処理に変換される。したがって、複数のファイルに対する書き換えをおこなう場合には、それぞれのファイルを修正するごとに、ファイルシステムヘッダやディレクトリ情報への書き換えが発生するため、処理効率が良くない。これに対し、本実施の形態の方法によれば、ファイルシステムの機能を用いずに、不揮発性メモリイメージの新版・旧版の差分情報を用いて、不揮発性メモリを直接書き換えるため、ファイルシステムヘッダやディレクトリ情報への書き換えが一度で済む。
【００５１】
以下、不揮発性メモリイメージ書き換え処理について説明する。
図１２は端末に送信される差分コマンドの例である。この例では、図６のｆｉｌｅ１の先頭に４バイト分、０ｘ１２３４５６７８を追加し、以後すべて旧版のｆｉｌｅ１のコピーするコマンドを示している。これにより、ｆｉｌｅ１のサイズは０ｘ００４２４０５８から０ｘ００４２４０５ａとなる。なお、実際にはｆｉｌｅ１のサイズが変化することにより、ファイルシステムヘッダやディレクトリ情報にも影響があるが、本例ではこれを省略する。本例の差分コマンドは以下の内容から成る。
・  ＳＫＩＰ  ０ｘ００４０００００
不揮発性メモリの先頭０ｘ００４０００００バイト分を読み飛ばす（書き換えをおこなわない）
・  ＤＡＴＡ  ０ｘ１２３４５６７８
０ｘ１２３４５６７８を（現在の０ｘ００４０００００バイト目から）書き込む
・  ＣＯＰＹ  ０ｘ００４０００００、０ｘ００４２４０５８
旧版の不揮発性メモリの０ｘ００４０００００バイト目から０ｘ００４２４０５８バイト分コピーをおこなう
・  ＦＬＵＳＨ
今までの内容を実際に不揮発性メモリに書き込む
【００５２】
図１３は差分コマンドによる端末上の不揮発性メモリの変化の様子を示す図である。図のように、データの書き込み（０ｘ１２３４５６７８）および領域のコピーを端末の不揮発性メモリ上でおこなう必要がある。
【００５３】
このような場合には、端末での処理には次のような問題が生ずる。もしも、不揮発性メモリ上でＤＡＴＡコマンドの処理（０ｘ１２３４５６７８の書き込み）をおこなってからＣＯＰＹ（領域のコピー）をおこなおうとすると、コピーする領域の先頭の４バイトがすでに０ｘ１２３４５６７８に書き換えられているため、望ましい結果が得られない。この場合には、ＣＯＰＹをおこなってからＤＡＴＡを処理することにより、望ましい結果が得られるが、一般には不揮発性メモリ上の処理だけで書き換えをおこなうのは難しい。したがって、まず不揮発性メモリ上の内容を一旦ＲＡＭ（ワークメモリ）にコピーして、ＲＡＭ上に所望の新版のメモリイメージを作成してから、不揮発性メモリにコピーする方法をとる。
【００５４】
図１４は端末上での不揮発性メモリ書き換えの様子を示す図である。図に示すように、差分コマンドの実行の際には、一旦ＲＡＭ上でメモリイメージが作成され、ＦＬＵＳＨコマンド実行時に不揮発性メモリ上にコピーされる。これにより、コマンド実行順により不揮発性メモリの内容が破壊される問題は解決される。なお、ＦＬＵＳＨコマンドは、余裕領域の最後に挿入される。なお、以上のことはＲＡＭ上に一旦コピーすることの必要性を説明しているだけであって、本特許の請求する発明の範囲ではない。
【００５５】
ところで、今までに述べてきた実施の形態においては、ファイル１つ１つに対して余裕領域を設けてきた。実際には、余裕領域を多くとりすぎると、不揮発性メモリ上で実際に使用可能な領域が減ることになり、好ましくない。したがって、ファイル１つ１つに対してではなく、いくつかの複数のファイルをグループに分類し、各グループの間に余裕領域を挿入することが考えられる。上に説明したように、ＦＬＵＳＨコマンドは、余裕領域の単位ごとに挿入され、それまでに端末のＲＡＭ上に作成されてきたメモリイメージを不揮発性メモリに書き込む契機となる。
【００５６】
ところが、端末においてはＲＡＭの容量を大きくとることができない場合がある。つまり、端末のコストを削減するためにＲＡＭのサイズを小さくせざるを得ない場合がある。したがって、複数のファイルをグループに分類し、各グループに対して余裕領域を挿入する場合に、多くのファイルをまとめたために、次の余裕領域までのデータの量が大きくなりすぎると、端末において使用可能なＲＡＭの量を超える場合が考えられ、この場合には上記方式により不揮発性メモリの書き換えをおこなうことができなくなる。
【００５７】
したがって、本実施の形態の格納位置指定情報生成部１０３では、あらかじめ端末の持つＲＡＭ（ワークメモリ）の量を考慮に入れて、余裕領域を挿入する単位として複数のファイルをまとめる際に、このＲＡＭの上限を超えないようにすることを特徴とする。
【００５８】
図１５は本実施の形態による格納位置指定情報生成部１０３により作成された不揮発性メモリ配置情報の例である。この場合、ｆｉｌｅ１のサイズが０ｘ０００８００００であり、ｆｉｌｅ２のサイズが０ｘ０００６００００であり、ｆｉｌｅ３のサイズが０ｘ０００ｆ００００である。端末のＲＡＭの使用可能な上限が０ｘ００１０００００バイトである場合、ｆｉｌｅ１とｆｉｌｅ２をあわせて０ｘ０００ｄ００００というサイズとなり、ＲＡＭの使用可能な上限に収まる。ところが、ｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３を合わせると、サイズは０ｘ００１ｃ００００となり、ＲＡＭの上限を超える。したがって、格納位置指定情報生成部１０３は、ｆｉｌｅ１、ｆｉｌｅ２をまとめて、その後ろに余裕領域を挿入する。また、ｆｉｌｅ３の後ろにも余裕領域を挿入する。
【００５９】
なお、サーバ装置１の構成は、図１に示したものと同様であり、説明は省略する。
【００６０】
このように、本実施の形態では、複数の格納データをグループとして分類する場合に、各グループのデータサイズが、不揮発性メモリに新版の格納データを格納する際に用いられるワークメモリのメモリサイズ以下となるように新版の複数の格納データを複数のグループに分類し、各グループの間に空き領域を配置するよう指定する格納位置指定情報を生成する。
【００６１】
以上より、本実施の形態によれば、ワークメモリであるＲＡＭの容量が少ない端末においても、有効に端末ソフトウェアの更新を行うことができる。
【００６２】
実施の形態５．
ところで、ＲＡＭの使用可能サイズを上回る大きさのファイルが存在する場合が考えられる。この場合には、格納位置指定情報生成部１０３は、ファイルが分割可能であれば、分割した部分に余裕領域を挿入する。分割可能なファイルとして、コンパイルリンク済みのファイルが、いくつかのセクションに分離されている場合がある。Ｃ言語等で記述されたプログラムをコンパイラリンクした場合、コンパイル済みファイルは、命令セクション（ＴＥＸＴと呼ばれることがある）、初期値付きデータセクション、初期値なしデータセクション（ＢＳＳと呼ばれることがある）等に分割されていることが多い。このような場合に、格納位置指定情報生成部１０３は、これらのセクションの間に余裕領域を挿入するよう指示する格納位置指定情報を生成する。
【００６３】
図１６は本実施の形態に係る格納位置指定情報生成部１０３が生成する不揮発性メモリ配置情報の例である。これによれば、ｆｉｌｅ３は命令セクション、初期値つきデータセクション、初期値なしデータセクションがすべて０ｘ０００ｆ００００である。この場合、ＲＡＭの使用可能なサイズを０ｘ００１０００００バイトとすると、ｆｉｌｅ３単体ではこれを超えるため、それぞれのセクションごとに余裕領域を挿入している。
【００６４】
なお、サーバ装置１の構成は、図１に示したものと同様であり、説明は省略する。
【００６５】
このように、本実施の形態では、新版のいずれかの格納データのデータサイズが、不揮発性メモリに新版の格納データを格納する際に用いられるワークメモリのメモリサイズ以上となる場合に、それぞれのセクション（パーツ）のデータサイズがワークメモリのメモリサイズ以下となるように当該新版の格納データを複数のセクション（パーツ）に分割し、各セクション（パーツ）の間に空き領域を配置するよう指定する格納位置指定情報を生成する。
【００６６】
以上より、本実施の形態によれば、ワークメモリであるＲＡＭの容量が少ない端末においても、有効に端末ソフトウェアの更新を行うことができる。
【００６７】
実施の形態６．
本実施の形態では、端末ソフトウェアの改訂があった場合に、サーバ装置１において新版と旧版のプログラムの差分を抽出し、抽出した差分を端末装置２に通知する場合について説明する。
【００６８】
図２４は、本実施の形態に係るサーバ装置１の構成例を示す図であり、１０１〜１０６の要素は図１と同じため説明を省略する。差分情報生成部１０７は、格納位置指定情報記憶部１０６に格納されている新版及び旧版の格納位置指定情報を比較して差分を抽出し、抽出結果を差分情報として生成する。通信部１０８は差分情報生成部１０７で生成された差分情報を端末装置２に送信する。
【００６９】
図１７は差分情報生成部１０７の動作手順を示す図である。入力は、新旧の不揮発性メモリイメージ情報と、新旧の不揮発性メモリ配置情報である。不揮発性メモリ配置情報に記述されたデータ領域の集合を、旧版・新版それぞれＳ１、Ｓ２とする。図のようにＳ２からデータ領域を、アドレスの若い順に取り出し、Ｆ２とする。Ｆ２がファイルデータでない場合（Ｆ２がファイルシステムヘッダ・ディレクトリ構造のいずれかの場合）、Ｆ２に対応するデータ領域がＳ１に存在するため、それをＦ１とし、Ｆ２とＦ１の差分である差分コマンドを出力する。Ｆ２がファイルデータである場合には、新規ファイルである場合と既存のファイルである場合がありうる。Ｓ１中にＦ２と同一のパスを持つファイルデータが存在する場合には、それをＦ１とし、Ｆ２とＦ１の差分である差分コマンドを出力する。Ｓ１中にＦ２と同一のパスを持つファイルデータが存在しない場合には、新規ファイルであるため、Ｆ２を追加する差分コマンドを出力する。
【００７０】
なお、ファイルごとの差分抽出は、最も単純な方法は、単純に新版の内容によるＤＡＴＡコマンドを出力し、そのあとにＦＬＵＳＨコマンドを出力することである。ＤＡＴＡコマンドはすでに述べたように、不揮発性メモリ上の現在の番地から上書きをおこなう。この場合は実際には差分を抽出しているとはいえないが、端末上の不揮発性メモリを書き換える上では問題ない。また、これを改良した方法としては、新版のメモリイメージの中で、一定のサイズ（たとえば４バイト）ごとに、旧版と比較をおこない、一致した部分をＣＯＰＹコマンドにより表現し、それ以外の部分をＤＡＴＡコマンドを用いて表現する方法も考えられる。そのほかには、新版と旧版の間の一致しているものの最長のものを探し、その部分をＣＯＰＹコマンドで表現し、それ以外をＤＡＴＡコマンドで表現する方法も考えられる。また、一般によく知られているバイナリ差分抽出のアルゴリズムを使用することもできる。例えば、「Ａｎｄｒｅｗ  Ｔｒｉｄｇｅｌｌ  ａｎｄ  Ｐａｕｌ  Ｍａｃｋｅｒｒａｓ、  Ｔｈｅ  ｒｓｙｎｃ  ａｌｇｏｒｉｔｈｍ、  ＴＲ−ＣＳ−９６−０５、  Ｔｈｅ  Ａｕｓｔｒａｌｉａｎ  Ｎａｔｉｏｎａｌ  Ｕｎｉｖｅｒｓｉｔｙ、  Ｊｕｎｅ  １９９６」に記述されているｒｓｙｎｃアルゴリズムが、バイナリ差分抽出のアルゴリズムとして知られている。
【００７１】
また、Ｆ２が新規ファイルであった場合の差分コマンドは、単純に新規ファイルの内容によるＤＡＴＡコマンドを出力し、そのあとにＦＬＵＳＨコマンドを出力することにより実現することができる。
【００７２】
このように、本実施の形態では、格納データの改訂が行われる度に、旧版の格納データの格納位置指定情報と新版の格納データの格納位置指定情報とを比較し、両者の差分を抽出し、抽出した差分を示す差分情報を生成する。また、差分情報の生成は、格納データ単位に、旧版の格納データの格納位置指定情報と新版の格納データの格納位置指定情報とを比較し、両者の差分を抽出することにより行われる。
【００７３】
以上より、本実施の形態によれば、ソフトウェア更新の際のオーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮可能な差分情報を端末装置に供給することができる。
【００７４】
実施の形態７．
上記実施の形態の差分情報生成部１０７においては、差分抽出の単位をファイルとしたが、ファイルがコンパイル済みファイルであり、機能の異なる複数のセクションからなる場合には、セクションごとに差分抽出をおこない、差分コマンドを出力する方法も考えられる。セクションの情報は、一般にはコンパイルリンク時に出力されるリンクマップファイル等から知ることが可能であり、この情報を用いて不揮発性メモリイメージ上をセクションごとに分割して、差分抽出をおこなうことが可能である。なお、ここでは、ＵＮＩＸ（登録商標）  Ｓｙｓｔｅｍ  Ｌａｂｏｒａｔｏｒｉｅｓにより開発された、ＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋｉｎｇ  Ｆｏｒｍａｔ）形式におけるＥＬＦ  ｈｅａｄｅｒ、  Ｐｒｏｇｒａｍ  ｈｅａｄｅｒ  ｔａｂｌｅ、  Ｓｅｃｔｉｏｎ  ｈｅａｄｅｒ  ｔａｂｌｅも広義の意味でセクションに含まれる。
【００７５】
なお、サーバ装置１の構成は、図２４に示したものと同様であり、説明は省略する。
【００７６】
このように、本実施の形態では、セクションごとに分割可能なコンパイル済みファイルを格納データとし、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報が生成されている場合に、セクション単位に、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報とを比較し、両者の差分を抽出する。ここで、セクションごとに分割可能なコンパイル済みファイルとは、例えば、セクションごとに分割可能なＥＬＦ（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋｉｎｇ  Ｆｏｒｍａｔ）形式のコンパイル済みファイルである。
【００７７】
以上より、本実施の形態によれば、ソフトウェア更新の際のオーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮可能な差分情報を端末装置に供給することができる。
【００７８】
実施の形態８．
また、ファイルがコンパイラによって生成されたコンパイル済みファイルであり、ファイルを構成するセクションのうち、命令セクションに対して、コンパイル前のＣ言語の関数単位に分割可能である場合には、この部分の差分抽出の単位を関数とする方法も考えられる。不揮発性メモリイメージ上でどこまでがそれぞれの関数に相当するかは、セクションの場合と同様、一般にはコンパイルリンク時に出力されるリンクマップファイル等から知ることが可能であり、この情報を用いて不揮発性メモリイメージ上を関数ごとに分割して、差分抽出をおこなうことが可能である。
【００７９】
図１８は本実施の形態に係るファイルシステムヘッダの例を示す図である。本例では、図６の状態におけるファイルシステムヘッダの内容を示している。ファイル総数は３となっており、これはｆｉｌｅ１、ｆｉｌｅ２、ｆｉｌｅ３の３つのファイルが存在することに対応する。また、ディレクトリ構造へのポインタは、ファイルシステムヘッダの先頭アドレスからのバイト数で示されている。本実施の形態においては、このようにファイルシステムヘッダは８バイトの非常に単純な構造としているが、ファイルシステムの実装によってはこれよりも複雑な構造でも良いことは言うまでもない。
【００８０】
図１９は本実施の形態に係るディレクトリ構造の例を示す図である。本例では、図６の状態におけるディレクトリ構造の内容を示している。図において、ポインタはすべてディレクトリ構造の先頭アドレスからのバイト数により表現されている。本例は、ディレクトリを表す構造とファイルを表す構造が混在している。ディレクトリを表す構造は以下の要素からなる。
【００８１】
・  名前（１６バイト固定長の文字列）
・  下位ディレクトリ数（４バイト）・・・これをＮとする。
・  下位ファイル数（４バイト）・・・これをＭとする。
・  下位ディレクトリへのポインタ（４バイト×Ｎ個）
・  下位ファイルへのポインタ（４バイト×Ｍ個）
また、ファイルを表す構造は以下の要素からなる。
・  名前（１６バイト固定長の文字列）
・  ファイルデータへのポインタ（４バイト）
【００８２】
例えば、図において、先頭のデータはルートディレクトリである”／”のデータとなっている。名前として”／”が指定されており、下位ディレクトリ数はｄｉｒ１、ｄｉｒ２の計２、下位ファイル数は直下にファイルが存在しないため０となっている。それに続き、下位ディレクトリであるｄｉｒ１、ｄｉｒ２に相当するポインタが格納されている。その次に、ｄｉｒ１のデータある。これは、下位ディレクトリ数が０、下位ファイル数はｆｉｌｅ１が存在するため１である。それに続き、ｆｉｌｅ１に相当する下位ファイルへのポインタが格納されている。合計で１５２バイトのデータとなっている。
【００８３】
なお、サーバ装置１の構成は、図２４に示したものと同様であり、説明は省略する。
【００８４】
このように本実施の形態では、コンパイル前のＣ言語の関数ごとに分割可能なコンパイル済みファイルを格納データとし、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報が生成されている場合に、コンパイル前のＣ言語の関数単位に、旧版のコンパイル済みファイルの格納位置指定情報と新版のコンパイル済みファイルの格納位置指定情報とを比較し、両者の差分を抽出する。
【００８５】
以上より、本実施の形態によれば、ソフトウェア更新の際のオーバーヘッドの発生を抑制し、ソフトウェア更新完了までの時間を短縮可能な差分情報を端末装置に供給することができる。
【００８６】
ここで、実施の形態１〜８に示したサーバ装置の特徴を以下にて示す。
【００８７】
実施の形態１〜８に示したサーバ装置は、端末に搭載し、端末を動作させるために必要な１つまたは複数のファイルの集合である端末ソフトウェアをファイルシステム上に格納するための不揮発性メモリに、
格納するメモリイメージを作成する際に、メモリイメージ上でファイルのデータの間に、データを含まない余裕領域を挿入することを特徴とする。
【００８８】
実施の形態１〜８に示したサーバ装置は、端末ソフトウェアの改版によりファイルシステムに新たなファイルが追加された場合には、新たなファイルを余裕領域に追加することを特徴とする。
【００８９】
実施の形態１〜８に示したサーバ装置は、ＲＡＭを備える端末が端末ソフトウェアの改版により不揮発性メモリを書き換える際に、余裕領域の間に挟まれる不揮発性メモリ領域のサイズが、端末が使用可能なＲＡＭのサイズを超えないように、余裕領域の挿入をおこなうことを特徴とする。
【００９０】
実施の形態１〜８に示したサーバ装置は、端末が使用可能なＲＡＭのサイズを超えるサイズのファイルに対しては、ファイルの途中に余裕領域を挿入することを特徴とする。
実施の形態１〜８に示したサーバ装置は、端末が使用可能なＲＡＭのサイズを超えるサイズのファイルが、機能の異なる複数のセクションからなる場合には、セクションとセクションの間に余裕領域を挿入することを特徴とする。
【００９１】
実施の形態１〜８に示したサーバ装置は、ファイルのフォーマットはＥＬＦ形式であることを特徴とする。
【００９２】
実施の形態１〜８に示したサーバ装置は、端末の不揮発性メモリに格納されるファイルシステム上のデータの新版と旧版の差分データを生成する際に、ファイルシステムの不揮発性メモリ上でのイメージの新版と旧版のそれぞれの間の差分データを出力とすることを特徴とする。
【００９３】
実施の形態１〜８に示したサーバ装置は、ファイルシステムの不揮発性メモリ上でのイメージの新版と旧版のそれぞれをある処理ブロック単位で読み込む手順と、新旧の処理ブロックを比較して差分を出力する手順をおこなう際に、処理ブロックの単位をファイルとすることを特徴とする。
【００９４】
実施の形態１〜８に示したサーバ装置は、ファイルがコンパイラによって生成されたコンパイル済みファイルであり、機能の異なる複数のセクションからなる場合には、処理ブロックの単位をセクションとすることを特徴とする。
【００９５】
実施の形態１〜８に示したサーバ装置は、コンパイル済みファイルのファイルフォーマットはＥＬＦ形式であることを特徴とする。
【００９６】
実施の形態１〜８に示したサーバ装置は、ファイルがコンパイラによって生成されたコンパイル済みファイルであり、コンパイル前のＣ言語の関数単位に分割可能である場合には、処理ブロックの単位を関数とすることを特徴とする。
【図面の簡単な説明】
【００９７】
【図１】実施の形態１に係るサーバ装置の構成例を示す図。
【図２】実施の形態１に係る端末装置のハードウェア構成例を示す図。
【図３】実施の形態１に係る不揮発性メモリ構成情報の例を示す図。
【図４】実施の形態１に係るディレクトリツリーの例を示す図。
【図５】実施の形態１に係る不揮発性メモリイメージ情報の例を示す図。
【図６】実施の形態１に係る不揮発性メモリ配置情報の例を示す図。
【図７】実施の形態１に係る新版作成時の不揮発性メモリ配置情報の例を示す図。
【図８】実施の形態２に係る新版作成時の不揮発性メモリ配置情報の例を示す図。
【図９】実施の形態３に係る新版のディレクトリツリーの例を示す図。
【図１０】実施の形態３に係る新版作成時の不揮発性メモリ配置情報の例を示す図。
【図１１】実施の形態４に係る端末装置におけるソフトウェア書き換えの全体的な手順例を示す図。
【図１２】実施の形態４に係る差分コマンドの例を示す図。
【図１３】実施の形態４に係る差分コマンドによる端末上の不揮発性メモリの変化の様子を示す図。
【図１４】実施の形態４に係る差分コマンドによる端末上の不揮発性メモリの変化の様子を示す図。
【図１５】実施の形態４に係る新版作成時の不揮発性メモリ配置情報の例を示す図。
【図１６】実施の形態５に係る新版作成時の不揮発性メモリ配置情報の例を示す図。
【図１７】実施の形態６に係る差分抽出処理の手順例を示す図。
【図１８】実施の形態８に係るファイルシステムヘッダの例を示す図。
【図１９】実施の形態８に係るディレクトリ構造の例を示す図。
【図２０】従来のソフトウェア更新の手順例を示す図。
【図２１】実施の形態１に係るサーバ装置の動作例を示す図。
【図２２】実施の形態１に係るサーバ装置の動作例を示す図。
【図２３】サーバ装置と端末装置との関係を示す図。
【図２４】実施の形態６に係るサーバ装置の構成例を示す図。
【符号の説明】
【００９８】
１  サーバ装置、２  端末装置、３  ネットワーク、１０１  データサイズ分析用情報入力部、１０２  仮格納位置情報入力部、１０３  格納位置指定情報生成部、１０４  格納位置指定情報書込／読出部、１０５  出力部、１０６  格納位置指定情報記憶部、１０７  差分情報生成部、１０８  通信部。
【図１】
2005251045.tif 000003
【図２】
2005251045.tif 000004
【図３】
2005251045.tif 000005
【図４】
2005251045.tif 000006
【図５】
2005251045.tif 000007
【図６】
2005251045.tif 000008
【図７】
2005251045.tif 000009
【図８】
2005251045.tif 000010
【図９】
2005251045.tif 000011
【図１０】
2005251045.tif 000012
【図１１】
2005251045.tif 000013
【図１２】
2005251045.tif 000014
【図１３】
2005251045.tif 000015
【図１４】
2005251045.tif 000016
【図１５】
2005251045.tif 000017
【図１６】
2005251045.tif 000018
【図１７】
2005251045.tif 000019
【図１８】
2005251045.tif 000020
【図１９】
2005251045.tif 000021
【図２０】
2005251045.tif 000022
【図２１】
2005251045.tif 000023
【図２２】
2005251045.tif 000024
【図２３】
2005251045.tif 000025
【図２４】
2005251045.tif 000026