実施の形態1.
図1は、実施の形態1に係る情報処理装置100の構成例を示すブロック図である。情報処理装置100は、不揮発記憶部110と、共有記憶部120と、第1の制御部130と、第2の制御部140と、入力部150とを備える。また、情報処理装置100には、ドライブ160と、出力装置170とが接続されている。なお、図1の括弧内の符号は、実施の形態2における構成を示す。
不揮発記憶部110は、情報処理装置100の電源状態に関わらずに記憶しておく必要のある情報を記憶する。図2は、不揮発記憶部110が記憶している情報の一例を示す概略図である。図示するように、不揮発記憶部110は、ブートローダのプログラムデータ180と、第1のOSのプログラムデータ181と、第1のアプリケーションのプログラムデータ182と、第2のOSのプログラムデータ183と、第2のアプリケーションのプログラムデータ184とを記憶する。なお、図2の括弧内の符号は、実施の形態2における情報を示す。
ブートローダのプログラムデータ180は、第1のOSを起動させるために必要なプログラムのデータである。
第1のOSのプログラムデータ181は、電源投入から起動完了までの時間が第2のOSよりも長いOSのプログラムのデータである。例えば、本実施の形態においては、第1のOSは、Linux(登録商標)又はWindows(登録商標)といった、高機能で、起動時間の長いOSである。
第1のアプリケーションのプログラムデータ182は、第1のOS上で動作するアプリケーションのプログラムのデータである。本実施の形態においては、第1のアプリケーションは、情報処理装置100における全機能を実現することのできるフルアプリケーションである。
第2のOSのプログラムデータ183は、電源投入から起動完了までの時間が第1のOSよりも短いOSのプログラムのデータである。例えば、本実施の形態においては、第2のOSは、ITRON(登録商標)又はVxWORKS(登録商標)といった、低機能ではあるが高速に起動することができるOSである。
第2のアプリケーションのプログラムデータ184は、第2のOS上で動作するアプリケーションのプログラムのデータである。本実施の形態においては、第2のアプリケーションは、情報処理装置100における一部の機能だけを実現することのできる簡易アプリケーションである。ここで、第2のアプリケーションは、電源投入から起動完了までの時間が、第1のアプリケーションよりも短い。
図1の説明に戻り、共有記憶部120は、第1の制御部130及び第2の制御部140の間で共有すべき情報を記憶する。共有記憶部120は、第1の制御部130及び第2の制御部140からの指示に従って、情報の読み込み及び書き込みを行う。図3は、共有記憶部120におけるデータ構造の一例を示す概略図である。図示するように、共有記憶部120は、通信情報記憶領域121と、引継情報記憶領域122とを備える。
通信情報記憶領域121には、第1の制御部130と第2の制御部140との間でやり取りされる通信情報が記憶される。例えば、本実施の形態においては、後述する切替開始通知及び切替完了通知等が通信情報として通信情報記憶領域121に記憶される。
引継情報記憶領域122には、第1のアプリケーションが、第2のアプリケーションでの制御処理を引き継ぐために必要な引継情報が記憶される。例えば、本実施の形態においては、引継情報記憶領域122には、第2のアプリケーションで既に行われた処理の状態を示す、第2のアプリケーションの内部状態情報185が引継情報として記憶される。
図1の説明に戻り、第1の制御部130は、不揮発記憶部110に記憶されているプログラムデータを読み込んで、第1のOS及び第1のアプリケーションを実行する。図示するように、第1の制御部130は、第1の演算処理部131と、第1の記憶部132と、第1の制御バス133とを備える。
第1の演算処理部131は、不揮発記憶部110から、ブートローダのプログラムデータ180、第1のOSのプログラムデータ181及び第1のアプリケーションのプログラムデータ182を読み込み、第1の記憶部132に書き込む。そして、第1の演算処理部131は、第1のOS及び第1のアプリケーションを起動させて、第1のアプリケーションに基づいて、情報処理装置100の制御処理を行う。なお、第1の演算処理部131は、第1のアプリケーションに基づいて、情報処理装置100の制御処理を行う際には、第2のアプリケーションで既に行われた処理を引き継ぐために、共有記憶部120から、内部状態情報185を読み込み、第1のアプリケーションと第2のアプリケーションとの間の同期を取る同期処理を行う。
第1の記憶部132は、第1の演算処理部131が処理を行う際に必要な情報を記憶する。図4は、第1の記憶部132が記憶する情報の一例を示す概略図である。なお、図4の括弧内の符号は、実施の形態2における情報を示す。
第1の記憶部132は、ブートローダのプログラムデータ1801、第1のOSのプログラムデータ1811及び第1のアプリケーションのプログラムデータ1821を記憶する。ブートローダのプログラムデータ1801、第1のOSのプログラムデータ1811及び第1のアプリケーションのプログラムデータ1821は、ブートローダのプログラムデータ180、第1のOSのプログラムデータ181及び第1のアプリケーションのプログラムデータ182が展開されたものである。
また、第1の記憶部132は、第1の演算処理部131が処理を行う際に一時的に必要な情報である第1の一時データ186を記憶する。第1の一時データ186には、例えば、共有記憶部120から読み出された内部状態情報185等が含まれる。
図1の説明に戻り、第1の制御バス133は、第1の制御部130の制御信号及び各種情報を伝達するバスであり、第1の演算処理部131及び第1の記憶部132を接続している。また、第1の制御部130が、入力部150から入力信号を受け取る際、並びに、共有記憶部120及び不揮発記憶部110との間のデータのやり取りを行う際にも、第1の演算処理部131は、この第1の制御バス133を用いる。
第2の制御部140は、不揮発記憶部110に記憶されているプログラムデータを読み込んで、第2のOS及び第2のアプリケーションを実行する。図示するように、第2の制御部140は、第2の演算処理部141と、第2の記憶部142と、デバイス制御部143と、第2の制御バス144とを備える。
第2の演算処理部141は、不揮発記憶部110から、第2のOSのプログラムデータ183及び第2のアプリケーションのプログラムデータ184を読み込み、第2の記憶部142に書き込む。そして、第2の演算処理部141は、第2のOS及び第2のアプリケーションを起動させて、第2のアプリケーションに基づいて、情報処理装置100の制御処理を行う。また、第2の演算処理部141は、第1の演算処理部131から後述する切替開始通知を受け取った際には、第2のアプリケーションで既に行われた処理を引き継がせるために、内部状態情報185を生成して、この内部状態情報185を共有記憶部120に記憶させる制御権限委譲処理を行う。さらに、第2の演算処理部141は、デバイス制御部143を介して、情報処理装置100に接続されている各種デバイスを制御するデバイス制御処理を行う。
第2の記憶部142は、第2の演算処理部141が処理を行う際に必要な情報を記憶する。図5は、第2の記憶部142が記憶する情報の一例を示す概略図である。なお、図5の括弧内の符号は、実施の形態2における情報を示す。
第2の記憶部142は、第2のOSのプログラムデータ1831及び第2のアプリケーションのプログラムデータ1841を記憶する。第2のOSのプログラムデータ1831及び第2のアプリケーションのプログラムデータ1841は、第2のOSのプログラムデータ183及び第2のアプリケーションのプログラムデータ184が展開されたものである。
また、第2の記憶部142は、第2の演算処理部141が処理を行う際に一時的に必要な情報である第2の一時データ187を記憶する。第2の一時データ187には、例えば、第2の演算処理部141が生成した内部状態情報185等が含まれる。
図1の説明に戻り、デバイス制御部143は、情報処理装置100に接続されている様々なデバイスに対して、第2の演算処理部141からの指示に従って制御を行う。例えば、本実施の形態においては、デバイス制御部143は、ATAインタフェース(図示せず)等を介して情報処理装置100に接続されているドライブ160に対して制御することで、ドライブ160に挿入されている記録媒体に記録されている、映像及び音声等のコンテンツに関する信号を読み込む処理を行う。また、デバイス制御部143は、ドライブ160から読み込まれた信号をデコードして、映像情報及び音声情報を生成し、例えば、HDMIインタフェース(図示せず)等を介して情報処理装置100に接続されている出力装置170等に転送することで、映像及び音声をユーザに提示する処理を行う。
第2の制御バス144は、第2の制御部140の制御信号及び各種情報を伝達するバスであり、第2の演算処理部141、第2の記憶部142及びデバイス制御部143を接続している。また、第2の制御部140が、入力部150から入力信号を受け取る際、並びに、共有記憶部120及び不揮発記憶部110との間のデータのやり取りを行う際にも、第2の演算処理部141は、この第2の制御バス144を用いる。
なお、第2の演算処理部141は、共有記憶部120及び不揮発記憶部110との間のデータのやり取りを行う際に、第1の演算処理部131が用いる第1の制御バス133とは異なる第2の制御バス144を用いる。このため、第2の演算処理部141は、共有記憶部120及び不揮発記憶部110との間のデータのやり取りを行う際に、第1の演算処理部131での処理の完了待ちをする等、第1の演算処理部131での処理状態に影響されない。
入力部150は、外部からのユーザ操作の入力を受け付ける。そして、入力部150は、ユーザからの操作の入力を受け付けた際に、その操作内容を示す入力信号を第1の制御部130及び第2の制御部140の何れか一方に通知する。
図6は、情報処理装置100の起動時の処理の流れを概略的に示すタイムチャートである。情報処理装置100は、電源投入直後は、第2の制御部140で情報処理装置100の制御を行い、その後、第2の制御部140から第1の制御部130に制御権限を委譲して、第1の制御部130で情報処理装置100の制御を行う。
まず、時刻T0において、電源が投入されると、第1の制御部130では、第1の演算処理部131が、不揮発記憶部110からブートローダのプログラムデータ180を読み出し、第1の記憶部132にこのプログラムデータを展開することで、ブートローダのプログラムデータ1801とする。また、第2の制御部140では、第2の演算処理部141が、不揮発記憶部110から第2のOSのプログラムデータ183を読み出し、第2の記憶部142にこのプログラムデータを展開することで、第2のOSのプログラムデータ1831とする。なお、電源は、例えば、入力部150を介して投入されてもよく、また、図示されてはいないが、電源投入用の専用の操作ボタン等からなる電源投入部が備えられ、この電源投入部を介して投入されてもよい。
次に、時刻T1において、第2の制御部140では、第2の演算処理部141が、不揮発記憶部110から第2のアプリケーションのプログラムデータ184を読み出し、第2の記憶部142にこのプログラムデータを展開することで、第2のアプリケーションのプログラムデータ1841とする。
次に、時刻T2において、第1の制御部130では、第1の演算処理部131が、第1の記憶部132に展開されているブートローダのプログラムデータ1801に基づいて、ブートローダを実行する。
次に、時刻T3において、第2の制御部140では、第2の演算処理部141が、第2の記憶部142に展開されている第2のOSのプログラムデータ1831に基づいて、第2のOSの起動処理を行う。なお、第2の制御部140が第2のOSを起動させる過程に含まれる時刻T4以降、情報処理装置100に接続されている出力装置170には、黒画面等の初期画面が表示される。
次に、時刻T5において、第1の制御部130では、第1の演算処理部131が、実行されているブートローダに基づいて、不揮発記憶部110から第1のOSのプログラムデータ181を読み出し、第1の記憶部132にこのプログラムデータを展開することで、第1のOSのプログラムデータ1811とする。
次に、時刻T7において、第2の制御部140では、第2の演算処理部141が、第2の記憶部142に展開されている第2のアプリケーションのプログラムデータ1841に基づいて、第2のアプリケーションの起動処理を行う。
次に、時刻T8において、第1の制御部130では、第1の演算処理部131が、不揮発記憶部110から第1のアプリケーションのプログラムデータ182を読み出し、第1の記憶部132にこのプログラムデータを展開することで、第1のアプリケーションのプログラムデータ1821とする。
次に、時刻T9において、第2の制御部140では、第2の演算処理部141が、第2のアプリケーションの起動過程で、デバイス制御部143の起動を行う。
次に、時刻T10において、第1の制御部130では、第1の演算処理部131が、不揮発記憶部110に展開されている第1のOSのプログラムデータ1811に基づいて、第1のOSの起動処理を行う。
次に、時刻T11において、第2の制御部140では、第2の演算処理部141が、デバイス制御部143の起動を行うことで、情報処理装置100に接続されているドライブ160及び出力装置170への制御を行うことができるようになる。
次に、時刻T12において、第2の制御部140では、第2の演算処理部141が、第2のアプリケーションの起動を完了し、第2のアプリケーションによる情報処理装置100の制御処理を開始する。そして、時刻T13において、第2の演算処理部141は、第2のアプリケーションが提供する簡易GUI(Graphical User Interface)を、デバイス制御部143を介して、出力装置170に与えて、出力装置170にこの簡易GUIを表示させる。これにより、第2の制御部140は、簡易GUIを介して、ユーザからの操作要求を受け付けることができるようになる。ここで、簡易GUIは、第2のアプリケーションが実行可能な、情報処理装置100の一部の機能だけに対応した第2のGUIである。
次に、時刻T14において、第1の制御部130では、第1の演算処理部131が、第1のOSの起動を完了し、その後、ドライバ等の各種モジュールのロードを行う。
次に、時刻T16において、第1の制御部130では、第1の演算処理部131が、第1の記憶部132に展開されている第1のアプリケーションのプログラムデータ1821に基づいて、第1のアプリケーションの起動処理を行う。
次に、時刻T18において、第1の制御部130で第1のアプリケーションの起動が完了すると、第1の演算処理部131は、情報処理装置100の制御権限を第1の制御部130に切り換えることが可能になったことを第2の制御部140に通知するため、制御権限切換開始通知を第2の制御部140に与える。その後、第1の制御部130は、第2の制御部140からの制御権限切換完了通知待ちとなる。
このような制御権限切換開始通知を受け取った第2の制御部140では、第2の演算処理部141が、第2のアプリケーションに基づいて、制御権限委譲処理を実行する。ここで、制御権限委譲処理は、第2のアプリケーションで実行中だった、情報処理装置100の制御処理を中断し、必要な情報を第1のアプリケーションに引き継ぐ処理である。このような処理を行うことで、第2のアプリケーションで実行されていた情報処理装置100の制御処理を、第1のアプリケーションで継続できるようになる。制御権限委譲処理には、第2のアプリケーションが受け付けていた、入力部150からの入力信号を、第1のアプリケーションに与えたり、第2のアプリケーションで管理している情報処理装置100の制御情報、例えば、再生中又は早送り中といった再生状態等を、第1のアプリケーションに与えたりする処理等が含まれる。なお、制御権限委譲処理に含まれる処理は、上記のものに限るわけではなく、例えば、コンテンツの現在の再生位置を示す再生位置情報、及び、GUI画面の現在の表示画面を示す表示画面情報等、他の引継情報の受け渡す処理を行ってもよい。
時刻T19において、第2の制御部140にて制御権限委譲処理が完了すると、第2のアプリケーションで情報処理装置100の制御処理を終了して、第1のアプリケーションに制御権限を委譲することを第1の制御部130に通知するため、第2の演算処理部141は、制御権限切換完了通知を第1の制御部130に与え、第2の演算処理部141は、第2のアプリケーションによる情報処理装置100の制御処理を終了するが、第2のアプリケーションによるデバイス制御処理は継続して行う。このような制御権限切換完了通知を受け取った第1の制御部130では、第1の演算処理部131が、同期処理を行った上で、第1のアプリケーションに基づいて、情報処理装置100の制御処理を開始する。そして、時刻T20において、第1の演算処理部131は、第2の制御部140を介して、ユーザに提示すべきフルGUI画面を出力装置170に表示させ、ユーザからの操作要求を受け付ける。ここで、フルGUIは、情報処理装置100の全ての機能に対応した第1のGUIである。
なお、例えば、時刻T6のように、第1の制御部130及び第2の制御部140が共にアプリケーションの起動を完了していないタイミングで、ユーザが入力部150に再生要求を入力した場合は、何れの制御部130、140においても情報処理装置100の制御処理を行うことができないため、その処理要求は無視(キャンセル)されることになる。
その後、時刻T15のように、第2の制御部140において第2のアプリケーションが起動完了した後のタイミングで、ユーザが入力部150に再生要求を入力した場合は、制御権限を有している第2の制御部140において、第2の演算処理部141が、第2のアプリケーションにより再生処理の制御を行う。
一方、時刻T17のように、第2のアプリケーションは起動が完了しているが、第1のアプリケーションは起動が完了していないタイミングで、第2のアプリケーションの制御対象外である処理、例えば、サーチ処理の要求をユーザが入力部150に入力した場合は、制御権限を有している第2の制御部140において、第2の演算処理部141が、第2のアプリケーションにより入力信号を受け取った上で、制御対象外として要求を無視(キャンセル)する。
また、時刻T21のように、第1の制御部130において第1のアプリケーションの起動が完了し、情報処理装置100の制御権限の切り換えが完了したタイミングで、ユーザが入力部150に再生要求を入力した場合は、制御権限を有している第1の制御部130において、第1の演算処理部131が第1のアプリケーションにより再生処理の制御を行う。さらに、時刻T22において、ユーザが入力部150にサーチ処理要求を入力した場合も、第1の演算処理部131が第1のアプリケーションによりサーチ処理の制御を行う。
以上のように、本発明を適用した情報処理装置100は、第1の制御部130において第1のアプリケーションの起動が完了するまでの間に、より早いタイミングで起動が完了する第2のアプリケーションにより第2の制御部140が制御を開始するため、電源を投入してから、各種操作が有効になるまでの時間、言い換えると、情報処理装置100の起動時間を短縮することができる。
なお、時刻T18の制御権限切換開始通知及び時刻T19の制御権限切換完了通知は、共有記憶部120の通信情報記憶領域121に、通知を送信する方の制御部が通知内容を示す情報を書き込み、他方の制御部がその領域を参照することで通信が行われている。しかしながら、通信方法はこのような方法に限られるものではなく、例えば、第1の演算処理部131と第2の演算処理部141とは、直接通信を行ってもよいし、他の方法で通信を行ってもよい。
なお、第2のアプリケーションで実装対象とする情報処理装置100の機能は、例えば再生、停止、早送り及び早戻し等のような、情報処理装置100の基本的な機能としてユーザに提供するものである。一方、実装対象外とする機能は、例えば、対象となる記録媒体に記録されている多数のコンテンツをサーチする機能、及び、複数のドライブを有している場合に対象となるドライブを切り換える機能等のように、情報処理装置100の付加機能としてユーザに提供するようなものである。なお、本実施の形態における第2のアプリケーションが実装する機能は、上述した基本機能だけに限定されるものではなく、上述した付加機能の一部を実装してもよく、又は、情報処理装置100の全ての機能を実装してもよい。また、上述した基本機能についてもその一部だけが実装対象とされてもよい。
図7は、第1の制御部130における起動処理を示すフローチャートである。図7に示されているフローチャートは、情報処理装置100の電源が投入されることにより開始される。
まず、第1の制御部130が有する第1の演算処理部131は、第1の制御部130を起動する際に最初に実行されるブートローダのプログラムデータ180を、第1の制御部130に接続されている不揮発記憶部110から読み込み、そのデータを第1の制御部130が有する第1の記憶部132にコピーする(S10)。
次に、第1の演算処理部131は、ステップS10で第1の記憶部132に記憶されたブートローダのプログラムデータ1801に基づいて、ブートローダを実行する(S11)。この処理には、例えば、第1のOSが起動するときに作業領域として使用する領域を、第1の記憶部132に確保する処理、及び、その領域を初期化する処理が含まれる。そのほかにも、第1のOSを起動するために必要な処理が含まれる。
次に、第1の演算処理部131は、ステップS11でブートローダを実行することにより、第1の制御部130で実行する第1のOSのプログラムデータ181を、不揮発記憶部110から読み込み、そのデータを第1の記憶部132にコピーする(S12)。また、同様に、第1の演算処理部131は、第1の制御部130で実行する第1のアプリケーションのプログラムデータ182を、不揮発記憶部110から読み込んで、第1の記憶部132にコピーする(S13)。
次に、第1の演算処理部131は、ステップS12で第1の記憶部132に記憶された第1のOSのプログラムデータ1811を実行して、第1のOSの起動を行う(S14)。この処理には、例えば、第1のOSが作業領域として使用する領域を第1の記憶部132に確保する処理、及び、その領域を初期化する処理が含まれる。そのほかにも、第1のOSを実行するために必要な処理が含まれる。また、このステップS14における第1のOSの起動処理を行うことで、第1の演算処理部131は、第1のOSが管理するドライバ等のモジュールのロードも行う(S15)。
次に、第1の演算処理部131は、ステップS13で第1の記憶部132に記憶された第1のアプリケーションのプログラムデータ1821に基づいて、第1のアプリケーションの起動を行う(S16)。この処理には、例えば、フルアプリケーションが作業領域として使用する領域を第1の記憶部132から確保する処理、及び、その領域を初期化する処理が含まれる。そのほかにも、フルアプリケーションを起動するために必要な処理が含まれる。
以上に記載したステップS10からステップS16までの処理で、第1の制御部130の起動処理が完了するため、次に、第1の演算処理部131は、情報処理装置100の制御権限を譲り受ける処理を始める。
まず、第1の演算処理部131は、入力部150に指示することにより、入力部150における入力信号の出力先を第2の制御部140から第1の制御部130に切り替えさせる(S17)。この処理は、ユーザからの操作要求に対応する入力信号を、入力部150から第1の制御部130が受けられるようにするための処理である。
次に、第1の演算処理部131は、第1のアプリケーションの起動が完了したことを第2の制御部140に通知して、制御権限を譲り受けるために、制御権限切換開始通知を第2の制御部140に与える(S18)。
そして、第1の演算処理部131は、第2の制御部140から制御権限切換完了通知を取得したか否かを確認し(S19)、制御権限切換完了通知を取得した場合(ステップS19でYes)には、ステップS20の処理に進む。
なお、ステップS18における制御権限切替開始通知及びステップS19における制御権限切換開始通知の授受は、共有記憶部130に用意されている通信情報記憶領域121に、通知内容を示す情報を書き込むことで実現される。
ステップS20では、第1の演算処理部131は、共有記憶部120に用意されている引継情報記憶領域122に書き込まれている内部状態情報185に従って、第1のアプリケーションの内部状態を、第2のアプリケーションの内部状態と同期させる。なお、ステップS20における同期処理については、図8を用いて詳細に説明する。
そして、第1の演算処理部131は、ステップS20における同期処理の結果を反映させたフルGUIの画面の表示を第2の制御部140に要求する(S21)。この画面表示要求の授受についても、共有記憶部120に用意されている通信情報記憶領域121に要求内容を示す情報を書き込むことで実現される。
また、以上のステップS21までの処理によって第1の制御部130での起動処理が終了し、以降、第1の演算処理部131は、入力部150を介して入力されるユーザの操作要求に応じて、情報処理装置100の制御処理を第1のアプリケーションに基づいて行う。なお、第1の演算処理部131は、ドライブ160及び出力装置170に対して必要な処理を行う場合には、必要なデバイス制御処理を第2の制御部140に要求する。
図8は、図7のステップS20において、第1の制御部130が行う第1のアプリケーションの同期処理を示すフローチャートである。
まず、第一の演算処理部131は、共有記憶部120に用意されている引継情報記憶領域122に書き込まれている内部状態情報185を読み込む(S30)。
次に、第1の演算処理部131は、ステップS30で読み込まれた内部状態情報185で示されている第2のアプリケーションの内部状態を、第1のアプリケーションの内部状態に反映させる(S31)。
次に、第1の演算処理部131は、ステップS31にて反映した内部状態を元に、フルGUIの状態遷移を行い(S32)、同期処理を完了する。
図9は、第2の制御部140における起動処理を示すフローチャートである。図9に示されているフローチャートは、情報処理装置100の電源が投入されることにより開始され、図7に示されているフローチャートと並行して行われる。
まず、第2の制御部140が有する第2の演算処理部141は、第2の制御部140で実行する第2のOSのプログラムデータ183を、第2の制御部140に接続されている不揮発記憶部110から読み込み、そのデータを第2の制御部140が有する第2の記憶部142にコピーする(S40)。また、同様に、第2の演算処理部141は、第2の制御部140で実行する第2のアプリケーションのプログラムデータ183を、不揮発記憶部110から読み込んで、第2の記憶部142にコピーする(S41)。
次に、第2の演算処理部141は、ステップS40で第2の記憶部142に記憶された第2のOSのプログラムデータ1831に基づいて、第2のOSの起動を行う(S42)。この処理には、例えば、第2のOSが作業領域として使用する領域を第2の記憶部142に確保する処理、及び、その領域を初期化する処理が含まれる。そのほかにも、第2のOSを実行するために必要な処理が含まれる。
次に、第2の演算処理部141は、ステップS41で第2の記憶部142に記憶された第2のアプリケーションのプログラムデータ1841に基づいて、第2のアプリケーションの起動を行う(S43)。この処理には、例えば、第2のアプリケーションが作業領域として使用する領域を第2の記憶部142に確保する処理、及び、その領域を初期化する処理が含まれる。そのほかにも、第2のアプリケーションを起動するために必要な処理が含まれる。
次に、第2の演算処理部141は、ステップS43で第2のアプリケーションを起動することにより、第2の制御部140に接続されているデバイスを制御するデバイス制御部143の起動を行い、デバイス制御処理を行うことが可能な状態にする(S44)。この処理には、例えば、情報処理装置100に接続されているドライブ160に対して初期化を行う信号を送信したり、映像情報及び音声情報をデコードするための初期設定を行ったりする処理が含まれる。そのほかにも、デバイス制御処理を行うために必要な処理が含まれる。
次に、第2の演算処理部141は、ステップS43で起動した第2のアプリケーションが実現する簡易GUIの起動を行い、ステップS44で初期化したデバイス制御部134に対して、その簡易GUIの画面を出力装置170に表示するように制御する(S45)。
そして、第2の演算処理部141は、第2のアプリケーションに基づいて、情報処理装置100の制御処理を行う(S46)。この情報処理装置100の制御処理には、例えば、入力部150に入力されたユーザからの操作要求に対する再生制御処理、簡易GUIの操作処理、情報処理装置100に接続されているドライブ160及び出力装置170に対する制御信号の送出処理、コンテンツ情報の読込処理、並びに、映像信号及び音声信号のデコード処理、といった処理が含まれる。
次に、第2の演算処理部141は、第1の制御部130から制御権限切替開始通知を受け取ったか否かを確認する(ステップS47)。そして、第2の演算処理部141は、制御権限切替開始通知を受け取った場合(ステップS47でYes)には、ステップS48の処理に進み、制御権限切替開始通知を受け取っていない場合(ステップS47でNo)には、ステップS46の処理に戻る。なお、この制御権限切換開始通知を受け取る処理は、共有記憶部120に用意されている通信情報記憶領域121に書き込まれた通知内容を示す情報を読み込むことで実現する。
ステップS48では、第2の演算処理部141は、情報処理装置100の制御権限を委譲するための処理を行う。このステップS48での制御権限委譲処理は、より具体的には、第2のアプリケーションで行っていた情報処理装置100の制御処理及びデバイス制御処理を中断し、第1のアプリケーションが第2のアプリケーションでの制御処理を引き継いで、処理を継続できるようにするための処理である。なお、ステップS48での制御権限委譲処理については、図10を用いて詳細に説明する。
次に、第2の演算処理部141は、ステップS48における制御権限委譲処理が完了し、情報処理装置100の制御権限を第1の制御部130に委譲する準備が整ったら、第1の制御部130に対して制御権限切換完了通知を与える(S49)。この制御権限切換完了通知の授受についても、共有記憶部120に用意されている通信情報記憶領域121に通知内容を示す情報を書き込むことで実現する。
次に、第2の演算処理部141は、第1の制御部130から、フルGUIの画面描画を要求されたか否かを確認する(S50)。そして、第2の演算処理部141は、このような要求を受けた場合(ステップS50でYes)には、ステップS51の処理に進む。
ステップS51では、第2の演算処理部141は、描画中の簡易GUIの表示の終了をデバイス制御部143に対して要求することで、簡易GUIの表示を終了させる。
次に、第2の演算処理部141は、第1の制御部130から要求されたフルGUIの描画をデバイス制御部143に対して要求することで、フルGUIを出力装置170に表示させる(S52)。このステップS52で描画するフルGUIの情報も、共有記憶部120に用意されている通信情報記憶領域121を介して、第2の制御部140に与えられる。
以上のステップS52までの処理によって、第2の制御部140での起動処理が終了し、以降、第2の演算処理部141は、第1の制御部130からのデバイス制御の要求に応じて、デバイス制御部143の制御を行う。
図10は、図9のステップS48における制御権限委譲処理を示すフローチャートである。
まず、第2の演算処理部141は、入力部150から通知された、ユーザからの操作要求の中で、第2の制御部140で受け付けたが、まだ処理できていないものがあるか否かを確認する(S60)。そして、第2の演算処理部141は、まだ処理できていない操作要求が存在する場合(ステップS60でYes)には、ステップS61の処理に進み、まだ処理できていない操作要求が存在しない場合(ステップS60でNo)には、ステップS62の処理に進む。
ステップS61では、第2の演算処理部141は、未処理の操作要求に応じた処理を実行して、完了させる。
一方、ステップS62では、第2の演算処理部141は、第2のアプリケーションに基づく、情報処理装置100の制御処理及びデバイス制御部143へのデバイス制御処理を中断する。
次に、第2の演算処理部141は、第2のアプリケーションの内部状態に関する情報、例えば、通常再生中又は早送り再生中といったデバイス制御状態に関する情報等を抽出して、内部状態情報185を生成する(S63)。なお、第2のアプリケーションの内部状態に関する情報は、上述のデバイス制御状態に限られるものではなく、例えば、簡易GUIにて表示中の画面を示す画面状態を示す情報が含まれていてもよく、また、それ以外の状態を示す情報が含まれていてもよい。さらに、コンテンツの現在の再生位置といった情報が含まれていてもよい。
そして、第2の演算処理部141は、ステップS63で生成された内部状態情報185を、共有記憶部120の引継情報記憶領域122に書き込む(S64)。
次に、第2の演算処理部141は、ステップS62で中断していた制御処理の内、デバイス制御部143へのデバイス制御処理を再開して(S65)、制御権限委譲処理を終了する。
以上のように、本実施の形態に係る情報処理装置100によれば、高速に起動できる第2のOSを電源投入直後に起動させて、その第2のOS上で動作する第2のアプリケーションにより情報処理装置100の制御処理を実行しているため、起動開始後、比較的速いタイミングで情報処理装置100の制御処理を開始することができるようになり、情報処理装置100の体感的な起動時間を短縮させることができる。
以上に記載した情報処理装置100の効果を、特許文献1に記載されている電子機器のように、第1の演算処理部及び第2の演算処理部が、一つの制御バスを介して、共有メモリ及びフラッシュメモリにアクセスする従来例を適用した情報処理装置と比較する。
ここで、例えば、第1の演算処理部ではじめに起動させるブートローダのプログラムサイズを2MByte、第1の演算処理部で動作させる第1のOS及び第1のアプリケーションのプログラムサイズをあわせて55MByte、第2の演算処理部で動作させる第2のOS及び第2のアプリケーションのプログラムサイズをあわせて15MByteと仮定する。また、第1の演算処理部及び第2の演算処理部が、不揮発記憶部であるフラッシュメモリからデータを読み出す速度を160MByte/秒、共有メモリに書き込む速度を600MByte/秒と仮定する。さらに、第1の演算処理部が単独で第1のアプリケーションを起動させるために要する時間が3秒、第2の演算処理部が単独で第2のアプリケーションを起動させるために要する時間が1秒であると仮定する。そして、特許文献1に記載されている電子機器のように、第1の演算処理部と第2の演算処理部とが一つの制御バスを平等に共有し、第1の演算処理部と第2の演算処理部とが共に動作している場合には、これらが単独で動作している場合と比べて、処理時間が2倍になると仮定する。
上述した仮定において、従来例を適用した情報処理装置が起動するために要する時間は、第1の演算処理部がフラッシュメモリから第1の演算処理部用と第2の演算処理部用の各種データ(ブートローダ、第1のOS、第2のOS、第1のアプリケーション及び第2のアプリケーションのプログラムデータ)を読み込むために必要な時間(=72MByte÷160MByte/秒)と、共有メモリに第1の演算処理部用と第2の演算処理部用の各種データを書き込むために必要な時間(=72MByte÷600MByte/秒)と、第二の演算処理部において第2のアプリケーションを起動させるために必要な時間(=1秒×2倍)とを加算することにより、約2.6秒となる。
一方、上述した仮定において、本発明を適用した情報処理装置100が起動するために要する時間は、第2の演算処理部141がフラッシュメモリから第2の演算処理部141用の各種データ(第2のOS及び第2のアプリケーションのプログラムデータ)を読み込むために必要な時間(=15MByte÷160MByte/秒)と、第2の記憶部142に第2の演算処理部141用の各種データを書き込むために必要な時間(=15MByte÷600MByte/秒)と、第2の演算処理部141において第2のアプリケーションを起動させるために必要な時間(=1秒)とを加算することにより、約1.1秒となる。
このように、上述した仮定において、第2の演算処理部141側で第2のアプリケーションを起動するために要する時間は、本発明を適用した情報処理装置100では、従来例を適用した情報処理装置と比較して約58%削減されることがわかる。つまり、本発明を適用した情報処理装置100の方が約58%高速に起動する。
また、上述した仮定において、第1の演算処理部131側で動作する第1のアプリケーションを起動するために要する時間をさらに検証する。
従来例を適用した情報処理装置で必要な時間は、第1の演算処理部がフラッシュメモリから第1の演算処理部用と第2の演算処理部用の各種データ(ブートローダ、第1のOS、第2のOS、第1のアプリケーションのプログラムデータ及び第2のアプリケーションのプログラムデータ)を読み込むために必要な時間(=72MByte÷160MByte/秒)と、共有メモリに第1の演算処理部131用と第2の演算処理部141用の各種データを書き込むために必要な時間(=72MByte÷600MByte/秒)と、第1の演算処理部131側で動作する第1のアプリケーションを起動させるために必要な時間(=3秒×2倍)とを加算することにより、約6.6秒となる。
一方、本発明を適用した情報処理装置100で必要な時間は、第1の演算処理部131がフラッシュメモリから第1の演算処理部131用の各種データ(ブートローダ、第1のOS及び第1のアプリケーションのプログラムデータ)を読み込むために必要な時間(=57MByte÷160MByte/秒)と、第1の記憶部132に第1の演算処理部131用の各種データを書き込むために必要な時間(=57MByte÷600MByte/秒)と、第1の演算処理部131側で動作する第1のアプリケーションを起動させるために必要な時間(=3秒)とを加算することにより、約3.5秒となる。
このように、上述した仮定において、第1のアプリケーションを起動させてすべての機能を実行できるようになるために必要な時間は、本発明を適用した情報処理装置100では、従来例を適用した情報処理装置と比較して、約47%削減されることがわかる。つまり、本発明を適用した情報処理装置100の方が、約47%高速に全機能を実行可能になる。
また、以上に記載した実施の形態1に係る情報処理装置100によれば、全ての機能が使える第1のアプリケーションが起動した後に、第1のアプリケーションと第2のアプリケーションとの内部状態を同期させているため、第2のアプリケーションから第1のアプリケーションへの制御権限の切換前後でも、デバイスの状態や画面の表示を継続させることができ、アプリケーションの切り替わりに伴う操作感の変化のようなユーザへの負担を軽減することができる。
実施の形態2.
次に、実施の形態2について説明する。
上述した実施の形態1では、制御権限委譲処理において、第2のアプリケーションによる制御処理を中断した上で、第2のアプリケーションの内部状態を示す内部状態情報185を共有記憶部120に記録させるようにしたが、各種デバイスは、第2のアプリケーションによる制御処理が中断されている間も動作し続けており、各種デバイスから、各種情報、例えば、再生位置の変化、内部状態の変化、又は、エラーの発生等が通知されることがある。例えば、ドライブ160で記録媒体の読み込みエラーが発生した際に、そのことを通知するイベントが一度だけ発生し、ドライブ160の内部状態としては停止状態となるというように、デバイスが一度だけ通知を行い、デバイスの状態としてはその通知が記憶されていないような場合がある。
このような通知について、第1のアプリケーション及び第2のアプリケーションは随時受け入れられるように構成されており、情報処理装置100の制御処理を行うと共に、このような通知に対する処理を行うようにしているが、上述した制御権限委譲処理の期間においては、第1のアプリケーションはまだ動作可能ではなく、第2のアプリケーションはその制御処理を中断しているため、この期間においてはこれらの通知に対する処理を実行することはできない。
実施の形態2は、上述したような問題を解決するためのものであり、制御権限委譲処理において第2のアプリケーションから第1のアプリケーションに引き継ぐ情報に、このような通知を示す通知情報を含めることで、第1のアプリケーションが実行可能になったら、このような通知に応じた処理を実行することができるようにするものである。以下、実施の形態2について説明を行う。
図1に示すように、実施の形態2に係る情報処理装置200は、不揮発記憶部210と、共有記憶部220と、第1の制御部230と、第2の制御部240と、入力部150とを備える。実施の形態2に係る情報処理装置200は、不揮発記憶部210に記憶される情報、共有記憶部220に記憶される情報、並びに、第1の制御部230及び第2の制御部240での処理において、実施の形態1に係る情報処理装置100と異なっている。
共有記憶部220は、第1の制御部230及び第2の制御部240の間で共有すべき情報を記憶する。共有記憶部220は、第1の制御部230及び第2の制御部240からの指示に従って、情報の読み込み及び書き込みを行う。図11は、共有記憶部220におけるデータ構造の一例を示す概略図である。図示するように、共有記憶部220は、通信情報記憶領域121と、引継情報記憶領域222とを備える。実施の形態2における共有記憶部220は、引継情報記憶領域222に記憶される情報において、実施の形態1における共有記憶部120と異なっている。
引継情報記憶領域222には、第1のアプリケーションが、第2のアプリケーションでの制御処理を引き継ぐために必要な引継情報が記憶される。例えば、本実施の形態においては、引継情報記憶領域222には、内部状態情報185の他、デバイス制御部143から第2の演算処理部241に通知された内容を示す通知情報2881A、2881B、2881C(以下、特に各々を区別する必要がないときは、通知情報2881という)が通知情報リスト288として記憶される。
図1の説明に戻り、不揮発記憶部210は、情報処理装置200の電源状態に関わらずに記憶しておく必要がある情報を記憶する。図2に示すように、不揮発記憶部210は、ブートローダのプログラムデータ180と、第1のOSのプログラムデータ181と、第1のアプリケーションのプログラムデータ282と、第2のOSのプログラムデータ183と、第2のアプリケーションのプログラムデータ284とを記憶する。実施の形態2における不揮発記憶部210は、第1のアプリケーションのプログラムデータ282及び第2のアプリケーションのプログラムデータ284を実行することにより発揮される機能において、実施の形態1における不揮発記憶部110と異なっている。
第1のアプリケーションのプログラムデータ282は、第1のOS上で動作するアプリケーションのプログラムのデータである。本実施の形態における第1のアプリケーションのプログラムデータ282は、実施の形態1と同様の機能の他に、共有記憶部220に記憶されている通知情報2881を取得して、この通知情報2881に示されている通知内容に従った処理を行う機能を備える。
第2のアプリケーションのプログラムデータ284は、第2のOS上で動作するアプリケーションのプログラムのデータである。本実施の形態における第2のアプリケーションのプログラムデータ284は、実施の形態1とほぼ同様の機能を有しているが、制御権限委譲処理においてデバイス制御処理を中断しない点、及び、デバイス制御部143からの通知を通知情報2881として共有記憶部220に記憶させる点において、実施の形態1における第2のアプリケーションのプログラムデータ184と異なっている。本実施の形態における第2のアプリケーションでの処理の詳細については、図13及び図14を用いて詳細に説明する。
図1の説明に戻り、第1の制御部230は、不揮発記憶部210に記憶されているプログラムデータを読み込んで、ブートローダ、第1のOS及び第1のアプリケーションを実行する。図示するように、第1の制御部230は、第1の演算処理部231と、第1の記憶部232と、第1の制御バス133とを備える。実施の形態2における第1の制御部230は、第1の演算処理部231での処理及び第1の記憶部232に記憶される情報において、実施の形態1における第1の制御部130と異なっている。
第1の演算処理部231は、不揮発記憶部210から、ブートローダのプログラムデータ180、第1のOSのプログラムデータ181及び第1のアプリケーションのプログラムデータ282を読み込み、第1の記憶部232に書き込む。そして、第1の演算処理部231は、第1のOS及び第1のアプリケーションを起動させて、第1のアプリケーションに基づいて、情報処理装置200の制御処理を行う。なお、第1の演算処理部231は、第1のアプリケーションに基づいて、情報処理装置200の制御処理を行う際には、第2のアプリケーションで既に行われた処理を引き継ぐために、共有記憶部220から、内部状態情報185を読み込み、第1のアプリケーションと第2のアプリケーションとの間の同期を取る同期処理を行う。ここで、実施の形態2における第1の演算処理部231は、共有記憶部220に記憶されている通知情報2881を取得して、この通知情報2881に示されている通知内容に従った処理を行う点において、実施の形態1における第1の演算処理部131と異なっている。
第1の記憶部232は、第1の演算処理部231が処理を行う際に必要な情報を記憶する。図4に示すように、第1の記憶部232は、ブートローダのプログラムデータ1801、第1のOSのプログラムデータ1811及び第1のアプリケーションのプログラムデータ2821を記憶する。ブートローダのプログラムデータ1801、第1のOSのプログラムデータ1811及び第1のアプリケーションのプログラムデータ2821は、不揮発記憶部210から読み出されたブートローダのプログラムデータ180、第1のOSのプログラムデータ181及び第1のアプリケーションのプログラムデータ282を展開したものである。
また、第1の記憶部232は、第1の演算処理部231が処理を行う際に一時的に必要な情報である第1の一時データ286を記憶する。例えば、第1の一時データ286には、共有記憶部220から読み出された内部状態情報185及び通知情報2881等が含まれる。
図1の説明に戻り、第2の制御部240は、不揮発記憶部210に記憶されているプログラムデータを読み込んで、第2のOS及び第2のアプリケーションを実行する。図示するように、第2の制御部240は、第2の演算処理部241と、第2の記憶部242と、デバイス制御部143と、第2の制御バス144とを備える。実施の形態2における第2の制御部240は、第2の演算処理部241での処理及び第2の記憶部242に記憶される情報において、実施の形態1における第2の制御部140と異なっている。
第2の演算処理部241は、不揮発記憶部210から、第2のOSのプログラムデータ183及び第2のアプリケーションのプログラムデータ284を読み込み、第2の記憶部242に書き込む。そして、第2の演算処理部241は、第2のOS及び第2のアプリケーションを起動させて、第2のアプリケーションに基づいて、情報処理装置200の制御処理を行う。また、第2の演算処理部241は、第1の演算処理部231から切替開始通知を受け取った際には、第2のアプリケーションで既に行われた処理を引き継がせるために、内部状態情報185を生成して、この内部状態情報185を共有記憶部220に記憶させる制御権限委譲処理を行う。さらに、第2の演算処理部241は、デバイス制御部143を介して、情報処理装置100に接続されている各種デバイスを制御するデバイス制御処理を行う。ここで、実施の形態2における第2の演算処理部241は、制御権限委譲処理においてデバイス制御処理を中断しない点、及び、デバイス制御部143からの通知を通知情報2881として共有記憶部220に記憶させる点において、実施の形態1における第2の演算処理部141と異なっている。
第2の記憶部242は、第2の演算処理部241が処理を行う際に必要な情報を記憶する。図5に示すように、第2の記憶部242は、第2のOSのプログラムデータ1831及び第2のアプリケーションのプログラムデータ2841を記憶する。第2のOSのプログラムデータ1831及び第2のアプリケーションのプログラムデータ2841は、不揮発記憶部210から読み出された第2のOSのプログラムデータ183及び第2のアプリケーションのプログラムデータ284を展開したものである。
また、第2の記憶部242は、第2の演算処理部241が処理を行う際に一時的に必要な情報である第2の一時データ287を記憶する。例えば、第2の一時データ287には、第2の演算処理部241が生成した内部状態情報185及び通知情報2881等が含まれる。
図12は、第1の制御部230における起動処理を示すフローチャートである。図12に示されているフローチャートは、情報処理装置200の電源が投入されることにより開始される。なお、図12に示されているフローチャートにおいて、図7に示されているフローチャートと同じ符号が付されているステップS10〜S21の処理は、図7に示されているフローチャートと同様の処理である。但し、第1のアプリケーションのプログラムデータ182及び第1のアプリケーションのプログラムデータ1821の代わりに、それぞれ、第1のアプリケーションのプログラムデータ282及び第1のアプリケーションのプログラムデータ2821が用いられる。
そして、第1の演算処理部231は、ステップS20において、第1のアプリケーションの内部状態を、第2のアプリケーションの内部状態と同期させた後、ステップS21の処理と、ステップS70の処理とを並行して行う。
ステップS70では、第1の演算処理部231は、共有記憶部220の引継情報記憶領域222に記憶されている通知情報リスト288から通知情報2881を取得して、制御権限委譲処理の実行中にデバイス制御部143が通知してきた各種イベントに対応する処理を実行する。
図13は、第2の制御部240における起動処理を示すフローチャートである。図13に示されているフローチャートは、情報処理装置200の電源が投入されることにより開始され、図12に示されているフローチャートと並行して行われる。図13に示されているフローチャートにおいて、図9に示されているフローチャートと同じ符号が付されているステップS40〜S47及びステップS49〜S52の処理は、図9に示されているステップS40〜S47及びステップS49〜S52の処理と同様の処理である。但し、第2のアプリケーションのプログラムデータ183及び第2のアプリケーションのプログラムデータ1841の代わりに、それぞれ、第2のアプリケーションのプログラムデータ283及び第2のアプリケーションのプログラムデータ2841が用いられる。
そして、第2の演算処理部241は、第1の制御部130から制御権限切替開始通知を受け取った場合(ステップS47でYes)には、ステップS80及びステップS81の処理に進む。そして、第2の演算処理部241は、ステップS80、S49及びS50の処理と、ステップS81の処理とを並行して実行する。
ステップS80では、第2の演算処理部241は、情報処理装置200の制御権限を委譲するための処理を行う。なお、ステップS80での制御権限委譲処理については、図14を用いて詳細に説明する。そして、第2の演算処理部241は、ステップS49の処理に進む。
一方、ステップS81では、第2の演算処理部241は、デバイス制御部143からの通知内容を示す通知情報2881を生成し、共有記憶部220の引継情報記憶領域222に追記する処理を行う。なお、第2の演算処理部141は、デバイス制御部143から通知を受ける度に、引継情報記憶領域222に、例えば、通知情報2881A、2881B、2881C、・・・のように、通知情報2881を順次追記する。
図14は、図13のステップS80における制御権限委譲処理を示すフローチャートである。図14に示されているフローチャートにおいて、図10に示されているフローチャートと同じ符号が付されているステップS60、S61、S63及びS64の処理は、図10に示されているステップS60、S61、S63及びS64の処理と同様の処理である。
第2の演算処理部241は、ステップS60において、まだ処理できていないユーザ要求が存在しないと判断した場合(ステップS60でNo)には、ステップS90の処理に進む。
ステップS90では、第2の演算処理部241は、第2のアプリケーションに基づく、情報処理装置200の制御処理を中断する。この点、第2の演算処理部241は、デバイス制御部143へのデバイス制御処理は中断しない。これは、図13のステップS81の処理を行うためである。なお、本実施の形態では、デバイス制御部143へのデバイス制御処理が中断されないため、図10のステップS65の処理は必要ない。
以上のように、実施の形態2に係る情報処理装置200によれば、デバイス制御部143からの通知内容を示す通知情報、例えば、ドライブ160の読み込みエラー通知のような、エラー発生時に一度のみ通知される情報であって、現在の状態としては記録されないような非同期情報についても、第2のアプリケーションから第1のアプリケーションに引き継ぐことができる。このため、制御権限の切換中に発生した各種通知に対応する処理を、制御権限委譲処理が完了した後に第1のアプリケーションで実行することができる。従って、実施の形態2に係る情報処理装置200によれば、例えば、ユーザに対して予期せぬ動作の契機となった理由を提示することが可能となり、その結果ユーザが感じる不快感を軽減することができる。
以上に記載された実施の形態1及び2では、本発明を情報処理装置100、200に適用した例を説明したが、例えば、携帯電話機、DVD(Digital Versatile Disc(登録商標))及びBDの光ディスク等に対応した映像再生装置及び映像録画装置、デジタル放送又はワンセグ放送に対応した放送受信装置等のように、起動時にOSを実行する必要がある各種の装置に本発明を適用することもできる。
また、以上に記載された実施の形態1及び2では、2つの演算処理部が1つの装置に設けられている場合について説明したが、3つ以上の演算処理部が設けられる装置においても、より起動が速い制御部において第2のアプリケーションを動作させるような構成にすることで、上述したような起動時間の短縮効果を得ることが可能である。
さらに、以上に記載された実施の形態1及び2では、第1の制御部130、230と第2の制御部140、240とは、共有記憶部120を利用して、情報の受け渡しをしているが、例えば、第1の制御部130、230が有する第1の演算処理部131、231と、第2の制御部140、240が有する第2の演算処理部141、241との間に通信路を追加して演算処理部間通信を行うことで、情報の受け渡しを行ってもよい。
また、以上に記載された実施の形態1及び2では、不揮発記憶部110、210が一つだけ設けられており、第1の制御部130、230と、第2の制御部140、240の両方がアクセスできるようにしているが、例えば、第1の制御部130、230のみがアクセスする不揮発記憶部と、第2の制御部140、240のみがアクセスする不揮発記憶部といったように、複数の不揮発記憶部が設けられていてもよい。この場合は、第1の制御部130、230と、第2の制御部140、240との両方で参照すべき情報は、第2の制御部140が不揮発記憶部110、210から共有記憶部120、220へ展開すればよい。さらには、第1の制御部130、230のみがアクセスする不揮発記憶部と、第2の制御部140、240のみがアクセスする不揮発記憶部と、その両方がアクセスする不揮発記憶部の3つの不揮発記憶部が設けられていてもよく、さらに、より多くの不揮発記憶部が設けられていてもよい。
以上に記載された実施の形態1及び2では、ブートローダを実行して、第1のOSを起動させるようにしているが、第1のOSの起動にブートローダの実行が必要ない場合には、ブートローダのプログラムデータを記憶しておき、このデータを読み込む処理、展開する処理及び実行する処理は必要ない。
また、以上に記載された実施の形態1及び2では、第1の制御部130が行う第1の起動処理、及び、第2の制御部140が行う第2の起動処理は、同時に開始されている。例えば、電源が投入された直後(図6の時刻T0)に、第1の起動処理及び第2の起動処理が開始されているが、これに限定されるものではなく、第2の起動処理が開始された後に、第1の起動処理が開始されてもよい。
なお、本発明の実施の形態は、上述した実施の形態1及び2に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。