タスク管理システム
【課題】 タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知する。
【解決手段】 本発明に係るタスク管理システム210は、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域223に記憶する実行待機状態変更部216と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間122-1〜122-nに記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域223に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部216とを具備する。
【解決手段】 本発明に係るタスク管理システム210は、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域223に記憶する実行待機状態変更部216と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間122-1〜122-nに記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域223に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部216とを具備する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のタスクを並列に実行するオペレーティングシステム(OS)におけるタスク管理システムに関する。
【背景技術】
【0002】
従来から、電子計算機上で複数のタスクを高速に切り替えながら実行することで並行処理を実現する際のタスクの切り替えを実現するタスク管理システムが知られている。かかるタスク管理システムは、電子計算機のオペレーティングシステムのサブシステムである。
【0003】
図13乃至図17を参照して、従来のタスク管理システムについて説明する。図13は、従来のタスク管理システム100の構成を示すブロック図である。
【0004】
図13に示すように、従来のタスク管理システム100は、タスク管理部110と、記憶部120とを具備している。
【0005】
タスク管理手段110は、管理機能111と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114とを具備している。
【0006】
管理機能111は、タスク中断機能112とタスク再開機能113とタスク切替機能114の実行を制御するように構成されている。タスク中断機能112は、実行状態のタスクを実行待機状態に変更するように構成されている。タスク再開機能113は、実行待機状態のタスクを実行状態に変更するように構成されている。タスク切替機能114は、実行再開するタスクの選出及びタスク用アドレス空間の切り替えを行うように構成されている。
【0007】
記憶部120は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1乃至122-nとを具備している。
【0008】
タスク情報記憶領域121は、各タスクを識別するためのタスク番号と、各タスクの状態を示すタスク情報とを関連付けて記憶する領域である。ここで、タスク情報には、CPU(中央処理装置)のレジスタの内容や、当該タスクが利用していたタスク用アドレス空間の指定子等の当該タスクを後刻実行再開するのに必要なデータや、当該タスクの優先度や累計実行時間等の管理上のデータが含まれる。
【0009】
タスク用アドレス空間122-1乃至122-nは、タスクごとのアドレス空間であるタスク用アドレス空間を管理するものである。タスク用アドレス空間は、タスクごとに一般に異なる論理アドレス空間である。すなわち、同じアドレスであっても、各タスクによって実際にアクセスされる物理アドレス空間は一般に異なる(同じであっても良い)。
【0010】
以下、従来のタスク管理システムの動作について説明する。
【0011】
図14は、従来のタスク管理システム100の管理機能111がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0012】
図14に示すように、ステップS101において、管理機能111は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで実行状態であったタスクを、以降「タスクA」と参照することにする。
【0013】
ステップS102において、管理機能111は、タスク切替機能114に対して、次に実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで実行再開対象として選択されたタスクを、以降「タスクB」と参照することにする。
【0014】
ステップS103において、管理機能111は、タスク再開機能113に対して、タスクBを実行状態にするように指示して、処理を終了する。
【0015】
図15は、従来のタスク管理システム100のタスク中断機能112がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0016】
図15に示すように、ステップS101Aにおいて、タスク中断機能112は、ステップS101における管理機能111からの指示に応じて、現在実行状態であるタスク(タスクA)を実行待機状態に変更する。
【0017】
ステップS102Aにおいて、タスク中断機能112は、タスクAのタスク情報を、タスク情報記憶領域121に記憶する。
【0018】
図16は、従来のタスク管理システム100のタスク切替機能114がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0019】
図16に示すように、ステップS101Bにおいて、タスク切替機能114は、ステップS102における管理機能111からの指示に応じて、タスク情報記憶領域121を参照して、タスク間の公平性や優先度等を考慮して、当該タスク管理システム100が取り扱うタスクの中から、実行再開する対象となるタスク(タスクB)を決定する。
【0020】
ステップS102Bにおいて、タスク切替機能114は、タスクBが以前実行状態であったときに利用していたタスク用アドレス空間が利用できるように、タスク用アドレス空間の切り替えを行う。
【0021】
具体的には、タスク切替機能114は、CPUのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとの対応付け機構の設定変更によって、タスクアドレス空間の切り替えを行う。
【0022】
ただし、かかるアドレス対応付け機構を用いていない電子計算機(すなわち、物理アドレスを唯一のアドレス空間とするシステム)において、物理アドレス空間を分割した各々をタスク用アドレス空間とする場合には、タスク用アドレス空間の切り替えの設定処理は不要である。
【0023】
図17は、従来のタスク管理システム100のタスク再開機能113がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0024】
図17に示すように、ステップS101Cにおいて、タスク再開機能113は、ステップS103における管理機能111からの指示に応じて、タスク情報記憶領域121からタスクBのタスク情報を取得する。
【0025】
タスク再開機能113は、ステップS102Cにおいて、取得したタスク情報に基づいてCPUのレジスタ内容を設定し、ステップS103Cにおいて、タスクBの実行を再開させる。
【0026】
上述のような従来のタスク管理システムの例としては、特許文献1に記載されているタスクスイッチ制御機能とタスク中断機能とタスク再開機能とを具備するシステムや、UNIX(登録商標)等のマルチタスクOSが知られている。
【特許文献1】特開2000-66904号公報
【発明の開示】
【発明が解決しようとする課題】
【0027】
しかしながら、従来のタスク管理システムでは、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こっても、それを検知できないという問題点があった。
【0028】
したがって、他のタスクによってタスクの重要なデータが不正に書き換えられたことが検知されに見過ごされてしまい、かかるデータを利用するタスクの処理に影響が出てしまう。
【0029】
そこで、本発明は、以上の点に鑑みてなされたもので、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することを目的とする。
【課題を解決するための手段】
【0030】
本発明の第1の特徴は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを要旨とする。
【0031】
かかる発明によれば、実行状態変更部が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域に記憶されたタスクの検証子と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【0032】
本発明の第1の特徴において、前記検証子記憶領域が、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0033】
本発明の第1の特徴において、前記検証子記憶領域が、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0034】
本発明の第1の特徴において、前記実行待機状態変更部が、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0035】
本発明の第1の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【0036】
本発明の第1の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【0037】
本発明の第1の特徴において、特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備するように構成されていてもよい。
【0038】
本発明の第1の特徴において、前記タスク用アドレス空間が、ページング方式で管理されており、前記アクセス検知部が、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【0039】
本発明の第1の特徴において、前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備するように構成されていてもよい。
【0040】
かかる発明によれば、アクセス検知部が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証部が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【発明の効果】
【0041】
以上説明したように、本発明によれば、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することができる。
【発明を実施するための最良の形態】
【0042】
(本発明の第1の実施形態に係るタスク管理システムの構成)
本発明の第1の実施形態に係るタスク管理システム200は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムである。特に、本実施形態に係るタスク管理システム200は、タスク用アドレス空間に記憶されているデータの変化の検知を行うタスク管理システムである。
【0043】
図1に示すように、本実施形態に係るタスク管理システム200は、タスク管理部210と、記憶部220とを具備している。
【0044】
タスク管理部210は、管理機能211と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114と、検証子生成機能215と、検証機能216とを具備している。
【0045】
タスク中断機能112とタスク再開機能113とタスク切替機能114は、従来技術に係るタスク管理システム100における各機能112乃至114と同一である。
【0046】
検証子生成機能215は、タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成するように構成されている。
【0047】
具体的には、検証機能216が、所定アドレス範囲を指定してタスクの検証子を生成するように指示した場合、検証子生成機能215は、現在利用できるタスク用アドレス空間を含むアドレス空間における指定された所定アドレス範囲に記憶されているデータから当該タスクの検証子を生成する。
【0048】
ここで、タスクの検証子は、所定アドレス範囲に記憶されているデータを、所定の変換関数に入力することによって算出される出力データである。
【0049】
ただし、かかる変換関数の性質としては、同一の入力データに対して同一の出力データを算出し、また、任意の入力データ「A」に対する出力データが「B」であったときに、出力データが同じく「B」となるような入力データ「A」とは異なる入力データ「C」を見出すことが非常に困難であることが必要である。
【0050】
そのような性質を満たす変換関数としては、「MD5(Message Digest 5)」や「SHA(Secure Hash Algorithm)」等のセキュアハッシュ関数や、入力データを可逆符号化する可逆符号化関数(入力データをそのまま出力データとする変換関数を含む)等が考えられる。
【0051】
また、セキュアハッシュ関数は、入力データ長によらない長さのデータを出力するが、計算処理負荷が比較的大きい。一方、可逆符号化関数は、計算処理負荷は比較的小さいが、入力データ長に応じた長さのデータを出力するという性質を持つ。
【0052】
したがって、検証子生成機能215は、指定された所定アドレス範囲の広さが、比較的小さい場合(例えば、所定閾値よりも小さい場合)には、可逆符号化関数の出力を出力データとして採用し、それ以外の場合(例えば、所定閾値よりも大きい場合)には、セキュアハッシュ関数の出力を出力データとして採用する変換関数を用いることもできる。
【0053】
検証機能216は、タスク用アドレス空間に記憶されているデータから生成された当該タスクの検証子と、検証子記憶領域に記憶されている当該タスクの検証子とが一致するか否かについて検証するように構成されている。
【0054】
管理機能211は、各機能112乃至216の実行を制御するように構成されている。
【0055】
記憶部220は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1乃至122-nと、検証子記憶領域223とを具備している。
【0056】
タスク情報記憶領域121と複数のタスク用アドレス空間122-1乃至122-nは、従来技術に係るタスク管理システム100における各機能121及び122-1〜122-nと同一である。
【0057】
検証子記憶領域223は、検証子記憶データの集合を記憶する領域である。ここで、タスク管理システム200の取り扱う各タスクには、検証子記憶データの集合のうちの1つが対応付けられている。以降、特定のタスクに対応付けられている検証子記憶データのことを「タスクAの検証子記憶データ」や「タスクBの検証子記憶データ」のように参照することとする。
【0058】
検証子記憶データは、ツリー状に連結された部分検証子記憶データから構成されている。部分検証子記憶データは、行の集合からなる表形式のデータであり、各行は、アドレス範囲欄と、有効フラグ欄と、連鎖フラグ欄と、検証子欄とを持つ。すなわち、検証子記憶領域223は、タスク用アドレス空間内の所定アドレス範囲と、有効フラグと、連鎖フラグと、タスクの検証子とを関連付けるレコードを記憶している。
【0059】
アドレス範囲欄には、アドレス範囲として有効な値が記憶される。有効フラグ欄及び連鎖フラグ欄には、「真値」または「偽値」が記憶される。検証子欄には、タスクの検証子が記憶される。
【0060】
部分検証子記憶データの連結は、連鎖フラグ欄及びアドレス範囲欄によって行われる。すなわち、部分検証子記憶データにおける特定行の連鎖フラグ欄が「真値」である場合、かかる特定行のアドレス範囲欄に記憶されているアドレス範囲には、別の部分検証子記憶データが格納されており、かかる部分検証子記憶データも、同一の検証子記憶データを構成する要素となっている。
【0061】
なお、検証子記憶データが、1つの部分検証子記憶データのみから構成される場合もあり得る。その場合は、各行の連鎖フラグ欄が省略されてもよい。
【0062】
図2に示す検証子記憶データ400は、検証子記憶データの具体例であり、部分検証子記憶データ401と、部分検証子記憶データ402と、部分検証子記憶データ403とから構成されている。ここで、部分検証子記憶データ402及び部分検証子記憶データ403は、部分検証子記憶データ401に連結されている。具体的には、部分検証子記憶データ402は、アドレス範囲「0x80000000〜0x800003ff」に格納されており、部分検証子記憶データ403は、アドレス範囲「0xdc000000〜0xdc0003ff」に格納されている。
【0063】
なお、以降、検証子記憶データを構成する部分検証子記憶データにおける行を、便宜的に「検証子記憶データの行」や「検証子記憶データの各行」のように表現している場合がある。
【0064】
図1の例では、検証子記憶領域223が、タスク用アドレス空間122-1〜122-nと便宜上分離して記述されているが、本発明は、これに限定されるものではなく、検証子記憶領域223の一部又は全てが、タスク用アドレス空間122-1〜122-nと重複する例にも適応可能である。
【0065】
すなわち、本発明は、タスクに係る検証子記憶データを、当該タスク用アドレス空間内に格納する実施形態や、タスクに係る検証子記憶データを構成する一部の部分検証子記憶データのみを、当該タスク用アドレス空間内に格納する実施形態にも適応可能である。
【0066】
本実施形態において、管理機構211と検証子生成機能215と検証機能216とが、タスクを実行状態から実行待機状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して検証子記憶領域223に記憶する実行待機状態変更部を構成する。
【0067】
また、本実施形態において、管理機構211と検証子生成機能215と検証機能216とが、タスクを実行待機状態から実行状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して、検証子記憶領域223に記憶されている当該タスクの検証子と一致するか否かについて検証する実行状態変更部を構成する。
【0068】
ここで、実行待機状態変更部は、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0069】
また、実行待機状態変更部は、有効フラグに「偽値」が設定されているレコード(検証子記憶データの行)を、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)と判断して、当該レコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0070】
また、実行待機状態変更部は、タスクの検証子が所定期間更新されていないレコード(検証子記憶データの行)を、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)と判断して、当該レコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0071】
(本発明の第1の実施形態に係るタスク管理システムの動作)
以下、図3乃至図6を参照して、本実施形態に係るタスク管理システム200の動作について説明する。なお、タスク中断機能112とタスク再開機能113とタスク切替機能114の動作は、従来技術に係る動作と同じであるため、説明を省略する。
【0072】
第1に、図3を参照して、タスク管理システム200の管理機能211がタスクの切り替えを行う際に行う動作について説明する。
【0073】
図3に示すように、ステップS101において、管理機能211は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクA」と参照することにする。
【0074】
ステップS111において、管理機能211は、検証機能216に対して、タスクAの検証子を更新するように指示する。
【0075】
ステップS102において、管理機能211は、タスク切替機能114に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクB」と参照することにする。
【0076】
ステップS112において、管理機能211は、検証機能216に対して、タスクBについての検証を行うように指示する。
【0077】
ステップS113において、管理機能211が検証機能216から検証成功の報告を受けた場合には、本動作はステップS103に進み、それ以外の場合には、本動作はステップS114に進む。
【0078】
ステップS103において、管理機能211は、タスク再開機能113に対して、タスクBを実行状態にするように指示し、本動作は終了する。
【0079】
一方、ステップS114において、管理機能211は、異常検出時処理を行い、本動作は終了する。
【0080】
ここで、ステップS114において行われる異常検出時処理について補足する。異常検出時処理としては、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクBに異常発生を通知する処理や、ステップS103と同じ処理や、タスクBを終了させる処理のいずれか又はそれらの処理の複合等が考えられる。
【0081】
第2に、図4を参照して、タスク管理システム200の検証機能216が、管理機能211によってタスクの検証子を更新するように指示された場合の動作について説明する。
【0082】
図4に示すように、ステップS201において、検証機能216は、管理機能211によってタスクの検証子を更新するように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0083】
ステップS202において、検証機能216は、検証子記憶領域233にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、検証子欄を更新する必要のある行が存在するか否かについて確認する。
【0084】
ここで、ステップS202において検証子欄を更新する必要がある行であるかどうかの判断基準について補足する。この判断基準としては、複数の候補が存在する。
【0085】
第1の候補は、有効フラグ欄が「偽値」である行を、検証子欄を更新する必要がある行とみなす基準である。
【0086】
第2の候補は、検証子欄が所定期間更新されていない行を、検証子欄を更新する必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS201の処理が行われてから、本動作が終了するまでの期間である。
【0087】
ステップS203において、かかる行が存在する場合、本動作はステップS204に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0088】
ステップS204において、検証機能216は、行Lのアドレス範囲欄の値を、変数Rに代入する。
【0089】
ステップS205において、検証機能216は、検証子生成機能215に対して、アドレス範囲Rを指定して、検証子を生成するように指示する。
【0090】
ステップS206において、検証機能216は、検証子生成機能215によって生成された検証子の値を、行Lの検証子欄に記憶すると共に、行Lの有効フラグ欄に「真値」を記憶する。その後、本動作はステップS202に進む。
【0091】
第3に、図5を参照して、タスク管理システム200の検証機能216が、管理機能211によってタスクの検証子についての検証を行うように指示された場合の動作について説明する。
【0092】
図5に示すように、ステップS301において、検証機能216は、管理機能211によってタスクの検証子についての検証を行うように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0093】
ステップS302において、検証機能216は、検証子記憶領域233にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、検証を行う必要のある行が存在するか否かについて確認する。
【0094】
ここで、ステップS302において検証を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の1つは、所定期間検証が行われていない行を、検証を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS301の処理が行われてから、本動作が終了するまでの期間である。
【0095】
ステップS303において、かかる行が存在する場合、本動作はステップS304に進み、かかる行が存在しない場合、本動作はステップS307に進む。なお、以降、かかる行の1つを「行L」と参照することとする。
【0096】
ステップS304において、検証機能216は、行Lについての検証を行う。行Lについての検証処理の具体例については、図6を用いて後述する。
【0097】
ステップS305において、行Lについての検証が成功した場合、本動作はステップS302に戻り、行Lについての検証が失敗した場合、本動作はステップS306に進む。
【0098】
ステップS306において、検証機能216は、管理機能211に対して、検証失敗を報告して、本動作は終了する。一方、ステップS307において、検証機能216は、管理機能211に対して、検証成功を報告して、本動作は終了する。
【0099】
第4に、図6を参照して、タスク管理システム200の検証機能216が、指定された行のタスクの検証子についての検証を行う場合の動作について説明する。ここで、かかる動作には、図5におけるステップS304に示す行Lのタスクの検証子についての検証も含むものとする。
【0100】
図6に示すように、ステップS311において、検証機能216は、検証子記憶領域223に記憶されている検証子記憶データにおける指定された行を、変数Lに代入する。
【0101】
ステップS312において、検証機能216は、行Lの有効フラグ欄の値を参照して、行Lの有効フラグ欄の値が「真値」であるか否かについて判断する。「真値」である場合、本動作はステップS313に進み、「偽値」である場合、本動作はステップS318に進む。
【0102】
検証機能216は、ステップS313において、行Lのアドレス範囲欄の値を変数Rに代入し、ステップS314において、検証子生成機能215に対して、アドレス範囲Rを指定して、タスクの検証子を生成するように指示する。
【0103】
ステップS315において、検証機能216は、検証子生成機能215によって生成されたタスクの検証子と、行Lの検証子欄の値とを比較する。
【0104】
ステップS316において、両者が一致した場合には、本動作はステップS318に進み、それ以外の場合には、本動作はステップS317に進む。
【0105】
ステップS317において、検証機能216は、管理機能211に対して、検証失敗を報告して、本動作は処理を終了する。一方、ステップS318において、検証機能216は、管理機能211に対して、検証成功を報告して、本動作は終了する。
【0106】
(本発明の第1の実施形態に係るタスク管理システムの作用・効果)
本実施形態に係るタスク管理システム200によれば、検証機能216が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域223に記憶された検証子記憶データにおける行の検証子欄の値(タスクの検証子)と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【0107】
具体的には、図3に示すように、管理機能211が、ステップS114において異常検出時処理を行った場合には、タスクが実行待機状態であった期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知したことを意味する。
【0108】
したがって、本実施形態に係るタスク管理システム200によれば、特定のタスクが他のタスクの重要なデータを不正に置き換えたことや、記憶部220に記憶されているデータが勝手に変化したことが検知されずに見過ごされてしまう可能性は極めて小さい。
【0109】
(本発明の第2の実施形態に係るタスク管理システムの構成)
図7を参照して、本発明の第2の実施形態に係るタスク管理システム300の構成について説明する。以下、本実施形態に係るタスク管理システム300の構成について、上述の第1の実施形態に係るタスク管理システム200の構成との相違点を主として説明する。
【0110】
図7に示すように、本実施形態に係るタスク管理システム300は、タスク管理部310と、記憶部320とを具備している。
【0111】
タスク管理部310は、管理機能311と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114と、検証子生成機能215と、検証機能216と、アクセス検知機能317とを具備している。
【0112】
タスク中断機能112とタスク再開機能113とタスク切替機能114は、従来技術に係るタスク管理システム100における各機能112乃至114と同一である。
【0113】
また、検証子生成機能215及び検証機能216は、上述の第1の実施形態に係るタスク管理システム200における各機能215及び216と同一である。
【0114】
アクセス検知機能317は、検証対象のアドレス範囲に対するアクセスを検知するように構成されている。
【0115】
具体的には、アクセス検知機能317は、特定のレコード(検出子記憶データの行)におけるアドレス範囲欄に設定されているアドレス範囲(所定アドレス範囲)に記憶されているデータがアクセスされたことを検知するように構成されている。
【0116】
また、アクセス検知機能317は、特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【0117】
ここで、検証子生成機能215と検証機能216とアクセス検知機能317が、ページフォールトが発生した場合、当該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、タスクの検証子についての検証を行う検証部を構成する。
【0118】
管理機能311は、各機能112乃至317の実行を制御するように構成されている。
【0119】
記憶部320は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1〜122-nと、検証子記憶領域223と、ページテーブル記憶領域324とを具備している。
【0120】
タスク情報記憶領域121及び複数のタスク用アドレス空間122-1〜122-nの構成は、従来技術に係るタスク管理システム100におけるタスク情報記憶領域121及び複数のタスク用アドレス空間122-1〜122-nの構成と同一である。
【0121】
検証子記憶領域223の構成は、上述の第1の実施形態に係るタスク管理システム200における検証子記憶領域223の構成と同一である。
【0122】
ページテーブル記憶領域324は、タスク用アドレス空間をページング方式で管理するためのページテーブルを記憶する領域である。ページテーブルは、図7に示すように、ページと、アドレス範囲とを関連付けるものである。かかるページテーブルは、ページング方式仮想記憶装置を備える電子計算機においては一般的なデータであるため、詳細な説明については省略する。
【0123】
(本発明の第2の実施形態に係るタスク管理システムの動作)
以下、図8乃至図12を参照して、本実施形態に係るタスク管理システム300の動作について説明する。なお、タスク中断機能112とタスク再開機能113とタスク切替機能114の動作は、従来技術に係る動作と同じであり、検証機能216の動作は、上述の第1の実施形態に係る動作と同じであるため、説明を省略する。
【0124】
第1に、図8を参照して、タスク管理システム300の管理機能311がタスクの切り替えを行う際に行う動作について説明する。
【0125】
図8に示すように、ステップS101において、管理機能311は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクA」と参照することにする。
【0126】
ステップS111において、管理機能311は、検証機能216に対して、タスクAの検証子を更新するように指示する。
【0127】
ステップS102において、管理機能311は、タスク切替機能114に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクB」と参照することにする。
【0128】
ステップS122において、管理機能311は、アクセス検知機能317に対して、タスクBについてアクセス検知の設定を行うように指示する。
【0129】
ステップS103において、管理機能311は、タスク再開機能113に対して、タスクBを実行状態にするように指示し、本動作は終了する。
【0130】
第2に、図9を参照して、タスク管理システム300のアクセス検知機能317が、管理機能211によってタスクについてのアクセス検知の設定を行うように指示された場合の動作について説明する。
【0131】
ステップS401において、アクセス検知機能317は、管理機能211によってタスクについてのアクセス検知の設定を行うように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0132】
ステップS402において、アクセス検知機能317は、検証子記憶領域223にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、アクセス検知の設定を行う必要のある行が存在するか否かについて確認する。
【0133】
ここで、ステップS402においてアクセス検知の設定を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の1つは、有効フラグ欄の値が「真値」であり、かつ、所定期間ステップS404の処理の対象となっていない行を、アクセス検知の設定を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS401の処理が行われてから、本動作が終了するまでの期間である。
【0134】
ステップS403において、かかる行が存在する場合、本動作はステップS404に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0135】
ステップS404において、アクセス検知機能317は、行Lのアドレス範囲欄の値を変数Rに代入する。
【0136】
ステップS405において、アクセス検知機能317は、ページテーブル記憶領域324に格納されているページテーブルを操作して、アドレス範囲Rを包含するページに記憶されるデータに対するアクセスが検知された際にページフォールトを発生するように設定する。
【0137】
ステップS405の処理の「アドレス範囲Rを包含するページ」の意味について補足する。
【0138】
ここで、「アドレス範囲Rを包含するページ」とは、「R」で指定されるアドレス範囲を完全に含むページ、及び、「R」で指定されるアドレス範囲の両端点のアドレスを含むページである。
【0139】
例えば、アドレス範囲Rが、図10に示すような範囲であった場合に、「アドレス範囲Rを包含するページ」とは、「R」で指定されるアドレス範囲を完全に含むページ(ぺージC)と、「R」で指定されるアドレス範囲の両端点のアドレスを含むページ(ページB及びD)である、すなわち、ページB、C、Dである。
【0140】
ステップS405の処理の具体的な実施手段としては、特定ページの管理データを格納するページテーブルのエントリーを変更することにより、当該特定ページを読み書き禁止設定とすることや、当該特定ページが物理ページ(ページフレーム)と対応付けられていないように設定すること等が考えられる。
【0141】
第3に、図11を参照して、ページフォールトが発生した場合にタスク管理システム300のアクセス検知機能317が行う動作について説明する。
【0142】
ステップS501において、アクセス検知機能317は、ページフォールトを起こしたタスクのタスク番号を変数Tに代入し、ページフォールトが発生したアドレスを変数Aに代入する。
【0143】
ステップS502において、検証子記憶領域223にアクセスして、タスク番号が「T」のタスクに係る検証子記憶データにおいて、アドレス範囲欄の値が「A」の近傍である行が存在するか否かについて確認する。
【0144】
ここで、ステップS502の処理について補足する。ステップS502の処理では、アドレス範囲欄の値が「A」の近傍であるか否かについて判断するための判断基準として、以下の基準が考えられる。
【0145】
例えば、アドレス範囲欄の値が「A」を包含することをもって「「A」の近傍である」と判断する基準(基準C1)や、アドレス範囲欄の値を包含するページに「A」が含まれることをもって「「A」の近傍である」と判断する基準(基準C2)や、アドレス範囲欄の値を包含するページ範囲及びその前後の数ページに「A」が含まれることをもって「「A」の近傍である」と判断する基準(基準C3)等が考えられる。
【0146】
例えば、「A」が、図12に示す値であるときには、基準C1を採用したときには、アドレス範囲R1のみが「A」の近傍であり、基準C2を採用したときには、アドレス範囲R1及びR2が「A」の近傍であり、基準C3を採用したときには、アドレス範囲R1、R2、R3が「A」の近傍である。
【0147】
ステップS503において、かかる行が存在する場合、本動作はステップS504に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0148】
ステップS504において、アクセス検知機能317は、検証機能216に対して、行Lについての検証を行うように指示する。
【0149】
ステップS505において、アクセス検知機能317は、検証機能216から検証成功の報告を受信した場合には、本動作はステップS506に進み、それ以外の場合には、本動作はステップS507に進む。
【0150】
ステップS506において、アクセス検知機能317は、行Lの有効フラグ欄の値を「偽値」に設定して、本動作は終了する。
【0151】
ステップS506の処理の目的は、タスク用アドレス空間に記憶されているデータがアクセスされたことで、当該データの内容が変化した可能性があるため、当該タスクの検証子の再生成が必要であることを記すこと、及び、当該タスク用アドレス空間に記憶されているデータが意図的に更新された後に、当該タスク用アドレス空間の近傍で再度ページフォールトが発生した場合に、誤って検証失敗と報告されるのを防ぐことである。
【0152】
しかしながら、ステップS506の処理は、オプショナルである。すなわち、ステップS505において、アクセス検知機能317は、検証機能216から検証成功の報告を受信した場合、本動作は、ステップS506を行うことなく終了してもよい。
【0153】
ステップS507において、アクセス検知機能317は、異常検出時処理を行い、本動作は終了する。なお、ステップS507の異常検出時処理は、上述の第1の実施形態において、管理機能211がタスクの切り替えを行う際に実行するステップS114の処理と同様の処理である。
【0154】
(本発明の第2の実施形態に係るタスク管理システムの作用・効果)
本実施形態に係るタスク管理システム300によれば、アクセス検知機能317が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証機能216が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【0155】
また、本実施形態に係るタスク管理システム300によれば、実際にデータに変化が生じた場合であっても、特定のタスクにより当該データがアクセスされない場合は、当該データが変化したことを検知できない場合があるが、当該タスクによりアクセスされないということは、同時に、当該データの変化は、当該タスクの処理に影響を与えないということでもある。
【0156】
すなわち、本実施形態に係るタスク管理システム300によれば、タスクの処理に影響を与える恐れのあるデータの変化のみを検知することができる。
【0157】
また、本実施形態に係るタスク管理システム300によれば、タスクが実行待機状態である期間中に、当該タスク用アドレス空間に記憶されているデータに変化が起こったことが、当該タスクにより当該データがアクセスされる時に非常に高い確率で検知できるため、当該タスクの重要なデータが不正に書き換えられたことや、記憶部320に記憶されているデータが勝手に変化したことを検知することなく見過ごして、当該データを用いる当該タスクの処理に影響を与える可能性は極めて小さい。
【図面の簡単な説明】
【0158】
【図1】本発明の第1の実施形態に係るタスク管理システムの機能ブロック図である。
【図2】本発明の第1の実施形態に係るタスク管理システムにおける検証子記憶領域における管理内容の一例である。
【図3】本発明の第1の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図4】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図5】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図6】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図7】本発明の第2の実施形態に係るタスク管理システムの機能ブロック図である。
【図8】本発明の第2の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図9】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図10】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図11】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図12】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図13】従来技術に係るタスク管理システムの機能ブロック図である。
【図14】従来技術に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図15】従来技術に係るタスク管理システムにおけるタスク中断機能の動作を示すフローチャートである。
【図16】従来技術に係るタスク管理システムにおけるタスク切替機能の動作を示すフローチャートである。
【図17】従来技術に係るタスク管理システムにおけるタスク再開機能の動作を示すフローチャートである。
【符号の説明】
【0159】
100、200、300…タスク管理システム
110、210、310…タスク管理部
111、211、311…管理機能
112…タスク中断機能
113…タスク再開機能
114…タスク切替機能
215…検証子生成機能
216…検証機能
317…アクセス検知機能
120、220、320…記憶部
121…タスク情報記憶領域
122-1、122-n…タスク用アドレス空間
223…検証子記憶領域
324…ページテーブル記憶領域
【技術分野】
【0001】
本発明は、複数のタスクを並列に実行するオペレーティングシステム(OS)におけるタスク管理システムに関する。
【背景技術】
【0002】
従来から、電子計算機上で複数のタスクを高速に切り替えながら実行することで並行処理を実現する際のタスクの切り替えを実現するタスク管理システムが知られている。かかるタスク管理システムは、電子計算機のオペレーティングシステムのサブシステムである。
【0003】
図13乃至図17を参照して、従来のタスク管理システムについて説明する。図13は、従来のタスク管理システム100の構成を示すブロック図である。
【0004】
図13に示すように、従来のタスク管理システム100は、タスク管理部110と、記憶部120とを具備している。
【0005】
タスク管理手段110は、管理機能111と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114とを具備している。
【0006】
管理機能111は、タスク中断機能112とタスク再開機能113とタスク切替機能114の実行を制御するように構成されている。タスク中断機能112は、実行状態のタスクを実行待機状態に変更するように構成されている。タスク再開機能113は、実行待機状態のタスクを実行状態に変更するように構成されている。タスク切替機能114は、実行再開するタスクの選出及びタスク用アドレス空間の切り替えを行うように構成されている。
【0007】
記憶部120は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1乃至122-nとを具備している。
【0008】
タスク情報記憶領域121は、各タスクを識別するためのタスク番号と、各タスクの状態を示すタスク情報とを関連付けて記憶する領域である。ここで、タスク情報には、CPU(中央処理装置)のレジスタの内容や、当該タスクが利用していたタスク用アドレス空間の指定子等の当該タスクを後刻実行再開するのに必要なデータや、当該タスクの優先度や累計実行時間等の管理上のデータが含まれる。
【0009】
タスク用アドレス空間122-1乃至122-nは、タスクごとのアドレス空間であるタスク用アドレス空間を管理するものである。タスク用アドレス空間は、タスクごとに一般に異なる論理アドレス空間である。すなわち、同じアドレスであっても、各タスクによって実際にアクセスされる物理アドレス空間は一般に異なる(同じであっても良い)。
【0010】
以下、従来のタスク管理システムの動作について説明する。
【0011】
図14は、従来のタスク管理システム100の管理機能111がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0012】
図14に示すように、ステップS101において、管理機能111は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで実行状態であったタスクを、以降「タスクA」と参照することにする。
【0013】
ステップS102において、管理機能111は、タスク切替機能114に対して、次に実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで実行再開対象として選択されたタスクを、以降「タスクB」と参照することにする。
【0014】
ステップS103において、管理機能111は、タスク再開機能113に対して、タスクBを実行状態にするように指示して、処理を終了する。
【0015】
図15は、従来のタスク管理システム100のタスク中断機能112がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0016】
図15に示すように、ステップS101Aにおいて、タスク中断機能112は、ステップS101における管理機能111からの指示に応じて、現在実行状態であるタスク(タスクA)を実行待機状態に変更する。
【0017】
ステップS102Aにおいて、タスク中断機能112は、タスクAのタスク情報を、タスク情報記憶領域121に記憶する。
【0018】
図16は、従来のタスク管理システム100のタスク切替機能114がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0019】
図16に示すように、ステップS101Bにおいて、タスク切替機能114は、ステップS102における管理機能111からの指示に応じて、タスク情報記憶領域121を参照して、タスク間の公平性や優先度等を考慮して、当該タスク管理システム100が取り扱うタスクの中から、実行再開する対象となるタスク(タスクB)を決定する。
【0020】
ステップS102Bにおいて、タスク切替機能114は、タスクBが以前実行状態であったときに利用していたタスク用アドレス空間が利用できるように、タスク用アドレス空間の切り替えを行う。
【0021】
具体的には、タスク切替機能114は、CPUのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとの対応付け機構の設定変更によって、タスクアドレス空間の切り替えを行う。
【0022】
ただし、かかるアドレス対応付け機構を用いていない電子計算機(すなわち、物理アドレスを唯一のアドレス空間とするシステム)において、物理アドレス空間を分割した各々をタスク用アドレス空間とする場合には、タスク用アドレス空間の切り替えの設定処理は不要である。
【0023】
図17は、従来のタスク管理システム100のタスク再開機能113がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【0024】
図17に示すように、ステップS101Cにおいて、タスク再開機能113は、ステップS103における管理機能111からの指示に応じて、タスク情報記憶領域121からタスクBのタスク情報を取得する。
【0025】
タスク再開機能113は、ステップS102Cにおいて、取得したタスク情報に基づいてCPUのレジスタ内容を設定し、ステップS103Cにおいて、タスクBの実行を再開させる。
【0026】
上述のような従来のタスク管理システムの例としては、特許文献1に記載されているタスクスイッチ制御機能とタスク中断機能とタスク再開機能とを具備するシステムや、UNIX(登録商標)等のマルチタスクOSが知られている。
【特許文献1】特開2000-66904号公報
【発明の開示】
【発明が解決しようとする課題】
【0027】
しかしながら、従来のタスク管理システムでは、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こっても、それを検知できないという問題点があった。
【0028】
したがって、他のタスクによってタスクの重要なデータが不正に書き換えられたことが検知されに見過ごされてしまい、かかるデータを利用するタスクの処理に影響が出てしまう。
【0029】
そこで、本発明は、以上の点に鑑みてなされたもので、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することを目的とする。
【課題を解決するための手段】
【0030】
本発明の第1の特徴は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを要旨とする。
【0031】
かかる発明によれば、実行状態変更部が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域に記憶されたタスクの検証子と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【0032】
本発明の第1の特徴において、前記検証子記憶領域が、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0033】
本発明の第1の特徴において、前記検証子記憶領域が、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、前記実行待機状態変更部が、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0034】
本発明の第1の特徴において、前記実行待機状態変更部が、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶するように構成されていてもよい。
【0035】
本発明の第1の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【0036】
本発明の第1の特徴において、前記実行待機状態変更部及び前記実行状態変更部が、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とするように構成されていてもよい。
【0037】
本発明の第1の特徴において、特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備するように構成されていてもよい。
【0038】
本発明の第1の特徴において、前記タスク用アドレス空間が、ページング方式で管理されており、前記アクセス検知部が、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【0039】
本発明の第1の特徴において、前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備するように構成されていてもよい。
【0040】
かかる発明によれば、アクセス検知部が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証部が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【発明の効果】
【0041】
以上説明したように、本発明によれば、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化を検知することができるタスク管理システムを提供することができる。
【発明を実施するための最良の形態】
【0042】
(本発明の第1の実施形態に係るタスク管理システムの構成)
本発明の第1の実施形態に係るタスク管理システム200は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムである。特に、本実施形態に係るタスク管理システム200は、タスク用アドレス空間に記憶されているデータの変化の検知を行うタスク管理システムである。
【0043】
図1に示すように、本実施形態に係るタスク管理システム200は、タスク管理部210と、記憶部220とを具備している。
【0044】
タスク管理部210は、管理機能211と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114と、検証子生成機能215と、検証機能216とを具備している。
【0045】
タスク中断機能112とタスク再開機能113とタスク切替機能114は、従来技術に係るタスク管理システム100における各機能112乃至114と同一である。
【0046】
検証子生成機能215は、タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成するように構成されている。
【0047】
具体的には、検証機能216が、所定アドレス範囲を指定してタスクの検証子を生成するように指示した場合、検証子生成機能215は、現在利用できるタスク用アドレス空間を含むアドレス空間における指定された所定アドレス範囲に記憶されているデータから当該タスクの検証子を生成する。
【0048】
ここで、タスクの検証子は、所定アドレス範囲に記憶されているデータを、所定の変換関数に入力することによって算出される出力データである。
【0049】
ただし、かかる変換関数の性質としては、同一の入力データに対して同一の出力データを算出し、また、任意の入力データ「A」に対する出力データが「B」であったときに、出力データが同じく「B」となるような入力データ「A」とは異なる入力データ「C」を見出すことが非常に困難であることが必要である。
【0050】
そのような性質を満たす変換関数としては、「MD5(Message Digest 5)」や「SHA(Secure Hash Algorithm)」等のセキュアハッシュ関数や、入力データを可逆符号化する可逆符号化関数(入力データをそのまま出力データとする変換関数を含む)等が考えられる。
【0051】
また、セキュアハッシュ関数は、入力データ長によらない長さのデータを出力するが、計算処理負荷が比較的大きい。一方、可逆符号化関数は、計算処理負荷は比較的小さいが、入力データ長に応じた長さのデータを出力するという性質を持つ。
【0052】
したがって、検証子生成機能215は、指定された所定アドレス範囲の広さが、比較的小さい場合(例えば、所定閾値よりも小さい場合)には、可逆符号化関数の出力を出力データとして採用し、それ以外の場合(例えば、所定閾値よりも大きい場合)には、セキュアハッシュ関数の出力を出力データとして採用する変換関数を用いることもできる。
【0053】
検証機能216は、タスク用アドレス空間に記憶されているデータから生成された当該タスクの検証子と、検証子記憶領域に記憶されている当該タスクの検証子とが一致するか否かについて検証するように構成されている。
【0054】
管理機能211は、各機能112乃至216の実行を制御するように構成されている。
【0055】
記憶部220は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1乃至122-nと、検証子記憶領域223とを具備している。
【0056】
タスク情報記憶領域121と複数のタスク用アドレス空間122-1乃至122-nは、従来技術に係るタスク管理システム100における各機能121及び122-1〜122-nと同一である。
【0057】
検証子記憶領域223は、検証子記憶データの集合を記憶する領域である。ここで、タスク管理システム200の取り扱う各タスクには、検証子記憶データの集合のうちの1つが対応付けられている。以降、特定のタスクに対応付けられている検証子記憶データのことを「タスクAの検証子記憶データ」や「タスクBの検証子記憶データ」のように参照することとする。
【0058】
検証子記憶データは、ツリー状に連結された部分検証子記憶データから構成されている。部分検証子記憶データは、行の集合からなる表形式のデータであり、各行は、アドレス範囲欄と、有効フラグ欄と、連鎖フラグ欄と、検証子欄とを持つ。すなわち、検証子記憶領域223は、タスク用アドレス空間内の所定アドレス範囲と、有効フラグと、連鎖フラグと、タスクの検証子とを関連付けるレコードを記憶している。
【0059】
アドレス範囲欄には、アドレス範囲として有効な値が記憶される。有効フラグ欄及び連鎖フラグ欄には、「真値」または「偽値」が記憶される。検証子欄には、タスクの検証子が記憶される。
【0060】
部分検証子記憶データの連結は、連鎖フラグ欄及びアドレス範囲欄によって行われる。すなわち、部分検証子記憶データにおける特定行の連鎖フラグ欄が「真値」である場合、かかる特定行のアドレス範囲欄に記憶されているアドレス範囲には、別の部分検証子記憶データが格納されており、かかる部分検証子記憶データも、同一の検証子記憶データを構成する要素となっている。
【0061】
なお、検証子記憶データが、1つの部分検証子記憶データのみから構成される場合もあり得る。その場合は、各行の連鎖フラグ欄が省略されてもよい。
【0062】
図2に示す検証子記憶データ400は、検証子記憶データの具体例であり、部分検証子記憶データ401と、部分検証子記憶データ402と、部分検証子記憶データ403とから構成されている。ここで、部分検証子記憶データ402及び部分検証子記憶データ403は、部分検証子記憶データ401に連結されている。具体的には、部分検証子記憶データ402は、アドレス範囲「0x80000000〜0x800003ff」に格納されており、部分検証子記憶データ403は、アドレス範囲「0xdc000000〜0xdc0003ff」に格納されている。
【0063】
なお、以降、検証子記憶データを構成する部分検証子記憶データにおける行を、便宜的に「検証子記憶データの行」や「検証子記憶データの各行」のように表現している場合がある。
【0064】
図1の例では、検証子記憶領域223が、タスク用アドレス空間122-1〜122-nと便宜上分離して記述されているが、本発明は、これに限定されるものではなく、検証子記憶領域223の一部又は全てが、タスク用アドレス空間122-1〜122-nと重複する例にも適応可能である。
【0065】
すなわち、本発明は、タスクに係る検証子記憶データを、当該タスク用アドレス空間内に格納する実施形態や、タスクに係る検証子記憶データを構成する一部の部分検証子記憶データのみを、当該タスク用アドレス空間内に格納する実施形態にも適応可能である。
【0066】
本実施形態において、管理機構211と検証子生成機能215と検証機能216とが、タスクを実行状態から実行待機状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して検証子記憶領域223に記憶する実行待機状態変更部を構成する。
【0067】
また、本実施形態において、管理機構211と検証子生成機能215と検証機能216とが、タスクを実行待機状態から実行状態に変更する際に、当該タスク用アドレス空間に記憶されているデータから当該タスクの検証子を生成して、検証子記憶領域223に記憶されている当該タスクの検証子と一致するか否かについて検証する実行状態変更部を構成する。
【0068】
ここで、実行待機状態変更部は、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0069】
また、実行待機状態変更部は、有効フラグに「偽値」が設定されているレコード(検証子記憶データの行)を、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)と判断して、当該レコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0070】
また、実行待機状態変更部は、タスクの検証子が所定期間更新されていないレコード(検証子記憶データの行)を、タスクの検証子を更新する必要のあるレコード(検証子記憶データの行)と判断して、当該レコード(検証子記憶データの行)におけるタスクの検証子を更新して検証子記憶領域223に記憶するように構成されていてもよい。
【0071】
(本発明の第1の実施形態に係るタスク管理システムの動作)
以下、図3乃至図6を参照して、本実施形態に係るタスク管理システム200の動作について説明する。なお、タスク中断機能112とタスク再開機能113とタスク切替機能114の動作は、従来技術に係る動作と同じであるため、説明を省略する。
【0072】
第1に、図3を参照して、タスク管理システム200の管理機能211がタスクの切り替えを行う際に行う動作について説明する。
【0073】
図3に示すように、ステップS101において、管理機能211は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクA」と参照することにする。
【0074】
ステップS111において、管理機能211は、検証機能216に対して、タスクAの検証子を更新するように指示する。
【0075】
ステップS102において、管理機能211は、タスク切替機能114に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクB」と参照することにする。
【0076】
ステップS112において、管理機能211は、検証機能216に対して、タスクBについての検証を行うように指示する。
【0077】
ステップS113において、管理機能211が検証機能216から検証成功の報告を受けた場合には、本動作はステップS103に進み、それ以外の場合には、本動作はステップS114に進む。
【0078】
ステップS103において、管理機能211は、タスク再開機能113に対して、タスクBを実行状態にするように指示し、本動作は終了する。
【0079】
一方、ステップS114において、管理機能211は、異常検出時処理を行い、本動作は終了する。
【0080】
ここで、ステップS114において行われる異常検出時処理について補足する。異常検出時処理としては、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクBに異常発生を通知する処理や、ステップS103と同じ処理や、タスクBを終了させる処理のいずれか又はそれらの処理の複合等が考えられる。
【0081】
第2に、図4を参照して、タスク管理システム200の検証機能216が、管理機能211によってタスクの検証子を更新するように指示された場合の動作について説明する。
【0082】
図4に示すように、ステップS201において、検証機能216は、管理機能211によってタスクの検証子を更新するように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0083】
ステップS202において、検証機能216は、検証子記憶領域233にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、検証子欄を更新する必要のある行が存在するか否かについて確認する。
【0084】
ここで、ステップS202において検証子欄を更新する必要がある行であるかどうかの判断基準について補足する。この判断基準としては、複数の候補が存在する。
【0085】
第1の候補は、有効フラグ欄が「偽値」である行を、検証子欄を更新する必要がある行とみなす基準である。
【0086】
第2の候補は、検証子欄が所定期間更新されていない行を、検証子欄を更新する必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS201の処理が行われてから、本動作が終了するまでの期間である。
【0087】
ステップS203において、かかる行が存在する場合、本動作はステップS204に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0088】
ステップS204において、検証機能216は、行Lのアドレス範囲欄の値を、変数Rに代入する。
【0089】
ステップS205において、検証機能216は、検証子生成機能215に対して、アドレス範囲Rを指定して、検証子を生成するように指示する。
【0090】
ステップS206において、検証機能216は、検証子生成機能215によって生成された検証子の値を、行Lの検証子欄に記憶すると共に、行Lの有効フラグ欄に「真値」を記憶する。その後、本動作はステップS202に進む。
【0091】
第3に、図5を参照して、タスク管理システム200の検証機能216が、管理機能211によってタスクの検証子についての検証を行うように指示された場合の動作について説明する。
【0092】
図5に示すように、ステップS301において、検証機能216は、管理機能211によってタスクの検証子についての検証を行うように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0093】
ステップS302において、検証機能216は、検証子記憶領域233にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、検証を行う必要のある行が存在するか否かについて確認する。
【0094】
ここで、ステップS302において検証を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の1つは、所定期間検証が行われていない行を、検証を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS301の処理が行われてから、本動作が終了するまでの期間である。
【0095】
ステップS303において、かかる行が存在する場合、本動作はステップS304に進み、かかる行が存在しない場合、本動作はステップS307に進む。なお、以降、かかる行の1つを「行L」と参照することとする。
【0096】
ステップS304において、検証機能216は、行Lについての検証を行う。行Lについての検証処理の具体例については、図6を用いて後述する。
【0097】
ステップS305において、行Lについての検証が成功した場合、本動作はステップS302に戻り、行Lについての検証が失敗した場合、本動作はステップS306に進む。
【0098】
ステップS306において、検証機能216は、管理機能211に対して、検証失敗を報告して、本動作は終了する。一方、ステップS307において、検証機能216は、管理機能211に対して、検証成功を報告して、本動作は終了する。
【0099】
第4に、図6を参照して、タスク管理システム200の検証機能216が、指定された行のタスクの検証子についての検証を行う場合の動作について説明する。ここで、かかる動作には、図5におけるステップS304に示す行Lのタスクの検証子についての検証も含むものとする。
【0100】
図6に示すように、ステップS311において、検証機能216は、検証子記憶領域223に記憶されている検証子記憶データにおける指定された行を、変数Lに代入する。
【0101】
ステップS312において、検証機能216は、行Lの有効フラグ欄の値を参照して、行Lの有効フラグ欄の値が「真値」であるか否かについて判断する。「真値」である場合、本動作はステップS313に進み、「偽値」である場合、本動作はステップS318に進む。
【0102】
検証機能216は、ステップS313において、行Lのアドレス範囲欄の値を変数Rに代入し、ステップS314において、検証子生成機能215に対して、アドレス範囲Rを指定して、タスクの検証子を生成するように指示する。
【0103】
ステップS315において、検証機能216は、検証子生成機能215によって生成されたタスクの検証子と、行Lの検証子欄の値とを比較する。
【0104】
ステップS316において、両者が一致した場合には、本動作はステップS318に進み、それ以外の場合には、本動作はステップS317に進む。
【0105】
ステップS317において、検証機能216は、管理機能211に対して、検証失敗を報告して、本動作は処理を終了する。一方、ステップS318において、検証機能216は、管理機能211に対して、検証成功を報告して、本動作は終了する。
【0106】
(本発明の第1の実施形態に係るタスク管理システムの作用・効果)
本実施形態に係るタスク管理システム200によれば、検証機能216が、実行状態から実行待機状態に変更する際に生成されて検証子記憶領域223に記憶された検証子記憶データにおける行の検証子欄の値(タスクの検証子)と、実行待機状態から実行状態に変更する際に生成されたタスクの検証子とを照合することにより、当該タスクが実行待機状態である期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知することができる。
【0107】
具体的には、図3に示すように、管理機能211が、ステップS114において異常検出時処理を行った場合には、タスクが実行待機状態であった期間に、当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知したことを意味する。
【0108】
したがって、本実施形態に係るタスク管理システム200によれば、特定のタスクが他のタスクの重要なデータを不正に置き換えたことや、記憶部220に記憶されているデータが勝手に変化したことが検知されずに見過ごされてしまう可能性は極めて小さい。
【0109】
(本発明の第2の実施形態に係るタスク管理システムの構成)
図7を参照して、本発明の第2の実施形態に係るタスク管理システム300の構成について説明する。以下、本実施形態に係るタスク管理システム300の構成について、上述の第1の実施形態に係るタスク管理システム200の構成との相違点を主として説明する。
【0110】
図7に示すように、本実施形態に係るタスク管理システム300は、タスク管理部310と、記憶部320とを具備している。
【0111】
タスク管理部310は、管理機能311と、タスク中断機能112と、タスク再開機能113と、タスク切替機能114と、検証子生成機能215と、検証機能216と、アクセス検知機能317とを具備している。
【0112】
タスク中断機能112とタスク再開機能113とタスク切替機能114は、従来技術に係るタスク管理システム100における各機能112乃至114と同一である。
【0113】
また、検証子生成機能215及び検証機能216は、上述の第1の実施形態に係るタスク管理システム200における各機能215及び216と同一である。
【0114】
アクセス検知機能317は、検証対象のアドレス範囲に対するアクセスを検知するように構成されている。
【0115】
具体的には、アクセス検知機能317は、特定のレコード(検出子記憶データの行)におけるアドレス範囲欄に設定されているアドレス範囲(所定アドレス範囲)に記憶されているデータがアクセスされたことを検知するように構成されている。
【0116】
また、アクセス検知機能317は、特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生するように構成されていてもよい。
【0117】
ここで、検証子生成機能215と検証機能216とアクセス検知機能317が、ページフォールトが発生した場合、当該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、タスクの検証子についての検証を行う検証部を構成する。
【0118】
管理機能311は、各機能112乃至317の実行を制御するように構成されている。
【0119】
記憶部320は、タスク情報記憶領域121と、複数のタスク用アドレス空間122-1〜122-nと、検証子記憶領域223と、ページテーブル記憶領域324とを具備している。
【0120】
タスク情報記憶領域121及び複数のタスク用アドレス空間122-1〜122-nの構成は、従来技術に係るタスク管理システム100におけるタスク情報記憶領域121及び複数のタスク用アドレス空間122-1〜122-nの構成と同一である。
【0121】
検証子記憶領域223の構成は、上述の第1の実施形態に係るタスク管理システム200における検証子記憶領域223の構成と同一である。
【0122】
ページテーブル記憶領域324は、タスク用アドレス空間をページング方式で管理するためのページテーブルを記憶する領域である。ページテーブルは、図7に示すように、ページと、アドレス範囲とを関連付けるものである。かかるページテーブルは、ページング方式仮想記憶装置を備える電子計算機においては一般的なデータであるため、詳細な説明については省略する。
【0123】
(本発明の第2の実施形態に係るタスク管理システムの動作)
以下、図8乃至図12を参照して、本実施形態に係るタスク管理システム300の動作について説明する。なお、タスク中断機能112とタスク再開機能113とタスク切替機能114の動作は、従来技術に係る動作と同じであり、検証機能216の動作は、上述の第1の実施形態に係る動作と同じであるため、説明を省略する。
【0124】
第1に、図8を参照して、タスク管理システム300の管理機能311がタスクの切り替えを行う際に行う動作について説明する。
【0125】
図8に示すように、ステップS101において、管理機能311は、タスクの切り替えを行う際に、タスク中断機能112に対して、現在実行状態であるタスクを実行待機状態にするように指示する。ここで、現在実行状態であるタスクを「タスクA」と参照することにする。
【0126】
ステップS111において、管理機能311は、検証機能216に対して、タスクAの検証子を更新するように指示する。
【0127】
ステップS102において、管理機能311は、タスク切替機能114に対して、実行再開対象とするタスクを選択して、タスク用アドレス空間を切り替えるように指示する。ここで、実行再開対象として選択されたタスクを「タスクB」と参照することにする。
【0128】
ステップS122において、管理機能311は、アクセス検知機能317に対して、タスクBについてアクセス検知の設定を行うように指示する。
【0129】
ステップS103において、管理機能311は、タスク再開機能113に対して、タスクBを実行状態にするように指示し、本動作は終了する。
【0130】
第2に、図9を参照して、タスク管理システム300のアクセス検知機能317が、管理機能211によってタスクについてのアクセス検知の設定を行うように指示された場合の動作について説明する。
【0131】
ステップS401において、アクセス検知機能317は、管理機能211によってタスクについてのアクセス検知の設定を行うように指示された場合、指定されたタスクのタスク番号を、変数Tに代入する。
【0132】
ステップS402において、アクセス検知機能317は、検証子記憶領域223にアクセスして、タスク番号が「T」であるタスクの検証子記憶データにおいて、アクセス検知の設定を行う必要のある行が存在するか否かについて確認する。
【0133】
ここで、ステップS402においてアクセス検知の設定を行う必要がある行であるかどうかの判断基準について補足する。例えば、かかる判断基準の1つは、有効フラグ欄の値が「真値」であり、かつ、所定期間ステップS404の処理の対象となっていない行を、アクセス検知の設定を行う必要がある行とみなす基準である。ここで、所定期間とは、例えば、ステップS401の処理が行われてから、本動作が終了するまでの期間である。
【0134】
ステップS403において、かかる行が存在する場合、本動作はステップS404に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0135】
ステップS404において、アクセス検知機能317は、行Lのアドレス範囲欄の値を変数Rに代入する。
【0136】
ステップS405において、アクセス検知機能317は、ページテーブル記憶領域324に格納されているページテーブルを操作して、アドレス範囲Rを包含するページに記憶されるデータに対するアクセスが検知された際にページフォールトを発生するように設定する。
【0137】
ステップS405の処理の「アドレス範囲Rを包含するページ」の意味について補足する。
【0138】
ここで、「アドレス範囲Rを包含するページ」とは、「R」で指定されるアドレス範囲を完全に含むページ、及び、「R」で指定されるアドレス範囲の両端点のアドレスを含むページである。
【0139】
例えば、アドレス範囲Rが、図10に示すような範囲であった場合に、「アドレス範囲Rを包含するページ」とは、「R」で指定されるアドレス範囲を完全に含むページ(ぺージC)と、「R」で指定されるアドレス範囲の両端点のアドレスを含むページ(ページB及びD)である、すなわち、ページB、C、Dである。
【0140】
ステップS405の処理の具体的な実施手段としては、特定ページの管理データを格納するページテーブルのエントリーを変更することにより、当該特定ページを読み書き禁止設定とすることや、当該特定ページが物理ページ(ページフレーム)と対応付けられていないように設定すること等が考えられる。
【0141】
第3に、図11を参照して、ページフォールトが発生した場合にタスク管理システム300のアクセス検知機能317が行う動作について説明する。
【0142】
ステップS501において、アクセス検知機能317は、ページフォールトを起こしたタスクのタスク番号を変数Tに代入し、ページフォールトが発生したアドレスを変数Aに代入する。
【0143】
ステップS502において、検証子記憶領域223にアクセスして、タスク番号が「T」のタスクに係る検証子記憶データにおいて、アドレス範囲欄の値が「A」の近傍である行が存在するか否かについて確認する。
【0144】
ここで、ステップS502の処理について補足する。ステップS502の処理では、アドレス範囲欄の値が「A」の近傍であるか否かについて判断するための判断基準として、以下の基準が考えられる。
【0145】
例えば、アドレス範囲欄の値が「A」を包含することをもって「「A」の近傍である」と判断する基準(基準C1)や、アドレス範囲欄の値を包含するページに「A」が含まれることをもって「「A」の近傍である」と判断する基準(基準C2)や、アドレス範囲欄の値を包含するページ範囲及びその前後の数ページに「A」が含まれることをもって「「A」の近傍である」と判断する基準(基準C3)等が考えられる。
【0146】
例えば、「A」が、図12に示す値であるときには、基準C1を採用したときには、アドレス範囲R1のみが「A」の近傍であり、基準C2を採用したときには、アドレス範囲R1及びR2が「A」の近傍であり、基準C3を採用したときには、アドレス範囲R1、R2、R3が「A」の近傍である。
【0147】
ステップS503において、かかる行が存在する場合、本動作はステップS504に進み、かかる行が存在しない場合、本動作は終了する。なお、以降、かかる行の1つを「行L」と参照することとする。
【0148】
ステップS504において、アクセス検知機能317は、検証機能216に対して、行Lについての検証を行うように指示する。
【0149】
ステップS505において、アクセス検知機能317は、検証機能216から検証成功の報告を受信した場合には、本動作はステップS506に進み、それ以外の場合には、本動作はステップS507に進む。
【0150】
ステップS506において、アクセス検知機能317は、行Lの有効フラグ欄の値を「偽値」に設定して、本動作は終了する。
【0151】
ステップS506の処理の目的は、タスク用アドレス空間に記憶されているデータがアクセスされたことで、当該データの内容が変化した可能性があるため、当該タスクの検証子の再生成が必要であることを記すこと、及び、当該タスク用アドレス空間に記憶されているデータが意図的に更新された後に、当該タスク用アドレス空間の近傍で再度ページフォールトが発生した場合に、誤って検証失敗と報告されるのを防ぐことである。
【0152】
しかしながら、ステップS506の処理は、オプショナルである。すなわち、ステップS505において、アクセス検知機能317は、検証機能216から検証成功の報告を受信した場合、本動作は、ステップS506を行うことなく終了してもよい。
【0153】
ステップS507において、アクセス検知機能317は、異常検出時処理を行い、本動作は終了する。なお、ステップS507の異常検出時処理は、上述の第1の実施形態において、管理機能211がタスクの切り替えを行う際に実行するステップS114の処理と同様の処理である。
【0154】
(本発明の第2の実施形態に係るタスク管理システムの作用・効果)
本実施形態に係るタスク管理システム300によれば、アクセス検知機能317が、タスク用アドレス空間に記憶されているデータへのアクセスが発生することを検知したときにのみ、検証機能216が、上述のタスクの検証子についての検証を行い、当該データへのアクセスが行われないときには、上述のタスクの検証子についての検証が省略されるため、当該タスクが実行待機状態である期間に当該タスク用アドレス空間に記憶されているデータに変化が生じたことを検知するための処理負荷を小さくすることができる。
【0155】
また、本実施形態に係るタスク管理システム300によれば、実際にデータに変化が生じた場合であっても、特定のタスクにより当該データがアクセスされない場合は、当該データが変化したことを検知できない場合があるが、当該タスクによりアクセスされないということは、同時に、当該データの変化は、当該タスクの処理に影響を与えないということでもある。
【0156】
すなわち、本実施形態に係るタスク管理システム300によれば、タスクの処理に影響を与える恐れのあるデータの変化のみを検知することができる。
【0157】
また、本実施形態に係るタスク管理システム300によれば、タスクが実行待機状態である期間中に、当該タスク用アドレス空間に記憶されているデータに変化が起こったことが、当該タスクにより当該データがアクセスされる時に非常に高い確率で検知できるため、当該タスクの重要なデータが不正に書き換えられたことや、記憶部320に記憶されているデータが勝手に変化したことを検知することなく見過ごして、当該データを用いる当該タスクの処理に影響を与える可能性は極めて小さい。
【図面の簡単な説明】
【0158】
【図1】本発明の第1の実施形態に係るタスク管理システムの機能ブロック図である。
【図2】本発明の第1の実施形態に係るタスク管理システムにおける検証子記憶領域における管理内容の一例である。
【図3】本発明の第1の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図4】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図5】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図6】本発明の第1の実施形態に係るタスク管理システムにおける検証機能の動作を示すフローチャートである。
【図7】本発明の第2の実施形態に係るタスク管理システムの機能ブロック図である。
【図8】本発明の第2の実施形態に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図9】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図10】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図11】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を示すフローチャートである。
【図12】本発明の第2の実施形態に係るタスク管理システムにおけるアクセス検知機能の動作を説明するための図である。
【図13】従来技術に係るタスク管理システムの機能ブロック図である。
【図14】従来技術に係るタスク管理システムにおける管理機能の動作を示すフローチャートである。
【図15】従来技術に係るタスク管理システムにおけるタスク中断機能の動作を示すフローチャートである。
【図16】従来技術に係るタスク管理システムにおけるタスク切替機能の動作を示すフローチャートである。
【図17】従来技術に係るタスク管理システムにおけるタスク再開機能の動作を示すフローチャートである。
【符号の説明】
【0159】
100、200、300…タスク管理システム
110、210、310…タスク管理部
111、211、311…管理機能
112…タスク中断機能
113…タスク再開機能
114…タスク切替機能
215…検証子生成機能
216…検証機能
317…アクセス検知機能
120、220、320…記憶部
121…タスク情報記憶領域
122-1、122-n…タスク用アドレス空間
223…検証子記憶領域
324…ページテーブル記憶領域
【特許請求の範囲】
【請求項1】
複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、
タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、
該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを特徴とするタスク管理システム。
【請求項2】
前記検証子記憶領域は、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項1に記載のタスク管理システム。
【請求項3】
前記検証子記憶領域は、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項2に記載のタスク管理システム。
【請求項4】
前記実行待機状態変更部は、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項2に記載のタスク管理システム。
【請求項5】
前記実行待機状態変更部及び前記実行状態変更部は、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項1乃至4のいずれか一項に記載のタスク管理システム。
【請求項6】
前記実行待機状態変更部及び前記実行状態変更部は、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項2乃至4のいずれか一項に記載のタスク管理システム。
【請求項7】
特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備することを特徴とする請求項2乃至4のいずれか一項に記載のタスク管理システム。
【請求項8】
前記タスク用アドレス空間は、ページング方式で管理されており、
前記アクセス検知部は、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生することを特徴とする請求項7に記載のタスク管理システム。
【請求項9】
前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備することを特徴とする請求項8に記載のタスク管理システム。
【請求項1】
複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、
タスクを実行状態から実行待機状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して検証子記憶領域に記憶する実行待機状態変更部と、
該タスクを実行待機状態から実行状態に変更する際に、該タスク用アドレス空間に記憶されているデータから該タスクの検証子を生成して、前記検証子記憶領域に記憶されている該タスクの検証子と一致するか否かについて検証する実行状態変更部とを具備することを特徴とするタスク管理システム。
【請求項2】
前記検証子記憶領域は、前記タスク用アドレス空間内の所定アドレス範囲と前記タスクの検証子とを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記タスクの検証子を更新する必要のあるレコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項1に記載のタスク管理システム。
【請求項3】
前記検証子記憶領域は、前記所定アドレス範囲と前記タスクの検証子と有効フラグとを関連付けるレコードを記憶しており、
前記実行待機状態変更部は、前記有効フラグに偽値が設定されているレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項2に記載のタスク管理システム。
【請求項4】
前記実行待機状態変更部は、前記タスクの検証子が所定期間更新されていないレコードを、前記タスクの検証子を更新する必要のあるレコードと判断して、該レコードにおける前記タスクの検証子を更新して前記検証子記憶領域に記憶することを特徴とする請求項2に記載のタスク管理システム。
【請求項5】
前記実行待機状態変更部及び前記実行状態変更部は、前記タスク用アドレス空間に記憶されているデータを、セキュアハッシュ関数又は可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項1乃至4のいずれか一項に記載のタスク管理システム。
【請求項6】
前記実行待機状態変更部及び前記実行状態変更部は、前記所定アドレス範囲が所定閾値より小さい場合、前記タスク用アドレス空間に記憶されているデータを可逆符号化関数に入力することによって算出されたデータを前記タスクの検証子とし、前記所定アドレス範囲が所定閾値より大きい場合、前記タスク用アドレス空間に記憶されているデータをセキュアハッシュ関数に入力することによって算出されたデータを前記タスクの検証子とすることを特徴とする請求項2乃至4のいずれか一項に記載のタスク管理システム。
【請求項7】
特定の前記レコードにおける所定アドレス範囲に記憶されているデータがアクセスされたことを検知するアクセス検知部を具備することを特徴とする請求項2乃至4のいずれか一項に記載のタスク管理システム。
【請求項8】
前記タスク用アドレス空間は、ページング方式で管理されており、
前記アクセス検知部は、前記特定のレコードにおける所定アドレス範囲を包含するページに記憶されているデータがアクセスされたことを検知した場合、ページフォールトを発生することを特徴とする請求項7に記載のタスク管理システム。
【請求項9】
前記ページフォールトが発生した場合、該ページフォールトが発生したアドレスの近傍の所定アドレス範囲を含むレコードにおいて、前記タスクの検証子についての前記検証を行う検証部を具備することを特徴とする請求項8に記載のタスク管理システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2006−18684(P2006−18684A)
【公開日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願番号】特願2004−197150(P2004−197150)
【出願日】平成16年7月2日(2004.7.2)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】
【公開日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願日】平成16年7月2日(2004.7.2)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】
[ Back to top ]