JP3670162B2 - 再配置可能なアドインソフト管理システム - Google Patents
再配置可能なアドインソフト管理システム Download PDFInfo
- Publication number
- JP3670162B2 JP3670162B2 JP13282199A JP13282199A JP3670162B2 JP 3670162 B2 JP3670162 B2 JP 3670162B2 JP 13282199 A JP13282199 A JP 13282199A JP 13282199 A JP13282199 A JP 13282199A JP 3670162 B2 JP3670162 B2 JP 3670162B2
- Authority
- JP
- Japan
- Prior art keywords
- add
- module
- software
- function
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、情報端末装置において利用者が必要に応じてソフトを追加していく、アドインソフトの管理システムに関する。
【0002】
【従来の技術】
従来より、プログラムを動的に配置する処理として、例えば特開平6−332675号公報に記載された共有ライブラリ管理機構や、フラッシュROMを用いたアドインソフト管理方式が提案されている。
【0003】
図15は、上記の共有ライブラリ管理機構において、プログラムを動的に配置する処理を示した図である。
【0004】
同図において、ライブラリファイル700は、ハードディスクなどの2次メモリ上に配置されている。このライブラリファイル700の中には、ライブラリ関数701〜704を格納する領域と、関数アドレス表710を格納する領域とがあり、関数アドレス表710には、ライブラリ関数の関数名711とその関数のライブラリの先頭からの相対アドレス712とが登録されている。
【0005】
一方、ライブラリ関数の呼び出しを含む関数810の中に、ライブラリ関数a()の呼び出し811とライブラリ関数c()の呼び出し812とがあるとき、コンパイラによってスタブ関数a′()801とc′()802とが生成される。
【0006】
また、メモリのデータ領域には関数リンクテーブル820があり、ライブラリ関数名821とその先頭アドレス822とが登録されている。ただし、関数リンクテーブル820は、初期状態ではアドレスが登録されておらず、ライブラリファイル700がメモリ上に展開される際に、ダイナミックローダにより、ライブラリの展開先の先頭アドレスとライブラリ内の関数アドレス表とからアドレスを計算して登録するようになっている。
【0007】
従って、実際のライブラリ関数の呼び出しの流れは、一度スタブ関数へジャンプし、スタブ関数内で関数リンクテーブル内のアドレスを参照して、ライブラリ関数を呼び出すといった流れとなる。
【0008】
次に、上記のフラッシュROMを用いたアドインソフト管理方式について説明する。
【0009】
図16は、従来のアドインソフト管理方式でのフラッシュROMの一部を示した図である。
【0010】
このフラッシュROMには、ページ0からページ15まで格納されており、1つのページ600は、ページヘッダ領域610とセクタ領域630とに分かれている。また、セクタ領域630はさらに複数のセクタに分かれており、各セクタは、データセクタ631、削除済みセクタ632、空きセクタ634のいずれかに分類される。
【0011】
このような構成において、アドインソフトをダウンロードする際には、セクタ領域630をセクタに分割することなくアドインソフト640を書き込むため、アドインソフトはページ14又はページ15にしかダウンロードできない。
【0012】
また、アドインソフト自体は絶対アドレスでジャップ命令等が記述されているので、同一の処理をするアドインソフトでもページ14用とページ15用とが用意されている。また、アドインソフトの呼び出しは、アドインの先頭アドレスが決まっているので、そのアドレスをコールする。また、アドインソフトの削除は、アドインの登録情報を削除した後、該当ページをリフレッシュする。
【0013】
【発明が解決しようとする課題】
ところで、絶対アドレスを利用するアドインソフトでは、同じ機能のアドインソフトでもアドレスごとに別々のプログラムを用意しなくてはならず無駄が多い。また、情報端末装置間でのアドインソフトの転送は、転送先の情報端末装置の該当アドレスに別のアドインソフトが入っていると転送できなくなる。また、一度ダウンロードしたアドインソフトは、固定アドレスで動作するため、他のアドレスへ移動させることができず、ガベージコレクションを行うことができないといった問題がある。このような問題を解決するためには、アドインプログラムがどのアドレスにダウンロードされても動作するようにしなければならない。また、アドインソフトを開発する際には、情報端末装置にあらかじめ用意されているライブラリ以外にはライブラリを置くことができず、複数のアドインプログラムで同様の処理を行っているため、アドインソフトの開発労力やアドインプログラムのサイズが増大する。
【0014】
また、上記のフラッシュROMを利用する情報端末装置では、1ページで1つ又は2ページで1つのアドインソフトを格納するといった使い方しかできない。そのため、1ページ未満の小さいアドインソフトでも1ページ全部を使用することになり、空き領域が有効利用できない。また、ページごとにページ管理のためのヘッダ領域等が設けられており、連続して確保できるメモリサイズはページサイズよりも小さくなってしまう。そのため、大規模なアドインソフトを作るには、1つのアドインソフトを複数のモジュールに分けて作り、モジュール単位でダウンロードできるようにする必要がある。
【0015】
また、上記の共有ライブラリ管理機構では、他のモジュールのプログラムから呼び出されるライブラリ関数のアドレスを、メモリに転送される時点で決定して転送することができる。そこで、このライブラリをアドインソフトのモジュールに見立てた場合、どのアドレスにでもダウンロードすることが可能となりそうであるが、この方法ではモジュールから他のモジュールにある関数を呼び出すことができない。これは、ライブラリ関数に、他のライブラリ関数を呼び出すためのスタブ関数がないことが原因である。
【0016】
また、仮に各ライブラリに他のライブラリ関数を呼び出すためのスタブ関数を付けても、あるライブラリが再配置された場合には、そのライブラリを参照している全てのライブラリのスタブ関数を変更する必要がある。しかしながら、フラッシュROMの場合、上書きができないので、スタブ関数を変更するためには、そのライブラリを別の場所に再配置させる必要があり、ライブラリの再配置の無限連鎖に陥ってしまうといった問題が発生する。
【0017】
本発明はこのような問題点を解決すべく創案されたものであって、その目的は、再配置が可能で、かつ他のモジュール内の関数を呼び出すことのできるモジュール群を利用してアドインソフトを実現することで、アドインソフト開発にかかる労力の削減、アドインプログラム自体のサイズの削減、アドインソフトのダウンロードの際のメモリ資源の効率的利用、さらには情報端末装置間でのアドインソフトの転送を容易にすることのできる再配置可能なアドインソフト管理システムを提供することにある。
【0018】
【課題を解決するための手段】
上記課題を解決するため、本発明は、情報端末装置のメモリをデータ領域とアドインソフトのプログラム格納領域とで共有するアドインソフト管理システムであって、アドインソフトを実行するための関数群を1つにまとめたモジュールをダウンロードの最小単位とし、各モジュールは、モジュール内のアドレスが相対アドレスで記述され、各モジュールの先頭にはそのモジュール内で外部から参照可能な関数全てへ分岐できる関数分岐ルーチンが配置されるとともに、予め定められた関数名のアドインソフト実行関数群が配置されており、前記情報端末装置に予め組み込まれたプログラムによって、ダウンロードされた全てのモジュールとその先頭アドレスとを前記メモリ内のデータ領域に登録して管理する手段と、前記情報端末装置に予め組み込まれたプログラムによって、ダウンロードされた全てのアドインソフト名とそのアドインソフトを構成するモジュールのモジュール名とを前記メモリ内のデータ領域に登録して管理する手段とを備えたことを特徴とする。
【0019】
また、本発明は、呼び出したい関数のモジュール名と関数名と引数とを渡すことで、前記モジュールの先頭アドレス管理データを元に、前記モジュールの先頭に配置された関数分岐ルーチンに必要な引数を渡すことができる関数呼び出しルーチンを備え、任意のモジュールから任意の外部モジュールの関数をコールできることを特徴とする。
【0020】
また、本発明は、アドインソフトが単一若しくは複数のモジュールで構成されるとともに、複数のアドインソフトで同一のモジュールが利用可能であることを特徴とする。
【0022】
すなわち、本発明によるアドインソフト管理システムでは、パソコン等からアドインソフトをダウンロードする際、情報端末装置側がアドインソフトのモジュールサイズを元に、ダウンロード先のアドレスを決定して、ダウンロードを行う。そして、そのアドイン情報を、モジュール名と組にしてデータ領域に登録する。また、アドインソフト名と全ての構成モジュールとをデータ領域に登録する。さらに、アドインソフト名とアドインソフト実行関数を含むメインモジュールとの関連付けの情報もデータ領域に登録する。
【0023】
そして、組み込まれたアドインプログラムを実行する際には、初期化やメイン処理等を行う関数があらかじめ決められた関数名で用意されているので、アドインソフト名からそれらの関数が含まれているモジュールの先頭アドレスを読み取り、実行したい処理に固有の関数名を引数にして、先程読み取ったアドレスをコールすることで、アドインソフトを起動できる。
【0024】
また、アドインソフトのあるモジュールから他のモジュールの関数を呼び出す際には、あらかじめ本体側に用意されている関数呼び出しルーチンに、呼び出したい関数のモジュール名と関数名と引数とを渡すことで、関数の呼び出しを可能にする。
【0025】
また、アドインソフトの情報端末装置間での送受信時、及びアドインソフトの削除時には、そのアドインソフトを構成している全モジュール名の情報を元にして送信、削除を行う。
【0026】
さらに、モジュールをモジュールIDで管理し、データを管理するデータIDと識別するためのビットを設けることにより、モジュールIDをデータIDと同様に扱うことができ、それによってデータとモジュールとを無理なく混在させることが可能となる。
【0027】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して説明する。
【0028】
[実施の形態1]
本実施の形態1は、1つのアドインソフトを1つのモジュールで構成し、他のモジュールの関数の呼び出しは行えないように制限を持たせた場合の例である。
【0029】
図1は、アドインソフトのダウンロードの様子を示した説明図、図2は、受信側の情報端末装置でのダウンロード処理を示すフローチャートである。
【0030】
符号1で示すモジュールはアドインソフトのモジュールである。このアドインソフトのモジュール1は、関数分岐ルーチン11と、関数12〜15とで構成されている。さらに関数12〜15は、モジュール外部から呼び出し可能な外部呼び出し用関数12,13と、モジュール内部からしか呼び出されない内部関数14,15とに分けられる。
【0031】
外部呼び出し用関数12,13は、関数分岐ルーチン11からジャンプできるが、内部関数14,15は関数分岐ルーチン11からはジャンプできない。ただし、外部呼び出し用関数12,13は、本実施の形態では、アドインソフトを実行する際の呼び出し口として情報端末装置で指定された固有関数名のアドインソフト実行関数12,13と同一である。
【0032】
関数分岐ルーチン11はモジュールの先頭に配置され、引数で受け取った関数名とモジュール内の全ての外部呼び出し用関数12,13の関数名とを比較し、一致した関数へジャンプするように作成する。この作成は、対応するアドイン作成用のリンカで関数分岐ルーチンを自動生成できるようにしてもよい。なお、モジュール内は全て相対アドレスのみで構成されるようにコンパイルする。
【0033】
また、図1(a)の符号2はモジュールアドレス表である。モジュールアドレス表2には、モジュール名21と先頭アドレス22とサイズ23とが1組として登録される。なお、モジュールアドレス表2自体は、他のデータと同様の方式によりデータ領域に配置される。
【0034】
また、図1(a)の符号3はアドインソフト表である。アドインソフト表3には、アドインソフト名31とモジュール名32とが1対1で登録される。なお、アドインソフト表3も、他のデータと同様の方式によりデータ領域に配置される。
【0035】
図1(a)では、アドインソフトはダウンロードされていない。ダウンロード処理では、まずダウンロードするアドインソフト名を受信する(ステップS11)。次に、ダウンロードするモジュール名を受信し(ステップS12)、モジュールのサイズを受信する(ステップS13)。そして、モジュールサイズ以上の連続した空き領域があるかどうかを調べ(ステップS14)、空き領域があればその空き領域にモジュールをダウンロードする(ステップS16)。一方、空き領域がなければガベージコレクションを行って連続した空き領域をつくり(ステップS15)、その空き領域にモジュールをダウンロードする(ステップS16)。そして、その先頭アドレスとサイズとをモジュールアドレス表2に登録する(ステップS17)。また、アドインソフト名とモジュール名とをアドインソフト表3に登録する(ステップS18)。この結果、メモリ内は図1(b)に示す状態になる。
【0036】
次に、アドインソフトの呼び出し処理について説明する。図3は、アドインソフトの呼び出し処理を示すフローチャートであり、図4(a)はアドインソフトの呼び出し処理の流れを模式的に示す説明図、同図(b)は同図(a)の遷移時におけるスタックの内容を示す説明図である。以下これらを参照して説明する。
【0037】
図4(a)中の符号4はアドインソフト呼び出しルーチンである。このルーチン4は、情報端末装置にあらかじめ組み込まれているプログラムの一部である。アドインソフトを呼び出す際には、まずモジュール名検索処理41にてアドインソフト表3を参照して、呼び出すべきモジュール名を得る(ステップS21)。次に、先頭アドレス取得処理42にてモジュールアドレス表2からモジュールの先頭アドレスを求める(ステップS22)。この時点(すなわち、図4(a)中の(1)、(2)で示す処理時点)では、スタックはアドインソフト呼び出しルーチンの処理の開始時点と同じ状態のままとなっている(図4(b)の(1),(2)参照)。
【0038】
次に、第1引数に実行したい関数名を渡し、第2引数以降に第1引数の関数の引数全てを渡して、モジュールの先頭アドレスを関数コールする(ステップS23)。アドインソフトの制作に当たっては、初期化関数はInit()、メインの処理はMain()というように、あらかじめ定められた関数名と引数とで処理を行うようにプログラムをつくる。従って、アドインソフト呼び出しルーチンは、呼び出すべき関数の関数名、及び引数の数や型は分かっている。
【0039】
関数コールルーチン43では、スタックに引数(末尾の引数から順に積む)と戻りアドレスとを積んでジャンプする。このとき、スタックの状態は図4(b)の(3)のようになる。
【0040】
関数コールがなされると、動的に配置されているアドインソフトモジュール1への処理が移ったことになる。そのため、アドインソフトモジュール1の先頭にある関数分岐ルーチン11では、スタックから戻りアドレスと関数名とを取り出し、戻りアドレスをスタックに積み直す(ステップS24)。なお、この関数分岐ルーチンでは、引数がいくつあるかは分かっていないが問題はない。この後、得られた関数名とアドインソフトモジュール1に登録されている外部呼び出し用関数の関数名とを比較して、該当する関数へと相対ジャンプを行う(ステップS25)。このときのスタックの状態は、図4(b)の(4)の状態となる。スタックポインタ(SP)より上にある戻りアドレスは不要となったゴミデータであり、割り込みなどの関係で違う値になっても構わない。
【0041】
これにより、目的の関数が呼び出され、アドインソフトが起動される(ステップS26)。この関数内では同一モジュール内の関数を相対アドレスで呼び出すことができる。また、あらかじめ情報処理装置に組み込まれている公開関数も絶対アドレスと関数スペックとが公開されているので、呼び出して利用することができる。
【0042】
一連の処理が終わると、スタックに積まれていた戻りアドレスへリターンする(ステップS27)。このときのスタックは、図4(b)の(5)の状態となり、アドインソフト呼び出しルーチン4の処理を開始したときの状態となる。
【0043】
図5は、アドインソフトの削除処理を示すフローチャートである。
アドインソフトを削除する際には、まず削除すべきアドインソフトを構成するアドインソフトモジュール1のモジュール名をアドインソフト表3から得た後(ステップS31)、アドインソフト表3から該当アドインソフトの情報(アドインソフト名とモジュール名)を削除する(ステップS32)。次に、得られたモジュール名から、モジュールアドレス表2を用いてモジュールの先頭アドレスとモジュールのサイズとを求めた後(ステップS33,S34)、モジュールアドレス表2から該当モジュールに関する情報(モジュール名、先頭アドレス、サイズ)を削除する(ステップS35)。そして、最後に、得られたアドレスとサイズとを元に、該当するアドインソフトモジュール1を削除する(ステップS36)。
【0044】
[実施の形態2]
本実施の形態2は、1つのアドインソフトを複数のモジュールで構成できるようにし、あるモジュール内から外部のモジュール内の関数をコールできるようにした場合の例である。
【0045】
図6は、本実施の形態でのアドインソフト表3を示している。実施の形態1でのアドインソフト表3(図1参照)と比較すると、1つのアドインソフト名31に対してモジュール名32が複数登録できるようになっている。この場合、モジュール名32には、アドインソフト実行関数を含むモジュールを先頭に登録する。また、アドインソフト名31を素早く検索するために、次の項へのポインタ33を持っている。
【0046】
図7は、受信側の情報端末装置でのダウンロード処理を示すフローチャートである。ここでは、図2に示すダウンロード処理と同じステップには同じステップ番号を付すこととし、違う処理のステップにのみ異なるステップ番号を付すこととする。
【0047】
ダウンロード処理では、まずダウンロードするアドインソフト名を受信して(ステップS11)、ダウンロードするモジュールの数を受信する(ステップS41)。そして、モジュールの数の分だけ、その後の処理(ステップS12〜ステップS17、及びステップS43)を繰り返す(ステップS42)。すなわち、ダウンロードするモジュール名を受信し(ステップS12)、すでに同じモジュール名が存在するか否かを、モジュールアドレス表2(図1参照)又はアドインソフト表3(図1参照)を用いて確認する(ステップS43)。
【0048】
ステップS43において、同じモジュール名が存在しないと判断(ステップS43でNoと判断)された場合には、次に、ダウンロードするモジュールのサイズを受信する(ステップS13)。そして、モジュールサイズ以上の連続した空き領域があるかどうかを調べ(ステップS14)、空き領域があればその空き領域にモジュールをダウンロードする(ステップS16)。一方、空き領域がなければガベージコレクションを行って連続した空き領域をつくり(ステップS15)、その空き領域にモジュールをダウンロードする(ステップS16)。そして、その先頭アドレスとサイズとをモジュールアドレス表2に登録する(ステップS17)。
【0049】
以上の処理をモジュールの数だけ繰り返したら(ステップS44)、最後に、アドインソフト名とモジュール名とをアドインソフト表3に登録する(ステップS18)。
【0050】
次に、アドインソフトの呼び出し処理について説明する。アドインソフトの呼び出し処理は、図3に示す実施の形態1での呼び出し処理と全く同様である。ただし、ステップS21の処理において、アドインソフト実行関数が含まれているのは、アドインソフト表3(図6参照)の該当アドインソフトに対応するモジュールのうち先頭のモジュール名のモジュールである。
【0051】
次に、あるモジュール内から外部のモジュール内の関数を呼び出す処理について説明する。図8は、外部モジュール内の関数の呼び出し処理を示すフローチャートであり、図9(a)は外部モジュール内の関数の呼び出し処理の流れを模式的に示す説明図、同図(b)は同図(a)の遷移時におけるスタックの内容を示す説明図である。以下これらを参照して説明する。
【0052】
図9(a)中の符号5は関数呼び出しルーチンである。このルーチン5は、情報端末装置にあらかじめ組み込まれているプログラムの一部である。
【0053】
外部モジュールを呼び出す際には、まず第1引数に呼び出し先のモジュール名を渡し、第2引数に呼び出す関数名を渡し、第3引数以降に第2引数の関数の引数全てを渡して、組み込みプログラム中に用意されている関数呼び出しルーチン5をコールする(ステップS51)。このときのスタックは、図9(b)の(1)の状態となる。
【0054】
関数呼び出しルーチン5では、まずスタック操作51を行って、戻りアドレスとモジュール名とを取り出し、戻りアドレスをスタックに積み直す(ステップS52)。なお、この関数呼び出しルーチンでは、引数がいくつあるかは分かっていないが問題はない。この時点で、スタックは図9(b)の(2)の状態となる。
【0055】
次に、先頭アドレスの取得処理52にてモジュールアドレス表2からモジュールの先頭アドレスを求め(ステップS53)、そのアドレスへジャンプする(ステップS54)。この時点で、スタックは図9(b)の(3),(4)の状態となる。つまり、(2)の状態のままである。
【0056】
ジャンプがなされると、動的に配置されているアドインソフトモジュール1への処理が移ったことになる。つまり、呼び出し元であったアドインソフトモジュール1からは、呼び出し先のアドインソフトモジュール1aのアドレスは分かっていなかったが、ジャンプできたことになる。この場合、上記実施の形態1とは異なり、アドインソフトモジュール1a内にある外部呼び出し用関数は、アドインソフト実行用関数12,13以外の関数12a〜15aも存在することになる。
【0057】
アドインソフトモジュール1aの先頭にある関数分岐ルーチン11aでは、スタックから戻りアドレスと関数名とを取り出し、戻りアドレスをスタックに積み直す(ステップS55)。なお、この関数分岐ルーチンでは、引数がいくつあるかは分かっていないが問題はない。この後、得られた関数名とアドインソフトモジュール1aに登録されている外部呼び出し用関数12a〜15aの関数名とを比較して、該当する関数へと相対ジャンプを行う(ステップS56)。このときのスタックの状態は、図9(b)の(5)の状態となる。スタックポインタ(SP)より上にある戻りアドレスは不要となったゴミデータであり、割り込みなどの関係で違う値になっても構わない。
【0058】
これにより、目的の関数が呼び出される(ステップS57)。この関数内では同一モジュール内の関数を相対アドレスで呼び出すことができる。また、あらかじめ情報処理装置に組み込まれている公開関数も絶対アドレスと関数スペックとが公開されているので、呼び出して利用することができる。もちろん、さらに別の外部モジュールの関数を呼び出すこともできる。
【0059】
一連の処理が終わると、スタックに積まれていた戻りアドレスへリターンする(ステップS58)。このときのスタックは、図9(b)の(6)の状態となり、アドインソフト呼び出しルーチン4の処理を開始したときの状態となる。
【0060】
図10は、アドインソフトの削除処理を示すフローチャートである。
アドインソフトを削除する際には、まず削除すべきアドインソフトを構成するアドインソフトモジュールのモジュール名を全て調べ、バッファにコピーする(ステップS61)。また、コピーしたモジュール名の数を求める(ステップS62)。そして、アドインソフト表3から該当アドインソフトの情報(アドインソフト名とモジュール名)を削除する(ステップS63)。
【0061】
この後、モジュールの数の分だけ、その後の処理(ステップS65〜ステップS70)を繰り返す(ステップS64)。すなわち、バッファから削除するモジュール名を取り出し(ステップS65)、すでに同じモジュール名が存在するか否かを、モジュールアドレス表2又はアドインソフト表3を用いて確認する(ステップS66)。
【0062】
ステップS66において、同じモジュール名が存在する場合(ステップS66でYesと判断された場合)には、このモジュールは削除せずに次のループへと移る。
【0063】
一方、ステップS66において、同じモジュール名が存在しない場合(ステップS66でNoと判断された場合)には、得られたモジュール名から、モジュールアドレス表2を用いてモジュールの先頭アドレスとモジュールのサイズとを求めた後(ステップS67,S68)、モジュールアドレス表3から該当モジュールに関する情報(モジュール名、先頭アドレス、サイズ)を削除する(ステップS69)。そして、最後に、得られたアドレスとサイズとを元に、該当するアドインソフトモジュールを削除する(ステップS70)。
【0064】
以上の処理を、モジュールの数だけ繰り返して終了する(ステップS71)。
[実施の形態3]
本実施の形態3は、フラッシュROMなどのページ単位でしかリフレッシュできないメモリ媒体の例である。
【0065】
フラッシュROMは、ビットを1から0に落とすことは任意のビット単位で可能であるが、ビットを0から1にすることはページ単位でのみ可能となっている。従って、未使用のページは全バイトFFhで埋まっており、ビット落としで有効なデータを書き込み、不要となったデータは00hを上書きすることで削除されていると見なすことができる。また、ページ内の全データが不要となったら、ページをリフレッシュすることで、全バイトFFhの状態に戻る。
【0066】
図11は、モジュールアドレス表2bを示している。実施の形態1,2と異なり、アドレス情報を絶対アドレスで管理するのではなく、モジュールごとに一意に定めるモジュールID24にて管理する。モジュールIDのMSBは1とする。また、モジュールのサイズの情報は特に必要はない。
【0067】
図12は、フラッシュROMのページの構造とガベージコレクション後の状態とを示す説明図である。
【0068】
ページ6は、ページヘッダ領域61とセクタ管理領域62とセクタ領域63とに分かれている。使用中のページ6には論理ページ番号を1から順に割り当てていく。また、ページヘッダ領域61には、論理ページ番号を書き込む領域を用意し、未使用ページならFFh、使用中のページなら論理ページ番号、削除済みのページなら00hをそれぞれ書き込むことで、ページを管理する。
【0069】
セクタ領域63は適当な数(631,632,・・・)に分割する。セクタ管理領域62も同じ数(621,622,・・・)に分割する。ここでは、分割した要素をそれぞれセクタ、セクタ管理番号と呼ぶことにする。
【0070】
セクタ631,632,・・・はデータ等を実際に格納する領域である。セクタ管理番号621,622,・・・は、対応するセクタを識別するためのものである。セクタ管理番号「0000h」(622)は、対応するセクタ632が削除済みセクタであることを示している。ただし、削除済みセクタは全て「00h」で埋まっているとは限らない。
【0071】
セクタ管理番号「FFFFh」(624)は、対応するセクタ634が空きセクタであることを示している。セクタ管理番号は、全データが一意に定まるデータIDと一致する。従って、同じデータIDのセクタが連続している場合には、1つのデータが複数セクタにまたがっていることを示している。
【0072】
セクタ管理番号「8001h〜8FFFh」(623)は、対応するセクタ633がアドインソフトセクタであることを示している。セクタ管理番号は、モジュールIDである。同じモジュールIDのセクタが連続している場合は、セクタ管理番号「8000h」は使わない。
【0073】
データIDから該当データの先頭セクタのアドレスを求める処理はどのような処理であっても構わない。この処理は、本発明に直接関係する部分ではないので、詳細な説明は省略するが、一例として情報端末装置の起動時に全ページのセクタ管理領域を調べ、RAM上に対応テーブルを作るなどの方法がある。
【0074】
モジュールIDのMSBを0にした値は、すでに使用中のデータIDと同じ値にならないようにすると、この値をデータIDと見なすことで、上記の処理により該当モジュールの先頭セクタのアドレスを求めることができる。
【0075】
このように構成すると、モジュールの先頭アドレスを求める処理を、モジュールアドレス表からモジュールIDを求め、求めたモジュールIDからモジュールの先頭アドレスを求める処理に置き換えることができる。また、モジュールアドレス表からサイズを求める処理を、セクタ管理番号の同じ番号の並ぶ数から計算する処理に置き換えることができる。つまり、モジュールの本体を削除するのではなく、セクタ管理番号を「0000h」に書き換えることで、前記実施の形態1,2で説明した各処理が、同様の手順で行えることになる。
【0076】
ところで、このフラッシュROMのシステムにおいては、削除済みセクタを空きセクタに戻さないと、セクタの再利用ができないので、必ずガベージコレクションを行う必要がある。
【0077】
図13は、このガベージコレクション処理を示すフローチャートである。
まず、転送元としてメモリ整理を行うページを探す(ステップS81)。次に、転送先になる未使用ページを探し(ステップS82)、未使用ページがあれば、その後の処理(ステップS85〜ステップS87)を、セクタの数だけ繰り返す(ステップS84)。一方、未使用ページがなければ、削除済みページをリフレッシュして、未使用ページとした後(ステップS83)、その後の処理(ステップS85〜ステップS87)を、セクタの数だけ繰り返す(ステップS84)。
【0078】
すなわち、転送元のセクタ管理番号が「0000h」又は「FFFFh」かどうかを調べる(ステップS85)。ステップS85において、転送元のセクタ管理番号が「0000h」又は「FFFFh」であれば、繰り返し処理を終了して(ステップS88)、次のループへと移る。一方、ステップS85において、転送元のセクタ管理番号が「0000h」又は「FFFFh」でなければ、転送元のセクタの内容を転送先のセクタへコピーする(ステップS86)。また、転送元のセクタ管理番号を転送先へコピーする(ステップS87)。ただし、転送先のセクタは端から詰めて使用していく。また、データIDから、対応する先頭セクタのアドレスを求めるためのテーブル等を必要に応じて更新する。
【0079】
以上の処理を、セクタの数だけ繰り返した後(ステップS88)、最後に、転送元の論理ページ番号を転送先にコピーし(ステップS89)、転送元のページヘッダを削除済みの「00h」にする(ステップS90)。
【0080】
このような一連の処理により、データとアドインソフトの違いを意識することなく、データのみを扱っていたときと同様の処理でガベージコレクションを行うことができる。
【0081】
最後に、アドインソフトの情報端末装置間での転送について説明する。
図14は、アドインソフトの転送処理を示すフローチャートである。
【0082】
受信側の情報端末装置では、通常のダウンロード処理と同じ処理を行う。すなわち、送信先は、まずアドインソフト名を送信し(ステップS91)、次にアドインソフトを構成するモジュールの数を求めて送信した後(ステップS92)、その後の処理(ステップS94〜ステップS96)を、モジュールの数だけ繰り返す(ステップS93)。
【0083】
すなわち、モジュール名を送信し(ステップS94)、次にモジュールサイズを求めて送信する(ステップS95)。そして、モジュールの先頭アドレスを求めて、モジュールの内容を送信する(ステップS96)。つまり、先頭アドレスは送信しない。以上の処理をモジュールの数だけ繰り返して終了する(ステップS97)。
【0084】
【発明の効果】
本発明の再配置可能なアドインソフト管理システムによれば、アドインソフトを開発する際に、1つのアドインソフトを複数のモジュールに分けて作成でき、また1つのモジュールを複数のアドインソフトで共用できるので、アドインソフトの開発に自由度を持たせることができ、開発労力を軽減することができる。また、アドインソフト間で処理の重複を減らすことができるので、プログラムサイズを小さくすることができる。また、アドインソフトが再配置可能であるため、アドインソフトを何度も入れ替えてもメモリの利用状況に隙間ができず、効率の良いメモリ使用が可能となる。また、情報端末装置間でメモリの使用状況の違いに関係なく、自由にアドインソフトを転送できるので、使用方法に制限の少ないアドインソフト管理システムを提供できる。また、ダウンロードできるアドインソフトの数やサイズ等の制約も少なく、データ領域を一杯まで利用することができる。また、フラッシュROMなどの、任意のデータの上書きができないメモリ媒体においても利用可能となり、情報端末装置の構成に自由度を持たせることができる。
【図面の簡単な説明】
【図1】本発明のアドインソフト管理システムにおいて、アドインソフトのダウンロードの様子を示した説明図である。
【図2】受信側の情報端末装置でのダウンロード処理を示すフローチャートである。
【図3】アドインソフトの呼び出し処理を示すフローチャートである。
【図4】(a)はアドインソフトの呼び出し処理の流れを模式的に示す説明図、(b)は(a)の遷移時におけるスタックの内容を示す説明図である。
【図5】アドインソフトの削除処理を示すフローチャートである。
【図6】実施の形態2でのアドインソフト表を示す説明図である。
【図7】受信側の情報端末装置でのダウンロード処理を示すフローチャートである。
【図8】外部モジュール内の関数の呼び出し処理を示すフローチャートである。
【図9】(a)は外部モジュール内の関数の呼び出し処理の流れを模式的に示す説明図、(b)は(a)の遷移時におけるスタックの内容を示す説明図である。
【図10】アドインソフトの削除処理を示すフローチャートである。
【図11】モジュールアドレス表を示す説明図である。
【図12】フラッシュROMのページの構造とガベージコレクション後の状態とを示す説明図である。
【図13】ガベージコレクション処理を示すフローチャートである。
【図14】アドインソフトの転送処理を示すフローチャートである。
【図15】従来の共有ライブラリ管理機構において、プログラムを動的に配置する処理を示した説明図である。
【図16】従来のアドインソフト管理方式でのフラッシュROMの一部を示した説明図である。
【符号の説明】
1,1a アドインソフトモジュール
11,11a 関数分岐ルーチン
12,13 外部呼び出し用関数(アドインソフト実行関数)
12a〜15a 外部呼び出し用関数
14,15 内部関数
2,2a,2b モジュールアドレス表
21 モジュール名
22 先頭アドレス
23 サイズ
3 アドインソフト表
31 アドインソフト名
32 モジュール名
33 次の項へのポインタ
4 アドインソフト呼び出しルーチン
41 モジュール名検索処理
42 先頭アドレス取得処理
43 関数コール処理
5 関数呼び出しルーチン
51 スタック操作処理
52 先頭アドレス取得処理
53 ジャンプ処理
6 ページ
62 セクタ管理領域
621 データセクタを示すセクタ管理番号
622 削除済みセクタを示すセクタ管理番号
623 アドインソフトセクタを示すセクタ管理番号
624 空きセクタを示すセクタ管理番号
63 セクタ領域
631 データセクタ
632 削除済みセクタ
633 アドインソフトセクタ
634 空きセクタ
Claims (3)
- 情報端末装置のメモリをデータ領域とアドインソフトのプログラム格納領域とで共有するアドインソフト管理システムであって、
アドインソフトを実行するための関数群を1つにまとめたモジュールをダウンロードの最小単位とし、各モジュールは、モジュール内のアドレスが相対アドレスで記述され、各モジュールの先頭にはそのモジュール内で外部から参照可能な関数全てへ分岐できる関数分岐ルーチンが配置されるとともに、予め定められた関数名のアドインソフト実行関数群が配置されており、
前記情報端末装置に予め組み込まれたプログラムによって、ダウンロードされた全てのモジュールとその先頭アドレスとを前記メモリ内のデータ領域に登録して管理する手段と、前記情報端末装置に予め組み込まれたプログラムによって、ダウンロードされた全てのアドインソフト名とそのアドインソフトを構成するモジュールのモジュール名とを前記メモリ内のデータ領域に登録して管理する手段とを備えたことを特徴とする再配置可能なアドインソフト管理システム。 - 呼び出したい関数のモジュール名と関数名と引数とを渡すことで、前記モジュールの先頭アドレス管理データを元に、前記モジュールの先頭に配置された関数分岐ルーチンに必要な引数を渡すことができる関数呼び出しルーチンを備え、任意のモジュールから任意の外部モジュールの関数をコールできる請求項1に記載のアドインソフト管理システム。
- 前記アドインソフトが単一若しくは複数のモジュールで構成されるとともに、複数のアドインソフトで同一のモジュールが利用可能である請求項1又は2に記載のアドインソフト管理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13282199A JP3670162B2 (ja) | 1999-05-13 | 1999-05-13 | 再配置可能なアドインソフト管理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13282199A JP3670162B2 (ja) | 1999-05-13 | 1999-05-13 | 再配置可能なアドインソフト管理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000322268A JP2000322268A (ja) | 2000-11-24 |
JP3670162B2 true JP3670162B2 (ja) | 2005-07-13 |
Family
ID=15090360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13282199A Expired - Fee Related JP3670162B2 (ja) | 1999-05-13 | 1999-05-13 | 再配置可能なアドインソフト管理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3670162B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100632403B1 (ko) | 2004-12-02 | 2006-10-11 | 한국전자통신연구원 | 코드 모듈 간의 상관 관계 정보에 따른 소프트웨어스트리밍 방법 및 그에 따른 코드 모듈 간의 상관 관계정보를 이용한 캐싱 방법 |
JP5187944B2 (ja) * | 2008-03-05 | 2013-04-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ使用可能コードを実行する装置及び方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06332675A (ja) * | 1993-05-20 | 1994-12-02 | Mitsubishi Electric Corp | 共有ライブラリ管理機構 |
JPH07200303A (ja) * | 1993-12-28 | 1995-08-04 | Pfu Ltd | プログラムローディング方式 |
JPH10171662A (ja) * | 1996-12-05 | 1998-06-26 | Hitachi Ltd | アプリケーション実行方法 |
JPH10171659A (ja) * | 1996-12-10 | 1998-06-26 | Matsushita Electric Ind Co Ltd | ダウンロード方法および装置 |
JP3166676B2 (ja) * | 1997-08-29 | 2001-05-14 | 日本電気株式会社 | ダウンロードによるファイル断片化防止装置及び方法 |
JPH11265278A (ja) * | 1998-03-18 | 1999-09-28 | Mitsubishi Electric Corp | オペレーティングシステムの動的機能管理方法 |
-
1999
- 1999-05-13 JP JP13282199A patent/JP3670162B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000322268A (ja) | 2000-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7644406B2 (en) | Update system capable of updating software across multiple FLASH chips | |
US7689983B2 (en) | Information processing method and apparatus and recording medium | |
CN1781075B (zh) | 电子文件更新期间的设备存储器管理 | |
CN100498703C (zh) | 以存储技术抽象方式在文件内创建文件系统 | |
US5717886A (en) | Semiconductor disk device and memory management method | |
JP3524428B2 (ja) | 記憶装置、記憶システム、メモリ管理方法及び記録媒体 | |
US7647355B2 (en) | Method and apparatus for increasing efficiency of data storage in a file system | |
US5303392A (en) | Accessing current symbol definitions in a dynamically configurable operating system | |
US5537596A (en) | Method and apparatus for overriding resource maps in a computer system | |
US20030065876A1 (en) | Flash management system using only sequential Write | |
KR20050065431A (ko) | 정보 처리 장치 및 이를 위한 rom 이미지 생성 장치 | |
JP2005182784A (ja) | インストールするのに有効な依存ソフトウェア更新の最大の群の判定 | |
EP0902364A1 (en) | Method for loading a program | |
JP2003529149A (ja) | ガーベジコレクション | |
EP1381966B1 (en) | A method and apparatus for reducing ram size while maintaining fast data access | |
US9003354B2 (en) | Optimizing memory usage and system performance in a file system requiring entire blocks to be erased for rewriting data | |
JP3670162B2 (ja) | 再配置可能なアドインソフト管理システム | |
US7681009B2 (en) | Dynamically updateable and moveable memory zones | |
CN110704051B (zh) | 一种Unity的界面绑定数据方法 | |
KR101140522B1 (ko) | 객체 관리 시스템 및 방법 | |
US20050149270A1 (en) | Componentware creating method, apparatus and recording medium | |
JP2017073036A (ja) | 情報処理装置およびその制御方法 | |
EP1248194A1 (en) | Method for facilitating data sharing between application programs and accesses to peripheral apparatuses with application programs by using shared addresses | |
KR101106568B1 (ko) | 모바일기기용 파일 정렬 시스템 및 그 방법 | |
KR20000003162A (ko) | 효율적인 플래시 메모리 운용 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050316 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050412 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050413 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080422 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110422 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120422 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120422 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130422 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |