(57)【要約】【課題】  タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知する。【解決手段】  本発明に係るタスク管理システム２１０は、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域２２３に記憶する実行待機状態変更部２１６と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間１２２-１〜１２２-ｎに記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域２２３に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部２１６とを具備する。【選択図】  図１
2006018684.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、
タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、
該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを特徴とするタスク管理システム。
【請求項２】
前記検証子記憶領域は、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項１に記載のタスク管理システム。
【請求項３】
前記検証子記憶領域は、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項２に記載のタスク管理システム。
【請求項４】
前記実行待機状態変更部は、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項２に記載のタスク管理システム。
【請求項５】
前記実行待機状態変更部及び前記実行状態変更部は、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項１乃至４のいずれか一項に記載のタスク管理システム。
【請求項６】
前記実行待機状態変更部及び前記実行状態変更部は、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項２乃至４のいずれか一項に記載のタスク管理システム。
【請求項７】
特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備することを特徴とする請求項２乃至４のいずれか一項に記載のタスク管理システム。
【請求項８】
前記タスク用アドレス空間は、ページング方式で管理されており、
前記アクセス検知部は、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生することを特徴とする請求項７に記載のタスク管理システム。
【請求項９】
前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備することを特徴とする請求項８に記載のタスク管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを並列に実行するオペレーティングシステム（ＯＳ）におけるタスク管理システムに関する。
【背景技術】
【０００２】
従来から、電子計算機上で複数のタスクを高速に切り替えながら実行することで並行処理を実現する際のタスクの切り替えを実現するタスク管理システムが知られている。かかるタスク管理システムは、電子計算機のオペレーティングシステムのサブシステムである。
【０００３】
図１３乃至図１７を参照して、従来のタスク管理システムについて説明する。図１３は、従来のタスク管理システム１００の構成を示すブロック図である。
【０００４】
図１３に示すように、従来のタスク管理システム１００は、タスク管理部１１０と、記憶部１２０とを具備している。
【０００５】
タスク管理手段１１０は、管理機能１１１と、タスク中断機能１１２と、タスク再開機能１１３と、タスク切替機能１１４とを具備している。
【０００６】
管理機能１１１は、タスク中断機能１１２とタスク再開機能１１３とタスク切替機能１１４の実行を制御するように構成されている。タスク中断機能１１２は、実行状態のタスクを実行待機状態に変更するように構成されている。タスク再開機能１１３は、実行待機状態のタスクを実行状態に変更するように構成されている。タスク切替機能１１４は、実行再開するタスクの選出及びタスク用アドレス空間の切り替えを行うように構成されている。
【０００７】
記憶部１２０は、タスク情報記憶領域１２１と、複数のタスク用アドレス空間１２２-１乃至１２２-ｎとを具備している。
【０００８】
タスク情報記憶領域１２１は、各タスクを識別するためのタスク番号と、各タスクの状態を示すタスク情報とを関連付けて記憶する領域である。ここで、タスク情報には、ＣＰＵ（中央処理装置）のレジスタの内容や、当該タスクが利用していたタスク用アドレス空間の指定子等の当該タスクを後刻実行再開するのに必要なデータや、当該タスクの優先度や累計実行時間等の管理上のデータが含まれる。
【０００９】
タスク用アドレス空間１２２-１乃至１２２-ｎは、タスクごとのアドレス空間であるタスク用アドレス空間を管理するものである。タスク用アドレス空間は、タスクごとに一般に異なる論理アドレス空間である。すなわち、同じアドレスであっても、各タスクによって実際にアクセスされる物理アドレス空間は一般に異なる（同じであっても良い）。
【００１０】
以下、従来のタスク管理システムの動作について説明する。
【００１１】
図１４は、従来のタスク管理システム１００の管理機能１１１がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００１２】
図１４に示すように、ステップＳ１０１において、管理機能１１１は、タスクの切り替えを行う際に、タスク中断機能１１２に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで実行状態であったタスクを、以降「タスクＡ」と参照することにする。
【００１３】
ステップＳ１０２において、管理機能１１１は、タスク切替機能１１４に対して、次に実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで実行再開対象として選択されたタスクを、以降「タスクＢ」と参照することにする。
【００１４】
ステップＳ１０３において、管理機能１１１は、タスク再開機能１１３に対して、タスクＢを実行状態にするように指示して、処理を終了する。
【００１５】
図１５は、従来のタスク管理システム１００のタスク中断機能１１２がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００１６】
図１５に示すように、ステップＳ１０１Ａにおいて、タスク中断機能１１２は、ステップＳ１０１における管理機能１１１からの指示に応じて、現在実行状態であるタスク（タスクＡ）を実行待機状態に変更する。
【００１７】
ステップＳ１０２Ａにおいて、タスク中断機能１１２は、タスクＡのタスク情報を、タスク情報記憶領域１２１に記憶する。
【００１８】
図１６は、従来のタスク管理システム１００のタスク切替機能１１４がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００１９】
図１６に示すように、ステップＳ１０１Ｂにおいて、タスク切替機能１１４は、ステップＳ１０２における管理機能１１１からの指示に応じて、タスク情報記憶領域１２１を参照して、タスク間の公平性や優先度等を考慮して、当該タスク管理システム１００が取り扱うタスクの中から、実行再開する対象となるタスク（タスクＢ）を決定する。
【００２０】
ステップＳ１０２Ｂにおいて、タスク切替機能１１４は、タスクＢが以前実行状態であったときに利用していたタスク用アドレス空間が利用できるように、タスク用アドレス空間の切り替えを行う。
【００２１】
具体的には、タスク切替機能１１４は、ＣＰＵのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとの対応付け機構の設定変更によって、タスクアドレス空間の切り替えを行う。
【００２２】
ただし、かかるアドレス対応付け機構を用いていない電子計算機（すなわち、物理アドレスを唯一のアドレス空間とするシステム）において、物理アドレス空間を分割した各々をタスク用アドレス空間とする場合には、タスク用アドレス空間の切り替えの設定処理は不要である。
【００２３】
図１７は、従来のタスク管理システム１００のタスク再開機能１１３がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００２４】
図１７に示すように、ステップＳ１０１Ｃにおいて、タスク再開機能１１３は、ステップＳ１０３における管理機能１１１からの指示に応じて、タスク情報記憶領域１２１からタスクＢのタスク情報を取得する。
【００２５】
タスク再開機能１１３は、ステップＳ１０２Ｃにおいて、取得したタスク情報に基づいてＣＰＵのレジスタ内容を設定し、ステップＳ１０３Ｃにおいて、タスクＢの実行を再開させる。
【００２６】
上述のような従来のタスク管理システムの例としては、特許文献１に記載されているタスクスイッチ制御機能とタスク中断機能とタスク再開機能とを具備するシステムや、ＵＮＩＸ（登録商標）等のマルチタスクＯＳが知られている。
【特許文献１】特開２０００-６６９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかしながら、従来のタスク管理システムでは、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こっても、それを検知できないという問題点があった。
【００２８】
したがって、他のタスクによってタスクの重要なデータが不正に書き換えられたことが検知されに見過ごされてしまい、かかるデータを利用するタスクの処理に影響が出てしまう。
【００２９】
そこで、本発明は、以上の点に鑑みてなされたもので、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することを目的とする。
【課題を解決するための手段】
【００３０】
本発明の第１の特徴は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを要旨とする。
【００３１】
かかる発明によれば、実行状態変更部が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域に記憶されたタスクの検証子と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【００３２】
本発明の第１の特徴において、前記検証子記憶領域が、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【００３３】
本発明の第１の特徴において、前記検証子記憶領域が、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【００３４】
本発明の第１の特徴において、前記実行待機状態変更部が、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【００３５】
本発明の第１の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【００３６】
本発明の第１の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【００３７】
本発明の第１の特徴において、特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備するように構成されていてもよい。
【００３８】
本発明の第１の特徴において、前記タスク用アドレス空間が、ページング方式で管理されており、前記アクセス検知部が、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【００３９】
本発明の第１の特徴において、前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備するように構成されていてもよい。
【００４０】
かかる発明によれば、アクセス検知部が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証部が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【発明の効果】
【００４１】
以上説明したように、本発明によれば、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することができる。
【発明を実施するための最良の形態】
【００４２】
（本発明の第１の実施形態に係るタスク管理システムの構成）
本発明の第１の実施形態に係るタスク管理システム２００は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムである。特に、本実施形態に係るタスク管理システム２００は、タスク用アドレス空間に記憶されているデータの変化の検知を行うタスク管理システムである。
【００４３】
図１に示すように、本実施形態に係るタスク管理システム２００は、タスク管理部２１０と、記憶部２２０とを具備している。
【００４４】
タスク管理部２１０は、管理機能２１１と、タスク中断機能１１２と、タスク再開機能１１３と、タスク切替機能１１４と、検証子生成機能２１５と、検証機能２１６とを具備している。
【００４５】
タスク中断機能１１２とタスク再開機能１１３とタスク切替機能１１４は、従来技術に係るタスク管理システム１００における各機能１１２乃至１１４と同一である。
【００４６】
検証子生成機能２１５は、タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成するように構成されている。
【００４７】
具体的には、検証機能２１６が、所定アドレス範囲を指定してタスクの検証子を生成するように指示した場合、検証子生成機能２１５は、現在利用できるタスク用アドレス空間を含むアドレス空間における指定された所定アドレス範囲に記憶されているデータから当該タスクの検証子を生成する。
【００４８】
ここで、タスクの検証子は、所定アドレス範囲に記憶されているデータを、所定の変換関数に入力することによって算出される出力データである。
【００４９】
ただし、かかる変換関数の性質としては、同一の入力データに対して同一の出力データを算出し、また、任意の入力データ「Ａ」に対する出力データが「Ｂ」であったときに、出力データが同じく「Ｂ」となるような入力データ「Ａ」とは異なる入力データ「Ｃ」を見出すことが非常に困難であることが必要である。
【００５０】
そのような性質を満たす変換関数としては、「ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）」や「ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）」等のセキュアハッシュ関数や、入力データを可逆符号化する可逆符号化関数（入力データをそのまま出力データとする変換関数を含む）等が考えられる。
【００５１】
また、セキュアハッシュ関数は、入力データ長によらない長さのデータを出力するが、計算処理負荷が比較的大きい。一方、可逆符号化関数は、計算処理負荷は比較的小さいが、入力データ長に応じた長さのデータを出力するという性質を持つ。
【００５２】
したがって、検証子生成機能２１５は、指定された所定アドレス範囲の広さが、比較的小さい場合（例えば、所定閾値よりも小さい場合）には、可逆符号化関数の出力を出力データとして採用し、それ以外の場合（例えば、所定閾値よりも大きい場合）には、セキュアハッシュ関数の出力を出力データとして採用する変換関数を用いることもできる。
【００５３】
検証機能２１６は、タスク用アドレス空間に記憶されているデータから生成された当該タスクの検証子と、検証子記憶領域に記憶されている当該タスクの検証子とが一致するか否かについて検証するように構成されている。
【００５４】
管理機能２１１は、各機能１１２乃至２１６の実行を制御するように構成されている。
【００５５】
記憶部２２０は、タスク情報記憶領域１２１と、複数のタスク用アドレス空間１２２-１乃至１２２-ｎと、検証子記憶領域２２３とを具備している。
【００５６】
タスク情報記憶領域１２１と複数のタスク用アドレス空間１２２-１乃至１２２-ｎは、従来技術に係るタスク管理システム１００における各機能１２１及び１２２-１〜１２２-ｎと同一である。
【００５７】
検証子記憶領域２２３は、検証子記憶データの集合を記憶する領域である。ここで、タスク管理システム２００の取り扱う各タスクには、検証子記憶データの集合のうちの１つが対応付けられている。以降、特定のタスクに対応付けられている検証子記憶データのことを「タスクＡの検証子記憶データ」や「タスクＢの検証子記憶データ」のように参照することとする。
【００５８】
検証子記憶データは、ツリー状に連結された部分検証子記憶データから構成されている。部分検証子記憶データは、行の集合からなる表形式のデータであり、各行は、アドレス範囲欄と、有効フラグ欄と、連鎖フラグ欄と、検証子欄とを持つ。すなわち、検証子記憶領域２２３は、タスク用アドレス空間内の所定アドレス範囲と、有効フラグと、連鎖フラグと、タスクの検証子とを関連付けるレコードを記憶している。
【００５９】
アドレス範囲欄には、アドレス範囲として有効な値が記憶される。有効フラグ欄及び連鎖フラグ欄には、「真値」または「偽値」が記憶される。検証子欄には、タスクの検証子が記憶される。
【００６０】
部分検証子記憶データの連結は、連鎖フラグ欄及びアドレス範囲欄によって行われる。すなわち、部分検証子記憶データにおける特定行の連鎖フラグ欄が「真値」である場合、かかる特定行のアドレス範囲欄に記憶されているアドレス範囲には、別の部分検証子記憶データが格納されており、かかる部分検証子記憶データも、同一の検証子記憶データを構成する要素となっている。
【００６１】
なお、検証子記憶データが、１つの部分検証子記憶データのみから構成される場合もあり得る。その場合は、各行の連鎖フラグ欄が省略されてもよい。
【００６２】
図２に示す検証子記憶データ４００は、検証子記憶データの具体例であり、部分検証子記憶データ４０１と、部分検証子記憶データ４０２と、部分検証子記憶データ４０３とから構成されている。ここで、部分検証子記憶データ４０２及び部分検証子記憶データ４０３は、部分検証子記憶データ４０１に連結されている。具体的には、部分検証子記憶データ４０２は、アドレス範囲「0x80000000〜0x800003ff」に格納されており、部分検証子記憶データ４０３は、アドレス範囲「0xdc000000〜0xdc0003ff」に格納されている。
【００６３】
なお、以降、検証子記憶データを構成する部分検証子記憶データにおける行を、便宜的に「検証子記憶データの行」や「検証子記憶データの各行」のように表現している場合がある。
【００６４】
図１の例では、検証子記憶領域２２３が、タスク用アドレス空間１２２-１〜１２２-ｎと便宜上分離して記述されているが、本発明は、これに限定されるものではなく、検証子記憶領域２２３の一部又は全てが、タスク用アドレス空間１２２-１〜１２２-ｎと重複する例にも適応可能である。
【００６５】
すなわち、本発明は、タスクに係る検証子記憶データを、当該タスク用アドレス空間内に格納する実施形態や、タスクに係る検証子記憶データを構成する一部の部分検証子記憶データのみを、当該タスク用アドレス空間内に格納する実施形態にも適応可能である。
【００６６】
本実施形態において、管理機構２１１と検証子生成機能２１５と検証機能２１６とが、タスクを実行状態から実行待機状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して検証子記憶領域２２３に記憶する実行待機状態変更部を構成する。
【００６７】
また、本実施形態において、管理機構２１１と検証子生成機能２１５と検証機能２１６とが、タスクを実行待機状態から実行状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して、検証子記憶領域２２３に記憶されている当該タスクの検証子と一致するか否かについて検証する実行状態変更部を構成する。
【００６８】
ここで、実行待機状態変更部は、タスクの検証子を更新する必要のあるレコード（検証子記憶データの行）におけるタスクの検証子を更新して検証子記憶領域２２３に記憶するように構成されていてもよい。
【００６９】
また、実行待機状態変更部は、有効フラグに「偽値」が設定されているレコード（検証子記憶データの行）を、タスクの検証子を更新する必要のあるレコード（検証子記憶データの行）と判断して、当該レコード（検証子記憶データの行）におけるタスクの検証子を更新して検証子記憶領域２２３に記憶するように構成されていてもよい。
【００７０】
また、実行待機状態変更部は、タスクの検証子が所定期間更新されていないレコード（検証子記憶データの行）を、タスクの検証子を更新する必要のあるレコード（検証子記憶データの行）と判断して、当該レコード（検証子記憶データの行）におけるタスクの検証子を更新して検証子記憶領域２２３に記憶するように構成されていてもよい。
【００７１】
（本発明の第１の実施形態に係るタスク管理システムの動作）
以下、図３乃至図６を参照して、本実施形態に係るタスク管理システム２００の動作について説明する。なお、タスク中断機能１１２とタスク再開機能１１３とタスク切替機能１１４の動作は、従来技術に係る動作と同じであるため、説明を省略する。
【００７２】
第１に、図３を参照して、タスク管理システム２００の管理機能２１１がタスクの切り替えを行う際に行う動作について説明する。
【００７３】
図３に示すように、ステップＳ１０１において、管理機能２１１は、タスクの切り替えを行う際に、タスク中断機能１１２に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクＡ」と参照することにする。
【００７４】
ステップＳ１１１において、管理機能２１１は、検証機能２１６に対して、タスクＡの検証子を更新するように指示する。
【００７５】
ステップＳ１０２において、管理機能２１１は、タスク切替機能１１４に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクＢ」と参照することにする。
【００７６】
ステップＳ１１２において、管理機能２１１は、検証機能２１６に対して、タスクＢについての検証を行うように指示する。
【００７７】
ステップＳ１１３において、管理機能２１１が検証機能２１６から検証成功の報告を受けた場合には、本動作はステップＳ１０３に進み、それ以外の場合には、本動作はステップＳ１１４に進む。
【００７８】
ステップＳ１０３において、管理機能２１１は、タスク再開機能１１３に対して、タスクＢを実行状態にするように指示し、本動作は終了する。
【００７９】
一方、ステップＳ１１４において、管理機能２１１は、異常検出時処理を行い、本動作は終了する。
【００８０】
ここで、ステップＳ１１４において行われる異常検出時処理について補足する。異常検出時処理としては、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクＢに異常発生を通知する処理や、ステップＳ１０３と同じ処理や、タスクＢを終了させる処理のいずれか又はそれらの処理の複合等が考えられる。
【００８１】
第２に、図４を参照して、タスク管理システム２００の検証機能２１６が、管理機能２１１によってタスクの検証子を更新するように指示された場合の動作について説明する。
【００８２】
図４に示すように、ステップＳ２０１において、検証機能２１６は、管理機能２１１によってタスクの検証子を更新するように指示された場合、指定されたタスクのタスク番号を、変数Ｔに代入する。
【００８３】
ステップＳ２０２において、検証機能２１６は、検証子記憶領域２３３にアクセスして、タスク番号が「Ｔ」であるタスクの検証子記憶データにおいて、検証子欄を更新する必要のある行が存在するか否かについて確認する。
【００８４】
ここで、ステップＳ２０２において検証子欄を更新する必要がある行であるかどうかの判断基準について補足する。この判断基準としては、複数の候補が存在する。
【００８５】
第１の候補は、有効フラグ欄が「偽値」である行を、検証子欄を更新する必要がある行とみなす基準である。
【００８６】
第２の候補は、検証子欄が所定期間更新されていない行を、検証子欄を更新する必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップＳ２０１の処理が行われてから、本動作が終了するまでの期間である。
【００８７】
ステップＳ２０３において、かかる行が存在する場合、本動作はステップＳ２０４に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の１つを「行Ｌ」と参照することとする。
【００８８】
ステップＳ２０４において、検証機能２１６は、行Ｌのアドレス範囲欄の値を、変数Ｒに代入する。
【００８９】
ステップＳ２０５において、検証機能２１６は、検証子生成機能２１５に対して、アドレス範囲Ｒを指定して、検証子を生成するように指示する。
【００９０】
ステップＳ２０６において、検証機能２１６は、検証子生成機能２１５によって生成された検証子の値を、行Ｌの検証子欄に記憶すると共に、行Ｌの有効フラグ欄に「真値」を記憶する。その後、本動作はステップＳ２０２に進む。
【００９１】
第３に、図５を参照して、タスク管理システム２００の検証機能２１６が、管理機能２１１によってタスクの検証子についての検証を行うように指示された場合の動作について説明する。
【００９２】
図５に示すように、ステップＳ３０１において、検証機能２１６は、管理機能２１１によってタスクの検証子についての検証を行うように指示された場合、指定されたタスクのタスク番号を、変数Ｔに代入する。
【００９３】
ステップＳ３０２において、検証機能２１６は、検証子記憶領域２３３にアクセスして、タスク番号が「Ｔ」であるタスクの検証子記憶データにおいて、検証を行う必要のある行が存在するか否かについて確認する。
【００９４】
ここで、ステップＳ３０２において検証を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の１つは、所定期間検証が行われていない行を、検証を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップＳ３０１の処理が行われてから、本動作が終了するまでの期間である。
【００９５】
ステップＳ３０３において、かかる行が存在する場合、本動作はステップＳ３０４に進み、かかる行が存在しない場合、本動作はステップＳ３０７に進む。なお、以降、かかる行の１つを「行Ｌ」と参照することとする。
【００９６】
ステップＳ３０４において、検証機能２１６は、行Ｌについての検証を行う。行Ｌについての検証処理の具体例については、図６を用いて後述する。
【００９７】
ステップＳ３０５において、行Ｌについての検証が成功した場合、本動作はステップＳ３０２に戻り、行Ｌについての検証が失敗した場合、本動作はステップＳ３０６に進む。
【００９８】
ステップＳ３０６において、検証機能２１６は、管理機能２１１に対して、検証失敗を報告して、本動作は終了する。一方、ステップＳ３０７において、検証機能２１６は、管理機能２１１に対して、検証成功を報告して、本動作は終了する。
【００９９】
第４に、図６を参照して、タスク管理システム２００の検証機能２１６が、指定された行のタスクの検証子についての検証を行う場合の動作について説明する。ここで、かかる動作には、図５におけるステップＳ３０４に示す行Ｌのタスクの検証子についての検証も含むものとする。
【０１００】
図６に示すように、ステップＳ３１１において、検証機能２１６は、検証子記憶領域２２３に記憶されている検証子記憶データにおける指定された行を、変数Ｌに代入する。
【０１０１】
ステップＳ３１２において、検証機能２１６は、行Ｌの有効フラグ欄の値を参照して、行Ｌの有効フラグ欄の値が「真値」であるか否かについて判断する。「真値」である場合、本動作はステップＳ３１３に進み、「偽値」である場合、本動作はステップＳ３１８に進む。
【０１０２】
検証機能２１６は、ステップＳ３１３において、行Ｌのアドレス範囲欄の値を変数Ｒに代入し、ステップＳ３１４において、検証子生成機能２１５に対して、アドレス範囲Ｒを指定して、タスクの検証子を生成するように指示する。
【０１０３】
ステップＳ３１５において、検証機能２１６は、検証子生成機能２１５によって生成されたタスクの検証子と、行Ｌの検証子欄の値とを比較する。
【０１０４】
ステップＳ３１６において、両者が一致した場合には、本動作はステップＳ３１８に進み、それ以外の場合には、本動作はステップＳ３１７に進む。
【０１０５】
ステップＳ３１７において、検証機能２１６は、管理機能２１１に対して、検証失敗を報告して、本動作は処理を終了する。一方、ステップＳ３１８において、検証機能２１６は、管理機能２１１に対して、検証成功を報告して、本動作は終了する。
【０１０６】
（本発明の第１の実施形態に係るタスク管理システムの作用・効果）
本実施形態に係るタスク管理システム２００によれば、検証機能２１６が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域２２３に記憶された検証子記憶データにおける行の検証子欄の値（タスクの検証子）と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【０１０７】
具体的には、図３に示すように、管理機能２１１が、ステップＳ１１４において異常検出時処理を行った場合には、タスクが実行待機状態であった期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知したことを意味する。
【０１０８】
したがって、本実施形態に係るタスク管理システム２００によれば、特定のタスクが他のタスクの重要なデータを不正に置き換えたことや、記憶部２２０に記憶されているデータが勝手に変化したことが検知されずに見過ごされてしまう可能性は極めて小さい。
【０１０９】
（本発明の第２の実施形態に係るタスク管理システムの構成）
図７を参照して、本発明の第２の実施形態に係るタスク管理システム３００の構成について説明する。以下、本実施形態に係るタスク管理システム３００の構成について、上述の第１の実施形態に係るタスク管理システム２００の構成との相違点を主として説明する。
【０１１０】
図７に示すように、本実施形態に係るタスク管理システム３００は、タスク管理部３１０と、記憶部３２０とを具備している。
【０１１１】
タスク管理部３１０は、管理機能３１１と、タスク中断機能１１２と、タスク再開機能１１３と、タスク切替機能１１４と、検証子生成機能２１５と、検証機能２１６と、アクセス検知機能３１７とを具備している。
【０１１２】
タスク中断機能１１２とタスク再開機能１１３とタスク切替機能１１４は、従来技術に係るタスク管理システム１００における各機能１１２乃至１１４と同一である。
【０１１３】
また、検証子生成機能２１５及び検証機能２１６は、上述の第１の実施形態に係るタスク管理システム２００における各機能２１５及び２１６と同一である。
【０１１４】
アクセス検知機能３１７は、検証対象のアドレス範囲に対するアクセスを検知するように構成されている。
【０１１５】
具体的には、アクセス検知機能３１７は、特定のレコード（検出子記憶データの行）におけるアドレス範囲欄に設定されているアドレス範囲（所定アドレス範囲）に記憶されているデータがアクセスされたことを検知するように構成されている。
【０１１６】
また、アクセス検知機能３１７は、特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【０１１７】
ここで、検証子生成機能２１５と検証機能２１６とアクセス検知機能３１７が、ページフォールトが発生した場合、当該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、タスクの検証子についての検証を行う検証部を構成する。
【０１１８】
管理機能３１１は、各機能１１２乃至３１７の実行を制御するように構成されている。
【０１１９】
記憶部３２０は、タスク情報記憶領域１２１と、複数のタスク用アドレス空間１２２-１〜１２２-ｎと、検証子記憶領域２２３と、ページテーブル記憶領域３２４とを具備している。
【０１２０】
タスク情報記憶領域１２１及び複数のタスク用アドレス空間１２２-１〜１２２-ｎの構成は、従来技術に係るタスク管理システム１００におけるタスク情報記憶領域１２１及び複数のタスク用アドレス空間１２２-１〜１２２-ｎの構成と同一である。
【０１２１】
検証子記憶領域２２３の構成は、上述の第１の実施形態に係るタスク管理システム２００における検証子記憶領域２２３の構成と同一である。
【０１２２】
ページテーブル記憶領域３２４は、タスク用アドレス空間をページング方式で管理するためのページテーブルを記憶する領域である。ページテーブルは、図７に示すように、ページと、アドレス範囲とを関連付けるものである。かかるページテーブルは、ページング方式仮想記憶装置を備える電子計算機においては一般的なデータであるため、詳細な説明については省略する。
【０１２３】
（本発明の第２の実施形態に係るタスク管理システムの動作）
以下、図８乃至図１２を参照して、本実施形態に係るタスク管理システム３００の動作について説明する。なお、タスク中断機能１１２とタスク再開機能１１３とタスク切替機能１１４の動作は、従来技術に係る動作と同じであり、検証機能２１６の動作は、上述の第１の実施形態に係る動作と同じであるため、説明を省略する。
【０１２４】
第１に、図８を参照して、タスク管理システム３００の管理機能３１１がタスクの切り替えを行う際に行う動作について説明する。
【０１２５】
図８に示すように、ステップＳ１０１において、管理機能３１１は、タスクの切り替えを行う際に、タスク中断機能１１２に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクＡ」と参照することにする。
【０１２６】
ステップＳ１１１において、管理機能３１１は、検証機能２１６に対して、タスクＡの検証子を更新するように指示する。
【０１２７】
ステップＳ１０２において、管理機能３１１は、タスク切替機能１１４に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクＢ」と参照することにする。
【０１２８】
ステップＳ１２２において、管理機能３１１は、アクセス検知機能３１７に対して、タスクＢについてアクセス検知の設定を行うように指示する。
【０１２９】
ステップＳ１０３において、管理機能３１１は、タスク再開機能１１３に対して、タスクＢを実行状態にするように指示し、本動作は終了する。
【０１３０】
第２に、図９を参照して、タスク管理システム３００のアクセス検知機能３１７が、管理機能２１１によってタスクについてのアクセス検知の設定を行うように指示された場合の動作について説明する。
【０１３１】
ステップＳ４０１において、アクセス検知機能３１７は、管理機能２１１によってタスクについてのアクセス検知の設定を行うように指示された場合、指定されたタスクのタスク番号を、変数Ｔに代入する。
【０１３２】
ステップＳ４０２において、アクセス検知機能３１７は、検証子記憶領域２２３にアクセスして、タスク番号が「Ｔ」であるタスクの検証子記憶データにおいて、アクセス検知の設定を行う必要のある行が存在するか否かについて確認する。
【０１３３】
ここで、ステップＳ４０２においてアクセス検知の設定を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の１つは、有効フラグ欄の値が「真値」であり、かつ、所定期間ステップＳ４０４の処理の対象となっていない行を、アクセス検知の設定を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップＳ４０１の処理が行われてから、本動作が終了するまでの期間である。
【０１３４】
ステップＳ４０３において、かかる行が存在する場合、本動作はステップＳ４０４に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の１つを「行Ｌ」と参照することとする。
【０１３５】
ステップＳ４０４において、アクセス検知機能３１７は、行Ｌのアドレス範囲欄の値を変数Ｒに代入する。
【０１３６】
ステップＳ４０５において、アクセス検知機能３１７は、ページテーブル記憶領域３２４に格納されているページテーブルを操作して、アドレス範囲Ｒを包含するページに記憶されるデータに対するアクセスが検知された際にページフォールトを発生するように設定する。
【０１３７】
ステップＳ４０５の処理の「アドレス範囲Ｒを包含するページ」の意味について補足する。
【０１３８】
ここで、「アドレス範囲Ｒを包含するページ」とは、「Ｒ」で指定されるアドレス範囲を完全に含むページ、及び、「Ｒ」で指定されるアドレス範囲の両端点のアドレスを含むページである。
【０１３９】
例えば、アドレス範囲Ｒが、図１０に示すような範囲であった場合に、「アドレス範囲Ｒを包含するページ」とは、「Ｒ」で指定されるアドレス範囲を完全に含むページ（ぺージＣ）と、「Ｒ」で指定されるアドレス範囲の両端点のアドレスを含むページ（ページＢ及びＤ）である、すなわち、ページＢ、Ｃ、Ｄである。
【０１４０】
ステップＳ４０５の処理の具体的な実施手段としては、特定ページの管理データを格納するページテーブルのエントリーを変更することにより、当該特定ページを読み書き禁止設定とすることや、当該特定ページが物理ページ（ページフレーム）と対応付けられていないように設定すること等が考えられる。
【０１４１】
第３に、図１１を参照して、ページフォールトが発生した場合にタスク管理システム３００のアクセス検知機能３１７が行う動作について説明する。
【０１４２】
ステップＳ５０１において、アクセス検知機能３１７は、ページフォールトを起こしたタスクのタスク番号を変数Ｔに代入し、ページフォールトが発生したアドレスを変数Ａに代入する。
【０１４３】
ステップＳ５０２において、検証子記憶領域２２３にアクセスして、タスク番号が「Ｔ」のタスクに係る検証子記憶データにおいて、アドレス範囲欄の値が「Ａ」の近傍である行が存在するか否かについて確認する。
【０１４４】
ここで、ステップＳ５０２の処理について補足する。ステップＳ５０２の処理では、アドレス範囲欄の値が「Ａ」の近傍であるか否かについて判断するための判断基準として、以下の基準が考えられる。
【０１４５】
例えば、アドレス範囲欄の値が「Ａ」を包含することをもって「「Ａ」の近傍である」と判断する基準（基準Ｃ１）や、アドレス範囲欄の値を包含するページに「Ａ」が含まれることをもって「「Ａ」の近傍である」と判断する基準（基準Ｃ２）や、アドレス範囲欄の値を包含するページ範囲及びその前後の数ページに「Ａ」が含まれることをもって「「Ａ」の近傍である」と判断する基準（基準Ｃ３）等が考えられる。
【０１４６】
例えば、「Ａ」が、図１２に示す値であるときには、基準Ｃ１を採用したときには、アドレス範囲Ｒ１のみが「Ａ」の近傍であり、基準Ｃ２を採用したときには、アドレス範囲Ｒ１及びＲ２が「Ａ」の近傍であり、基準Ｃ３を採用したときには、アドレス範囲Ｒ１、Ｒ２、Ｒ３が「Ａ」の近傍である。
【０１４７】
ステップＳ５０３において、かかる行が存在する場合、本動作はステップＳ５０４に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の１つを「行Ｌ」と参照することとする。
【０１４８】
ステップＳ５０４において、アクセス検知機能３１７は、検証機能２１６に対して、行Ｌについての検証を行うように指示する。
【０１４９】
ステップＳ５０５において、アクセス検知機能３１７は、検証機能２１６から検証成功の報告を受信した場合には、本動作はステップＳ５０６に進み、それ以外の場合には、本動作はステップＳ５０７に進む。
【０１５０】
ステップＳ５０６において、アクセス検知機能３１７は、行Ｌの有効フラグ欄の値を「偽値」に設定して、本動作は終了する。
【０１５１】
ステップＳ５０６の処理の目的は、タスク用アドレス空間に記憶されているデータがアクセスされたことで、当該データの内容が変化した可能性があるため、当該タスクの検証子の再生成が必要であることを記すこと、及び、当該タスク用アドレス空間に記憶されているデータが意図的に更新された後に、当該タスク用アドレス空間の近傍で再度ページフォールトが発生した場合に、誤って検証失敗と報告されるのを防ぐことである。
【０１５２】
しかしながら、ステップＳ５０６の処理は、オプショナルである。すなわち、ステップＳ５０５において、アクセス検知機能３１７は、検証機能２１６から検証成功の報告を受信した場合、本動作は、ステップＳ５０６を行うことなく終了してもよい。
【０１５３】
ステップＳ５０７において、アクセス検知機能３１７は、異常検出時処理を行い、本動作は終了する。なお、ステップＳ５０７の異常検出時処理は、上述の第１の実施形態において、管理機能２１１がタスクの切り替えを行う際に実行するステップＳ１１４の処理と同様の処理である。
【０１５４】
（本発明の第２の実施形態に係るタスク管理システムの作用・効果）
本実施形態に係るタスク管理システム３００によれば、アクセス検知機能３１７が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証機能２１６が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【０１５５】
また、本実施形態に係るタスク管理システム３００によれば、実際にデータに変化が生じた場合であっても、特定のタスクにより当該データがアクセスされない場合は、当該データが変化したことを検知できない場合があるが、当該タスクによりアクセスされないということは、同時に、当該データの変化は、当該タスクの処理に影響を与えないということでもある。
【０１５６】
すなわち、本実施形態に係るタスク管理システム３００によれば、タスクの処理に影響を与える恐れのあるデータの変化のみを検知することができる。
【０１５７】
また、本実施形態に係るタスク管理システム３００によれば、タスクが実行待機状態である期間中に、当該タスク用アドレス空間に記憶されているデータに変化が起こったことが、当該タスクにより当該データがアクセスされる時に非常に高い確率で検知できるため、当該タスクの重要なデータが不正に書き換えられたことや、記憶部３２０に記憶されているデータが勝手に変化したことを検知することなく見過ごして、当該データを用いる当該タスクの処理に影響を与える可能性は極めて小さい。
【図面の簡単な説明】
【０１５８】
【図１】本発明の第１の実施形態に係るタスク管理システムの機能ブロック図である。
【図２】本発明の第１の実施形態に係るタスク管理システムにおける検証子記憶領域における管理内容の一例である。
【図３】本発明の第１の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図４】本発明の第１の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図５】本発明の第１の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図６】本発明の第１の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図７】本発明の第２の実施形態に係るタスク管理システムの機能ブロック図である。
【図８】本発明の第２の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図９】本発明の第２の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図１０】本発明の第２の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図１１】本発明の第２の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図１２】本発明の第２の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図１３】従来技術に係るタスク管理システムの機能ブロック図である。
【図１４】従来技術に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図１５】従来技術に係るタスク管理システムにおけるタスク中断機能の動作を示すフローチャートである。
【図１６】従来技術に係るタスク管理システムにおけるタスク切替機能の動作を示すフローチャートである。
【図１７】従来技術に係るタスク管理システムにおけるタスク再開機能の動作を示すフローチャートである。
【符号の説明】
【０１５９】
１００、２００、３００…タスク管理システム
１１０、２１０、３１０…タスク管理部
１１１、２１１、３１１…管理機能
１１２…タスク中断機能
１１３…タスク再開機能
１１４…タスク切替機能
２１５…検証子生成機能
２１６…検証機能
３１７…アクセス検知機能
１２０、２２０、３２０…記憶部
１２１…タスク情報記憶領域
１２２-１、１２２-ｎ…タスク用アドレス空間
２２３…検証子記憶領域
３２４…ページテーブル記憶領域
【図１】
2006018684.tif 000003
【図２】
2006018684.tif 000004
【図３】
2006018684.tif 000005
【図４】
2006018684.tif 000006
【図５】
2006018684.tif 000007
【図６】
2006018684.tif 000008
【図７】
2006018684.tif 000009
【図８】
2006018684.tif 000010
【図９】
2006018684.tif 000011
【図１０】
2006018684.tif 000012
【図１１】
2006018684.tif 000013
【図１２】
2006018684.tif 000014
【図１３】
2006018684.tif 000015
【図１４】
2006018684.tif 000016
【図１５】
2006018684.tif 000017
【図１６】
2006018684.tif 000018
【図１７】
2006018684.tif 000019