IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 合肥傑発科技有限公司の特許一覧

特開2022-184735プログラム起動方法及び機器、記憶媒体
<>
  • 特開-プログラム起動方法及び機器、記憶媒体 図1
  • 特開-プログラム起動方法及び機器、記憶媒体 図2
  • 特開-プログラム起動方法及び機器、記憶媒体 図3
  • 特開-プログラム起動方法及び機器、記憶媒体 図4
  • 特開-プログラム起動方法及び機器、記憶媒体 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022184735
(43)【公開日】2022-12-13
(54)【発明の名称】プログラム起動方法及び機器、記憶媒体
(51)【国際特許分類】
   G06F 9/445 20180101AFI20221206BHJP
【FI】
G06F9/445
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022060054
(22)【出願日】2022-03-31
(31)【優先権主張番号】202110603413.9
(32)【優先日】2021-05-31
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】316007160
【氏名又は名称】合肥傑発科技有限公司
(74)【代理人】
【識別番号】110002262
【氏名又は名称】TRY国際弁理士法人
(72)【発明者】
【氏名】李 正鵬
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE22
5B376AE63
(57)【要約】      (修正有)
【課題】プログラムの起動効率を向上させるプログラム起動方法、機器及び記憶媒体を提供する。
【解決手段】プログラム起動方法は、プログラムに対する起動要請を検出するステップを含む。プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、少なくとも一部の外部メモリに格納されている起動コードには、複数のコードセグメントが含まれている。方法はさらに、外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行するステップを含む。毎回異なるコードセグメントがロードされ、各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下である。
【選択図】図1
【特許請求の範囲】
【請求項1】
プログラム起動方法であって、
プログラムに対する起動要請を検出するステップであって、前記プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、前記少なくとも一部の、外部メモリに格納されている起動コードには、複数のコードセグメントが含まれているステップと、
前記外部メモリ内の前記コードセグメントを内部メモリにロードして前記コードセグメントを動作させるという操作を複数回実行するステップであって、毎回、異なる前記コードセグメントがロードされ、各々の前記コードセグメントのサイズは、前記内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下であるステップとを含む、ことを特徴とする方法。
【請求項2】
前記起動コードには、共通コード及び非共通コードが含まれ、前記共通コードは、前記プログラムを起動するたびに動作させる必要のあるコードであり、
前記共通コードは、前記外部メモリの共通コードエリア、又は、前記内部メモリのコード常駐エリアに格納され、前記非共通コードは、前記外部メモリの非共通コードエリアにセグメント分けして格納され、
上述の前記外部メモリ内の前記コードセグメントを内部メモリにロードして前記コードセグメントを動作させるという操作を複数回実行するステップは、
前記外部メモリ内の少なくとも1セグメントの非共通コードを内部メモリのコード更新エリアにロードして前記コード更新エリアの非共通コードを動作させるという操作を少なくとも1回実行することを含む、ことを特徴とする請求項1に記載の方法。
【請求項3】
共通コードを動作させるステップ、即ち、
システム初期化を行い、
アドレスマッピングテーブルを作成して、前記アドレスマッピングテーブルを前記内部メモリの第2データエリアに格納するステップであって、前記アドレスマッピングテーブルは、前記非共通コードの、前記コード更新エリアでの記憶アドレスと前記外部メモリの非共通コードエリアでの記憶アドレスとの間のマッピング、及び/又は、前記プログラムの起動に使用する必要のあるデータの、前記内部メモリの第1データエリアでの記憶アドレスと前記外部メモリ内の第3データエリアでの記憶アドレスとの間のマッピングを格納するためのものであるステップを更に含む、ことを特徴とする請求項2に記載の方法。
【請求項4】
上述の前記外部メモリ内の少なくとも1セグメントの非共通コードを内部メモリのコード更新エリアにロードして前記コード更新エリアの非共通コードを動作させるという操作は、少なくとも、
前記非共通コードの動作異常が発生した場合、前記コード常駐エリア内の第一割り込み処理プログラムを動作させるステップであって、これにより、もし動作すべき非共通コードが前記コード更新エリアに記憶されていないと検出された場合に前記外部メモリ内の前記動作すべき非共通コードを前記コード更新エリアにロードして前記コード更新エリアの非共通コードを動作させることが実行されるようにするステップを含む、ことを特徴とする請求項2に記載の方法。
【請求項5】
データ異常が発生した場合、前記コード常駐エリア内の第二割り込み処理プログラムを動作させるステップであって、これにより、もしアクセスすべきデータが前記内部メモリの第1データエリアに記憶されていないと検出された場合に前記外部メモリ内の前記アクセスすべきデータを前記第1データエリアにロードすることが実行されるようにし、前記データ異常には、内部メモリの中に前記アクセスすべきデータを見つけられないことが含まれるステップを更に含む、ことを特徴とする請求項2に記載の方法。
【請求項6】
上述の前記外部メモリ内の前記コードセグメントを内部メモリにロードして前記コードセグメントを動作させるという操作を複数回実行するステップは、
前記内部メモリの記憶空間が、ロードすべき前記コードセグメントに必要な記憶空間よりも小さいかを判断するステップと、
そうであれば、
前記内部メモリ内の少なくとも一部動作済みのコードセグメント及び/又は所定期間内に動作させることのないコードセグメントを前記内部メモリから除去して、前記ロードすべきコードセグメントが前記内部メモリにロードされるようにするステップ、及び、
前記内部メモリ内の少なくとも一部動作済みの一部コードセグメント及び/又は所定期間内に動作させることのないコードセグメントを外部メモリに移動させて記憶して、前記ロードすべきコードセグメントが前記内部メモリにロードされるようにするステップのうち、何れか1つを実行するステップと、を含む、ことを特徴とする請求項1~5の何れか一項に記載の方法。
【請求項7】
前記プログラムの起動に必要なデータは、少なくとも一部が外部メモリに格納されており、前記少なくとも一部の、外部メモリに格納されているデータには、複数のデータセグメントが含まれ、前記方法は、
前記外部メモリ内の前記データセグメントを内部メモリにロードして前記データセグメントにアクセスするという操作を複数回実行するステップであって、毎回、異なる前記データセグメントがロードされ、各々の前記データセグメントのサイズは、前記内部メモリ内の前記データセグメントにアクセス可能な領域のサイズ以下であるステップを更に含む、ことを特徴とする請求項1に記載の方法。
【請求項8】
上述の前記外部メモリ内の前記データセグメントを内部メモリにロードして前記データセグメントにアクセスするという操作を複数回実行するステップは、
アクセスすべきデータの大きさが所定閾値を超えた場合、
第一所定条件を満たす他のデータを内部メモリの第1データエリアから除去して、前記アクセスすべきデータがロードされるようにするステップ、及び、
第二所定条件を満たす他のデータを外部メモリに移動させて記憶して、前記アクセスすべきデータがロードされるようにするステップのうち、少なくとも1つを実行するステップを含み、
前記アクセスすべきデータは、前記プログラムの起動に使用する必要のあるデータのうち、現在使用する必要のあるデータであり、前記他のデータは、前記プログラムの起動に使用する必要のあるデータのうち、前記アクセスすべきデータ以外のデータである、ことを特徴とする請求項7に記載の方法。
【請求項9】
上述の前記外部メモリ内の前記コードセグメントを内部メモリにロードして前記コードセグメントを動作させるという操作を複数回実行するステップ、又は、前記外部メモリ内の前記データセグメントを内部メモリにロードして前記データセグメントにアクセスするという操作を複数回実行するステップは、
ロードすべきコードセグメント又はアクセスすべきデータセグメントが暗号化されているかを検出するステップと、
そうであれば、対応する復号化コードを使用して、前記アクセスすべきコードセグメント又はアクセスすべきデータセグメントを復号化するステップと、
を含むことを特徴とする請求項1に記載の方法。
【請求項10】
メモリ及びプロセッサを含み、前記プロセッサは、前記メモリに記憶されているプログラム命令を実行して、請求項1~9の何れか一項に記載の方法が実現されるようにするためのものである、ことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、コンピュータ技術の分野に関し、特に、プログラム起動方法及び機器、記憶媒体に関する。
【背景技術】
【0002】
一般に、機器内の様々なプログラムの起動は、機器の内部メモリで行われる。例えば、組込み機器では、通常、プログラムを起動させるためにスタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)を利用する必要がある。しかし、従来の態様としては、何れも、プログラムの起動に必要となる全部のコードを一度に外部メモリから内部メモリに直接ロードするものであり、このような態様は、起動する必要のあるプログラムが小さい場合に適するが、起動する必要のあるプログラムが大きくなると、プログラムの起動速度が遅すぎてプログラムの応答が遅すぎてしまう可能性が高い。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本願は、少なくともプログラム起動方法及び機器、記憶媒体を提供する。
【課題を解決するための手段】
【0004】
本願の第一局面において、プログラムに対する起動要請を検出するステップであって、プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、少なくとも一部の、外部メモリに格納されている起動コードには、複数のコードセグメントが含まれているステップと、外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行するステップであって、毎回、異なるコードセグメントがロードされ、各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下であるステップと、を含む、プログラム起動方法を提供している。
【0005】
本願の第二局面において、プログラムに対する起動要請を検出するための要請検出モジュールであって、プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、少なくとも一部の、外部メモリに格納されている起動コードには、複数のコードセグメントが含まれている要請検出モジュールと、外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行するための起動実行モジュールであって、毎回、異なるコードセグメントがロードされ、各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下である起動実行モジュールと、を含む、プログラム起動装置を提供している。
【0006】
本願の第三局面において、メモリ及びプロセッサを含み、プロセッサは、メモリに記憶されているプログラム命令を実行して、上記プログラム起動方法が実現されるようにするものである、電子機器を提供している。
【0007】
本願の第四局面において、プログラム命令を記憶しており、プログラム命令がプロセッサによって実行されると、上記プログラム起動方法が実現される、コンピュータ読取可能な記憶媒体を提供している。
【発明の効果】
【0008】
上記態様は、外部メモリにセグメント分けして記憶されている起動コードが内部メモリにロードして実行されるようにすることで、全部の起動コードを一度に内部メモリにロードする必要が無くなり、プログラムの起動効率を向上させることができる。例えば、大きなプログラムの場合、プログラムの起動時に、当該プログラムの起動に必要となる全部の起動コードを一度にロードする必要があると、起動速度が遅すぎてプログラムの応答が遅すぎてしまう恐れがある。
【0009】
理解されたいのは、以上の一般的な説明及び以下の詳細な説明は、あくまでも例示的及び解釈的なものに過ぎず、本願を制限するものではない。
【図面の簡単な説明】
【0010】
ここでの図面は、本明細書に組み込まれてその一部を構成し、これらの図面は、本願に従う実施例を示しており、明細書とともに本願の技術態様を説明するために使用される。
図1図1は、本願に係るプログラム起動方法の一実施例の第一フロー模式図である。
図2図2は、本願に係るプログラム起動方法の一実施例における内部メモリと外部メモリとの間のやり取りを示す模式図である。
図3図3は、本願に係るプログラム起動装置の一実施例の構造模式図である。
図4図4は、本願に係る電子機器の一実施例の構造模式図である。
図5図5は、本願に係るコンピュータ読取可能な記憶媒体の一実施例の構造模式図である。
【発明を実施するための形態】
【0011】
以下、添付図面を参照しながら、本願の実施例に係る態様を詳しく説明する。
【0012】
以下の説明では、本願に対する完全なる理解をもたらすよう、例えば特定のシステム構造、インターフェースやテクノロジなどについての詳細が、限定するためではなく例示するために提供されている。
【0013】
本明細書における用語「及び/又は」とは、関連するオブジェクトの関連性を記述するものに過ぎず、3種類の関係が存在し得ることを表す。例えば、A及び/又はBとは、Aのみが存在する、A及びBの双方が存在する、Bのみが存在するといった3つのケースを表し得る。そして、本明細書における文字「/」とは、通常、その前後における関連するオブジェクト間の「又は」という関係を表す。また、本明細書における「複数」とは、2つ又は2つよりも多いことを表す。さらに、本明細書における用語「少なくとも1つ」とは、複数のうちの何れか1つ、又は、複数のうちの少なくとも2つによる任意の組み合わせを表し、例えば、A、B、Cのうちの少なくとも1つを含むとは、A、B、Cからなる集合から選択された何れか1つ又は複数の元素を含むことを表し得る。
【0014】
図1を参照して、図1は、本願に係るプログラム起動方法の一実施例の第一フロー模式図である。当該方法は、具体的に、以下のステップS11~S12を含み得る。
ステップS11:プログラムに対する起動要請を検出し、プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、少なくとも一部の、外部メモリに格納されている起動コードには、複数のコードセグメントが含まれている。
【0015】
少なくとも一部とは、一部の起動コードであってもよいし、全部の起動コードであってもよい。選択的に、外部メモリに記憶される具体的な量については、プログラム及び内部メモリの大きさに応じて決定可能である。
【0016】
本開示の実施例による方法は、組込み機器のプログラム起動、例えば消費電力、コストへの要求が求められるMCU(Microcontroller Unit、マイクロ制御ユニット)やIVI(In-Vehicle Infotainment、車載統合情報処理システム)の起動に適用可能であるが、勿論、これは一例に過ぎず、本開示の実施例による方法は、大きなプログラムの起動をサポートするために他の如何なる機器に適用可能である。
【0017】
起動命令を受け取ると、プログラムの起動要請を検出したと確認される。プログラムの起動コードは、外部メモリにセグメント分けして格納されてもよい。ここで、外部メモリは、不揮発性メモリ(例えばNOR Flash)、SDカード、eMMC(Embedded Multi Media Card)メモリ、オンラインストレージ等であってもよい。
【0018】
ステップS12:外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行し、毎回、異なるコードセグメントがロードされ、各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下である。
【0019】
外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行するとは、1回に1つのコードセグメントをロードしてもよいし、1回に複数のコードセグメントをロードしてもよい。具体的に、1回に1つのコードセグメントをロードし、当該コードセグメントを実行した後に次のコードセグメントをロードするようにして、全部のコードセグメントのロードが完了するまでそれを繰り返してもよいし、1回に複数のコードセグメントをロードし、ロードされた複数のコードセグメントを全部又は一部実行した後にさらなる複数のコードセグメントをロードするようにして、全部のコードセグメントのロードが完了するまでそれを繰り返してもよい。ここでのロード操作とは、コピー操作であってもよい。毎回に外部メモリから内部メモリにロードされるコードセグメントの数は、主に内部メモリの記憶空間に依存する。内部メモリの空間が、一度に複数のコードセグメントのロードをサポートできれば、効率を向上させるために、一度に複数のコードセグメントをロードしてもよいが、内部メモリの空間が足りなければ、1回に1つだけのコードセグメントをロードすることになる。
【0020】
各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下とされることで、内部メモリは、正常にコードセグメントをロードでき、ロードエラーが発生してプログラムの起動が失敗してしまう確率を低減される。
【0021】
上記態様は、外部メモリにセグメント分けして記憶されている起動コードが内部メモリにロードして実行されるようにすることで、全部の起動コードを一度に内部メモリにロードする必要が無くなり、プログラムの起動効率を向上させることができる。例えば、大きなプログラムの場合、プログラムの起動時に、当該プログラムの起動に必要となる全部の起動コードを一度にロードする必要があると、起動速度が遅すぎ、即ちプログラムの応答が遅すぎてしまう恐れがある。
【0022】
本開示のいくつかの実施例では、外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行する中に、内部メモリの記憶空間が、ロードすべきコードセグメントに必要な記憶空間よりも小さいかを判断する。判断結果が「はい」の場合、次の2つのステップのうち、何れか1つが実行される。1つ目は、内部メモリ内の少なくとも一部動作済みのコードセグメント及び/又は所定期間内に動作させることのないコードセグメントを内部メモリから除去して、ロードすべきコードセグメントが内部メモリにロードされるようにするステップである。ここでの除去とは、それを内部メモリから削除してもよい。削除の方式としては、ロードすべきコードセグメントでそれを上書きすることが含まれる。この方式によれば、ロードすべきコードセグメントを記憶するための空間を空けることができる。2つ目は、内部メモリ内の動作済みの一部コードセグメント及び/又は所定期間内に動作させることのないコードセグメントを外部メモリに移動させて記憶するステップである。ここでの所定期間は、プログラムの起動時間に応じて設定可能である。該一部コードセグメントを外部メモリに移動させて記憶するとは、それと同じになるコードセグメントを上書きしてもよく、又は、外部メモリ内の何れのコードセグメントも上書きせずに、対応する空き記憶空間にそれを直接記憶してもよい。ここでの対応する記憶空間とは、外部メモリの非共通コードエリア、又は当該コードセグメントを記憶可能な他の任意の領域であってもよいが、ここで特に限定しない。選択的に、動作済みの一部コードセグメントとは、動作済みの全てのコードセグメント又は少なくとも一部のコードセグメントであってもよい。いくつかの具体的な応用シーンでは、コードセグメントが少なくとも1回ロードされる前に、もし内部メモリの記憶空間が、ロードすべきコードセグメントに必要な記憶空間よりも小さければ、内部メモリ内の少なくとも一部の動作済みコードを削除する。例えば、外部メモリ内のコードセグメントを内部メモリにロードして動作させることを1回実行した後、プログラムの起動要件に従って、外部メモリ内の別のコードセグメントをロードして動作させる必要があるのに対して、内部記憶空間には、既に動作済みのコードセグメントが記憶されているため、プログラムの起動に現在動作させる必要のあるコードを格納するための空き空間がない場合は、内部メモリ内の既に動作済みの一部のコードを内部メモリから削除して、次に動作させる必要のあるコードを格納する空間が空けられるようにすることは、必要とされる。具体的に、動作済みの少なくとも一部コードを削除する方式としては、1つのコードセグメントを動作させた直後にそれを削除してもよく、又は、今回内部メモリにロードされた全部のコードセグメントを動作させた後に、削除する必要のある一部のコードを纏めて削除したり、一部の動作済みコードセグメントを新しいコードセグメントで上書きしたりしてその一部の動作済みコードセグメントの削除が実現されるようにする等であってもよい。したがって、動作済みの少なくとも一部コードを削除する方式については、ここで特に限定しない。
【0023】
上記態様は、内部記憶空間が足りない場合、内部メモリ内の動作済みの一部コードを削除した後、外部メモリにセグメント分けして記憶されている起動コードを内部メモリにロードして実行することで、大きなプログラムの正常起動がサポートされるようにしており、このような方式によれば、大きなプログラムの起動に必要となる全部のコードを一度に内部メモリにロードする必要が無くなり、小さなサイズの内部メモリであっても、内部メモリの数を増加させたり、他の方式で容量を拡張したりすることなく、大きなプログラムの正常起動がサポートされるようになる。
【0024】
ここで、内部メモリは、コード常駐エリア、第1データエリア、第2データエリア及びコード更新エリアを含み、外部メモリは、共通コードエリア、第3データエリア及び非共通コードエリアを含む。コード常駐エリアには、外部メモリのアドレス検索及びロードのためのコードと、暗号化されたコードセグメントを復号化するための復号コードと、外部メモリ内のデータのアドレス検索及びロードのためのコードと、割り込み処理プログラムとが記憶されている。第2データエリアは、セグメント分けアドレスマッピングテーブルと、暗号化されたデータを復号化するための復号コードとを格納するために使用可能であり、第1データエリアは、外部メモリの第3データエリアのデータをロードするためのものであり、このようにして、プログラムの起動中に大きいなデータの使用が必要とされる場合に、内部メモリのサイズを増加させる必要が無くなる。コード更新エリアは、外部メモリからロードされてくるコードを記憶するためのものである。
【0025】
外部メモリ内の共通コードエリアは、内部メモリのコード常駐エリアで動作されるコードを記憶するためのものであり、暗号化されたコード及び非暗号化されたコードを記憶可能である。第3データエリアは、内部メモリの第1データエリア内のデータをロードするために使用可能である。非共通コードエリアは、プログラムの起動に使用する必要のある非共通コードを記憶するためのものである。
【0026】
本開示の実施例による内部メモリと外部メモリとの間のやり取りをより明確に説明するために、同時に図2を参照されたい。図2は、本願に係るプログラム起動方法の一実施例における内部メモリと外部メモリとの間のやり取りの模式図である。
【0027】
図2に示すように、内部メモリとしては、SRAMメモリであってもよい。内部メモリのコード常駐エリアは、外部メモリの共通コードエリアに対応し、第1データエリアは、第3データエリアに対応し、コード更新エリアは、非共通コードエリアに対応する。具体的に、共通コードエリア内のコードがコード常駐エリアにロードされてもよく、内部メモリ内の第1データエリアは、外部メモリの第3データエリア内のデータをロードするために使用可能である。非共通コードエリア内のコードがコード更新エリアにロードされてもよい。
【0028】
本開示のいくつかの実施例では、起動コードには、共通コード及び非共通コードが含まれている。共通コードは、プログラムを起動するために動作させる必要のあるコードである。共通コードは、外部メモリの共通コードエリア又は内部メモリのコード常駐エリアに格納され、非共通コードは、外部メモリの非共通コードエリアにセグメント分けして格納される。各セグメントの非共通コードの格納サイズは、内部メモリのコード更新エリアのサイズ以下となる。共通コードとしては、システム起動コード、暗号/復号化コード、割り込み処理プログラムコード等であってもよい。システム起動コードは、システムの初期化等の効果を奏するために使用可能であり、暗号/復号化コードは、暗号化されたコードを復号化する等の操作に使用可能であり、割り込み処理プログラムコードは、後で説明する。
【0029】
外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行する具体的な方式は、以下の一、二とされてもよい。
一、外部メモリ内の共通コードを内部メモリ内のコード常駐エリアにロードして、少なくとも一部の共通コードを動作させる。外部メモリ内の共通コードを内部メモリ内にロードする方式としては、最初のBootROMから起動して、BootROMが外部メモリの共通コードエリア内の共通コードを内部メモリのコード常駐エリアに搬送してもよい。ここでの搬送とは、コピー操作であってもよく、即ち、外部メモリの共通コードエリア内の共通コードを内部メモリ内のコード常駐エリアにコピーする。共通コードが暗号化されたものであれば、BootROMにより、復号化してから搬送する。ここでのBootROMは、通常、ブートローダプログラムとして使用可能である。共通コードを内部メモリ内のコード常駐エリアにロードし、非共通コードを内部メモリ内のコード更新エリアにロードするようにして、即ち共通コードと非共通コードとを別々に記憶することで、共通コードと非共通コードとの混同が防止される。
【0030】
ここで、少なくとも一部の共通コードを動作させるのは、1、システム初期化を行うステップと、2、アドレスマッピングテーブルを作成して、アドレスマッピングテーブルを内部メモリの第2データエリアに格納するステップとのうち、少なくとも1つを含む。アドレスマッピングテーブルは、非共通コードのコード更新エリアでの記憶アドレス、及び/又はプログラムの起動に使用する必要のあるデータの、内部メモリ内の第1データエリアでの記憶アドレスを格納するためのものである。具体的に、アドレスマッピングテーブルは、1つであってもよいし、2つであってもよく、アドレスマッピングテーブルが1つの場合、アドレスマッピングテーブルは、非共通コードの、コード更新エリアでの記憶アドレス、及びプログラムの起動に使用する必要のあるデータの、内部メモリ内の第1データエリアでの記憶アドレスを格納するために使用可能である。アドレスマッピングテーブルには、非共通コードセグメント又はデータの、外部メモリ内でのアドレスが更に含まれている。具体的に、アドレスマッピングテーブルは、非共通コードのコード更新エリアでの記憶アドレスと外部メモリの非共通コードエリアでの記憶アドレスとの間のマッピング、及び/又はプログラムの起動に使用する必要のあるデータの、内部メモリの第1データエリアでの記憶アドレスと外部メモリ内の第3データエリアでの記憶アドレスとの間のマッピングを格納するために使用される。つまり、コードセグメントは、内部メモリ及び外部メモリの両方に同時に存在してもよく、アドレスマッピングテーブルは、コードセグメントの、両方のメモリでのアドレス間のマッピング関係を格納するために使用されてもよい。アドレスマッピングテーブルがそれぞれコードアドレスマッピングテーブル及びデータアドレスマッピングテーブルとなる場合、コードアドレスマッピングテーブルは、非共通コードの、コード更新エリアでの記憶アドレスを格納するために使用され、データアドレスマッピングテーブルは、プログラムの起動に使用する必要のあるデータの、第1データエリアでの記憶アドレスを格納するために使用される。上記のように、非共通コードセグメントを内部メモリ内にロードする操作は、コピーであってもよく、即ち、1つの非共通コードセグメントは、内部メモリ及び外部メモリの両方に同時に存在してもよく、この際、コードアドレスマッピングテーブルは、当該非共通コードセグメントの、内部メモリでのアドレス及び外部メモリでのアドレスの両方を同時に格納してもよい。勿論、データアドレスマッピングテーブルには、データの、外部メモリでのアドレスが含まれてもよい。非共通コード又はデータの記憶位置が変わると、対応するアドレスマッピングテーブルが更新されることで、アドレスマッピングテーブルは、データ又は非共通コードの最新の記憶アドレス情報を格納可能となる。本開示のいくつかの実施例では、非共通コード又はデータがロードされる前に、対応するアドレスマッピングテーブルを更新しておく。例えば、非共通コードセグメントを内部メモリにロードする前に、コードアドレスマッピングテーブルを更新しておき、又は、データを内部メモリにロードする前に、データアドレスマッピングテーブルを更新しておく。対応するアドレスマッピングテーブルを更新した後、対応する非共通コード又はデータを内部メモリにロードする。
【0031】
二、少なくとも一部の共通コードを動作させた後、外部メモリ内の少なくとも1セグメントの非共通コードを内部メモリのコード更新エリアにロードしてコード更新エリアの非共通コードを動作させるという操作を少なくとも1回実行する。例えば、システム初期化及びアドレスマッピングテーブルの作成を行った後、搬送プログラムは、外部メモリの非共通コードエリア内の第一セグメントのコードを内部メモリ内のコード更新エリアにロードして、内部メモリにある当該第一セグメントのコードを実行する。外部メモリから読み取られたコードを内部メモリにロードする前に、もしコードが暗号化された状態にあると検出した場合、対応する復号コードを動作させて当該セグメントのコードを復号化する。具体的に、コードを復号化するための復号コードは、共通コードとなる。復号コードによれば、暗号化された状態にあるプログラムが正常に起動可能となり、復号コードがない場合に比べて、プログラム起動の成功率が向上される。
【0032】
プログラム内の起動コードを外部メモリへの格納するプロセス中に、起動コード内の非共通コードがいくつかのセグメントに分けられ、例えばX個のセグメントに分割され、当該いくつかのセグメントの非共通コードが順次に外部メモリの非共通コードエリアに記憶される。起動コード内の非共通コードのセグメント分け方式は、起動コードの大きさに応じて決定可能であり、ここでの大きさとは、占められる記憶空間の大きさであり、例えば、非共通コードが大きければ、セグメント分けの数が比較的多くされてもよいし、非共通コードが小さければ、セグメント分けの数が比較的少なくされてもよい。
【0033】
具体的に、外部メモリ内の非共通コードエリアについても、セグメント分けされており、即ち、第一非共通コードエリア、第二非共通コードエリア、…、第N非共通コードエリアに分けられる。起動コード内の非共通コードセグメントのセグメント分けの数(X)は、外部メモリ内の非共通コードエリアのセグメント分けの数(N)以下となる。勿論、外部メモリ内の各セグメントの非共通コードエリアは、何れも起動コードの各セグメントの大きさ以上となる。選択的に、外部メモリ内の非共通コードエリアに分割された各々の非共通コードセグメントの大きさは、内部メモリのコード更新エリアの大きさ以下である。
【0034】
コード更新エリアの非共通コードの動作中に、非共通コードの動作異常が発生した場合、コード常駐エリア内の第一割り込み処理プログラムを動作させ、これにより、動作すべき非共通コードがコード更新エリアに記憶されていないと検出された場合に外部メモリ内の動作すべき非共通コードをコード更新エリアにロードして動作させるということが実行されるようにする。具体的に、動作すべき非共通コードは、ポジショニング命令によって指示されてもよい。選択的に、ポジショニング命令は、動作すべき非共通コードを指示するために動作すべき非共通コードの識別子をキャリーする。ここでの非共通コード識別子とは、非共通コードのアドレスであってもよいし、非共通コードのセグメント分け識別子であってもよい。具体的に、非共通コード識別子がセグメント分け識別子の場合、非共通コードをX個のセグメントに分けると、非共通コード識別子は、非共通コードの位置するセグメントの番号であってもよく、例えば、動作すべき非共通コードが第3セグメントに位置すれば、非共通コード識別子が3となる。勿論、動作すべきコードセグメントの識別子は、複数のセグメントの非共通コードの識別子、例えば3~4であってもよい。勿論、非共通コード識別子は、一例に過ぎず、他の実施例において、非共通コードを指し示せるものであればよく、ここで特に限定しない。動作異常が発生した場合としては、具体的に、ポジショニング命令にキャリーされている動作すべき非共通コードの識別子に従って、内部メモリの中に対応する非共通コードを見つけられないことで、動作異常が発生する場合が含まれる。例えば、目標のアドレスマッピングテーブルに記憶されている現在のコード更新エリア内の非共通コードの最大アドレスが16であるのに対して、ポジショニング命令にキャリーされている非共通コードのアドレスが17である場合、動作異常が発生してしまう。
【0035】
第一割り込み処理プログラムは、ポジショニング命令にキャリーされている非共通コード識別子が、コード更新エリアの非共通コード識別子を超えたかを判断し、その具体的な方式としては、第一割り込み処理プログラムは、ポジショニング命令にキャリーされている非共通コードのアドレスが、アドレスマッピングテーブルに格納されている現在のコード更新エリア内の最大の非共通コードのアドレスよりも大きいかを判断する。判断結果として、ポジショニング命令にキャリーされている非共通コードのアドレスが、アドレスマッピングテーブルに格納されている現在のコード更新エリア内の最大非共通コードのアドレスよりも大きい場合、ポジショニング命令によって指示された動作すべき非共通コードがコード更新エリアに記憶されていないと認定する。また、本開示のいくつかの実施例では、第一割り込み処理プログラムは、ポジショニング命令にキャリーされている非共通コードの識別子が、アドレスマッピングテーブルに格納されている現在のコード更新エリア内の最大の非共通コードセグメント分け識別子よりも大きいかを判断する。判断結果として、ポジショニング命令にキャリーされている非共通コードセグメント分け識別子が、アドレスマッピングテーブルに格納されている現在のコード更新エリア内の最大の非共通コードセグメント分け識別子よりも大きい場合、ポジショニング命令によって指示された動作すべき非共通コードがコード更新エリアに記憶されていないと認定する。その後、搬送プログラムを動作させて外部メモリ内の動作すべきコードを内部メモリ内のコード更新エリアにロードする。ロードの前に、同様に、先ず動作すべきコードが暗号化されているかを判断し、もし暗号化されていれば、共通コードを使用して復号化してから、搬送プログラムによって搬送する。搬送プログラムによって外部メモリ内の動作すべきコードが内部メモリ内のコード更新エリアにロードされる前に、コードアドレスマッピングテーブルを更新しておく。
【0036】
内部メモリ内の動作済みの少なくとも一部コードを削除する方式ついては、コード更新エリアの動作済み非共通コードを削除してもよい。具体的な削除方式として、1セグメントの非共通コードを動作させた直後に動作済み非共通コードを削除してもよいし、又は、コード更新エリア内の全部の非共通コードを動作させた後に纏めて削除してもよく、又は、その後にロードされる他の非共通コードで動作済みの非共通コードを直接上書きして、動作済みコードを削除するという目的を実現してもよい。共通コードと非共通コードとの内部メモリ内の2つの領域に個別に記憶し、共通コードが保持されながら動作済みの非共通コードを削除して、残りのまだ動作させていない非共通コードを格納するための空間を空けることで、小さいサイズの内部メモリで大きなプログラムの起動が実現されるとともに、プログラムの正常起動も保証される。
【0037】
本開示のいくつかの実施例では、非共通コードの動作中に使用する必要のあるアクセスすべきデータは、内部メモリ内の第1データエリアに格納される。アクセスすべきデータについては、グローバル変数や関数型のローカル変数等、プログラムの起動に必要となる如何なるデータが、本開示の実施例におけるアクセスすべきデータになり得る。
【0038】
データ異常が発生した場合、コード常駐エリアの第二割り込み処理プログラムを動作させ、これにより、アクセスすべきデータが内部メモリの第1データエリアに記憶されていないと検出された場合に外部メモリ内のアクセスすべきデータを第1データエリアにロードすることが実行されるようにする。ここで、データ異常としては、内部メモリの中に対応するアクセスすべきデータを見つけられないことが含まれる。割り込み処理プログラムは、アクセスすべきデータが内部メモリ内の第1データエリアに記憶されていないことを監視する具体的な方式として、アクセスすべきデータの内部メモリでのアドレスがアドレスマッピングテーブルに記憶されているかを判断し、アクセスすべきデータの内部メモリでのアドレスがアドレスマッピングテーブルになければ、アクセスすべきデータが内部メモリの第1データエリアに記憶されていないと認定してもよい。次に、搬送プログラムを動作させて、外部メモリ内の対応するアクセスすべきデータを第1データエリアにロードする。ここで、アクセスすべきデータをロードする搬送プログラムと、共通コード又は非共通コードをロードする搬送プログラムとは、同じプログラムであってもよいし、異なるプログラムであってもよい。勿論、アクセスすべきデータが第1データエリアにロードされる前に、アクセスすべきデータが暗号化された状態にあるかを判断し、もし暗号化された状態にあれば、第2データエリアの復号コードを動作させて、アクセスすべきデータを復号化する。アクセスすべきデータが内部メモリ内の第1データエリアにロードされた後、引き続きコード更新エリアの非共通コードを動作させてアクセスすべきデータへのアクセス操作を行う。一部のデータを外部メモリに記憶し、プログラムの起動が要請された時に内部メモリにロードすることで、常に第1データエリアに記憶する必要が無くなるため、大きなプログラムの起動時に、第1データエリアには、プログラムの起動に必要となるデータを格納できる十分な利用可能空間が保証可能となり、その結果、プログラムの正常起動が保障される。
【0039】
本開示のいくつかの実施例では、プログラムの起動に必要なデータは、少なくとも一部が外部メモリに格納されている。ここで、少なくとも一部の、外部メモリに格納されているデータには、複数のデータセグメントが含まれている。各々のデータセグメントのサイズは、内部メモリ内のデータセグメントにアクセス可能な領域のサイズ以下となる。具体的な分割は、コードセグメントの分割を参照でき、データセグメントの分割について、ここで繰り返して述べない。
【0040】
プログラムに対する起動要請を検出した後、外部メモリ内のデータセグメントを内部メモリにロードしてデータセグメントにアクセスするという操作を複数回実行する。毎回、異なるデータセグメントがロードされる。外部メモリ内のデータセグメントを内部メモリにロードするという操作の複数回実行については、外部メモリ内のコードセグメントを内部メモリにロードするという操作の複数回実行を参照でき、ここで繰り返して述べない。
【0041】
本開示のいくつかの実施例では、外部メモリ内のデータセグメントを内部メモリにロードしてデータセグメントにアクセスするという操作を複数回実行することは、アクセスすべきデータの大きさが閾値を超えたかを判断するステップを含んでもよい。アクセスすべきデータの大きさが閾値を超えていない場合、アクセスすべきデータを内部メモリにロードするステップを実行する。アクセスすべきデータの大きさが所定閾値を超えた場合、以下の2つのステップのうち、少なくとも1つを実行する。
1つ目のステップとしては、第一所定条件を満たす他のデータを内部メモリの第1データエリアから除去して、アクセスすべきデータがロードされるようにする。ここでの除去とは、他のデータを内部メモリから直接削除してもよい。削除の方式としては、アクセスすべきデータセグメントでそれを上書きすることが含まれる。アクセスすべきデータは、プログラムの起動に使用する必要のあるデータのうち、現在使用する必要のあるデータであり、他のデータは、プログラムの起動に使用する必要のあるデータのうち、アクセスすべきデータ以外のデータである。第一所定条件としては、プログラムの起動中に既にアクセス済みで且つアクセスしなくなったもの、又は、プログラムの起動に関係しないものとされる。所定閾値の設定については、内部メモリの第1データエリアの利用可能空間に応じて決定可能である。例えば、所定閾値は、第1データエリアの利用可能空間とされる。アクセスすべきデータの大きさが第1データエリアの現在の利用可能空間即ち余剰空間を超えていれば、所定条件を満たす他のデータを外部メモリ内の第3データエリアに移動する。つまり、ここでの所定閾値は、一定で変わらないものではおらず、第1データエリアの利用可能空間によって動的に変化し得る。ここでの所定条件は、長期間内にアクセスすることのないデータ、又は既にアクセスしたデータとされてもよい。長期間とは、プログラムの起動時間に応じて設定可能であり、ここで、長期間について特に限定しない。
【0042】
2つ目のステップとしては、第二所定条件を満たす他のデータを外部メモリに移動されて記憶して、前記アクセスすべきデータがロードされるようにする。ここで、第二所定条件は、第一所定条件と同じであってもよいし、第一所定条件と異なってもよい。本開示の実施例では、第二所定条件として、プログラムの起動中に既にアクセス済みのデータ、又は、アクセスしていないが一定の期間内にアクセスすることのないデータとされてもよい。プログラムの起動に必要なデータが外部メモリに含まれている場合、第一所定条件を満たす他のデータが内部メモリの第1データエリアから外部メモリ内の第3データエリアに移動される際、外部メモリ内のデータを上書きしないか、又は、当該移動されるデータで、外部メモリ内の当該移動されるデータと同じデータを上書きすることになる。移動する必要のあるデータが外部メモリに含まれない場合、移動する必要のあるデータを外部メモリへの移動中には、外部メモリ内のデータを上書きすることがない。
【0043】
外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行する中には、ロードすべきコードセグメントが暗号化されているかを検出する。そうであれば、対応する復号化コードを使用して、ロードすべきコードセグメントを復号化する。外部メモリ内のコードセグメントを内部メモリにロードしてデータセグメントにアクセスするという操作を複数回実行する中には、アクセスすべきデータセグメントが暗号化されているかを検出する。そうであれば、対応する復号化コードを使用して、アクセスすべきデータセグメントを復号化する。復号化した後、対応するコードセグメント又はデータセグメントをロードする。外部メモリから読み取られたコード又はデータを内部メモリにロード前に、もしコード又はデータが暗号化されていると検出した場合、対応する復号コードを動作させて、ロードすべきコード又はアクセスすべきデータを復号化する。コードの復号化又はデータの復号化の詳細については、上記を参照されたく、ここで繰り返して述べない。アクセスすべきデータの大きさが所定閾値を超えた場合、所定条件を満たす他のデータを内部メモリの第1データエリアから外部メモリの第3データエリアに移動することで、内部メモリ内の第1データエリアには、アクセスすべきデータの格納に十分な利用可能空間が確保され、プログラムの正常起動が保障される。
【0044】
外部メモリの第3データエリアについても、セグメント分けされており、即ち、第3データエリアA、第3データエリアB、…、第3データエリアMに分けられる。分けられた各セグメントは、何れもアクセスすべきデータを記憶するために使用可能である。具体的に、アドレスマッピングテーブルは、プログラムの起動に使用する必要のあるデータの、内部メモリでのアドレスと外部メモリでのアドレスとのマッピング関係を記憶するためにも使用される。選択的に、第3データエリアに分割された各サブセグメントの大きさは、何れも内部メモリの第1データエリアの大きさに等しく、即ち、第三データAの大きさ=第3データエリアBの大きさ=内部メモリの第1データエリアの大きさとなる。勿論、第3データエリアに分割された各々のサブセグメントの大きさは、内部メモリの第1データエリアの大きさよりも小さくてもよい。
【0045】
本開示の実施例に記載のプログラムは、システム起動プログラム、システムプログラム及びアプリケーションプログラムのうち、少なくとも1つによって構成されている。具体的に、ここでのプログラムは、システム起動プログラム、システムプログラム及びアプリケーションプログラムをパッケージ化したものである。このプログラムは、暗号化されていてもよいし、暗号化されていなくてもよく、もし暗号化されている場合、起動時に復号化する必要があり、これによって、盗用されてしまう事態の発生を好適に低減できる。
【0046】
本開示の実施例による技術態様では、内部メモリの大きさについて、共通コードの記憶及び第1データエリア、第2データエリア及びコード更新エリアとしての役割を保証できればよく、コード更新エリアのサイズは、プログラムの起動又は動作時の性能に応じて統合的に考慮して設定可能であり、例えばコード更新エリアのサイズが小さすぎると、頻繁に外部メモリからコードがロードされることになり、この場合も、プログラム起動速度が遅くなる。従って、コード更新エリアのサイズは、実際の必要に応じて設定可能であり、ここで特に限定しない。一方、外部メモリのサイズは、同様に具体的な必要に応じて選択可能であり、要は、アクセスアドレス線がそれをサポートできればよい。
【0047】
上記態様は、内部メモリ空間が足りない場合、内部メモリ内の動作済みの一部コードを削除した後、外部メモリにセグメント分けして記憶されている起動コードを内部メモリにロードして実行することで、大きなプログラムの正常起動がサポートされるようにしており、このような方式によれば、大きなプログラムの起動に必要となる全部のコードを一度に内部メモリにロードする必要が無くなり、小さなサイズの内部メモリであっても、内部メモリの数を増加させることなく、大きいなプログラムの正常起動がサポートされるようになる。
【0048】
プログラム起動方法の実行主体は、プログラム起動装置とされてもよく、例えば、プログラム起動方法は、端末機器、サーバ又は他の処理機器によって実行されてもよい。端末機器としては、ユーザ機器(User Equipment、UE)、モバイル機器、ユーザ端末、端末、セルラー電話、コードレス電話、パーソナルデジタルアシスタント(Personal Digital Assistant、PDA)、ハンドヘルド機器、コンピューティング機器、車載機器、ウェアラブル機器等であってもよい。いくつかの可能な実現形態において、当該プログラム起動方法は、メモリに記憶されているコンピュータ読取可能な命令をプロセッサによって呼び出すことで実現されてもよい。
【0049】
図3を参照して、図3は、本願に係るプログラム起動装置の一実施例の構造模式図である。プログラム起動装置30は、要請検出モジュール31と、起動実行モジュール32と、を含む。要請検出モジュール31は、プログラムに対する起動要請を検出するためのものであって、プログラムの起動コードは、少なくとも一部が外部メモリに格納されており、少なくとも一部の、外部メモリに格納されている起動コードには、複数のコードセグメントが含まれている。起動実行モジュール32は、外部メモリ内のコードセグメントを内部メモリにロードしてコードセグメントを動作させるという操作を複数回実行するためのものであって、毎回、異なるコードセグメントがロードされ、各々のコードセグメントのサイズは、内部メモリ内の当該コードセグメントを実行可能な領域のサイズ以下である。
【0050】
上記態様は、外部メモリにセグメント分けして記憶されている起動コードが内部メモリにロードして実行されるようにすることで、全部の起動コードを一度に内部メモリにロードする必要が無くなり、プログラムの起動効率を向上させることができる。例えば、大きなプログラムの場合、プログラムの起動時に、当該プログラムの起動に必要となる全部の起動コードを一度にロードする必要があると、起動速度が遅すぎ、即ちプログラムの応答が遅すぎてしまう恐れがある。
【0051】
図4を参照して、図4は、本願に係る電子機器の一実施例の構造模式図である。電子機器40は、メモリ41及びプロセッサ42を含み、プロセッサ42は、メモリ41に記憶されているプログラム命令を実行して、上記の何れか1つのプログラム起動方法の実施例におけるステップが実現されるようにするためのものである。1つの具体的な実施シーンでは、電子機器40としては、マイクロコンピュータ、デスクトップコンピュータ、サーバが含まれてもよいが、これらに限定されない。また、電子機器40としては、ノートブックコンピュータ、タブレットコンピュータ等のモバイル機器が含まれてもよいが、ここで限定しない。
【0052】
具体的に、プロセッサ42は、その自身及びメモリ41を制御して、上記の何れか1つのプログラム起動方法の実施例におけるステップが実現されるようにするために使用される。プロセッサ42は、CPU(Central Processing Unit、中央処理装置)と称されてもよい。プロセッサ42は、信号処理能力を備えた集積回路チップであり得る。プロセッサ42は、汎用プロセッサ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)又は他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポーネントであってもよい。汎用プロセッサは、マイクロプロセッサであってもよく、又は、当該プロセッサは、如何なる一般的なプロセッサ等であってもよい。また、プロセッサ42は、集積回路チップによって共同で実現されてもよい。
【0053】
上記態様は、外部メモリにセグメント分けして記憶されている起動コードが内部メモリにロードして実行されるようにすることで、全部の起動コードを一度に内部メモリにロードする必要が無くなり、プログラムの起動効率を向上させることができる。例えば、大きなプログラムの場合、プログラムの起動時に、当該プログラムの起動に必要となる全部の起動コードを一度にロードする必要があると、起動速度が遅すぎ、即ちプログラムの応答が遅すぎてしまう恐れがある。
【0054】
図5を参照して、図5は、本願に係るコンピュータ読取可能な記憶媒体の一実施例の構造模式図である。コンピュータ読取可能な記憶媒体50は、プロセッサによって動作されることが可能なプログラム命令51を記憶しており、プログラム命令51は、上記の何れか1つのプログラム起動方法の実施例におけるステップを実現するためのものである。
【0055】
上記態様は、外部メモリにセグメント分けして記憶されている起動コードが内部メモリにロードして実行されるようにすることで、全部の起動コードを一度に内部メモリにロードする必要が無くなり、プログラムの起動効率を向上させることができる。例えば、大きなプログラムの場合、プログラムの起動時に、当該プログラムの起動に必要となる全部の起動コードを一度にロードする必要があると、起動速度が遅すぎ、即ちプログラムの応答が遅すぎてしまう恐れがある。
【0056】
いくつかの実施例において、本開示の実施例による装置に備えられている機能及び当該装置に含まれているモジュールは、上記方法の実施例に記載の方法を実行するために使用可能であり、その具体的な実現について、上記方法の実施例の説明を参照でき、簡潔化のために、ここで繰り返して述べない。
【0057】
各実施例に関する上記説明において、各実施例の相違点を強調する傾向があり、その同一又は類似の部分は、相互に参照できる。簡潔化のために、ここで繰り返して述べない。
【0058】
理解すべきなのは、本願によるいくつかの実施例に開示された方法及び装置は、他の形態で実現可能である。例えば、前述された装置の実施例は、例示的なものに過ぎない。例えば、モジュール又はユニットの分割は、論理機能の分割に過ぎず、実際の実現において他の分割方式もあり得る。例えば、ユニット又はコンポーネントは、組み合わせられてもよいし、他のシステムに統合されてもよい。或いは、いくつかの特徴が省略されてもよく、又は、実行されなくてもよい。また、掲示又は検討された部品間の結合、直接結合又は通信接続は、いくつかのインターフェース、装置又はユニットによる間接結合又は通信接続であってもよく、電気的、機械的又は他の形態であってもよい。
【0059】
また、本願の各実施例における各機能ユニットは、1つの処理ユニットに統合されてもよいし、各ユニットは、物理的に単独で存在してもよく、更に、2つ以上のユニットは、1つのユニットに統合されてもよい。上記統合されるユニットは、ハードウェアの形で実現されてもよいし、ソフトウェア機能ユニットの形で実現されてもよい。統合されるユニットは、ソフトウェア機能ユニットの形態で実現され、独立した製品として販売又は使用される場合、コンピュータ読取可能な記憶媒体に格納されてもよい。このような理解に基づいて、本願の技術態様の本質的部分、従来技術に対する貢献をもたらす部分、又は当該技術態様の全部又は一部は、ソフトウェア製品の形で具現化することが可能である。当該コンピュータソフトウェア製品は、記憶媒体に格納され、一台のコンピュータ機器(パソコン、サーバやネットワーク機器等であり得る)が本願の各実施例に記載の方法の全部又は一部のステップを実行可能にするためのいくつかの命令を含む。前述した記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読取専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスクなどの、プログラムコードを格納可能な任意の媒体を含む。
図1
図2
図3
図4
図5