(57)【要約】【課題】実行ファイルの圧縮において、圧縮率の向上とプログラムの高速実行を両立する圧縮記録装置を提供すること。【解決手段】ページ要求記録部２０２と、圧縮単位要求手段２０５と、動作区間記録部２０９と、ページ配置決定手段２０８と、ページ配置記録部２１０とを備え、システムの動作を区間に分けて、区間毎に読み出されるプログラム及びデータを圧縮単位として圧縮することで、圧縮率を向上し、かつ、伸張時に区間毎に必要なデータを一括してキャッシュ２０４に登録することで、高いランダムアクセス性能を提供することができ、圧縮率の向上とプログラムの高速実行を両立する。【選択図】図２
2010277495.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを同時に実行可能な情報処理システムにおいて、システム動作に必要となるプログラムおよびデータを、圧縮して記録する圧縮記録装置であって、
システムの起動時からの動作シーケンスの状態を監視し、前記動作シーケンスを、１つ以上の区間に分けるシーケンス監視手段と、
前記シーケンス監視手段が分けた前記区間の情報を記憶する動作区間記録手段と、
前記区間毎に要求されるプログラム及びデータを、当該区間における圧縮単位として決定する圧縮単位決定手段とを備えた圧縮記録装置。
【請求項２】
前記圧縮単位決定手段が決定した圧縮単位に対応するページデータの呼び出し順序がシーケンシャルとなるように配置を決定する圧縮単位配置手段と、
前記圧縮単位配置手段が決定した配置に基づいて、前記圧縮単位に対応するページデータを取得して圧縮処理を行い、圧縮データを生成する圧縮生成手段とを備えたことを特徴とする請求項１記載の圧縮記録装置。
【請求項３】
前記シーケンス監視手段は、システムの起動時からの動作シーケンスにおけるページ要求の履歴と、デバイスへのアクセスパターンと、システム起動時からの経過時間に基づいて、前記動作シーケンスを、１つ以上の区間に分けることを特徴とする請求項１記載の圧縮記録装置。
【請求項４】
複数のプログラムを同時に実行可能な情報処理システムにおいて、システム動作に必要となるプログラムおよびデータを、圧縮して記録する圧縮記録方法であって、
システムの起動時からの動作シーケンスの状態を監視し、前記動作シーケンスを、１つ以上の区間に分けるシーケンス監視ステップと、
前記シーケンス監視ステップが分けた前記区間毎に、要求されるプログラム及びデータを、当該区間における圧縮単位として決定する圧縮単位決定ステップと、
前記圧縮単位決定ステップが決定した圧縮単位に対応するページデータの呼び出し順序がシーケンシャルとなるように配置を決定する圧縮単位配置ステップと、
前記圧縮単位配置ステップが決定した配置に基づいて、前記圧縮単位に対応するページデータを取得して圧縮処理を行い、圧縮データを生成する圧縮生成ステップとを備えたことを特徴とする圧縮記録方法。
【請求項５】
前記シーケンス監視ステップは、システムの起動時からの動作シーケンスにおけるページ要求の履歴と、デバイスへのアクセスパターンと、システム起動時からの経過時間に基づいて、前記動作シーケンスを、１つ以上の区間に分けることを特徴とする請求項４記載の圧縮記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶媒体に、圧縮したプログラムおよびデータを記録する際の圧縮記録方法に関するものであり、特に、データの損失を伴わない非損失形の圧縮記録装置に関するものである。
【背景技術】
【０００２】
近年、携帯電話や携帯情報端末をはじめとする組み込み機器の情報化に伴い、組み込みシステムのソフトウェア規模は、その記憶装置の容量増加以上の勢いで、増大の傾向にある。一方、組み込み機器では、価格や大きさの制限から記憶装置の容量を抑える必要がある。そのため、画像や音声などのデータだけでなく、システムプログラムやアプリケーションプログラムであるプログラムテキストおよびデータなどの実行オブジェクトを、格納したファイルについても、圧縮記録することが一般的に行われている。一方、組み込み機器は、製品コストや消費電力の関係から、演算能力についても制限があり、より効率的に入出力可能なデータ圧縮技術、および圧縮したデータを管理するデータ管理方法の重要性は、益々高まる傾向にある。以下、システムプログラムやアプリケーションプログラムは、アプリケーションと記載する。また、プログラムテキストおよびデータなどの実行オブジェクトを格納したファイルは、オブジェクトファイルと記載する。
【０００３】
オブジェクトファイルの圧縮には、伸張時にデータの損失があっては正しいプログラム実行ができなくなるため、データの損失を伴わない非損失型のデータ圧縮技術により圧縮する方式（以下、非損失圧縮方式）を用いる。
【０００４】
非損失圧縮方式は、圧縮したデータを伸張すると圧縮前のデータが完全に再現できる一方で、データ圧縮の際の圧縮率は、圧縮するデータの内容により変化するため、対象の全データを圧縮するまで圧縮率が分からないという性質を持つ。前記性質により、圧縮後のデータを任意の位置から一部分だけ読み出すようなランダムアクセスのためには、一旦、圧縮データの全体を主記憶領域などに確保した一時メモリに伸張し、その後必要な部分を切り出すといった全体伸張方式となる。全体伸張方式は、例えば1バイトのデータを読み出す場合でも、全伸張データを実行時に一時的に格納する主記憶領域、および、圧縮データ全体を伸張するための演算処理時間を必要とする。
【０００５】
プログラムを実行する場合、ファイルの先頭から順に最後まで通して実行することは極めて稀であり、通常は、条件分岐やループ処理によりファイル内をランダムにアクセスする。また、自己およびライブラリの関数呼び出しや、複数プログラムの同時実行により、複数のオブジェクトファイルを対象とするランダムアクセスが多数発生する。
【０００６】
通常、単一のファイルを中心に構成された、オペレーティングシステム（以下ＯＳ）をはじめとするシステムプログラムの中核部分は、カーネルと呼ばれる。カーネルを構成する実行ファイルは、ファイル全体を圧縮してフラッシュＲＯＭ等に記録し、システム起動時にプログラム全体を主記憶領域に展開することで、圧縮データへのランダムアクセスを不要にする全体伸張方法が広く用いられている。同様に、ＯＳ上で動作するアプリケーションについても、全体伸張方式の利用が考えられる。しかしながら、一般に組み込みシステムでは、搭載する主記憶容量には制限がある。また、主記憶が不足した場合に主記憶の内容を退避する領域（以下スワップ）を持たない組み込みシステムでは、全体伸張方式をアプリケーションに適用することは困難であった。
【０００７】
これらの性質を考慮し、圧縮対象のデータを一定の単位で分割して圧縮し、その圧縮単位へのエントリを管理することで、圧縮前の任意の位置にあたるデータを、圧縮後データから迅速に取り出すことを可能にする分割圧縮方式がある。例えば、必要なときに必要なページをファイルから取り出す、デマンドページング機能を持つＯＳにおいて、分割圧縮方式を用いることが可能である。ＯＳがメモリ領域を管理する最小単位であるページ毎に、オブジェクトファイルを分割圧縮することで、圧縮ファイルからＯＳが要求する任意のページを高速に展開することができる。分割単位をメモリ管理単位とするため、圧縮ファイル全体を一時にメモリ領域に展開し、そこから必要なページを切り出すといった処理は不要となり、メモリ消費や伸張処理時間を抑えることができる（例えば、特許文献１参照）。
【０００８】
前記特許文献１に記載された技術では、オブジェクトファイルのテキスト領域を、ＯＳがデマンドページングする大きさ単位に分割し圧縮した形式で格納していた。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−３３０７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、前記従来の構成では、デマンドページングの大きさの単位で分割しており、ページ単位での圧縮は、ファイル全体での一括圧縮、または数ページ単位（より大きな単位）での分割圧縮と比較して、圧縮率が低いため、圧縮後のサイズが増加していた。このため、ストレージ容量に制限のある組み込み機器において、必要となるストレージ容量が増加するという課題を有していた。
【００１１】
本発明は、前記従来の課題を解決するもので、圧縮オブジェクトファイルの圧縮率を向上し、任意のページを高速にプログラム実行できる圧縮記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前記従来の課題を解決するために、本発明の圧縮記録装置は、複数のプログラムを同時に実行可能な情報処理システムにおいて、システム動作に必要となるプログラムおよびデータを、圧縮して記録する圧縮記録装置であって、システムの起動時からの動作シーケンスの状態を監視し、前記動作シーケンスを、１つ以上の区間に分けるシーケンス監視手段と、前記シーケンス監視手段が分けた前記区間の情報を記憶する動作区間記録手段と、前記区間毎に要求されるプログラム及びデータを、当該区間における圧縮単位として決定する圧縮単位決定手段とを備え、システム動作を区間分けし、各区間で要求されるページの総数を圧縮単位とする。
【００１３】
本構成によって、各動作区間で必要となる総ページを一括して圧縮ファイルから伸張し、展開されたページをファイルシステムやＯＳのキャッシュ機能に登録することで、ランダムアクセスに伴うオーバーヘッドを削減するとともに、複数ページをまとめて圧縮することで圧縮率を向上することができる。
【発明の効果】
【００１４】
本発明の圧縮記録装置によれば、まとまった単位で分割し圧縮するため、ページ単位での圧縮よりも圧縮効率を向上することができるとともに、必要なページを迅速に伸張、メモリ上に展開することができ、システムやプログラムの起動を高速化することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態における情報処理システムの基本構成図
【図２】本発明の実施の形態における情報処理システムの構成を示すブロック図
【図３】本発明の実施の形態におけるページの要求履歴の一例を示す図
【図４】本発明の実施の形態における圧縮単位の要求履歴の一例を示す図
【図５】本発明の実施の形態におけるページ配置決定手段の構成を示すブロック図
【図６】本発明の実施の形態おける圧縮ファイルシステムのデータ形式の一例を示す図
【図７】本発明の実施の形態における圧縮ブロックのデータ形式の一例を示す図
【図８】本発明の実施の形態におけるシステム起動する様子の一例を示す図
【発明を実施するための形態】
【００１６】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１７】
（実施の形態１）
図１は、本発明の実施の形態における情報処理システムの基本構成図である。
【００１８】
情報処理システムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）１、主記憶装置であるメモリ２、補助記憶装置であるデバイス３、および不図示の各種Ｉ／Ｏ装置などのハードウェア資源を有している。各種Ｉ／Ｏ装置はこの情報システムの制御対象であり、例えば、通信装置、入力装置、表示装置などである。
【００１９】
本実施の形態における情報処理システムの圧縮記録装置は、主記憶装置の容量に制限があり、ファイル記憶のための補助記憶装置の容量も比較的少ない電子情報機器に好適である。以下、情報処理システムが、携帯電話やスマートフォンなどの携帯型の電子情報機器である場合を例示して説明する。
【００２０】
ＣＰＵ１は、単一のＣＰＵで構成されても良く、複数のＣＰＵで構成されてもよい。メモリ２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）から構成される。デバイス３は、ＣＰＵ１の動作を規定するコンピュータプログラム及びデータを記憶している。
【００２１】
ＣＰＵ１は、デバイス３が格納するコンピュータプログラム及びデータを、必要に応じてメモリ２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。
【００２２】
メモリ２は、ＣＰＵ１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。メモリ２には、電源を切ると記憶内容が保持されない揮発性のメモリと記憶媒体が含まれる。デバイス３には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリと記憶媒体も含まれる。
【００２３】
メモリ２上には、ユーザーアプリケーション１０１、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１０２、デバイスドライバ１０３を備えている。
【００２４】
ユーザーアプリケーション１０１は、コンピュータプログラム及びデータから構成され、情報処理システムの使用者に対して、個々の定められた機能を提供する。ＯＳ１０２は、ＣＰＵ時間、メモリ容量、ファイルシステム、及び、デバイスなどのシステムリソースの管理と、ユーザープログラム間でシステムリソースの調停を行う基本ソフトウェアである。デバイスドライバ１０３は、ＯＳ１０２が発信するコンピュータプログラム及びデータのデバイス３からの読出し要求や、デバイス３への書き込み要求を処理する。
【００２５】
ＯＳ１０２は、ＶＦＳ（Ｖｉｒｔｕａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ：仮想ファイルシステム）１１１、圧縮ファイルシステム１１２、プログラムローダ１１３を有している。
【００２６】
ＶＦＳ１１１は、ファイルシステムを抽象化するための層であり、従来型のものを適用可能である。圧縮ファイルシステム１１２は、本発明の主要部をなすものであり、ユーザーアプリケーション１０１を規定するコンピュータプログラム及びデータの圧縮ファイル記録方式を提供する。圧縮ファイルシステム１１２は、コンピュータプログラム及びデータを本発明が定めるデータ形式で記録したオブジェクトファイルへのデータ入出力機能を提供する。
【００２７】
プログラムローダ１１３は、ＶＦＳ１１１上の実行可能形式のコンピュータプログラム及びデータを、ＣＰＵ１が実行可能な形にしてメモリ２に展開する。
【００２８】
上記の構成により、例えば、ＣＰＵ１がユーザーアプリケーション１０１のあるページを実行する際に、前記ページがまだメモリ２上に展開さ読み込まれていないことを検出すると、次の処理を行う。まず、ＣＰＵ１は、ユーザーアプリケーション１０１を停止し、プログラムローダ１１３に対して、対応するページを要求する。プログラムローダ１１３は、ＣＰＵ１のページ要求から、ページが属するオブジェクトファイルとページが配置されているファイル内部での位置（以下、オフセット）を特定する。プログラムローダ１１３は、特定した後に、ＶＦＳ１１１に対して前記ページの読出しを要求し、ページの取得まで待機する。ＶＦＳ１１１は、前記ページを格納するオブジェクトファイルが属するファイルシステムを特定し、前記ファイルシステムに対して前記オブジェクトファイルの前記オフセットの位置にあるページの読出しを要求する。本実施の形態では、前記ファイルシステムが圧縮ファイルシステム１１２である時を例にとり説明する。圧縮ファイルシステム１１２は、ＶＦＳ１１１からのページ読出し要求を受け、圧縮ファイルシステム１１２の内部に持つ、キャッシュを検索する。該当ページが存在しない場合、圧縮ファイルシステム１１２は、前記ページを含む圧縮単位が保存されているデバイス内部の位置を特定し、デバイス３に対して前記圧縮単位の読出し要求を発行する。デバイス３は、圧縮ファイルシステム１１２からの圧縮単位読出し要求を受け、フラッシュＲＯＭやＨＤＤ上に記録されている圧縮単位を読出し、メモリ２上に格納し、データの転送完了を圧縮ファイルシステムに通知する。圧縮ファイルシステム１１２は、デバイス３から転送完了の通知を受け取ると、メモリ２上に格納された圧縮単位を伸張処理し、ＶＦＳ１１１が要求するページを取得、ＶＦＳ１１１に読出しの完了を通知する。読出しの完了を受け、ＶＦＳ１１１は、プログラムローダ１１３に制御を戻す。制御の戻ったプログラムローダ１１３は、ユーザーアプリケーション１０１を再開する。
【００２９】
なお、本実施の形態では、ページのキャッシュを圧縮ファイルシステム１１２内部に持つ形を例としたが、ＶＦＳ１１１や、ＯＳ１０２の内部に持つ形でもよい。
【００３０】
図２は、本発明の実施の形態における圧縮記録装置を備えた情報処理システムの構成を示すブロック図である。図２において、図１と同じ構成要素については同じ符号を用い、説明を省略する。
【００３１】
図２において、情報処理システムの圧縮ファイルシステム１１２は、ページ要求処理手段２０１、ページ要求記録部２０２、キャッシュ管理手段２０３、キャッシュ２０４、圧縮単位要求手段２０５、圧縮単位要求記録部２０６、伸張手段２０７、ページ配置決定手段２０８、動作区間記録部２０９、ページ配置記録部２１０、ファイルシステム更新手段２１１を備えている。
【００３２】
ページ要求処理手段２０１は、ＶＦＳ１１１からのページ読出し要求をページ要求記録部２０２に記録し、要求されたページをキャッシュ管理手段２０３に要求する。ページ要求記録部２０２は、ＶＦＳ１１１から発信された、オブジェクトファイルに対するページ要求の履歴を保持する。
【００３３】
図３は、ページ要求記録部２０２が保持する、ページ要求の履歴の一例を示す。図３の例では、ファイルＩＤ３０１と、オフセット３０２と、アクセス時刻３０３と、を組にして管理している。ファイルＩＤ３０１は、ファイルシステムが保持する全ファイルから前記オブジェクトファイルを特定する情報である。オフセット３０２は、前記オブジェクトファイル内で要求されたページの位置を示す。アクセス時刻３０３は、ページ要求のあった時刻をシステム起動時からの経過時間を示す。ここでは、時刻Ｔ１に、ファイルＦ１の先頭からオフセットＯ１の位置にあるページが要求されたことを示している。
【００３４】
キャッシュ管理手段２０３は、キャッシュ２０４を検索し、前記要求ページがキャッシュ２０４内に存在するときは、キャッシュされたページをページ要求処理手段に返す。キャッシュ２０４内に存在しないときは、前記ページを圧縮単位要求手段２０５に要求する。
【００３５】
圧縮単位要求手段２０５は、要求されたページに対応する圧縮単位の位置を検索し、デバイスドライバ１０３に対して圧縮単位を要求する。圧縮単位要求手段２０５は、圧縮単位を要求するとともに、システムの動作区間記録部２０９の保持する情報から、現在のシステム動作区間を特定し、前記動作区間と圧縮単位の要求の履歴を圧縮単位要求記録部２０６に記録する。
【００３６】
図４は、圧縮単位要求記録部２０６の保持する、圧縮単位の要求の履歴の一例を示す。図４の例では、アドレス４０１と、アクセス時刻４０２と、動作区間４０３と、前回のアクセス区間４０４と、前々回のアクセス区間４０５と、を組に管理している。
【００３７】
アドレス４０１は、要求されたページが含まれる圧縮単位の識別子となる圧縮単位が記録されているデバイス内部の位置を示す。アクセス時刻４０２は、圧縮単位が要求された時刻をシステム起動時からの経過時間を示す。動作区間４０３は、圧縮単位が要求されたときのシステムの動作区間を示す。前回のアクセス区間４０４は、前回のシステム起動で前記アドレスをアクセスした時の動作区間を示す。前々回のアクセス区間４０５は、前々回のシステム起動で、前記アドレスをアクセスした時の動作区間を示す。ここでは、アドレスＡ１の位置にある圧縮ブロックを、時刻Ｔ１に、区間Ｄ１から要求されたことを示し、前記アドレスＡ１が前回、前々回の起動時にもＤ１より要求されたことを示している。
【００３８】
圧縮単位要求手段２０５は、デバイスドライバ１０３から圧縮単位を受け取ると、伸張手段２０７に対して圧縮データの伸張処理を要求する。
【００３９】
伸張手段２０７は、圧縮単位要求手段２０５から要求を受けると、圧縮データを伸張し、展開した単一または複数のページをキャッシュ２０４に登録する。
【００４０】
キャッシュ２０４は、伸張手段２０７により、新規にページが登録されると、キャッシュ管理手段２０３に対してキャッシュ更新を通知する。
【００４１】
キャッシュ管理手段２０３は、キャッシュ２０４から更新が通知されると、ページ要求手段２０１に対して要求されていたページを返す。
【００４２】
ページ配置手段２０８は、ページ要求記録部２０２と、圧縮単位要求記録部２０６と、動作区間記録部２０９と、ＣＰＵ１の実行するユーザープログラムの実行状況等を考慮して、動作区間の決定と、区間毎のページ配置を決定する。ページ配置手段２０８は、ページ配置記録部２１０にページ配置情報を記録するとともに、ファイルシステム更新手段２１１に対して、ファイルシステムの更新を要求する。
【００４３】
ファイルシステム更新手段２１１は、ページ配置記録部２１０の保持するページ配置情報から、圧縮単位に必要なページ情報を収集し、圧縮単位を再構成する。ファイルシステム更新手段２１１は、デバイスドライバ１０３に対して更新したファイルシステムと前記ページ配置情報を記録する。
【００４４】
動作区間記録部２０９は、システムをデバイス３のアクセスパターンの特徴で区分した動作区間と、現在システムが属する動作区間を保持する。
【００４５】
図５は、本発明の実施の形態における圧縮記録装置を備えた情報処理システムの、ページ配置決定手段２０８の構成を示すブロック図である。
【００４６】
図５において、ページ配置決定手段２０８は、起動シーケンス監視手段５０１、圧縮単位決定手段５０２、圧縮単位配置手段５０３、圧縮イメージ生成手段５０４と、を備えている。
【００４７】
起動シーケンス監視手段５０１は、システムの起動シーケンスの進行状況を監視する。この進行状況は、ページ要求記録部２０２の保持するページ要求の履歴と、圧縮単位要求記録部２０６の保持するデバイス３へのアクセスパターンと、システム起動時からの経過時間から、判断される。また、起動シーケンス監視手段５０１は、ページ要求元であるアプリケーションの動作状態と、デバイス３へのアクセスの特徴からシステム起動シーケンスを区間分けし、動作区間記録部２０９に記録する。
【００４８】
圧縮単位決定手段５０２は、オブジェクトファイル毎に、起動シーケンスの区間に要求される全ページを保持可能な圧縮単位のサイズを決定する。このサイズ決定は、ページ要求記録部２０２の保持するページ要求の履歴と、動作区間記録部２０９の保持する起動シーケンスの区間分けに基づいて、行われる。また、圧縮単位決定手段５０２は、圧縮単位配置手段５０３に対し、決定したサイズに基づいた、圧縮単位の作成を要求する。
【００４９】
圧縮単位配置手段５０３は、はじめにオブジェクトファイル毎に圧縮単位分のページ配置情報を決定する。次に、圧縮単位配置手段５０３は、同一区間の圧縮単位が、デバイス３内部でシーケンシャルに読出し可能となるように、圧縮単位のデバイス３内部での配置位置を決定し、ページ配置記録部２１０に配置情報を記録する。
【００５０】
圧縮イメージ生成手段５０４は、ページ配置記録部２１０の保持する配置情報を元に、圧縮単位毎にページデータを収集し、圧縮処理を行い、圧縮データを生成する。また、圧縮イメージ生成手段５０４は、圧縮単位配置手段５０３が決定した配置情報に従い、ファイルシステムのバイナリイメージを構築する。
【００５１】
ファイルシステム更新手段２１１は、圧縮イメージ生成手段５０４の作成した、圧縮ファイルシステムイメージを、デバイスドライバ１０３を経由してデバイス３に記録する。
【００５２】
なお、電源ＯＮ毎に毎回決まった動作でシステム起動する場合、本実施の形態は、圧縮単位要求記録部２０６の保持する、圧縮単位の要求の履歴、アドレス４０１とアクセス時刻４０２から、圧縮単位の決定と圧縮単位の配置を決定してもよい。
【００５３】
また、システム起動毎にアクセスするタイミングにゆらぎのあるページやアクセス単位がある場合、本実施の形態は、過去２回の圧縮単位のアクセス記録を、並べ替えの条件に加えてもよい。つまり、圧縮単位要求記録部２０６が記録する、過去の圧縮単位のアクセス記録、前回のアクセス区間４０４および前々回のアクセス区間４０５を参照する。
【００５４】
図６は、デバイス３に記録される、圧縮ファイルシステム１１２のデータ形式の一例を示す。図６の例では、圧縮ファイルシステム１１２のデータ形式は、圧縮ブロック６０１乃至６０３と、ヘッダー６０４と、ブロック管理情報配列６０５とから構成される。圧縮ブロック６０１乃至６０３は、圧縮単位毎に圧縮したコンピュータプログラム及びデータである。ヘッダー６０４には、データ形式が圧縮ファイルシステムであることを示す情報を含んでいる。ブロック管理情報配列６０５は、圧縮ブロックおよび圧縮ブロックが保持するページの配置情報を配列で管理している。
【００５５】
図７は、ブロック管理情報配列６０５の一例を示す。
【００５６】
ブロック管理情報配列６０５は、圧縮ブロック毎のサイズ７０１と、オフセット７０２と、ファイルＩＤ７０３と、ページオフセット７０４から構成される。オフセット７０２は、圧縮ブロックのファイルシステムイメージ内部での位置を示す。ファイルＩＤ７０３は、圧縮ブロック内に記録されているページが属するファイルを特定する情報である。ページオフセット７０４は、圧縮ブロックに記録されているページの、オブジェクトファイル内部での位置を示す。
【００５７】
ブロック管理情報配列６０５は、圧縮単位要求手段２０５が、圧縮ブロックを特定する際に、使用する。圧縮単位要求手段２０５は、ブロック管理情報配列６０５を用い、はじめに、ファイルＩＤ７０３より、キャッシュ管理手段２０３が要求するページが属するオブジェクトファイルが記録されている圧縮ブロックを特定する。次に、ページオフセット７０４を用いて、オブジェクトファイル内部での位置を決定し、要求ページが記録されている圧縮ブロックを特定する。最後に、特定した圧縮ブロックを、デバイスドライバ１０３を経由してデバイス３から読出し、伸張手段２０７を用いてページをキャッシュ２０４に登録することができる。
【００５８】
次に、図８を用いて、起動シーケンス監視手段５０１が行う、区間分け処理について説明する。
【００５９】
ここでは、ＯＳ１０２を持ち、複数のユーザーアプリケーション１０１が互いに協調しながら処理を遂行する比較的大規模な情報処理システムにおける、電源ＯＮからシステムの定常状態に至るまでのシステム起動を例に、区間分けを説明する。
【００６０】
図８は、システム起動時の複数のユーザーアプリケーションが動作する例を示す。図８の例では、システム起動を、電源ＯＮ８０１から始まり定常状態８０２まで、と定義する。システム起動は、ユーザーアプリケーションの振舞いの特徴から、チェックポイント８０３乃至８０４により、区間８０５乃至８０７に区分けすることができる。
【００６１】
区間８０５は、ユーザーアプリケーションプログラムであるアプリ８１１乃至８１３が順次起動するような動作区間を表す。この例ではアプリケーションの管理プログラムであるアプリ８１０が、アプリ８１１を起動し、アプリ８１１の処理が終了するか、ある状態になった段階で、次のアプリ８１２を起動している。区間８０５は、複数プログラムが順次起動するような動作区間となる。
【００６２】
区間８０６は、アプリ８２０乃至８２２が同時に起動し、並列して動作する例を示す。このような場合には、複数のユーザーアプリケーションは、互いに頻繁にタスクスイッチしながら処理を進める。
【００６３】
区間８０７は、アプリ８３０の動作が支配的な区間を示す。
【００６４】
区間８０５に例示した、複数アプリケーションが比較的短時間に動作しながら順次起動する区間の場合、アプリ８１０乃至８１３が要求するページをひとまとめにして圧縮ブロック単位として圧縮する。これにより、区間８０５開始時に、アプリ８１０乃至８１３を、一括して伸張することが可能である。システムは電源ＯＮ８０１直後にアプリ８１０の実行を開始する。このときアプリ８１０は最初のページをプログラムローダ１１３に要求する。プログラムローダはＶＦＳ１１１を経由し圧縮ファイルシステム１１２に対してページ要求を発行する。該当するページは区間８０５でまとめられた圧縮ブロックに含まれるため、圧縮ブロックが伸張処理され、区間８０５で必要となる全ページがキャッシュ２０４に登録される。これにより区間８０５での残りの動作に必要なページは、キャッシュ２０４に存在することとなり、ページ要求はＶＦＳ１１１までで完了するため、ファイルシステム処理のオーバーヘッドが削減できる。さらに、同区間８０５で動作するアプリ８１１乃至８１３が必要とするページについてもキャッシュ２０４に登録済みであるため、これらアプリケーションプログラムに要していたはずのファイルシステムオーバーヘッドがすべて削減できる。
【００６５】
また、区間８０６に例示した、複数アプリケーションが同時に動作する区間の場合、アプリ８２０が最初のページを要求して待機している間に、アプリ８２１が動作しようとする。しかし、電源ＯＮからのシステム起動中なので、アプリ８２１が必要とするプログラムが格納されたページは、キャッシュ２０４やメモリ２上に存在せず、アプリ８２１もページを要求して待機状態となる。同様にアプリ８２２もページ要求待ちとなり、以下区間８０６の終わりまで、ページ要求による待機により、タスクスイッチが頻発、プログラム実行が過度に分断化され処理時間に遅延が生じる。複数アプリケーションが同時に動作する区間においては、区間中で要求されるページを単一の圧縮単位にまとめ、区間開始時点に、一括して伸張しキャッシュ登録する。これにより、ファイルシステムオーバーヘッドだけでなく、ページ要求による待機を原因とするタスクスイッチを除去することができ、処理時間の短縮およびＣＰＵ負荷の削減が可能となる。
【００６６】
また、区間８０７に例示した、単独のアプリ８３０が支配的に動作する区間の場合、この単独のアプリ８３０が、多量のプログラムコードを実行または多量のデータにアクセスするか否かに基づいて、圧縮単位を決定すればよい。つまり、多量のプログラムコードを実行または多量のデータにアクセスする場合は、区間中で要求されるページを単一の圧縮単位にまとめ、区間開始時点に、一括して伸張しキャッシュ登録する。これにより、デバイスのアクセス待ちの短縮や、ファイルシステムオーバーヘッドの削減が可能となる。
【００６７】
次に、区間８０５乃至８０７の区間分けの方法について説明する。
【００６８】
区間８０５は、アプリケーションが順次に起動するパターンの例である。このような順次起動は、アプリケーションの起動スクリプトや、アプリケーション管理プログラムからの起動制御により実施される。このため、起動スクリプト中に区間の句切れとなるチェックポイント８０３をあらかじめシステム設計時に設定しておくことが可能である。例えば、起動スクリプトの場合には、ＯＳ１０２の制御用コマンドを経由して、圧縮ファイルシステム１１２にチェックポイントの通過を通知してもよい。圧縮ファイルシステム１１２の制御用コマンドを用いて、直接通知してもよい。また、アプリケーション管理プログラムの場合には、ＯＳ１０２の制御用システムコールを経由して、圧縮ファイルシステム１１２に通知してもよい。また、圧縮ファイルシステム１１２の制御用システムコールを用いて通知してもよい。
【００６９】
区間８０６は、アプリケーションが同時に複数起動するパターンの例である。このような並列起動は、細かなデバイスアクセスの頻発と、デバイスアクセスによるタスク実行の分断化とを、発生させる。このような並列起動は、ＯＳ１０２の持つアプリケーションの実行順序を制御するタスクスケジューラの監視と、ページ要求記録部２０２に記録されるページ要求の履歴から検出可能である。複数のアプリケーションが同時にデバイス３へのページ要求で待ち状態に入り、かつ、頻繁にページ要求を発生していることを検出した場合、区間８０６が開始したものとみなすことができる。例えば、起動シーケンス監視手段５０１が、ページ要求の発生頻度と、タスク切り替えの発生頻度に、各々閾値を設け、一定時間内に閾値を超える要求および切り替えの発生を検出した場合に、同区間の開始と判断することが可能である。
【００７０】
区間８０７は、特定のアプリケーションが支配的に動作するパターンの例である。つまり、この区間では、デバイスに対してページ要求を、ランダムアクセス的に発生させる。起動シーケンス監視手段５０１が、ページ要求記憶２０２に記録されているページ要求の履歴から、一定時間内のオブジェクトファイル毎に発生するページ要求数に閾値を設け、閾値を超える要求を検出した場合に、同区間の開始とみなすことができる。
【００７１】
なお、区間の終了ポイントは、別の区間の開始ポイントでもあるので、別のタイプの区間が始まるまで、同区間が継続しているものとみなすことができる。また、システムが定常状態になると、すべてのアプリケーションは、ユーザーからの操作等によるイベント待ちの状態になり、システムはアイドルの状態になる。そこで、システムアイドルの連続発生時間について閾値を儲け、起動シーケンス監視手段５０１は、アイドル時間を監視することで、区間の終了ポイントを検出することも可能である。
【００７２】
以上により、本発明の圧縮記録装置は、デバイスへのアクセスの状況と、ＣＰＵのプログラム実行の状況から、システム動作を区間に分けて管理し、オブジェクトファイル毎に、各区間で必要となるページを判断して圧縮単位を決定する。これにより、区間の切り替わり時に、その区間で必要となる総ページを一括して圧縮ファイルから伸張することで、高速に伸張することが可能となり、システム処理時間の短縮が可能となる。
【００７３】
特に、システムが大規模化する中、アプリケーションプログラム実行時に要求されるページ数は増大の傾向にあり、実行開始時に、プログラム全体を全て伸張することは、主記憶容量には制限がある組み込みシステムでは、困難である。そのため、本発明の圧縮記録装置により、適切な単位で分割することは、より有効となる。
【００７４】
さらに、本発明の圧縮記録装置は、前記区間でアクセスされる圧縮単位の、デバイス内部での位置を、区間毎に再配置して並べ替えることで、区間で必要となるページを、シーケンシャルに読み出すことを可能とする。これにより、プログラム実行に伴うオブジェクトファイルに対するランダムアクセスをシーケンシャル化することができ、ランダムアクセスを原因とする、プログラムの実行時間性能の劣化を防止し、システム処理時間の短縮を可能とする。
【００７５】
また、本発明の圧縮記録装置は、複数のページをまとめて圧縮することから、ページ単位で圧縮する場合と比べて、圧縮率を向上することができ、補助記憶装置の容量を削減することが可能となり、コストを削減することができる。
【００７６】
なお、本発明の各機能ブロックは典型的にはソフトウェアとして実現されるが、集積回路であるＬＳＩとして実現しても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  ＰｒｏｇｒａｍｍａｂｌｅＧａｔｅ  Ａｒｒａｙ）、ＬＳＩ内部の回路セルの接続または設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【００７７】
本発明にかかる圧縮記録装置は、システム動作を区間に分けて圧縮単位を決定する機能を有しており、組み込みシステムに有用である。また、各種の家電機器、携帯電話など通信機器、産業機器、乗用機器などの用途にも応用できる。
【符号の説明】
【００７８】
１    ＣＰＵ
２    メモリ
３    デバイス
１０１    ユーザーアプリケーション
１０２    ＯＳ
１０３    デバイスドライバ
１１１    ＶＦＳ
１１２    圧縮ファイルシステム
１１３    プログラムローダ
２０１    ページ要求処理手段
２０２    ページ要求記録部
２０３    キャッシュ管理手段
２０４    キャッシュ
２０５    圧縮単位要求手段
２０６    圧縮単位要求記録部
２０７    伸張手段
２０８    ページ配置決定手段
２０９    動作区間記録部
２１０    ページ配置記録部
２１１    ファイルシステム更新手段
５０１    起動シーケンス監視手段
５０２    圧縮単位決定手段
５０３    圧縮単位配置手段
５０４    圧縮イメージ生成手段
【図１】
2010277495.tif 000003
【図２】
2010277495.tif 000004
【図３】
2010277495.tif 000005
【図４】
2010277495.tif 000006
【図５】
2010277495.tif 000007
【図６】
2010277495.tif 000008
【図７】
2010277495.tif 000009
【図８】
2010277495.tif 000010