(57)【要約】【課題】主記憶が全て不揮発性メモリで構成された場合において、突発的な電源の遮断が発生すると電源再投入時にシステムが正常に動作を再開できない。【解決手段】装置は、電源異常遮断判定部と、電源異常終了通知レジスタとを備え、電源異常遮断判定部は、装置の電源投入時に、電源異常終了通知レジスタを参照し、電源異常終了通知レジスタが装置の電源が異常に遮断されたことを示す情報を格納しており、プロセッサが不揮発性のプロセッサでない場合、装置の電源が遮断される前に実行されていたプロセスを再起動し、デバイスドライバを確認し、電源異常終了通知レジスタが装置の電源が異常に遮断されたことを示す情報を格納しており、プロセッサが不揮発性のプロセッサである場合、装置の電源が遮断される前に実行されていたプロセスを、プロセスが中断された処理から再開し、デバイスドライバを確認することを特徴とする。【選択図】図１
2010108253.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、一以上の不揮発性メモリと、周辺回路とを備える不揮発性メモリを主記憶に用いた装置であって、
前記装置は、前記装置の電源が異常に遮断されたか否かを検出する電源異常遮断判定部と、前記装置の電源が異常遮断されたことを示す情報を格納する電源異常終了通知レジスタとを備え、
前記周辺回路は、電源回路を含み、
前記不揮発性メモリは、オペレーティングシステム、ソフトウェア及びデバイスドライバを格納し、
前記オペレーティングシステムは、前記電源異常遮断判定部を含み、
前記電源異常遮断判定部は、
前記装置の電源投入時に、前記電源異常終了通知レジスタを参照し、
前記電源異常終了通知レジスタが前記装置の電源が異常に遮断されたことを示す情報を格納しており、前記プロセッサが不揮発性のプロセッサでない場合、前記装置の電源が遮断される前に実行されていたプロセスを再起動し、前記デバイスドライバを確認し、
前記電源異常終了通知レジスタが前記装置の電源が異常に遮断されたことを示す情報を格納しており、前記プロセッサが不揮発性のプロセッサである場合、前記装置の電源が遮断される前に実行されていたプロセスを、前記プロセスが中断された処理から再開し、前記デバイスドライバを確認することを特徴とする不揮発性メモリを主記憶に用いた装置。
【請求項２】
前記プロセッサが、前記電源異常終了通知レジスタを備えることを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項３】
前記不揮発性メモリが、前記電源異常終了通知レジスタを備えることを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項４】
前記電源回路が、前記電源異常終了通知レジスタを備えることを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項５】
前記装置が受信したデータは所定の単位毎に前記不揮発性メモリに書き込まれ、
前記装置は、
受信したデータを所定の単位毎に前記不揮発性メモリに書き込み、
前記装置が受信したデータのうち前記不揮発性メモリに書き込まれていないデータの単位の有無を示す書込残情報を備え、
前記電源異常遮断判定部は、
前記装置の電源投入時に前記書込残情報を参照し、
前記書込残情報が前記未書込のデータの単位があることを示す場合、前記装置の電源が異常に遮断されたと判定し、前記装置の電源が異常に遮断されたことを示す情報を、前記電源異常終了通知レジスタに格納することを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項６】
前記プロセッサ、前記不揮発性メモリ、及び前記周辺回路のそれぞれが、前記電源異常終了通知レジスタを備え、
前記電源異常遮断判定部は、前記装置の電源投入時に、前記プロセッサ、不揮発性メモリ、及び周辺回路が備える各電源異常終了通知レジスタを、順次、参照することを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項７】
前記装置は、前記プロセッサ、不揮発性メモリ、及び周辺回路が備える電源異常終了通知レジスタの読み出し先を指定する電源断検出先指定情報を保持し、
前記電源異常遮断判定部は、前記装置の電源投入時に、前記電源検出先情報に基づいて、指定された読み出し先の前記電源異常終了通知レジスタを参照することを特徴とする請求項６に記載の不揮発性メモリを主記憶に用いた装置。
【請求項８】
前記装置は、
さらに、一以上の揮発性メモリ、及び不揮発性記憶媒体を備え、
前記オペレーティングシステムを管理する情報、及び前記プロセスに関する情報を管理する主記憶部は、前記不揮発性メモリ及び前記揮発性メモリから構成され、
前記プロセスに関する情報のうち、更新頻度の高い情報が前記不揮発性メモリに格納され、更新頻度の低い情報が前記揮発性メモリに格納され、
前記不揮発性記憶媒体は、前記プロセスに関する情報を格納し、
前記電源異常遮断判定部は、
前記装置の電源投入時に、前記揮発性メモリに格納される前記プロセスに関する情報を、前記不揮発性記憶媒体から読み出し、
前記読み出されたプロセスに関する情報と、前記不揮発メモリに格納されている情報とに基づいて、前記装置の電源が遮断される前に実行されていたプロセスを、前記プロセスが中断された処理から再開することを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項９】
前記装置は、
さらに、一以上の揮発性メモリ、及び不揮発性記憶媒体を備え、
前記オペレーティングシステムを管理する情報、及び前記プロセスに関する情報を管理する主記憶部は、前記不揮発性メモリ及び前記揮発性メモリから構成され、
前記不揮発性メモリ又は前記揮発性メモリの物理記憶領域に論理記憶領域が作成され、
前記物理記憶領域は、複数の物理的な単位記憶領域に区分され、
前記論理記憶領域は、複数の論理的な単位記憶領域に区分され、
前記プロセスに関する情報のうち、更新頻度の高い情報が前記不揮発性メモリに格納され、更新頻度の低い情報が前記揮発性メモリに格納され、
前記不揮発性記憶媒体は、前記プロセスに関する情報を格納し、
前記不揮発性メモリは、前記プロセスと、前記プロセスを実行する順位を示すプロセスの優先度とを管理するプロセス管理表、並びに前記物理的な単位記憶領域と前記論理な単位記憶領域との対応を管理する論理物理変換テーブルを備え、
前記論理物理変換テーブルは、前記不揮発性メモリ又は前記揮発性メモリにおける前記論理的な単位記憶領域のアドレス及び前記物理的な単位記憶領域のアドレス、前記論理的な記憶領域の優先度、並びに、前記不揮発性メモリ及び前記揮発性メモリの性能を示すメモリ性能情報を含み、
前記オペレーティングシステムは、
実行される前記プロセスが切り替えられる時に、前記論理的な単位記憶領域の優先度、及び前記メモリ性能情報を参照し、
前記メモリ性能情報が低性能である前記不揮発性メモリ又は前記揮発性メモリの前記論理的な単位記憶領域の優先度が大きい第１の論理的な単位記憶領域に第１のプロセスが格納され、前記メモリ性能情報が高性能である前記不揮発性メモリ又は前記揮発性メモリの前記論理的な単位記憶領域の優先度が小さい第２の論理的な単位記憶領域に第２のプロセスが格納される場合、前記第１の論理的な単位記憶領域と、前記第２の論理的な単位記憶領域とを入れ替えることを特徴とする請求項１に記載の不揮発性メモリを主記憶に用いた装置。
【請求項１０】
前記論理的な単位記憶領域の優先度は、
前記プロセスの優先度が大きい場合に、大きく設定され、
前記プロセスの優先度が小さい場合に、小さく設定されることを特徴とする請求項９に記載の不揮発性メモリを主記憶に用いた装置。
【請求項１１】
前記プロセス管理表は、ユーザ操作に関する前記プロセスか、又は、バックグランドで実行される前記プロセスかを示す前記プロセスの属性、及び特定のタイミングにおいて前記プロセスが実行される頻度を示す利用頻度を含み、
前記プロセスの優先度は、前記プロセスの属性、及び前記利用頻度に基づいて、算出されることを特徴とする請求項９に記載の不揮発性メモリを主記憶に用いた装置。
【請求項１２】
前記オペレーティングシステムは、前記ユーザ操作に関するプロセスから、前記バックグランドで実行されるプロセスに切り替えられる時に、前記第１のプロセスが格納されている第１の論理的な単位記憶領域と、前記第２のプロセスが格納されている第２の論理的な単位記憶領域とを入れ替えることを特徴とする請求項９に記載の不揮発性メモリを主記憶に用いた装置。
【請求項１３】
前記プロセッサは、前記論理物理変換テーブルのうち前記利用頻度が高い前記プロセスが格納される前記論理的な単位記憶領域に関する情報をキャッシュし、
前記オペレーティングシステムは、前記プロセッサがキャッシュする論理的な単位記憶領域以外の領域へのアクセスが発生した時に、前記第１の論理的な単位記憶領域と、前記第２の論理的な単位記憶領域とを入れ替えることを特徴とする請求項９に記載の不揮発性メモリを主記憶に用いた装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯電話、カーナビ、ＴＶ等の組込み機器、及びそれらを用いたシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリの高性能化、大容量化、及びビット単価の低下に伴い、従来、揮発性メモリで構成された主記憶部、ストレージ（ＨＤＤ等）のキャッシュメモリの不揮発化が進んでいる。不揮発性メモリは、電源が供給されていなくとも記憶内容を保持できるため、低消費電力な機器開発に非常に有効であり、特に、携帯端末への搭載を目指した開発が進んでいる。
【０００３】
将来的には、キャッシュメモリ、メインメモリ、及びストレージのすべてに適用可能な、低コスト且つ高性能なユニバーサルメモリと呼ばれる単一の不揮発性メモリが実現され様々な機器に搭載されると言われている。
【０００４】
このような中、不揮発性メモリのみで構成されたシステムの検討も進んでおり、Ｆｌａｓｈメモリを用いてメインメモリを構成したシステム（例えば、特許文献１参照）、並びに、ＲＯＭ領域、ランダムアクセス領域、及びストレージ領域の三つの領域に区切られた強磁性体メモリを利用するシステム（例えば、特許文献２参照）がある。
【０００５】
また、システムの主記憶領域が揮発部と不揮発部とで構成され、電源遮断時において処理を継続するために必要な情報を不揮発部に格納し、復帰時において不揮発部に格納されている情報を揮発部に転送することによって、迅速な復帰を実現するシステムも提案されている（例えば、特許文献３）。
【特許文献１】特開平５−３３４１６８号公報
【特許文献２】米国特許第６４４９６８３Ｂ１号明細書
【特許文献３】特開２００４−３６２４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、前述した従来技術では、メモリが不揮発性メモリのみから構成されても、突発的な電源遮断が発生した場合、メモリ素子へ書き込み中のデータ、Ｉ／Ｏアクセス処理、又はプロセッサ内のレジスタ等の内容消失などで不正な状態になり、電源復帰時に正常にシステムが動作できない。
【０００７】
さらに、前述した従来技術では、揮発メモリ及び不揮発メモリから構成される混在メモリを主記憶部とした場合、システムを休止するためのデータの退避に時間がかかる。
【課題を解決するための手段】
【０００８】
本発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサと、一以上の不揮発性メモリと、周辺回路とを備える不揮発性メモリを主記憶に用いた装置であって、前記装置は、前記装置の電源が異常に遮断されたか否かを検出する電源異常遮断判定部と、前記装置の電源が異常遮断されたことを示す情報を格納する電源異常終了通知レジスタとを備え、前記周辺回路は、電源回路を含み、前記不揮発性メモリは、オペレーティングシステム、ソフトウェア及びデバイスドライバを格納し、前記オペレーティングシステムは、前記電源異常遮断判定部を含み、前記電源異常遮断判定部は、前記装置の電源投入時に、前記電源異常終了通知レジスタを参照し、前記電源異常終了通知レジスタが前記装置の電源が異常に遮断されたことを示す情報を格納しており、前記プロセッサが不揮発性のプロセッサでない場合、前記装置の電源が遮断される前に実行されていたプロセスを再起動し、前記デバイスドライバを確認し、前記電源異常終了通知レジスタが前記装置の電源が異常に遮断されたことを示す情報を格納しており、前記プロセッサが不揮発性のプロセッサである場合、前記装置の電源が遮断される前に実行されていたプロセスを、前記プロセスが中断された処理から再開し、前記デバイスドライバを確認することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、突発的な電源遮断からの復帰、及びシステムの休止における処理を高速且つ確実にできる。
【発明を実施するための最良の形態】
【００１０】
［実施形態］
まず、本発明の実施形態の概要について説明する。
【００１１】
第１に、プロセッサ、揮発性メモリ、不揮発性メモリ、及び周辺回路を備えるハードウェアにおいて、少なくとも電源回路、プロセッサ、又は不揮発性メモリのいずれかが、電源瞬断判定機能と電源瞬断通知レジスタと備える。
【００１２】
これによって、ＯＳは、ハードウェアに電源が投入されたとき、電源瞬断通知レジスタが設定されているか否かを判定し、設定されていれば電源瞬断からの復帰と判定して、復旧処理を実行する。復旧処理において、ＯＳは、プロセッサが揮発性であるか否かを判定し、プロセッサが揮発性の場合、電源遮断前に実行していたプロセスを再起動する。プロセッサが不揮発性の場合、プロセッサが保持するプロセスに関する情報に基づいて、ＯＳは処理を再開する。次に、ＯＳは、各デバイスドライバの状態を判定し、処理の再開が可能か否かを判定して、処理の再開が不可能な場合、呼び出し元プロセスへ通知し、エラー処理を実行する。
【００１３】
第２に、主記憶領域を複数の揮発性メモリと不揮発性メモリとから構成するハードウェアにおいて、論理アドレスと物理アドレスとからなる仮想記憶をサポートし、各メモリ空間が一定サイズのページで管理されるシステムを想定する。
【００１４】
ユーザインタフェース系のプロセスからバックグラウンド系のプロセスへ切り替わる場合、又は論理物理アドレス変換が発生した場合、ＯＳは、低速な不揮発性メモリ、又は揮発性メモリ上のページの優先度を判定し、優先度に基づいて入れ替えフラグを設定し、システムのアイドル時に入れ替えを実行する。
【００１５】
さらに、揮発性メモリには更新されないプロセスのコード領域と定数とが配置され、不揮発性メモリには更新されるデータが優先的に配置されることによって、システムの電源が突発的に遮断された場合、ＯＳは、揮発性メモリのデータが消失しても、プロセスのコード部、又は定数部をストレージから読み出し、不揮発メモリが保持するデータを用いて復帰処理を実行する。
【００１６】
以下、図面を用いて本発明の実施形態について説明する。
【００１７】
図１は、本発明の実施形態の組込み機器の構成を説明するブロック図である。
【００１８】
本組込み機器は、プロセッサ１０４、不揮発性メモリ１０１、及び周辺回路１０２を備え、これらは互いにバスによって接続されている。
【００１９】
プロセッサ１０４は、レジスタ、及び命令実行部等を備える。本実施形態において、プロセッサ１０４は、瞬断判定レジスタＡ１２１を含む。
【００２０】
瞬断判定レジスタＡ１２１は、電源が突発的に遮断されたか否かを示す情報を格納し、プロセッサ１０４内の電圧が不安定になった場合などに設定される。また、瞬断判定レジスタＡ１２１は、ＯＳ１０７がクリアする。
【００２１】
不揮発性メモリ１０１は、瞬断判定レジスタＢ１１６、書込残チェックカウンタ１１７、正常終了レジスタ１２４、及びデータ記録部１２３を含む。
【００２２】
瞬断判定レジスタＢ１１６は、電源が突発的に遮断されたか否かを示す情報を格納する。例えば、不揮発性メモリ１０１の電圧が不安定になったとき、不揮発性メモリ１０１へ電源投入されたとき、又は正常終了レジスタ１２４が設定されていなかったときに、瞬断判定レジスタＢ１１６が設定される。
【００２３】
書込残チェックカウンタ１１７は、不揮発性メモリ１０１が受け取ったデータのうち、メモリへの書き込みが終了していない領域の数を示す情報を格納する。領域としては、例えば、メモリセル単位、ビット単位、バイト単位、又はブロック単位などが考えられる。不揮発性メモリ１０１によっては、書き込みデータを受け取ってからメモリセルへ書き込みが終了するまで時間がかかるため、書き込みの処理中に、電源遮断された場合、メモリセルへ書き込めなかったデータが消失する。書込残チェックカウンタ１１７は、前述したような異常が発生したことを検出するためのものである。
【００２４】
正常終了レジスタ１２４は、突発的な電源遮断（瞬断）か、又は正常に電源遮断した後からの復帰かを示す情報を格納する。正常終了レジスタ１２４は、システムが正常に終了するときにプロセッサ１０４、又はＯＳ１０７が設定する。不揮発性メモリ１０１が起動すると内部制御回路（図示省力）が正常終了レジスタ１２４をチェックし、正常終了レジスタ１２４が設定されていれば瞬断判定レジスタＢ１１６を設定し、正常終了レジスタ１２４が設定されていなければ瞬断判定レジスタＢ１１６を設定する。
【００２５】
データ記録部１２３は、実際にデータが格納される不揮発性メモリ１０１の領域を示す。例えば、メモリセル等で構成される。本実施形態では、データ記録部１２３がＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）領域１１９、主記憶領域１１３、及びストレージ領域１１４、に分割されている。
【００２６】
ＲＯＭ領域１１９は、ＲＯＭとして利用する領域であり、ＯＳ１０７、実行プログラムコード等、通常動作で更新が発生しないデータを格納する領域である。図１に示す例では、ＯＳ１０７、基本アプリ群１０８が格納されている。
【００２７】
ＯＳ１０７は、ＯＳ本体を示し、通常動作では更新が発生しない実行コード等のデータを格納する。本実施形態において、ＯＳ１０７は、周辺回路１０２などのハードウェアを制御するプログラム群であるデバイスドライバ１２６、及び電源復帰処理を実行する機能である電源復帰処理機能１１１を含む。
【００２８】
電源復帰処理機能１１１は、システムが起動したときに、瞬断判断レジスタ（Ａ１２１、Ｂ１１６、Ｃ１２２）を読み出し、再起動か、又は電源断からの復旧か、の判定処理を実行する。
【００２９】
基本アプリ群１０８は、ＯＳ１０７、及び機器で恒常的に利用されるソフトウェア群を格納する。例えば、デバイスドライバ、ＧＵＩプログラム、Ｗｅｂブラウザ等である。
【００３０】
主記憶領域１１３は、通常動作時に更新されるデータが格納され、本実施形態において、主記憶領域１１３は、ＯＳ管理情報１０３とプロセス１１５とを格納する。
【００３１】
ＯＳ管理情報１０３は、更新が発生するＯＳ１０７の各種管理情報を格納し、具体的には、電源断検出先指定データ１２０、起動識別フラグ１１２、プロセス管理表１０６、論理物理変換テーブル１０５、ファイルシステム／データベース管理１１０、及びプロセス１１５を含む。
【００３２】
電源断検出先指定データ１２０は、電源遮断の原因を検出する手段を指定するデータを格納する。つまり、システムが備えるレジスタ（瞬断判定レジスタ等）又はデータのうち、いずれを読み出すかを示すデータが格納される。これによって、瞬断判定のためのデータの読み出し先を指定するフラグが設定される。電源断検出先指定データ１２０は、システムに当初から設定されている値である。なお、電源断検出先指定データ１２０は、ユーザが指定してもよい。
【００３３】
起動識別フラグ１１２は、再起動か、又は電源断からの復旧かを示す情報を格納し、ＯＳ１０７が動作再開時に動作再開の理由を判断するために、電源復帰処理機能１１１から参照される。具体的には、起動識別フラグ１１２が「０」の場合、再起動のフラグが設定され、起動識別フラグ１１２が「１」の場合、電源断復帰のフラグが設定される。
【００３４】
プロセス管理表１０６は、システム上に存在する全プロセスを管理するための情報を格納する。
【００３５】
論理物理変換テーブル１０５は、システムが論理アドレスと物理アドレスとを利用する場合、その対応付けを管理するための情報を格納する。
【００３６】
ファイルシステム／データベース管理１１０は、ストレージ領域１１４に格納されるファイル又はデータベース（ＤＢ）の管理情報を格納する。
【００３７】
プロセス１１５は、ＯＳ１０７が実行する個々のプログラムを格納する。例えば、アプリケーション、又は通信ミドルウェア等である。
【００３８】
ストレージ領域１１４は、ファイル形式のデータ、及び各種退避データを格納する。図１に示す例では、プログラム、動画、静止画、及び音楽などのファイル形式のデータ群である各種ファイル１２５と、プロセスが実行中で発生した一時情報、及び実行優先度の低いページデータ等の退避データ１０９を格納する。
【００３９】
周辺回路１０２は、キー、タッチパネル、ディスプレイ、マイク、スピーカー、及びネットワーク接続機能など各種周辺機能と電源回路１１８とを備える。
【００４０】
電源回路１１８は、各機器の電源を管理し、本実施形態では、瞬断判定レジスタＣ１２２を含む。
【００４１】
瞬断判定レジスタＣ１２２は、電源が突発的に遮断されたか否かを示す情報を格納する。瞬断判定レジスタＣ１２２は、電源回路１１８で異常を検出されたときに設定され、また、ＯＳ１０７がクリアする。
【００４２】
なお、本実施形態において、本組込機器は、全ての瞬断レジスタ（Ａ１２１、Ｂ１１６、Ｃ１２２）を備える場合を想定している。なお、いずれかの瞬断レジスタ（Ａ１２１、Ｂ１１６、Ｃ１２２）のみを備える形態であってもよい。
【００４３】
図２Ａは、本発明の実施形態におけるプロセス管理表１０６が含む基本データ２０６の一例を示す図である。基本データ２０６は、各プロセスの基本属性を管理する。
【００４４】
基本データ２０６は、プロセスＩＤ２０１、セグメント２０２、及びステート２０５を含む。
【００４５】
プロセスＩＤ２０１は、プロセスを識別するための識別子を格納する。
【００４６】
セグメント２０２は、プロセスＩＤ２０１に対応するプロセスが格納されているメモリ上の領域を特定するための情報を格納し、さらに、コード領域２０３、及びデータ領域２０４を含む。
【００４７】
コード領域２０３は、プロセスＩＤ２０１に対応するプロセスの実行コードの格納場所を示す情報を格納する。
【００４８】
データ領域２０４は、プロセスＩＤ２０１に対応するプロセスが格納されている場所を示す情報を格納する。
【００４９】
ステート２０５は、プロセスの状態を示す情報が格納される。例えば、プロセッサ１０４がプロセスＩＤ２０１に対応するプロセスを実行している場合「実行中」が格納され、プロセッサ１０４がプロセスＩＤ２０１に対応するプロセスを実行待ちしている場合「待機中」が格納され、プロセッサ１０４がプロセスＩＤ２０１に対応するプロセスを、他のプロセス又はＩ／Ｏの応答待ちをしている場合「応答待ち」を格納する。
【００５０】
図２Ｂは、本発明の実施形態におけるプロセスタイプ定義表２１８の一例を示す図である。
【００５１】
プロセスタイプ定義表２１８は、プロセスの種別、及びプロセスの実行の優先順位を定義し、プロセス管理表１０６が含む拡張データ２０７の総合優先度２０９を算出するときに用いられる。
【００５２】
プロセスタイプ定義表２１８は、プロセスタイプ２２７及び優先度２２８を含む。
【００５３】
プロセスタイプ２２７は、プロセスの種別を示す情報を格納する。例えば、ユーザインタフェース系プロセスの場合、「ＵＩ」が格納され、バックグランドにおいて動作するサーバ機能を提供するプロセスの場合、「サービス」が格納され、その他のプロセスの場合、「通常」が格納される。
【００５４】
優先度２２８は、プロセスタイプ２２７に対応するプロセスの優先度を格納する。優先度の値を大きいプロセスから優先的に実行される。
【００５５】
図２Ｃは、本発明の実施形態におけるプロセス管理表１０６が含む拡張データ２０７の一例を示す図である。拡張データ２０７は、プロセスの実行優先度の判定に必要な情報を管理する。
【００５６】
拡張データ２０７は、プロセスＩＤ２０８、総合優先度２０９、プロセスタイプ２１０、及び利用頻度２１１を含む。
【００５７】
プロセスＩＤ２０８は、プロセスＩＤ２０１と同一のものである。
【００５８】
総合優先度２０９は、ＯＳ１０７が実際に扱うプロセスの優先度を格納する。総合優先度２０９が大きいプロセスから優先的に実行される。総合優先度２０９は、プロセスタイプ２１０と利用頻度２１１とから算出される。例えば、プロセスタイプ２１０に対応するプロセスをプロセスタイプ定義表２１８から検索し、検索された優先度２２８と利用頻度２１１の値を用いて、平均値、最大値、又は最小値等を求めて算出される。
【００５９】
また、同一のページに複数のプロセスがアクセスする場合、総合優先度２０９は、例えば、複数のプロセスの各優先度２２８の平均値、最大値、又は最小値等を求めて算出される。また、総合優先度２０９は、論理物理変換テーブル１０５が含む拡張データ（図８Ｂ参照）の総合優先度８１３に反映される。
【００６０】
利用頻度２１１は、システムの各状態の利用頻度を格納する。具体的には、利用頻度２１１は、起動直後２１２、復帰直後２１３、及び通常動作時２１４の３種類を含む。
【００６１】
起動直後２１２は、システムの起動直後にプロセスが起動された回数を格納する。起動直後２１２は、システムの起動直後にプロセスが起動されたときに値が「１」加算される。システムの起動直後の判定は、例えば、システムを起動してからユーザが操作するための画面が表示されるまでの時間をシステム起動直後と定義することによって可能である。
【００６２】
復帰直後２１３は、システムが電源瞬断から復帰した直後にプロセスが起動された回数を格納する。復帰直後２１３は、システムが電源瞬断から復帰した直後にプロセスが起動されたときに値が「１」加算される。復帰直後か否かの判定は、起動直後２１２と同様である。
【００６３】
通常動作時２１４は、前述の二つの状態以外にプロセスが起動された回数を格納する。通常動作時２１４は、前述の二つの状態以外にプロセスが起動されたときに値が「１」加算される。
【００６４】
なお、優先度設定項目については、前述したもの以外に、プロセス実行時間、プロセスの規模、又はユーザ指定優先度等、さまざまな判定基準が考えられる。
【００６５】
図２Ｄは、本発明の実施形態におけるプロセス管理表１０６が含む格納先管理データ２１５の一例を示す図である。格納先管理データ２１５は、複数の種類のメモリを用いて組込機器が構成されている場合、いずれのメモリのどの領域にプロセスが格納されているかを管理する。
【００６６】
格納先管理データ２１５は、ＯＳ１０７がデータの退避、又は入れ替えなどを実行するときに参照される。
【００６７】
格納先管理データ２１５は、プロセスＩＤ２１６、及びセグメント２１９を含む。
【００６８】
プロセスＩＤ２１６は、プロセスＩＤ２０１と同一のものである。
【００６９】
セグメント２１９は、プロセスＩＤ２１６に対応するプロセスの実行コードがメモリ上のいずれの領域に格納されているかを示す情報を格納する。セグメント２１９は、さらにコード領域２２９、及びデータ領域２２０を含む。
【００７０】
コード領域２２９は、プロセスＩＤ２１６に対応するプロセスの実行コードが格納されているメモリを特定するための示す情報を格納する。
【００７１】
データ領域２２０は、プロセスＩＤ２１６に対応するプロセスがいずれのメモリに格納されているかを示す情報を格納する。データ領域２２０は、さらに、定数２２１、及び更新発生部２２２を含む。
【００７２】
定数２２１は、プロセスに当初より埋め込まれている基本パラメータである。図２Ｄに示す例において、定数２２１には、メモリタイプＩＤ２２３（図２Ｅ参照）が格納されている。
【００７３】
更新発生部２２２は、更新されるプロセスが格納されているメモリを特定するための情報を格納する。図２Ｄに示す例において、更新発生部２２２には、メモリタイプＩＤ２２３（図２Ｅ参照）が格納されている。
【００７４】
図２Ｅは、本発明の実施形態におけるメモリタイプ定義表２１７の一例を示す図である。メモリタイプ定義表２１７は、本組込機器を構成する各メモリの属性が定義する。
【００７５】
メモリタイプ定義表２１７は、メモリタイプＩＤ２２３、タイプ２２４、Ｒｅａｄ速度２２５、及びＷｒｉｔｅ速度２２６を含む。
【００７６】
メモリタイプＩＤ２２３は、メモリを識別するための識別子を格納する。
【００７７】
タイプ２２４は、メモリタイプＩＤ２２３に対応するメモリの種別を格納する。具体的には、メモリが揮発性か不揮発性かを示す情報を格納する。
【００７８】
Ｒｅａｄ速度２２５は、メモリタイプＩＤ２２３に対応するメモリの単位読み込み時間を示し、値が小さいほど早いことを示す。
【００７９】
Ｗｒｉｔｅ速度２２６は、メモリの単位書き込み時間を示し、値が小さいほど早いことを示す。
【００８０】
なお、Ｒｅａｄ速度２２５及びＷｒｉｔｅ速度２２６は、メモリを設置した時に決定される値である。
【００８１】
図３は、本発明の実施形態における起動識別フラグ１１２の設定処理を説明するフローチャートである。
【００８２】
当該処理は、システムが起動したときに実行され、ＯＳ１０７が起動理由判定に利用する起動識別フラグ１１２を設定する処理である。なお、ハードウェア起動理由としては、システム再起動、電源異常からの復帰、スリープ状態からの復帰などが考えられる。
【００８３】
まず、システムに電源が投入され、プロセッサ１０４、周辺回路、不揮発性メモリ１０１へ電力供給が開始される（ステップ３０１）。
【００８４】
ＯＳ１０７は、電源断検出先指定データ１２０が「０」であるか否かを判定する（ステップ３０２）。
【００８５】
電源断検出先指定データ１２０が「０」であると判定された場合、ＯＳ１０７は、電源回路１１８が含む瞬断判定レジスタＣ１２２を読み出し、読み出された瞬断判定レジスタＣ１２２を起動識別フラグ１１２に設定し（ステップ３０３）、処理を終了する。
【００８６】
電源断検出先指定データ１２０が「０」でないと判定された場合、ＯＳ１０７は、電源断検出先指定データ１２０が「１」であるか否かを判定する（ステップ３０４）。
【００８７】
電源断検出先指定データ１２０が「１」であると判定された場合、ＯＳ１０７は、不揮発性メモリ１０１が含む瞬断判定レジスタＢ１１６を読み出し、読み出された瞬断判定レジスタＢ１１６を起動識別フラグ１１２に設定し（ステップ３０５）、処理を終了する。
【００８８】
電源断検出先指定データ１２０が「１」でないと判定された場合、ＯＳ１０７は、電源断検出先指定データ１２０が「２」であるか否かを判定する（ステップ３０６）。
【００８９】
電源断検出先指定データ１２０が「２」であると判定された場合、ＯＳ１０７は、プロセッサ１０４が含む瞬断判定レジスタＡ１２１を読み出し、読み出された瞬断判定レジスタＡ１２１を起動識別フラグ１１２に設定し（ステップ３０７）、処理を終了する。
【００９０】
電源断検出先指定データ１２０が「２」でないと判定された場合、ＯＳ１０７は、電源断検出先指定データ１２０が「３」であるか否かを判定する（ステップ３０８）。
【００９１】
電源断検出先指定データ１２０が「３」でないと判定された場合、ＯＳ１０７は、処理を終了する。
【００９２】
電源断検出先指定データ１２０が「３」であると判定された場合、ＯＳ１０７は、書込残チェックカウンタ１１７を読み出す（ステップ３０９）。
【００９３】
次に、ＯＳ１０７は、書込残チェックカウンタ１１７が「０」であるか否かを判定する（ステップ３１０）。
【００９４】
書込残チェックカウンタ１１７が「０」でないと判定された場合、ＯＳ１０７は、起動識別フラグ１１２に「１」を設定し（ステップ３１１）、処理を終了する。
【００９５】
書込残チェックカウンタ１１７が「０」であると判定された場合、ＯＳ１０７は、起動識別フラグ１１２に「０」を設定し（ステップ３１２）、処理を終了する。
【００９６】
なお、電源断検出先指定データ１２０に格納されるデータは、情報の読み出し先（例えば、瞬断判定レジスタＡ１２１等）を指定するものであれば、どのようなデータであってもよい。本実施形態では、「０」〜「３」の値が格納され、当該値に対応する読み出し先から、ＯＳ１０７が情報を取得する。
【００９７】
図４は、本発明の実施形態においてＯＳ１０７が起動され、処理を開始するまでの流れを説明するフローチャートである。
【００９８】
当該処理では、ＯＳ１０７が起動したときに実行される電源復帰処理機能１１１が、起動識別フラグ１１２を参照し、起動の理由を判定し、判定結果に基づいて処理を再開する。
【００９９】
電源復帰処理機能１１１は、起動識別フラグ１１２を確認する（ステップ４０１）。
【０１００】
次に、電源復帰処理機能１１１は、起動識別フラグ１１２が「１」であるか否かを判定する（ステップ４０２）。
【０１０１】
起動識別フラグ１１２が「１」であると判定された場合、電源復帰処理機能１１１は、プロセッサ１０４が不揮発性であるか否かを判定する（ステップ４０３）。
【０１０２】
ここで、不揮発性のプロセッサ１０４とは、不揮発性の素子でレジスタが構成されたプロセッサ１０４を意味する。したがって、不揮発性のプロセッサ１０４は、電源が遮断された後もレジスタを保持することができる。
【０１０３】
ステップ４０３において、プロセッサ１０４が揮発性の場合、電源が遮断される前にプロセッサ１０４が保持するレジスタがクリアされている。したがって、ＯＳ１０７がプロセスを再開するために、電源が切られる前のレジスタが保持していた情報を取得する必要がある。一方、不揮発性のプロセッサ１０４の場合、電源が切られる前のレジスタが保持されている。したがって、ＯＳ１０７がプロセスを再開するために、電源が切られる前のレジスタを取得する必要がない。
【０１０４】
前述した理由によって、ステップ４０３では、プロセッサ１０４が揮発性であるか否かの判定がされる。なお、プロセッサ１０４が不揮発性であるか否かは、プロセッサ１０４が保持する、当該プロセッサの識別情報をＯＳ１０７が参照することによって判定される。
【０１０５】
プロセッサ１０４が不揮発性であると判定された場合、電源復帰処理機能１１１は、ステップ４０５へ進む。
【０１０６】
プロセッサ１０４が不揮発性でないと判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６を参照し、ステート２０５が「実行中」であるプロセスを再起動する（ステップ４０４）。
【０１０７】
次に、電源復帰処理機能１１１は、全てのデバイスドライバ１２６の状態を確認したか否かを判定する（ステップ４０５）。
【０１０８】
全てのデバイスドライバ１２６の状態を確認したと判定された場合、電源復帰処理機能１１１は、処理を終了する。
【０１０９】
全てのデバイスドライバ１２６の状態を確認していないと判定された場合、電源復帰処理機能１１１は、デバイスドライバ１２６の状態を確認する（ステップ４０６）。確認される内容としては、例えば、ハードウェアとデータの授受とが中断していないか、又は、破壊されていないか等である。
【０１１０】
電源復帰処理機能１１１は、中断された処理が再開できるか否かを判定する（ステップ４０７）。例えば、ハードウェアに対して一括して発行されるべきコマンド及びデータの発行途中に、電源が遮断され場合、中断処理が再開できないと判定される。
【０１１１】
中断処理が再開できないと判定された場合、電源復帰処理機能１１１は、呼び出し元のプロセスへ異常終了通知を送信する（ステップ４０８）。通知を受けたプロセスについては、当該プロセスの処理のリトライなどエラー復旧処理が実行される。
【０１１２】
中断処理が再開できると判定された場合、電源復帰処理機能１１１は、ステップ４０５に戻る。
【０１１３】
ステップ４０２において、起動識別フラグ１１２が「１」でないと判定された場合、電源復帰処理機能１１１は、システムを初期化する（ステップ４０９）。
【０１１４】
電源復帰処理機能１１１は、起動識別フラグ１１２に「１」を設定し、処理を終了する（４１０）。
【０１１５】
以上、図３及び図４の処理によって、システムの電源が投入されたとき、ＯＳ１０７が正常な電源の投入か、又は電源瞬断等の異常からの復帰かを判定できるため、ＯＳ１０７は、復帰時に迅速にエラー復旧処理を実行し、システムの動作を再開させることができる。
【０１１６】
図５は、本発明の実施形態における利用頻度２１１の更新処理を説明するフローチャートである。
【０１１７】
当該処理は、プロセスが起動したときにＯＳ１０７によって実行される。
【０１１８】
まず、プロセスが起動される（ステップ５０１）。
【０１１９】
ＯＳ１０７は、プロセスの起動タイミングがシステム起動直後であるか否かを判定する（ステップ５０２）。当該判定は、例えば、システムが起動してからユーザが操作するための画面が表示されるまでに、プロセスが起動されたか否かが判定される。
【０１２０】
プロセスの起動タイミングがシステム起動直後であると判定された場合、ＯＳ１０７は、起動されたプロセスのプロセスＩＤ２０８と一致するエントリの起動直後２１２の値を「１」加算し（ステップ５０３）、処理を終了する。
【０１２１】
プロセスの起動タイミングがシステム起動直後でないと判定された場合、ＯＳ１０７は、プロセスの起動タイミングがシステム復帰直後であるか否かを判定する（ステップ５０４）。当該判定も、ステップ５０２と同様に、一定のタイミングにおいてプロセスが起動されたか否かが判定される。
【０１２２】
プロセスの起動タイミングがシステム復帰直後であると判定された場合、ＯＳ１０７は、起動されたプロセスのプロセスＩＤ２０８と一致するエントリの復帰直後２１３の値を「１」加算し（ステップ５０５）、処理を終了する。
【０１２３】
プロセスの起動タイミングがシステム復帰直後でないと判定された場合、ＯＳ１０７は、プロセスの起動タイミングがシステム通常動作時であるか否かを判定する（ステップ５０６）。
【０１２４】
プロセスの起動タイミングがシステム通常動作時であると判定された場合、ＯＳ１０７は、起動されたプロセスのプロセスＩＤ２０８と一致するエントリの通常動作時２１４の値を「１」加算し（ステップ５０７）、処理を終了する。
【０１２５】
プロセスの起動タイミングがシステム通常動作時でないと判定された場合、ＯＳ１０７は、処理を終了する。
【０１２６】
以上のように、本願発明の組込み機器におけるシステムは、図３に示すように予めシステムが起動したときに確認する瞬断判定レジスタ（Ａ１２１、Ｂ１１６、Ｃ１２２）を指定しておき、ＯＳ１０７は、指定された瞬断判定レジスタ（Ａ１２１、Ｂ１１６、Ｃ１２２）を読み出し、読み出された瞬断判定レジスタを起動識別フラグ１１２に設定する。この処理によって、ＯＳ１０７は、電源瞬断からの復帰であるか否かを判定できる。また、ＯＳ１０７は、システム起動時に、起動識別フラグ１１２を参照し、電源瞬断の場合、復旧処理を実行する。
【０１２７】
これによって、電源復帰時に正常にシステムが動作することができる。
【０１２８】
次に、プロセス管理表（２０６、２０７、２１５）に基づいて、メモリに格納されるデータの格納場所を動的に変化させる処理について説明する。
【０１２９】
当該処理、図１で示す単一の不揮発性メモリ搭載する組込み機器だけでなく、特に、図６に示すように複数種類の不揮発性メモリを搭載する組込み機器、又は、図７に示すように不揮発性メモリと揮発性メモリとを搭載する組込み機器に最適である。まず、図６及び図７の組込み機器のシステム構成を説明する。
【０１３０】
図６は、本発明の実施形態の組込み機器の構成の一例を説明するブロック図である。
【０１３１】
図１に示す組込み機器の構成と比べ、図６に示す組込み機器の構成は、特性の異なる複数種類の不揮発性メモリを搭載する。不揮発性メモリの特性は、例えば、読み出し及び書き込みが高速な高性能メモリ、又は、読み出しが高速で書き込みが低速な低性能メモリなどである。以下、図１との差異を中心に説明する。
【０１３２】
プロセッサ１０４は、新たにメモリ管理ユニット６０７を含む。
【０１３３】
メモリ管理ユニット６０７は、ＴＬＢ（Ｔａｂｌｅ  Ｌｏｏｋｕｐ  Ｂｕｆｆｅｒ）６１４を含む。メモリ管理ユニット６０７は、ＴＬＢ６１４を用いて、範囲６２６に示すような論理アドレス空間６２８と物理アドレス空間６２７との変換を実行する。
【０１３４】
ＴＬＢ６１４は、論理物理変換テーブル１０５のうち、範囲６２６に示すような利用頻度が高い論理アドレス及び物理アドレスの対応情報を保持する。通常、ＴＬＢ６１４によって保持されていないアドレスへアクセスされた場合、論理物理変換テーブル１０５にアクセスする必要があり、アドレス変換処理の時間がかかるが、ＴＬＢ６１４がアクセス先のアドレス情報を保持することによって、メモリ管理ユニット６０７の変換処理を高速化することができる。
【０１３５】
ＴＬＢ６１４によって保持されていないアドレスへアクセスされた場合を、ＴＬＢミスと呼ぶ。
【０１３６】
また、論理アドレス空間６２８及び物理アドレス空間６２７は、一定サイズの領域単位であるページ毎に対応付けされる。一般的に、ページのサイズは、４ｋバイト程度であることが多い。以下、論理アドレス空間６２８におけるページを論理ページ６２３と呼び、また、物理アドレス空間６２７におけるページを物理ページ６２１と呼ぶ。ただし、論理ページ６２３は１〜ｎまでの数だけ存在し、また、物理ページ６２１は１〜ｍまでの数だけ存在する。
【０１３７】
図６に示す組込み機器の構成は、不揮発性メモリＡ６０１、不揮発性メモリＢ６３０、不揮発性メモリＣ６１６、及びストレージ６０２を備える。
【０１３８】
ＲＯＭ領域１１９は、不揮発性メモリＡ６０１に構成される。不揮発性メモリＡ６０１としては、例えば、ＲＯＭ、又はＮＯＲ型メモリ等が考えられる。
【０１３９】
主記憶領域１１３は、不揮発性メモリＢ６３０と不揮発性メモリＣ６１６に構成される。不揮発性メモリＢ６３０は、例えば、ＳＰ−ＲＡＭなどの高速ランダムアクセス可能なメモリが考えられる。また、不揮発性メモリＣ６１６は、ＮＯＲ型メモリなどの不揮発性メモリＢ６３０より書き込み速度が遅く、ランダム読み出しが可能なメモリが考えられる。
【０１４０】
不揮発性メモリＢ６３０は、論理物理変換テーブル１０５を含む。論理物理変換テーブル１０５は、仮想アドレスをサポートしているシステムにおける論理アドレスと物理アドレスとの対応、及び各アドレス空間（物理アドレス空間６２７及び論理アドレス空間６２８）におけるページの属性を管理する。
【０１４１】
ここで、本実施形態では、メモリ特性に応じて、分散させてプロセスのコード、データを格納する。例えば、優先度が高いプロセスの更新が発生するデータ領域が不揮発性メモリＢ６３０に格納され、優先度が低いプロセスのデータ領域、当該プロセスのコード部、及びデータ領域内の定数部分が不揮発性メモリＣ６１６に格納される方法が考えられる。つまり、更新の頻度の高いデータは書き込み及び読み出しが高速な不揮発性メモリ（この場合は、不揮発性メモリＢ６３０）に格納され、更新の頻度が低いデータは読み出しが高速で、かつ、書き込みが低速な不揮発性メモリ（この場合は、不揮発性メモリＣ６１６）に格納される。
【０１４２】
一般的に、不揮発性メモリＢ６３０のような高性能メモリは価格が高く、不揮発性メモリＣ６１６のような低性能メモリは価格が安く、このような組込み機器の構成にすることによって、組込機器の製造コストを抑えることができる。
【０１４３】
ストレージ６０２に格納されるデータは、図１におけるストレージ領域１１４と同一のものである。また、本実施形態におけるストレージ６０２は、ＨＤＤ、又はＦｌａｓｈメモリ等が考えられる。
【０１４４】
なお、不揮発性メモリとストレージの組み合わせは一例であり、その他の組み合わせでもよい。
【０１４５】
図７は、本発明の実施形態の組込み機器の構成の一例を説明するブロック図である。
【０１４６】
図６と比較して、図７の組込み機器のシステムは、不揮発性メモリＣ６１６の代わりに、揮発性メモリ７０１を備える。揮発性メモリ７０１に格納されるデータは、不揮発性メモリＣ６１６と同一のものである。
【０１４７】
揮発性メモリ７０１に格納されるデータは、システムの電源が遮断されたときに失われるが、ストレージ６０２に格納されるデータを読み出すことによって復元することができる。
【０１４８】
以下、図６及び図７を例に具体的な処理について説明する。なお、図１においても、プロセッサ１０４がメモリ管理ユニット６０７論理物理変換テーブルを含む場合は同様の処理を行うことができる。
【０１４９】
図８Ａは、本発明の実施形態における論理物理変換テーブル１０５が含む基本データ８０１の一例を示す図である。
【０１５０】
基本データ８０１は、各ページ（物理ページ６２１及び論理ページ６２３）の基本情報を管理する。
【０１５１】
基本データ８０１は、ページＩＤ８０３、論理アドレス８０４、物理アドレス８０５、及び属性８１１を含む。
【０１５２】
ページＩＤ８０３は、各ページ（物理ページ６２１及び論理ページ６２３）を識別するための識別子を格納する。
【０１５３】
論理アドレス８０４は、各ページ（物理ページ６２１及び論理ページ６２３）に対応する論理アドレスを格納する。
【０１５４】
物理アドレス８０５は、各ページ（物理ページ６２１及び論理ページ６２３）に対応する物理アドレスを格納する。なお、メモリ上に対応するデータが存在しない場合、物理アドレス８０５には、「０ｘｆｆｆｆｆｆ」が格納される。ただし、実アドレスとして無効な値であれば、どのような値であってもよい。
【０１５５】
属性８１１は、各ページ（物理ページ６２１及び論理ページ６２３）の属性が格納される。属性８１１は、さらに、書き込み許可８０６、アクセス可能プロセス８０７、メモリＩＤ８０８、及びストレージへ退避８０９を含む。
【０１５６】
書き込み許可８０６は、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）に書き込みが許可されているか否かを示す値を格納する。例えば、各ページ（物理ページ６２１及び論理ページ６２３）に書き込みが許可されている場合、「ｙ」が格納され、各ページ（物理ページ６２１及び論理ページ６２３）に書き込みが許可されていない場合、「ｎ」が格納される。
【０１５７】
アクセス可能プロセス８０７は、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）にアクセスが可能なプロセスの一覧を格納する。
【０１５８】
メモリＩＤ８０８は、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）が存在するメモリを識別する識別子を格納する。メモリＩＤ８０８は、メモリタイプＩＤ２２３と同一のものである。
【０１５９】
ストレージへ退避８０９は、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）に格納されている情報がストレージ６０２に退避しているか否かを示す情報を格納する。例えば、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）に格納されている情報がストレージ６０２に退避している場合、「ｙ」が格納され、ページＩＤ８０３に対応するページ（物理ページ６２１及び論理ページ６２３）に格納されている情報がストレージ６０２に退避していない場合、「ｎ」が格納される。
【０１６０】
図８Ｂは、本発明の実施形態における論理物理変換テーブル１０５が含む拡張データ８０２の一例を示す図である。
【０１６１】
拡張データ８０２は、各ページ（物理ページ６２１及び論理ページ６２３）の入れ替え処理に参照される情報を管理する。
【０１６２】
拡張データ８０２は、ページＩＤ８１２、総合優先度８１３、及び入替フラグ８１０を含む。
【０１６３】
ページＩＤ８１２は、ページＩＤ８０３と同一のものである。
【０１６４】
総合優先度８１３は、総合優先度２０９と同一のものである。ページ（物理ページ６２１及び論理ページ６２３）の総合優先度８１３は、プロセスの相互優先度２０９によって決定される。つまり、ページＩＤ８１２に対応するページには、当該総合優先度８１３に対応するプロセスが格納されていることを示している。
【０１６５】
入替フラグ８１０は、ページを入れ替えるか否かを示す値、及び、入れ替えられるページのペアを識別する値を格納する。具体的には、ページが入れ替えられる場合は、「０」以上の値が格納され、ページが入れ替えられない場合は、「−１」が格納される。また、入れ替えられるページの入替フラグ８１０は、入れ替え元のページと入れ替え先のページとに同一の値が格納される。なお、入替フラグ８１０は、ＯＳ１０７が割り振る。
【０１６６】
図９Ａ、図９Ｂ及び図９Ｃは、本発明のシステム起動及び処理の再開の流れを説明するフローチャートである。
【０１６７】
電源復帰処理機能１１１は、起動識別フラグを確認する（ステップ９０１）。
【０１６８】
電源復帰処理機能１１１は、起動識別フラグ１１２が「１」であるか否かを判定する（ステップ９０２）。
【０１６９】
起動識別フラグ１１２が「１」であると判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６に含まれる拡張データ２０７を参照し、起動直後２１２の値が大きい順にプロセス管理表１０６のエントリを並び替える（ステップ９０３）。
【０１７０】
電源復帰処理機能１１１は、プロセッサ１０４が不揮発性であるか否かを判定する（ステップ９０４）。
【０１７１】
プロセッサ１０４が不揮発性でないと判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６の各データを参照し、全てのエントリについて処理が終了したか否かを判定する（ステップ９０５）。
【０１７２】
全てのエントリについて処理が終了したと判定された場合、電源復帰処理機能１１１は、ステップ９１６に進む。
【０１７３】
全てのエントリについて処理が終了していないと判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６から一つエントリを読み出し、当該エントリのプロセスＩＤ２０１に対応するプロセスの情報が、全て不揮発性メモリに格納されているか否かを判定する（ステップ９０６）。
【０１７４】
プロセスＩＤ２０１に対応するプロセスの情報が、全て不揮発性メモリに格納されていると判定された場合、電源復帰処理機能１１１は、不揮発性メモリに格納されている情報に基づいて、プロセスＩＤ２０１に対応するプロセスのステート２０５が「実行中」であるプロセスを再起動し（ステップ９０７）、ステップ９０５に戻る。
【０１７５】
プロセスＩＤ２０１に対応するプロセスの情報が、不揮発性メモリ以外にも格納されていると判定された場合、電源復帰処理機能１１１は、プロセスＩＤ２０１に対応するプロセスの一部の情報が不揮発性メモリに格納されているか否かを判定する（ステップ９０８）。
【０１７６】
プロセスＩＤ２０１に対応するプロセスの一部の情報が不揮発性メモリに格納されていると判定された場合、電源復帰処理機能１１１は、プロセスＩＤ２０１に対応するプロセスの情報のうち不揮発性メモリに格納されていない情報をストレージ６０２から読み出し、不揮発性メモリに格納されている情報及び読み出された情報に基づいて、プロセスを再起動し（ステップ９０９）、ステップ９０５に戻る。
【０１７７】
プロセスＩＤ２０１に対応するプロセスの全ての情報が不揮発性メモリに格納されていないと判定された場合、電源復帰処理機能１１１は、プロセスＩＤ２０１に対応するプロセスの全ての情報をストレージ６０２から読み出し、読み出された情報に基づいてプロセスを再起動し（ステップ９２１）、ステップ９０５に戻る。
【０１７８】
ステップ９０４において、プロセッサ１０４が不揮発性であると判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６の各データを参照し、全てのエントリについて処理が終了したか否かを判定する（ステップ９１０）。プロセッサ１０４が不揮発性の場合、プロセッサ１０４は保持する情報については復旧できるため、ステップ９１０以下の処理において、メモリに格納されている情報の異常が発生した部分について、改めてストレージ６０２から必要な情報を読み出す処理が実行される。
【０１７９】
全てのエントリについて処理が終了したと判定された場合、電源復帰処理機能１１１は、ステップ９１６に進む。
【０１８０】
全てのエントリについて処理が終了していないと判定された場合、電源復帰処理機能１１１は、プロセス管理表１０６から一つエントリを読み出し、当該エントリのプロセスＩＤ２０１に対応するプロセスの情報が、全て不揮発性メモリに格納されているか否かを判定する（ステップ９１１）。
【０１８１】
プロセスＩＤ２０１に対応するプロセスの情報が、全て不揮発性メモリに格納されていると判定された場合、電源復帰処理機能１１１は、不揮発性メモリに格納される情報に基づいて、プロセスＩＤ２０１に対応するプロセスを再開し（ステップ９１２）、ステップ９１０に戻る。
【０１８２】
プロセスＩＤ２０１に対応するプロセスの情報が不揮発性メモリ以外にも格納されていると判定された場合、電源復帰処理機能１１１は、プロセスＩＤ２０１に対応するプロセスのデータ領域２２０の更新部のみの情報がメモリに格納されているか否かを判定する（ステップ９１３）。
【０１８３】
プロセスＩＤ２０１に対応するプロセスのデータ領域２２０の更新部のみの情報がメモリに格納されていると判定された場合、電源復帰処理機能１１１は、プロセスＩＤ２０１に対応するプロセスのコード部及び定数２２１をストレージ６０２から読み出し、メモリに格納された情報と読み出された情報に基づいて、中断されていたプロセスを再開し（ステップ９１４）、ステップ９１０に戻る。
【０１８４】
プロセスＩＤ２０１に対応するプロセスのデータ領域２２０の更新部以外の情報がメモリに格納されていると判定された場合、プロセスＩＤ２０１に対応するプロセスの全ての情報をストレージ６０２から読み出し、読み出された情報に基づいてプロセスを再起動し（ステップ９１５）、ステップ９１０に戻る。
【０１８５】
ステップ９０２において、確認された起動識別フラグ１１２が「１」でないと判定された場合、電源復帰処理機能１１１は、システムを初期化し（ステップ９１９）、起動識別フラグに「１」を設定し（ステップ９２０）、ステップ９１６に進む。
【０１８６】
電源復帰処理機能１１１は、全てのデバイスドライバの状態を確認し（ステップ９１６）、中断処理が再開できるか否かを判定する（ステップ９１７）。なお、ステップ９１６及びステップ９１７は、ステップ４０６及びステップ４０７と同様の処理である。
【０１８７】
中断処理が再開できないと判定された場合、電源復帰処理機能１１１は、呼び出し元のプロセスへ異常終了通知を送信し（ステップ９１８）、処理を終了する。
【０１８８】
中断処理が再開できると判定された場合、電源復帰処理機能１１１は、処理を終了する。
【０１８９】
図１０Ａ、図１０Ｂ及び図１０Ｃは、本発明の実施形態において、複数メモリが存在する組込機器の構成におけるプロセス、及びページ入れ替え処理を説明するフローチャートである。
【０１９０】
当該処理が実行されるタイミングは、ＴＬＢミスが発生したとき、又はＵＩプロセスからバックグラウンドプロセスへ処理が切り替えられるときが考えられる。以下の説明において処理のきっかけとなるプロセスを「プロセスＡ」と呼ぶ。
【０１９１】
ＯＳ１０７は、システムがアイドル状態であるか否かを判定する（ステップ１００１）。
【０１９２】
システムがアイドル状態であると判定された場合、ＯＳ１０７は、論理物理変換テーブル１０５からページ一覧を取得し、取得されたページが割り当てられるメモリの性能が高い順に、取得されたページ一覧のエントリを並び替え、さらに、各メモリに格納されるページの総合優先度８１３が小さい順に、当該メモリに格納されるページ一覧のエントリを並び替える（ステップ１００２）。なお、メモリの性能は、メモリＩＤ８０８に基づいて、メモリタイプ定義表２１７を参照して判定される。
【０１９３】
ＯＳ１０７は、取得されたページ一覧の全てのエントリについて処理が終了したか否かを判定する（ステップ１００３）。
【０１９４】
取得されたページ一覧の全てのエントリについて処理が終了していると判定された場合、ＯＳ１０７は、処理を終了する。
【０１９５】
取得されたページ一覧の全てのエントリについて処理が終了していないと判定された場合、ＯＳ１０７は、ステップ１００２で並べ替えられたエントリを上から順に読み出し、読み出されたページと他のページの総合優先度８１３を比較し、総合優先度８１３の小さいページが高性能メモリに格納され、総合優先度８１３の大きいページが低性能メモリに格納されているか否かを判定する（ステップ１００４）。
【０１９６】
総合優先度８１３の小さいページが高性能メモリに格納され、総合優先度８１３の大きいページが低性能メモリに格納されていないと判定された場合、ＯＳ１０７は、ステップ１００３に戻る。
【０１９７】
総合優先度８１３の小さいページが高性能メモリに格納され、総合優先度８１３の大きいページが低性能メモリに格納されていると判定された場合、ＯＳ１０７は、総合優先度８１３の小さいページ及び総合優先度８１３の大きいページの入替フラグ８１０に同一の値を設定し（ステップ１００５）、ステップ１００３に戻る。なお、複数のページの組が存在する場合、入替フラグ８１０の値は、ページの組が増える毎に１加算した値が設定される方法が考えられる。ただし、入れ替えられるページを識別できればどのような値であってもよい。
【０１９８】
ステップ１００１において、システムがアイドル状態でないと判定された場合、ＯＳ１０７は、プロセスＡについてのアクセスにおいて、ＴＬＢミスが発生したか否かを判定する（ステップ１００６）。
【０１９９】
プロセスＡについてのアクセスにおいて、ＴＬＢミスが発生したと判定された場合、ＯＳ１０７は、論理物理変換テーブル１０５から、当該プロセスＡのアクセス対象のページに関する情報を取得し、取得された情報をＴＬＢ７１４に格納する（ステップ１００７）。
【０２００】
ＯＳ１０７は、プロセスＡの総合優先度８１３より低い総合優先度８１３のページを、入替対象ページ一覧として論理物理変換テーブル１０５から取得する（ステップ１００８）。
【０２０１】
ＯＳ１０７は、入替対象ページが存在するか否かを判定する（ステップ１００９）。
【０２０２】
入替対象ページが存在すると判定された場合、ＯＳ１０７は、取得された入替対象ページが割り当てられているメモリの性能の高い順に、取得された入替対象ページ一覧のエントリを並び替え、さらに、各メモリに格納されるページの総合優先度８１３の小さい順に、取得された入替対象ページ一覧のエントリを並び替える（ステップ１０１０）。
【０２０３】
ＯＳ１０７は、性能が高いメモリから順に、当該メモリの空き領域を検索する（ステップ１０１１）。
【０２０４】
ＯＳ１０７は、ステップ１０１１における検索の結果、空き領域が存在するか否かを判定する（ステップ１０１２）。
【０２０５】
空き領域が存在しないと判定された場合、ＯＳ１０７は、並び替えられた結果の最上位のページをストレージ６０２へ退避させ、空き領域を確保し（ステップ１０１４）、ステップ１０１５に進む。
【０２０６】
空き領域が存在すると判定された場合、又はステップ１０１４において空き領域が確保された場合、ＯＳ１０７は、プロセスＡのアクセス対象のページを当該空き領域に格納し（ステップ１０１５）、処理を終了する。
【０２０７】
ステップ１００９において、入替対象ページが存在しないと判定された場合、ＯＳ１０７は、論理物理変換テーブル１０５からプロセスＡの総合優先度８１３の次に大きい総合優先度８１３のページを取得する（ステップ１０１６）。
【０２０８】
ＯＳ１０７は、取得されたページをストレージ６０２に退避させ、空き領域を確保する（ステップ１０１７）。
【０２０９】
ＯＳ１０７は、確保された空き領域にプロセスＡのアクセス対象のページを格納する（ステップ１０１８）。
【０２１０】
ステップ１００６において、プロセスＡについてのアクセスにおいて、ＴＬＢミスが発生していないと判定された場合、ＯＳ１０７は、ＵＩプロセスからバックグラウンドプロセスへ切り替えであるか否かを判定する（ステップ１０１９）。
【０２１１】
ＵＩプロセスからバックグラウンドプロセスへ切り替えでないと判定された場合、ＯＳ１０７は、処理を終了する。
【０２１２】
ＵＩプロセスからバックグラウンドプロセスへ切り替えであると判定された場合、ＯＳ１０７は、論理物理変換テーブル１０５の各入替フラグ８１０を参照し、入替フラグ８１０が設定されている全てのページについて入替処理が実行されたか否かを判定する（ステップ１０２０）。
【０２１３】
入替フラグ８１０が設定されている全てのページについて入替処理が実行されたと判定された場合、ＯＳ１０７は、処理を終了する。
【０２１４】
入替フラグ８１０が設定されている全てのページについて入替処理を実行していないと判定された場合、ＯＳ１０７は、入替フラグ８１０が設定されたページの入替処理を実行し（１０２１）、ステップ１０２０に戻る。
【０２１５】
なお、プロセッサ１０４がマルチタスクで動作し、同時並行で実行される処理の負荷が増大する場合、ＯＳ１０７は、ステップ１０２０、及びステップ１０２１の処理を中断する。
【０２１６】
従来は、ユーザ操作時においてもページの入れ替えが実行されたため、ユーザ操作中にアイコンの移動など動画像表示がフリーズする場合があった。本発明は、以上の処理によって、ＵＩプロセスからバックグランドプロセスへ切り替えられるときに、ページの入れ替えの処理を実行するため、ユーザ操作に影響を与えないタイミングで、不揮発性メモリへ重要かつ更新が頻発するデータを優先的に順次配置することができる。したがって、揮発領域に存在する重要データの量を削減できるため、システム休止時のデータ退避処理時間を削減できる。
【図面の簡単な説明】
【０２１７】
【図１】本発明の実施形態の組込み機器の構成を説明するブロック図である。
【図２Ａ】本発明の実施形態におけるプロセス管理表が含む基本データの一例を示す図である。
【図２Ｂ】本発明の実施形態におけるプロセスタイプ定義表の一例を示す図である。
【図２Ｃ】本発明の実施形態におけるプロセス管理表が含む拡張データの一例を示す図である。
【図２Ｄ】本発明の実施形態におけるプロセス管理表が含む格納先管理データの一例を示す図である。
【図２Ｅ】本発明の実施形態におけるメモリタイプ定義表の一例を示す図である。
【図３】本発明の実施形態における起動識別フラグの設定処理を説明するフローチャートである。
【図４】本発明の実施形態においてＯＳが起動され、処理を開始するまでの流れを説明するフローチャートである。
【図５】本発明の実施形態における利用頻度の更新処理を説明するフローチャートである。
【図６】本発明の実施形態の組込み機器の構成の一例を説明するブロック図である。
【図７】本発明の実施形態の組込み機器の構成の一例を説明するブロック図である。
【図８Ａ】本発明の実施形態における論理物理変換テーブルが含む基本データの一例を示す図である。
【図８Ｂ】本発明の実施形態における論理物理変換テーブルが含む拡張データの一例を示す図である。
【図９Ａ】本発明のシステム起動及び処理の再開の流れを説明するフローチャートである。
【図９Ｂ】本発明のシステム起動及び処理の再開の流れを説明するフローチャートである。
【図９Ｃ】本発明のシステム起動及び処理の再開の流れを説明するフローチャートである。
【図１０Ａ】本発明の実施形態において、複数メモリが存在する組込機器の構成におけるプロセス、及びページ入れ替え処理を説明するフローチャートである。
【図１０Ｂ】本発明の実施形態において、複数メモリが存在する組込機器の構成におけるプロセス、及びページ入れ替え処理を説明するフローチャートである。
【図１０Ｃ】本発明の実施形態において、複数メモリが存在する組込機器の構成におけるプロセス、及びページ入れ替え処理を説明するフローチャートである。
【符号の説明】
【０２１８】
１０１  不揮発性メモリ
１０２  周辺回路
１０３  ＯＳ管理情報
１０４  プロセッサ
１０５  論理物理変換テーブル
１０６  プロセス管理表
１０７  ＯＳ
１０８  基本アプリ群
１０９  対退避データ
１１０  ファイルシステム／データベース管理
１１１  電源復帰処理機能
１１２  起動識別フラグ
１１３  主記憶領域
１１４  ストレージ領域
１１５  プロセス
１１６  瞬断判定レジスタＢ
１１７  書込残チェックカウンタ
１１８  電源回路
１１９  ＲＯＭ領域
１２０  電源断検出先指定データ
１２１  瞬断判定レジスタＡ
１２２  瞬断判定レジスタＣ
１２３  データ記録部
１２４  正常終了レジスタ
１２５  各種ファイル
１２６  デバイスドライバ
６０１  不揮発性メモリＡ
６０２  ストレージ
６０７  メモリ管理ユニット
６１４  ＴＬＢ
６１６  不揮発性メモリＣ
６２１  物理ページ
６２３  論理ページ
６２４  範囲
６２６  範囲
６２７  物理アドレス空間
６２８  論理アドレス空間
６３０  不揮発性メモリＢ
７０１  揮発性メモリ
７１４  ＴＬＢ
【図１】
2010108253.tif 000003
【図２Ａ】
2010108253.tif 000004
【図２Ｂ】
2010108253.tif 000005
【図２Ｃ】
2010108253.tif 000006
【図２Ｄ】
2010108253.tif 000007
【図２Ｅ】
2010108253.tif 000008
【図３】
2010108253.tif 000009
【図４】
2010108253.tif 000010
【図５】
2010108253.tif 000011
【図６】
2010108253.tif 000012
【図７】
2010108253.tif 000013
【図８Ａ】
2010108253.tif 000014
【図８Ｂ】
2010108253.tif 000015
【図９Ａ】
2010108253.tif 000016
【図９Ｂ】
2010108253.tif 000017
【図９Ｃ】
2010108253.tif 000018
【図１０Ａ】
2010108253.tif 000019
【図１０Ｂ】
2010108253.tif 000020
【図１０Ｃ】
2010108253.tif 000021