(57)【要約】【課題】揮発性の記憶リソースを有するプロセッサと不揮発性メモリとを有するコンピュータシステムの停止及び起動を制御するために適した制御システムを提供する。【解決手段】コンピュータシステムを停止させる事象を検出することにより、前記記憶リソースに格納されているデータを含む再開データのハッシュ値を検証データ０として算出し、前記再開データと前記検証データ０とを前記不揮発性メモリに保存する再開データ保存部（Ｓ５２、Ｓ５３）と、コンピュータシステムが起動したとき、前記不揮発性メモリに保存されている再開データの整合性を、前記不揮発性メモリに保存されている前記検証データ０を用いて確認する再開データ確認部（Ｓ１１、Ｓ１２）と、前記再開データの整合性が確認された場合、前記再開データを前記記憶リソースに読み込むことにより、前記事象が検出されたときにコンピュータシステムで実行されていた処理を再開する再開部（Ｓ１４）と、を備える。【選択図】図５
2016024569.tif 000002
【特許請求の範囲】
【請求項１】
揮発性の記憶リソースを有するプロセッサと、前記プロセッサに接続された不揮発性メモリと、を有するコンピュータシステムの停止及び起動を制御する制御システムであって、
前記コンピュータシステムを停止させる事象を検出することにより、前記記憶リソースに格納されているデータを含む再開データのハッシュ値を第１検証データとして算出し、前記再開データと前記第１検証データとを前記メモリに保存する再開データ保存部と、
前記コンピュータシステムが起動したとき、前記再開データとして前記メモリに保存されている第１データの整合性を、前記第１検証データとして前記メモリに保存されている第２データを用いて確認する再開データ確認部と、
少なくとも前記第１データの整合性が確認されることによって、前記第１データを前記記憶リソースに読み込むことにより、前記事象が検出されたときに前記コンピュータシステムで実行されていた処理を再開する再開部と、を備える、
制御システム。
【請求項２】
前記コンピュータシステム上で複数のタスクが並行して実行され、
前記複数のタスクの各々は前記プロセッサの前記記憶リソースを使用してあらかじめ定められた処理を行い、
前記制御システムは、さらに、
各々が前記複数のタスクのうちの１つのタスクによって前記記憶リソースに格納されているデータを含む複数のタスク制御データの連結リストを前記メモリに保存するタスク制御データ保存部と、
前記コンピュータシステムが再起動されたとき、前記メモリに保存されている前記連結リストのリンク構造の整合性を確認する連結リスト確認部と、を備え、
前記再開部は、前記第１データの整合性が確認され、かつ、前記リンク構造の整合性が確認されることによって、前記第１データを前記記憶リソースに読み込むことにより、前記事象が検出されたときに前記コンピュータシステム上で実行されていた処理を再開する、
請求項１に記載の制御システム。
【請求項３】
前記タスク制御データ保存部は、さらに、前記複数のタスク制御データの各々について、前記タスク制御データのハッシュ値を第２検証データとして算出し、前記タスク制御データと前記第２検証データとを対応付けて前記メモリに保存し、
前記再開部は、再開した前記処理において、前記複数のタスク制御データの各々について、前記タスク制御データとして前記メモリに保存されている第３データの整合性を、対応する前記第２検証データとして前記メモリに保存されている第４データを用いて確認し、整合性が確認されない前記第３データを前記連結リストから削除する、
請求項２に記載の制御システム。
【請求項４】
前記制御システムは、さらに、前記コンピュータシステム上で実行されているタスクを、前記複数のタスクのうちの１つのタスクから他の１つのタスクへ切り替えるタスク切り替え部を備え、
前記タスク制御データ保存部は、タスク切り替え前に実行中のタスクによって前記記憶リソースに格納されているデータを含む新たなタスク制御データのハッシュ値を新たな第２検証データとして算出し、前記メモリに保存されている前記実行中のタスクのタスク制御データ及び第２検証データを、前記新たなタスク制御データ及び前記新たな第２検証データで更新する、
請求項３に記載の制御システム。
【請求項５】
前記再開データは、さらに、前記コンピュータシステムが起動されたときに前記複数のタスクの中で最初に実行されるべきタスクを開始タスクとして指定する指定データを含み、
前記再開部は、再開した前記処理において、前記指定データで指定される前記開始タスクの前記タスク制御データとして前記メモリに保存されているデータを前記記憶リソースに読み込むことにより、前記コンピュータシステムが再起動される前に前記開始タスクによって実行されていた処理を再開する、
請求項２に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムに関し、特には、コンピュータシステムの停止及び起動を制御する制御システムに関する。
【背景技術】
【０００２】
オペレーティングシステム（ＯＳ）は、コンピュータシステムの停止及び起動を含む全体的な動作を制御する制御システムである。マルチタスク動作を制御する高機能なＯＳでは、システムの初期化に時間がかかることから、システムを高速に起動するためのサスペンド処理及びレジューム処理が行われることがある。
【０００３】
サスペンド処理とは、システム停止後においても、例えばバッテリーなどの補助電源を用いて、揮発性のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されるメインメモリ上のデータを保持する処理である。
【０００４】
レジューム処理とは、システム起動時に、前記メインメモリ上に保持されている前記データを用いて、システム停止前に実行されていた処理を直ちに再開する処理である。
【０００５】
これらの処理を組み合わせて実行することで、システムが高速に起動される。
【０００６】
例えば、特許文献１には、バッテリーでバックアップされるＣＭＯＳメモリを備えるコンピュータシステムが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６２−２６４３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
温度条件や小型化要求などのためにバッテリーを搭載できないコンピュータシステムや、環境発電により得た電力で動作するコンピュータシステムのように、厳しい省電力要件が課せられるコンピュータシステムが存在する。前記省電力要件の典型的な一例として、システム停止後の電力消費を完全になくすことが挙げられる。
【０００９】
そのようなコンピュータシステムでサスペンド処理及びレジューム処理を可能にするために、例えば、メインメモリを、電力消費なしでデータを保持できる不揮発性のＲＡＭで構成することは有効な方策である。
【００１０】
ただし、メインメモリを不揮発性のＲＡＭで構成しただけでは不足であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が有する揮発性の記憶リソースに格納されているデータを、システム停止後に保持するための方策が併せて必要になる。
【００１１】
そこで、本発明は、揮発性の記憶リソースを有するプロセッサと、前記プロセッサに接続された不揮発性メモリと、を有するコンピュータシステムの停止及び起動を制御するために適した制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の一態様に係る制御システムは、揮発性の記憶リソースを有するプロセッサと、前記プロセッサに接続された不揮発性メモリと、を有するコンピュータシステムの停止及び起動を制御する制御システムであって、前記コンピュータシステムを停止させる事象を検出することにより、前記記憶リソースに格納されているデータを含む再開データのハッシュ値を第１検証データとして算出し、前記再開データと前記第１検証データとを前記メモリに保存する再開データ保存部と、前記コンピュータシステムが起動したとき、前記再開データとして前記メモリに保存されている第１データの整合性を、前記第１検証データとして前記メモリに保存されている第２データを用いて確認する再開データ確認部と、少なくとも前記第１データの整合性が確認されることによって、前記第１データを前記記憶リソースに読み込むことにより、前記事象が検出されたときに前記コンピュータシステムで実行されていた処理を再開する再開部と、を備える。
【００１３】
このような構成によれば、前記コンピュータシステムが起動したときに、前記再開データの整合性が確認された場合のみ、前記再開データを用いてシステムを再開することができるので、不完全に保存された再開データを用いてシステムを再開することで生じる不都合を回避することができる。また、前記再開データの整合性が確認されない場合は、システムを初期状態から起動することとなるが、そのための時間的及び電力的なコストを、システムが安全に再開できないときにのみ発生するように抑制することができる。
【００１４】
また、例えば、前記コンピュータシステム上で複数のタスクが並行して実行され、前記複数のタスクの各々は前記プロセッサの前記記憶リソースを使用してあらかじめ定められた処理を行い、前記制御システムは、さらに、各々が前記複数のタスクのうちの１つのタスクによって前記記憶リソースに格納されているデータを含む複数のタスク制御データの連結リストを前記メモリに保存するタスク制御データ保存部と、前記コンピュータシステムが再起動されたとき、前記メモリに保存されている前記連結リストのリンク構造の整合性を確認する連結リスト確認部と、を備え、前記再開部は、前記第１データの整合性が確認され、かつ、前記リンク構造の整合性が確認されることによって、前記第１データを前記記憶リソースに読み込むことにより、前記事象が検出されたときに前記コンピュータシステム上で実行されていた処理を再開してもよい。
【００１５】
このような構成によれば、前記コンピュータシステムが起動したときに、前記再開データの整合性及び前記連結リストのリンク構造の整合性の両方が確認された場合のみ、前記再開データを用いてシステムを再開することができるので、不完全に保存された再開データや連結リストを用いてシステムを再開することで生じる不都合を回避することができる。また、前記再開データ及び前記連結リストの整合性が確認されない場合は、システムを初期状態から起動することとなるが、そのための時間的及び電力的なコストを、システムが安全に再開できないときにのみ発生するように抑制することができる。
【００１６】
また、例えば、前記タスク制御データ保存部は、さらに、前記複数のタスク制御データの各々について、前記タスク制御データのハッシュ値を第２検証データとして算出し、前記タスク制御データと前記第２検証データとを対応付けて前記メモリに保存し、前記再開部は、再開した前記処理において、前記複数のタスク制御データの各々について、前記タスク制御データとして前記メモリに保存されている第３データの整合性を、対応する前記第２検証データとして前記メモリに保存されている第４データを用いて確認し、整合性が確認されない前記第３データを前記連結リストから削除してもよい。
【００１７】
このような構成によれば、前記複数のタスク制御データの各々の整合性を確認し、整合性が確認できないタスク制御データを連結リストから削除することで、不完全に保存されたタスク制御データを用いてタスクを再開することで生じる不都合を回避することができる。なお、前記連結リストから削除されたタスク制御データに対応するタスクは、必要に応じて、例えば直ちに又は他のタスクから呼び出されたときに、作成されることになるが、そのための時間的及び電力的なコストを、タスクが安全に再開できないときにのみ発生するように抑制することができる。
【００１８】
また、例えば、前記制御システムは、さらに、前記コンピュータシステム上で実行されているタスクを、前記複数のタスクのうちの１つのタスクから他の１つのタスクへ切り替えるタスク切り替え部を備え、前記タスク制御データ保存部は、タスク切り替え前に実行中のタスクによって前記記憶リソースに格納されているデータを含む新たなタスク制御データのハッシュ値を新たな第２検証データとして算出し、前記メモリに保存されている前記実行中のタスクのタスク制御データ及び第２検証データを、前記新たなタスク制御データ及び前記新たな第２検証データで更新してもよい。
【００１９】
このような構成によれば、タスク切り替えの都度、前記タスク制御データに対応して前記第２検証データを更新することにより、前記第２検証データを最新の前記タスク制御データに対応するように維持することができる。
【００２０】
また、例えば、前記再開データは、さらに、前記コンピュータシステムが起動されたときに前記複数のタスクの中で最初に実行されるべきタスクを開始タスクとして指定する指定データを含み、前記再開部は、再開した前記処理において、前記指定データで指定される前記開始タスクの前記タスク制御データとして前記メモリに保存されているデータを前記記憶リソースに読み込むことにより、前記コンピュータシステムが再起動される前に前記開始タスクによって実行されていた処理を再開してもよい。
【００２１】
このような構成によれば、前記開始タスクの指定に応じて、システムが停止する前に実行されていたタスクとは異なる開始タスクの実行を最初に再開することができる。
【００２２】
なお、本発明は、このような制御システムとして実現することができるだけでなく、このような制御システムにおいて実行される特徴的なステップで構成される制御方法として実現することができる。また、コンピュータを用いて前記制御方法を実行するためのプログラム、及びそのようなプログラムを非一時的に格納する記録媒体として実現することもできる。
【発明の効果】
【００２３】
本発明に係る制御システムによると、コンピュータシステムが起動したときに、再開データの整合性が確認された場合のみ、前記再開データを用いてシステムを再開することができるので、不完全に保存された再開データを用いてシステムを再開することで生じる不都合を回避することができる。また、前記再開データの整合性が確認されない場合は、システムを初期状態から起動することとなるが、そのための時間的及び電力的なコストを、システムが安全に再開できないときにのみ発生するように抑制することができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態に係るコンピュータシステムの機能的な構成の一例を示すブロック図である。
【図２】実施の形態に係るＲＯＭ上のプログラムの一例を示す図である。
【図３】実施の形態に係る不揮発性メモリ上のデータの一例を示す図である。
【図４】実施の形態に係る不揮発性メモリ上のデータの詳細な一例を示す図である。
【図５】実施の形態に係る制御システムの動作の一例を示すフローチャートである。
【図６】実施の形態に係る制御システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００２６】
（実施の形態）
実施の形態に係る制御システムは、コンピュータシステムの停止及び起動を制御する制御システムである。制御システムの実装は限定されないが、一例として、前記制御システムは、前記コンピュータシステムの停止及び起動を含む全般的な動作を制御するオペレーティングシステム（以下、ＯＳと記す）の一部分によって発揮されるソフトウェア機能であってもよい。
【００２７】
以下では、まず、前記制御システムで制御される前記コンピュータシステムについて説明し、その後、前記制御システムについて、前記ＯＳの一部分が前記制御システムとして機能する場合の例を用いて、詳細に説明する。
【００２８】
図１は、コンピュータシステム１の機能的な構成の一例を示ブロック図である。
【００２９】
コンピュータシステム１は、プロセッサ１０、不揮発性メモリ２０、及び電源３０から構成される。
【００３０】
プロセッサ１０は、所定のプログラムを実行する装置であり、前記プログラムの実行に関わるデータを格納する揮発性の記憶リソース１１を有している。揮発性の記憶リソース１１には、プログラムカウンタ（ＰＣ）１２及び汎用レジスタ（ＧＲｓ）１３が含まれ、さらには、メインメモリとして用いることができる比較的大きな容量のＳＲＡＭ１４（Ｓｔａｔｉｃ  ＲＡＭ）が含まれてもよい。
【００３１】
また、プロセッサ１０は、ネットワーク接続コントローラ（ＮＩＣ：Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）１５、割り込みコントローラ（ＩＮＴＣ：ＩＮＴｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）１６、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１７を有するワンチップマイコンであってもよい。
【００３２】
プロセッサ１０は、ＲＯＭ１７に記憶されているプログラムを実行することによってあらかじめ定められた機能を発揮するＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）であってもよい。
【００３３】
なお、プロセッサ１０の揮発性の記憶リソース１１は、図１に示された要素には限定されない。プロセッサ１０の揮発性の記憶リソース１１には、さらに、例えば、スタックポインタ、インデクスレジスタ、プロセッサ１０に内蔵されるか又はプロセッサ１０とは別体に設けられるグラフィック処理ユニット、浮動小数点計算ユニット、アレイ計算ユニットなどの特定の機能を発揮するユニットを制御するためのレジスタが含まれ得る。
【００３４】
不揮発性メモリ２０は、プロセッサ１０に接続され、プロセッサ１０からデータを読み書きすることができるメインメモリである。不揮発性メモリ２０は、電力消費なしでデータを保持できる不揮発性のＲＡＭで構成される。不揮発性のＲＡＭとして、例えば、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  ＲＡＭ）などが利用できる。
【００３５】
電源３０は、商用電源などの外部電源から供給される電力をプロセッサ１０及び不揮発性メモリ２０の動作電力に変換してプロセッサ１０及び不揮発性メモリ２０に供給する電源装置である。電源３０は、外部電源の異常（特には電圧降下）を検出することにより、プロセッサ１０のＩＮＴＣ１６に割り込み信号を供給する。前記外部電源の異常は、コンピュータシステム１を停止させる事象（以下では、停止事象と言う）の一例である。停止事象には、前記外部電源の異常の他にも、ユーザーが行うスイッチ操作や、あらかじめスケジュールされた停止時刻の到来などが含まれ得る。
【００３６】
図２は、ＲＯＭ１７上のプログラムの一例を示す図である。図２に示されるように、ＲＯＭ１７には、例えば、イニシャルプログラムローダ（ＩＰＬ：Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）、ＯＳ、タスク１〜Ｎのそれぞれのプログラムが記憶されている。前記ＯＳは、マルチタスクＯＳであり、前記ＩＰＬによって起動され、前記タスク１〜Ｎの実行の制御を含む、コンピュータシステム１の全体的な動作の制御を行う。前記ＯＳのプログラムの少なくとも一部分が、プロセッサ１０で実行されることによって、実施の形態に係る制御システムとしての機能が発揮される。
【００３７】
なお、前記ＯＳ、前記タスク１〜Ｎのそれぞれのプログラムは、必ずしもＲＯＭ１７に記憶されている必要はない。例えば、前記ＩＰＬが、ネットワークで接続されているサーバから、ＮＩＣ１５を介して、前記ＯＳ、前記タスク１〜Ｎのそれぞれのプログラムを取得してもよい。
【００３８】
プロセッサ１０は、ＳＲＡＭ１７及び不揮発性メモリ２０を作業用のメモリとして用いて、前記ＯＳ及び前記タスク１〜Ｎのそれぞれのプログラムを実行する。不揮発性メモリ２０には、前記ＯＳ及び前記タスク１〜Ｎが使用するあらゆるデータが格納され得る。
【００３９】
図３は、不揮発性メモリ２０上のデータの一例を示す図である。図３では、不揮発性メモリ２０に格納され得るデータのうち、前記ＯＳの一部分である実施の形態に係る制御システムによって格納されるデータが示されている。
【００４０】
図３に示されるように、不揮発性メモリ２０には、再開データ、タスクごとのタスク制御データ、並びに、前記再開データ及びタスク制御データのそれぞれに対応して設けられる検証データが格納される。
【００４１】
図４は、不揮発性メモリ２０上のデータの詳細な一例を示す図である。
【００４２】
再開データは、システムの再開に用いられるデータであり、＊ｐ＿ｆｏｒｗａｒｄ、＊ｐ＿ｂａｃｋｗａｒｄ、開始タスク、データサイズ、ＰＣ、ＧＲｓ、ＳＲＡＭを含む。
【００４３】
＊ｐ＿ｆｏｒｗａｒｄ、＊ｐ＿ｂａｃｋｗａｒｄは、タスク制御データの連結リストを構成するポインタである。ここでは、一例として、タスク制御データの連結リストを、双方向循環リストで表している。
【００４４】
開始タスクは、コンピュータシステム１が起動されたときに前記タスク１〜Ｎの中で最初に実行されるべきタスクを指定するデータである。開始タスクは、例えば、タスク制御データの連結リストにおける位置によってタスクを指定する数値であってもよい。
【００４５】
ＰＣ、ＧＲｓ、ＳＲＡＭは、ＯＳによってプロセッサ１０のＰＣ１２、ＧＲｓ、ＳＲＡＭ１４に格納されているデータのコピーであり、データサイズは当該コピーの大きさを表す数値である。
【００４６】
タスク制御データｉ（ｉ＝１〜Ｎ）は、タスクの切り替えに用いられるデータであり、タスクｉ（ｉ＝１〜Ｎ）に対応して設けられ、＊ｐ＿ｆｏｒｗａｒｄ、＊ｐ＿ｂａｃｋｗａｒｄ、データサイズ、ＰＣ、ＧＲｓ、ＳＲＡＭを含む。
【００４７】
＊ｐ＿ｆｏｒｗａｒｄ、＊ｐ＿ｂａｃｋｗａｒｄは、タスク制御データの連結リストを構成するポインタである。
【００４８】
ＰＣ、ＧＲｓ、ＳＲＡＭは、タスクｉによってプロセッサ１０のプログラムカウンタ１２、汎用レジスタ１３、ＳＲＡＭ１４に格納されているデータのコピーであり、データサイズは当該コピーの大きさを表す数値である。
【００４９】
ここで、前記タスク制御データの連結リスト、前記タスク制御データ、及び前記タスク制御データに含まれる前記データのコピーは、一般的なマルチタスクＯＳにおいて、それぞれ、タスク管理テーブル、タスク制御ブロック、及びコンテキストと称されるデータに対応する。
【００５０】
検証データ０、検証データｉ（ｉ＝１〜Ｎ）は、再開データ、タスク制御データｉ（ｉ＝１〜Ｎ）のそれぞれの整合性、つまり完全な形で不揮発性メモリ２０に保存されていることを検証するためのデータである。
【００５１】
具体的には、検証データ０、検証データｉは、再開データ、タスク制御データｉ（ｉ＝１〜Ｎ）のそれぞれから所定のアルゴリズムを用いて算出されるハッシュ値である。そのようなハッシュ値は、例えば、ＭＤ（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ）５やＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）−３２に従って算出されてもよい。
【００５２】
次に、上述のように構成されるコンピュータシステム１において、実施の形態に係る制御システムによって実行される処理について説明する。
【００５３】
図５は、実施の形態に係る制御システムによって、コンピュータシステム１の起動から停止までの間に実行される処理の一例を示すフローチャートである。
【００５４】
コンピュータシステム１が起動すると、前記ＩＰＬによって前記ＯＳが起動される。制御システムは、前記ＯＳの一部分として動作することにより、以下の処理を行う。
【００５５】
再開データとして不揮発性メモリ２０に保存されている第１データのハッシュ値を、後述する検証データ０の算出に用いるアルゴリズムと同じアルゴリズムを用いて算出する（Ｓ１１）。算出されたハッシュ値と、検証データ０として不揮発性メモリ２０に保存されている第２データと、を比較する（Ｓ１２）。この比較が一致することによって、前記第１データの整合性、つまり前記再開データが完全な形で前記第１データとして保存されていることが確認される。
【００５６】
算出されたハッシュ値と前記第２データとが一致した場合（Ｓ１３でＹＥＳ）、不揮発性メモリ２０に保存されているタスク制御データの連結リストのリンク構造の整合性を確認する（Ｓ１５）。前記連結リストのリンク構造の整合性は、例えば、前記連結リストが双方向循環リストである場合に、再開データからポインタを順方向及び逆方向に辿り、何れの方向に辿っても元の再開データに戻ることによって確認してもよい。
【００５７】
前記リンク構造が整合している場合（Ｓ１６でＹＥＳ）、前記第１データをプロセッサ１０の揮発性の記憶リソース１１に読み込むことにより、再開データが保存されたときにコンピュータシステム１で実行されていた処理を再開する（Ｓ２０）。
【００５８】
再開した前記処理において、タスクｉ（ｉ＝１〜Ｎ）の各々について、以下の処理を行う（Ｓ２１〜Ｓ２６）。
【００５９】
タスク制御データｉとして不揮発性メモリ２０に保存されている第３データのハッシュ値を、後述する検証データｉの算出に用いるアルゴリズムと同じアルゴリズムを用いて算出する（Ｓ２２）。算出されたハッシュ値と、検証データｉとして不揮発性メモリ２０に保存されている第４データと、を比較する（Ｓ２３）。この比較が一致することによって、前記第３データの整合性、つまり前記タスク制御データｉが完全な形で前記第３データとして保存されていることが確認される。
【００６０】
算出されたハッシュ値と前記第４データとが一致しない場合（Ｓ２４でＮＯ）、前記第３データを前記連結リストから削除する（Ｓ２５）。前記第３データの削除は、例えば、前記第３データの前後のタスク制御データを直結するように、前記連結リストのポインタを更新することによって行われる。
【００６１】
このように、タスク制御データの各々の整合性を確認し、整合性が確認できないタスク制御データを連結リストから削除することで、不完全に保存されたタスク制御データを用いることで生じる不都合を回避することができる。
【００６２】
なお、前記連結リストから前記タスク制御データを削除した場合、前記削除されたタスク制御データに対応するタスクは、必要に応じて作成される。前記タスクは、例えば、対応するタスク制御データが削除された直後に、又は他のタスクから呼び出されたときに、作成されてもよい。これにより、タスクを作成するための時間的及び電力的なコストを、タスクが安全に再開できないときにのみ発生するように抑制することができる。
【００６３】
さて、不揮発性メモリ２０上の再開データの整合性が確認できない場合（Ｓ１３でＮＯ）、及び前記連結リストのリンク構造の整合性が確認できない場合（Ｓ１６でＮＯ）の何れの場合も、タスクが全く動作していない初期状態からシステムを起動する。具体的には、プロセッサ１０を初期化し（Ｓ３１）、タスクｉ（ｉ＝１〜Ｎ）のうちでメインタスクとしてあらかじめ定められているタスクを作成する（Ｓ３２）。
【００６４】
このように、前記再開データ及び前記連結リストのリンク構造の整合性を確認し、整合性が確認できない場合に、初期状態からシステムを起動することで、不完全に保存された再開データやタスク制御データを用いることで生じる不都合を回避することができる。また、システムを初期状態から起動するための時間的及び電力的なコストを、システムが安全に再開できないときにのみ発生するように抑制することができる。
【００６５】
上述のようにしてシステムが再開され、又はシステムが初期状態から起動されると、タスクを実行する（Ｓ４１）。システムが前記再開データに従って再開された場合は、前記再開データの開始タスクによって示されるタスクが最初に実行される。システムが初期状態から起動された場合は、前記メインタスクが最初に実行される。最初に実行されたタスクから他のタスクが呼び出され、複数のタスクが並行して実行される。
【００６６】
複数のタスクを並行して実行する処理には、タスク切り替え処理が含まれる。実施の形態に係るタスク切り替え処理では、一般的なマルチタスクＯＳにおいて行われるタスク切り替え処理に加えて、タスク制御データの検証データを所定のアルゴリズムを用いて算出し、算出された検証データを不揮発性メモリ２０に保存する処理が行われる。
【００６７】
図６は、実施の形態に係る制御システムによって、実行中のタスクをタスクｉからタスクｊに切り替えるときに実行される処理の一例を示すフローチャートである。
【００６８】
タスク切り替え前に実行中のタスクｉによってプロセッサ１０の記憶リソース１１に格納されているデータを含む新たなタスク制御データｉのハッシュ値を、所定のアルゴリズムを用いて、新たな検証データｉとして算出する（Ｓ４２）。
【００６９】
不揮発性メモリ２０に保存されているタスクｉのタスク制御データ及び検証データｉを、前記新たなタスク制御データｉ及び前記新たな検証データｉで更新する（Ｓ４３）。
【００７０】
切り替え後に実行されるべきタスクｊの、不揮発性メモリ２０に保存されているタスク制御データｊをプロセッサ１０の記憶リソース１１に読み込み（Ｓ４４）、タスクｊを実行する（Ｓ４５）。
【００７１】
このように、タスク切り替えの都度、タスク制御データに対応して検証データを更新することにより、検証データを最新のタスク制御データに対応するように維持することができる。
【００７２】
再び図５を参照して、電源異常などの停止事象が検出されると（Ｓ５１でＹＥＳ）、プロセッサ１０の記憶リソース１１に格納されているデータを含む新たな再開データのハッシュ値を、所定のアルゴリズムを用いて、新たな検証データ０として算出する（Ｓ５２）。そして、前記新たな再開データ及び前記新たな検証データ０を不揮発性メモリに保存する（Ｓ５３）。その後、無限ループやシステムクロックの停止など、周知の方法でシステムを停止する。
【００７３】
以上説明したように、実施の形態に係る制御システムによれば、再開データ及び複数のタスク制御データの各々に対応して検証データを保存し、システムの起動時に、前記再開データ及び前記複数のタスク制御データの各々の整合性を、対応する検証データを用いて確認するので、不完全に保存された再開データやタスク制御データを用いることで生じる不都合が回避される。また、システムを初期状態から起動し、又はタスクを作成するための時間的及び電力的なコストを、システムやタスクが安全に再開できないときにのみ発生するように抑制することができる。
【００７４】
このような構成の効果は、とりわけ、課題の欄で述べたような厳しい省電力要件が課せられるコンピュータシステムにおいて、顕著に発揮される。
【００７５】
プロセッサの揮発性の記憶リソースに格納されているデータを前記メインメモリに完全に保存することを、例え不時の停電の際であっても保証するためには、電源に相応の余裕を持たせる必要がある。しかし、厳しい省電力要件が課せられるコンピュータシステムでは、電源にそのような余裕を持たせることができるとは限らない。
【００７６】
そこで、実施の形態に係る制御システムを用いることによって、厳しい省電力要件を満たすコンピュータシステムにおいて、システムの起動の高速化と再開処理の安全性の確保との良好なトレードオフを得ることができる。
【００７７】
（変形例）
以上、本発明の実施の形態に係る制御システムについて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施した形態は、本発明の範囲内に含まれ得る。
【００７８】
例えば、実施の形態では、前記制御システムがＯＳの一部分によって発揮されるソフトウェア機能である場合の例で説明したが、前記制御システムは、図５、図６のフローチャートに示されるステップを実行するハードウェアで実現されてもよい。そのようなハードウェアは、例えば、プロセッサ１０に内蔵されてもよく、プロセッサ１０とは別体に設けられてもよい。
【００７９】
また、例えば、実施の形態では、タスク切り替えの都度、更新されるタスク制御データに対応して検証データを更新するとして説明したが、タスク制御データに対応する検証データの更新のタイミングは、タスク切り替えのときには限定されない。前記検証データは、システムが停止するまでに適宜のタイミングで更新されればよく、例えば、タイマー割り込みなどにより定期的に更新されても構わない。
【００８０】
また、例えば、実施の形態では、図４において、再開データ、タスク制御データ１、及びタスク制御データＮの何れもが、ＰＣ１２、ＧＲｓ１３、ＳＲＡＭ１４のデータのコピーを含むように示したが、これは説明のための例示であり、再開データ、タスク制御データ１、及びタスク制御データＮのそれぞれの内容は、この例には限定されない。個々のタスク制御データには、対応するタスクが使用する揮発性リソースに格納されるデータのコピーのみが保存されればよい。
【産業上の利用可能性】
【００８１】
本発明は、コンピュータシステムの停止及び起動を制御する制御システムに利用でき、例えば、マルチタスクＯＳに利用できる。
【符号の説明】
【００８２】
１    コンピュータシステム
１０    プロセッサ
１１    記憶リソース
１２    プログラムカウンタ（ＰＣ）
１３    汎用レジスタ（ＧＲｓ）
１４    ＳＲＡＭ
１５    ネットワーク接続コントローラ（ＮＩＣ）
１６    割り込みコントローラ（ＩＮＴＣ）
１７    ＲＯＭ
１７    ＳＲＡＭ
２０    不揮発性メモリ
３０    電源
【図１】
2016024569.tif 000003
【図２】
2016024569.tif 000004
【図３】
2016024569.tif 000005
【図４】
2016024569.tif 000006
【図５】
2016024569.tif 000007
【図６】
2016024569.tif 000008