(57)【特許請求の範囲】
【請求項１】
一次記憶装置であるＲＡＭと、二次記憶装置であるストレージとを備え、電源投入時に、ストレージに格納されているＯＳイメージをＲＡＭに展開してオペレーティングシステムを稼働させる電子機器であって、
前記ストレージには、前記ＯＳイメージが記憶された隠蔽領域と、ファイルが記憶されるデータ領域とが、当該順序で設けられており、
前記電子機器は、
前記オペレーティングシステム上で稼働するアプリケーションと、
前記ストレージの先頭から前記隠蔽領域の末尾までのサイズをオフセットとして、前記ストレージに記憶された各ファイルに対応するアドレスとして、当該ファイルのストレージ上のアドレスから前記オフセットを減じたアドレスを管理するファイル管理手段と、
前記アプリケーションから前記ファイルのデータのアクセスを要求するファイルデータアクセス要求が発生したときに、前記ファイル管理手段が管理している当該ファイルに対応するアドレスを、当該ファイルのストレージ上のアドレスと見なした場合の、当該データの前記ストレージ上のアドレスをアクセス先アドレスとする入出力命令を発行するアクセス先アドレス生成手段と、
発行された入出力命令に応答して、前記ストレージの、前記アクセス先アドレスに前記オフセットを加算したアドレスのデータにアクセスするストレージアクセス手段とを有することを特徴とする電子機器。
【請求項２】
請求項１記載の電子機器であって、
前記ストレージアクセス手段は、前記アプリケーションから発行された前記ストレージの特定のアドレスへのアクセスを要求するデータアクセス要求に応答して、前記ストレージの前記特定のアドレスにアクセスすることを特徴とする電子機器。
【請求項３】
請求項２記載の電子機器であって、
前記アプリケーションとして、
前記ファイルデータアクセス要求を発行して前記ストレージのファイルのデータにアクセスする第１のアプリケーションと、
前記ストレージの前記隠蔽領域内のアドレスへのアクセスを要求する前記データアクセス要求を発行して、前記隠蔽領域のＯＳイメージを更新する第２のアプリケーションとを有することを特徴とする電子機器。
【請求項４】
請求項１、２または３記載の電子機器であって、
前記アプリケーションからストレージの容量情報の取得要求が発行されたときに、前記ストレージの容量から前記オフセットを減じた容量を前記ストレージの容量として示す容量情報を応答するストレージ容量情報通知手段を有することを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器の起動に用いるＯＳイメージの保護に関するものである。
【背景技術】
【０００２】
二次記憶装置であるストレージにＯＳイメージのファイルを格納しておき、電源投入時にＯＳイメージをストレージから一次記憶装置であるＲＡＭに転送して、オペレーティングシステムを稼働させる電子機器が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３-４５３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ストレージは、オペレーティングシステム上で稼働する各アプリケーションによっても利用されるため、アプリケーションの誤動作によってストレージ上のＯＳイメージのファイルが破損してしまう可能性を排除できない。そして、ストレージ上のＯＳイメージファイルが破損してしまうと、電子機器を起動することができなくなったり、その他の深刻な不具合が発生してしまうことがある。
【０００５】
そこで、本発明は、ストレージに格納したＯＳイメージを用いてオペレーティングシステムを稼働する電子機器において、ストレージに格納したＯＳイメージをアプリケーションから保護することを課題とする。
【課題を解決するための手段】
【０００６】
前記課題達成のために、本発明は、一次記憶装置であるＲＡＭと、二次記憶装置であるストレージとを備え、電源投入時に、ストレージに格納されているＯＳイメージをＲＡＭに展開してオペレーティングシステムを稼働させる電子機器を提供する。ただし、前記ストレージには、前記ＯＳイメージが記憶された隠蔽領域と、ファイルが記憶されるデータ領域とが、当該順序で設ける。また、前記電子機器には、前記オペレーティングシステム上で稼働するアプリケーションと、前記ストレージの先頭から前記隠蔽領域の末尾までのサイズをオフセットとして、前記ストレージに記憶された各ファイルに対応するアドレスとして、当該ファイルのストレージ上のアドレスから前記オフセットを減じたアドレスを管理するファイル管理手段と、前記アプリケーションから前記ファイルのデータのアクセスを要求するファイルデータアクセス要求が発生したときに、前記ファイル管理手段が管理している当該ファイルに対応するアドレスを、当該ファイルのストレージ上のアドレスと見なした場合の、当該データの前記ストレージ上のアドレスをアクセス先アドレスとする入出力命令を発行するアクセス先アドレス生成手段と、発行された入出力命令に応答して、前記ストレージの、前記アクセス先アドレスに前記オフセットを加算したアドレスのデータにアクセスするストレージアクセス手段とを設ける。
【０００７】
このような電子機器によれば、ストレージアクセス手段は、アプリケーションのファイルデータアクセス要求に応答して生成されたアクセス先アドレスにオフセットを加えたストレージのアドレスにアクセスするので、アプリケーションのファイルデータアクセス要求によって、ストレージのオフセット以前のアドレスへのアクセスが発生することはない。したがって、ストレージのオフセット以前のアドレスに記憶されているＯＳイメージは、アプリケーションの誤動作から保護される。なお、アプリケーションのファイルデータアクセス要求に応答して生成されるアクセス先アドレスは、ファイルのストレージ上のアドレスからオフセットを減じた値であるので、アクセス先アドレスにオフセットを加えたストレージのアドレスにアクセスすることにより、正しく、アプリケーションからアクセスを要求されたファイルのデータにアクセスすることができる。
【０００８】
ここで、このような電子機器は、前記ストレージアクセス手段は、前記アプリケーションから発行された前記ストレージの特定のアドレスへのアクセスを要求するデータアクセス要求に応答して、前記ストレージの前記特定のアドレスにアクセスするように構成してもよい。また、この場合には、電子機器に、前記アプリケーションとして、前記ファイルデータアクセス要求を発行して前記ストレージのファイルのデータにアクセスする第１のアプリケーションと、前記ストレージの前記隠蔽領域内のアドレスへのアクセスを要求する前記データアクセス要求を発行して、前記隠蔽領域のＯＳイメージを更新する第２のアプリケーションとを備えるようにしてもよい。
【０００９】
このように、直接ストレージのアドレスを指定するデータアクセス要求を設けることにより、ファイルデータアクセス要求によるアクセスが上述のように禁止される隠蔽領域のＯＳイメージの更新等を行うことができるようになる。
【００１０】
ここで、以上の電子機器には、前記アプリケーションからストレージの容量情報の取得要求が発行されたときに、前記ストレージの容量から前記オフセットを減じた容量を前記ストレージの容量として示す容量情報を応答するストレージ容量情報通知手段を有することも好ましい。このようにすることにより、ファイル管理手段が示すストレージの容量と、容量情報の取得要求に対して応答する容量情報との間の食い違いを無くすことができる。
【発明の効果】
【００１１】
以上のように、本発明によれば、ストレージに格納したＯＳイメージを用いてオペレーティングシステムを稼働する電子機器において、ストレージに格納したＯＳイメージをアプリケーションから保護することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る電子機器の構成を示すブロック図である。
【図２】本発明の実施形態に係る電子機器の半導体ストレージの記憶内容とファイルシステムが管理するファイルの仮想物理アドレスとの対応を示す図である。
【図３】本発明の実施形態に係るストレージドライバの動作を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について説明する。
図１に、本実施形態に係る電子機器の構成を示す。
図示するように、本実施形態に係る電子機器は、コンピュータとしての基本構成を備えている。
すなわち、電子機器は、バス１で接続されたＣＰＵ２、ＤＭＡＣ３（ＤＭＡコントローラ３）、メモリコントローラ４、グラフィックコントローラ５、Ｉ／Ｏコントローラ６とを有している。
【００１４】
また、電子機器は、メモリコントローラ４によってリード/ライトやバス１との間の入出力が制御されるＲＡＭ７と不揮発性メモリ８を備えており、ＣＰＵ２やＤＭＡＣ３は、メモリコントローラ４を介して、ＲＡＭ７や不揮発性メモリ８にアクセスすることができる。ここで、ＲＡＭ７は一次記憶装置であり、ＲＡＭ７としてはＳＤＲＡＭなどを用いることができる。また、不揮発性メモリ８としてはNOR Flashメモリなどを用いることができる。
【００１５】
また、電子機器は、グラフィックコントローラ５による表示出力が行われるディスプレイ９を備えており、ＣＰＵ２は、グラフィックコントローラを介して、ディスプレイ９の表示を制御することができる。
【００１６】
また、電子機器は、Ｉ／Ｏコントローラ６に接続した入力装置１０、半導体ストレージ１１、その他の周辺装置１２を備えており、ＣＰＵ２やＤＭＡＣ３は、Ｉ／Ｏコントローラ６を介して、半導体ストレージ１１との間の入出力を行うことができる。なお、半導体ストレージ１１は二次記憶装置であり、半導体ストレージ１１としては、たとえば、ｅＭＭＣなどを用いることができる。
【００１７】
また、このような構成において、ＤＭＡＣ３は、ＣＰＵ２の要求に応えて、ＲＡＭ７や半導体ストレージ１１などの装置相互間の、ＣＰＵ２を介さないデータ転送であるダイレクトメモリアクセス転送を行う。
【００１８】
次に、半導体ストレージ１１の記憶内容を、半導体ストレージ１１に論理ボリューム（パーティション）が一つだけ形成されている場合を例にとり示す。
図２ａに示すように、半導体ストレージ１１は、半導体ストレージ１１上の論理ボリュームの管理情報等が記録されたストレージ管理領域と、隠蔽領域と、論理ボリューム領域とが、半導体ストレージ１１の先頭より、ストレージ管理領域、隠蔽領域と、論理ボリューム領域の順序で設けられている。
【００１９】
そして、隠蔽領域には、ＯＳイメージが記憶されている。
また、論理ボリューム領域には、論理ボリューム管理領域と、データ領域とが設けられている。
そして、論理ボリューム領域のデータ領域には、プログラムファイルやデータファイルを記憶することができる。また、論理ボリューム管理領域には、データ領域に記憶された各ファイルの物理アドレス(セクタ番号等)を示すFile Allocation Tableやディレクトリエントリなどの、論理ボリュームのファイルの管理情報であるファイルシステム情報などが記憶されている。なお、ファイルシステム情報の一部がデータ領域に記憶される場合もある。また、データ領域のファイルは、データ領域内に分散して記憶されている場合もある。
【００２０】
なお、半導体ストレージ１１に論理ボリュームが複数形成されている場合には、以上の論理ボリューム領域が、隠蔽領域の後に複数設けられることとなる。
次に、図２ｂに、本実施形態において、論理ボリュームのファイルシステム情報が示すファイルと物理アドレスとの関係を示す。
図示するように、論理ボリュームのファイルシステム情報は、論理ボリューム領域のデータ領域中の各ファイルの仮想物理アドレスを示す。また、ファイルシステム情報が示す各ファイルの仮想物理アドレスは、そのファイルの半導体ストレージ１１上の物理アドレスから、半導体ストレージ１１の先頭から隠蔽領域の末尾までのサイズｎを減算したアドレスとする。ここで、以下では、このサイズをオフセットｎと称する。
【００２１】
さて、電子機器に電源が投入されると、ＣＰＵ２は、不揮発性メモリ８に記憶されている初期プログラムを実行し半導体ストレージ１１の隠匿領域に記憶されているＯＳイメージを、ＤＭＡＣ３を利用してＲＡＭ７上に展開し、オペレーティングシステムを稼働する。ただし、隠匿領域に記憶されているＯＳイメージのＲＡＭ７上への展開は、不揮発性メモリ８に記憶されている初期プログラムで起動される半導体ストレージ１１上のブートプログラムによって行われるものであってよい。ファイルシステム情報を用いずに行われる。
【００２２】
なお、半導体ストレージ１１の隠匿領域に、ＯＳイメージと共に他のデータやプログラムを記憶しておき、ＯＳイメージをＲＡＭ７上へ展開する際に、当該他のデータやプログラムも、ＯＳイメージと共にＲＡＭ７上へ展開するようにしてもよい。
【００２３】
次に、このようにして稼働を開始したオペレーティングシステムは、起動されオペレーティングシステム上で稼働する各アプリケーションの半導体ストレージ１１のアクセスを以下のように制御する。
【００２４】
図３に示すように、オペレーティングシステム１００上で稼働するアプリケーションには、隠匿領域のＯＳイメージ等の内容を更新するアップデートアプリケーション２００と、その他の通常のアプリケーション３００とがある。
【００２５】
また、オペレーティングシステム１００は、半導体ストレージ１１のアクセスを行うストレージドライバ１０１と、後述する関数R/Wを処理するファイル操作API１０２と、後述する関数SP R/Wを処理するダイレクトアクセスAPI１０３と、ファイルシステム１０４とを有する。また、オペレーティングシステム１００の初期動作によって、半導体ストレージ１１の論理ボリュームのファイルシステム情報が、半導体ストレージ１１から読み出されオペレーティングシステム１００のファイルシステム１０４に組み込まれる。
【００２６】
このような構成において、通常のアプリケーション３００は、半導体ストレージ１１のアクセスに、ファイル操作API１０２がサポートする、ファイルのリード/ライト用の所定の関数を用いる。ここでは、通常のアプリケーション３００が半導体ストレージ１１のアクセスに用いる、ファイルのリード用の関数をR、ファイルのライト用の関数をWで表す。なお、関数R/W、ファイル操作API１０２はオペレーティングシステム標準の関数、APIである。
【００２７】
さて、通常のアプリケーション３００の関数R/Wを用いたファイルのアクセスは、上述した関数R/Wまたは関数R/Wに先だってファイル操作API１０２に発行した他の関数で、アクセスするファイルとアクセスするデータのファイル内の位置を示すアドレスとアクセスするデータのサイズとを指定して行う。いま、図３では、関数R/Wでアクセスするファイル（FILE）をＪ、リード/ライトするデータのファイル内位置を示すアドレス(ADR)をKで表している。
【００２８】
さて、ファイル操作API１０２は、アプリケーション３００からファイルＪのアドレスＫのデータへのリード/ライトを要求する関数R/W(file=J,ADR=K)が発行されたならば、ファイルシステム１０４に、ファイルＪのアドレスＫのデータの入力／出力の要求IOREQ R/W (file=J,ADR=K)を発行する。
そして、ファイルＪのアドレスＫのデータの入力／出力の要求IOREQ R/W (file=J,ADR=K)を受けた、ファイルシステム１０４は、ファイルシステム情報が示すファイルＪのアドレスＫに対応する仮想物理アドレスＸを取得し、ストレージドライバ１０１に、仮想物理アドレスＸの入力／出力を要求するコマンドIOCTL R/W (ADR=X)を発行する。
【００２９】
ストレージドライバ１０１は、コマンドIOCTL R/W (ADR=X)を受け取ったならば、コマンドIOCTL R/W (ADR=X)で指定された仮想物理アドレスＸに、オフセットｎを加算した物理アドレス（Ｘ+ｎ）を生成し、半導体ストレージ１１に、物理アドレス（Ｘ+ｎ）のデータのリード/ライトを行う命令IO R/W (ADR=X+ｎ)を発行し、半導体ストレージ１１の物理アドレス（Ｘ+ｎ）のデータのリード/ライトを行う。
【００３０】
ここで、仮想物理アドレスＸにオフセットｎを加算した物理アドレス（Ｘ+ｎ）は、ファイルの仮想物理アドレスがファイルの物理アドレスからオフセットｎを減算したアドレスであることより、アプリケーション３００がリード/ライトを要求したデータの正しい物理アドレスとなる。したがって、通常のアプリケーション３００は、半導体ストレージ１１の仮想データ領域の各ファイルに関数R/Wを用いて正しくアクセスすることができる。
【００３１】
一方、上述のように、通常のアプリケーション３００が発行する関数R/Wに応答してファイルシステム１０４が発行するIOCTL R/W (ADR=X)に対しては、常に、ストレージドライバ１０１において、オフセットｎが加算された物理アドレスがアクセスする物理アドレスとして生成される。したがって、半導体ストレージ１１の先頭から物理アドレスｎまでの物理アドレスがアクセス先の物理アドレスとして生成されることはないので、通常のアプリケーション３００が誤動作したとしても、半導体ストレージ１１の先頭から物理アドレスｎまでの間に設けられている隠蔽領域に記憶されているＯＳイメージ等に、関数R/Wによって半導体ストレージ１１にアクセスする通常のアプリケーション３００はアクセスすることができない。
【００３２】
よって、本実施形態によれば、半導体ストレージ１１に記憶したＯＳイメージを、関数R/Wによって半導体ストレージ１１にアクセスする通常のアプリケーション３００から保護することができる。
次に、アップデートアプリケーション２００は、以下のようにして隠蔽領域のＯＳイメージ等を更新する。
すなわち、アップデートアプリケーション２００は、隠蔽領域のアクセスに、ダイレクトアクセスAPI１０３がサポートする特別な関数SP Rと、SP Wとを用いる。ここで、SP Rが隠蔽領域のリード用の関数であり、SP Wが隠蔽領域のライト用の関数である。
また、関数SP R/Wではアクセスするデータを、関数SP R/W、または、関数SP R/Wに先だってダイレクトアクセスAPI１０３に発行した関数で設定した、当該データの物理アドレスで直接指定する。なお、関数SP R/W、ダイレクトアクセスAPI１０３は、オペレーティングシステム１００の標準構成に追加した関数、APIである。
【００３３】
いま、図３では、関数SP R/Wでアクセスするデータの物理アドレスをＹで表す。
さて、ダイレクトアクセスAPI１０３は、アップデートアプリケーション２００から物理アドレスＹのデータへのリード/ライトを要求する関数SP R/W(ADR=Y)が発行されたならば、ストレージドライバ１０１に、物理アドレスYの入力／出力を要求する特別なコマンドSP IOCTL R/W (ADR=Y)を発行する。なお、SP IOCTL R/Wも、オペレーティングシステム１００の標準構成に追加したコマンドである。
【００３４】
ストレージドライバ１０１は、コマンドSP IOCTL R/W (ADR=Y)を受け取ったならば、半導体ストレージ１１に物理アドレスＹのデータのリード/ライトを行う命令IO R/W (ADR=Y)を発行し、半導体ストレージ１１に物理アドレスＹのデータのリード/ライトを行う。
【００３５】
このように、本実施形態では、ファイルシステム１０４を介さずに、半導体ストレージ１１の物理アドレスに直接アクセスする関数SP R/Wを設け、アップデートアプリケーション２００において関数SP R/Wを用いて半導体ストレージ１１にアクセスするようにしたので、アップデートアプリケーション２００は隠蔽領域にアクセスすることができる。よって、アップデートアプリケーション２００によって、隠蔽領域に記憶したＯＳイメージ等の更新を行うことができる。
【００３６】
次に、ストレージドライバ１０１は、通常のアプリケーション３００等からオペレーティングシステム１００の標準の容量情報取得用の関数で、半導体ストレージ１１の容量の情報を要求された場合に、半導体ストレージ１１の実際の容量から、オフセットｎを減じた容量を、半導体ストレージ１１の容量の情報として応答する処理なども行う。これにより、ファイルシステム１０４がファイルシステム情報で表す半導体ストレージ１１の容量と、通常のアプリケーション３００等が認識する半導体ストレージ１１の容量との間に齟齬が生じないようにすることができる。
また、ストレージドライバ１０１は、標準の容量情報取得用の関数とは別にオペレーティングシステム１００に追加した容量情報取得用の関数で、半導体ストレージ１１の容量の情報を要求された場合には、半導体ストレージ１１の実際の容量を、半導体ストレージ１１の容量の情報として応答する処理なども行う。これにより、アップデートアプリケーション３００等は、追加した容量情報取得用の関数を用いて半導体ストレージ１１の容量を正しく認識することができるようになる。
【００３７】
以上、本発明の実施形態について説明した。
なお、本実施形態は、半導体ストレージ１１に代えて、半導体以外の記憶媒体を用いるストレージを用いる場合にも同様に適用することができる。
【符号の説明】
【００３８】
１…バス、２…ＣＰＵ、３…ＤＭＡＣ、４…メモリコントローラ、５…グラフィックコントローラ、６…Ｉ／Ｏコントローラ、７…ＲＡＭ、８…不揮発性メモリ、９…ディスプレイ、１０…入力装置、１１…半導体ストレージ、１２…周辺装置、１００…オペレーティングシステム、１０１…ストレージドライバ、１０２…ファイル操作API、１０３…ダイレクトアクセスAPI、１０４…ファイルシステム、２００…アップデートアプリケーション、３００…アプリケーション。
【図１】
0006318073.tif 000002
【図２】
0006318073.tif 000003
【図３】
0006318073.tif 000004