(57)【要約】【課題】タスクの重要なデータを他のタスクからアクセスされることを防止できるタスク管理システムを提供する。【解決手段】タスク管理システム２００は、タスクが利用している重要なデータから検証子を生成する検証子生成部２１７と、生成された検証子を検証子記憶領域２３３に記憶する検証子更新部２１６と、検証子記憶領域２３３に記憶されている検証子と新たに生成された検証子とを比較検証する検証部２１８と、重要なデータを暗号化する暗号化部２１５と、暗号化された重要なデータを復号する復号部２２０と、タスクによる重要なデータへのアクセスを検知し遅延処理を実現するアクセス検知部２１９と、遅延処理を行うべきか否かを判断する処理選択部２２１とを備える。【選択図】図１
2006302131.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、
遅延処理を行うべきか判断する処理選択部と、データを記憶する記憶手段とを備え、
前記記憶手段のタスク情報記憶領域にはタスクを特定するタスク番号と該タスクが利用しているデータを特定するデータ番号とを関連付けるレコードから構成されるタスク情報記憶データを記憶し、
前記記憶手段の検証子記憶領域にはデータを特定するデータ番号と該データのデータ長と該データのアクセス履歴とを関連付けるレコードから構成される検証子記憶データを記憶し、
前記処理選択部は、タスクが実行待機状態から実行状態に変更される際に、前記タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、前記検証子記憶データの前記データ番号に関連付けられたアクセス履歴より求められる観測されたアクセス確率および前記検証子記憶データの前記データ番号に関連付けられたデータ長を引数とする関数により求めた値の確率で遅延処理を行うべきか判断することを特徴とするタスク管理システム。
【請求項２】
前記検証子記憶データはデータを特定するデータ番号と該データが遅延処理の対象となっているか否かを示す遅延フラグと該データがアクセスされたか否かを示すアクセスフラグと該データのアクセス履歴とを関連付けるレコードから構成され、
前記処理選択部は、前記タスクが実行状態から実行待機状態に変更される際に前記検証子記憶データの前記データ番号に関連付けられた前記アクセス履歴に、前記データ番号に関連付けられた前記遅延フラグと前記データ番号に関連付けられた前記アクセスフラグとから決まるアクセス種別を追加することを特徴とする請求項１に記載のタスク管理システム。
【請求項３】
タスクによるデータのアクセスを検知するアクセス検知部を更に備え、
前記記憶手段のページテーブル記憶領域にはページテーブルを記憶し、
タスクが実行待機状態から実行状態に変更される際に、前記タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、前記処理選択部が遅延処理を行うべきであると判断した場合は、
前記アクセス検知部は、前記データのアドレス範囲を前記タスクがアクセスした場合にページフォールトが発生するように前記ページテーブルを操作し、それ以外の場合は、前記データを参照する第１の所定の処理を行うことを特徴とする請求項１又は２に記載のタスク管理システム。
【請求項４】
ページフォールトが発生した場合、前記タスク情報記憶データにおいてページフォールトを発生させたタスクのタスク番号に関連付けられているデータ番号で特定されるデータであり、かつ、ページフォールトの発生したアドレスの近傍のデータを参照する前記第1の所定の処理を行い、前記検証子記憶データの前記データ番号と関連付けられたアクセスフラグを真値に設定することを特徴とする請求項３に記載のタスク管理システム。
【請求項５】
タスクが実行状態から実行待機状態に変更される際に、前記タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、前記処理選択部が遅延処理を行うべきである旨の判断をしなかった場合もしくは前記検証子記憶データの前記データ番号と関連付けられたアクセスフラグが真値である場合に、前記データを参照する第２の所定の処理を行うことを特徴とする請求項２〜４のいずれか１項に記載のタスク管理システム。
【請求項６】
検証子生成処理を行う検証子生成部と検証処理を行う検証部とデータの復号を行う復号部とを更に備え、
前記検証子記憶データは、データを特定するデータ番号と該データが遅延処理の対象となっているか否かを示す遅延フラグと該データがアクセスされたか否かを示すアクセスフラグと該データのアクセス履歴と該データの検証子とを関連付けるレコードから構成され、
前記第１の所定の処理は、前記検証子生成部による、参照する前記データについての検証子の生成処理と、前記検証部による、前記検証子記憶データにおいて前記データを特定するデータ番号と関連付けられた検証子と照合する検証処理と、前記復号部による、前記データの復号処理とを含むことを特徴とする請求項５に記載のタスク管理システム。
【請求項７】
検証子更新処理を行う検証子更新部とデータの暗号化を行う暗号化部とを更に備え、
前記第２の所定の処理は、前記暗号化部による、参照する前記データについての暗号化処理と、前記検証子生成部による、該暗号化した前記データについての検証子の生成処理と、前記検証子更新部による、該検証子を前記検証子記憶データにおいて前記データを特定するデータ番号と関連付けて記憶する検証子更新処理とを含むことを特徴とする請求項６に記載のタスク管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを並列に実行するオペレーティングシステム（ＯＳ）におけるタスク管理システムに関する。
【背景技術】
【０００２】
従来から、電子計算機上で複数のタスクを高速に切り替えながら実行することで並行処理を実現する際のタスクの切り替えを実現するタスク管理システムが知られている。かかるタスク管理システムは、電子計算機のオペレーティングシステムのサブシステムである。
【０００３】
図１４〜図１６を参照して、従来のタスク管理システムについて説明する。図１４は、従来のタスク管理システム１００の構成を示すブロック図である。
【０００４】
図１４に示すように、従来のタスク管理システム１００は、タスク管理手段１１０と、記憶手段１３０とを備える。タスク管理手段１１０は、タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４とを備える。
【０００５】
タスク中断部１１１は、実行状態のタスクを実行待機状態に変更する。次タスク選択部１１２は、実行再開するタスクを選出する。アドレス切替部１１３は、タスクアドレス空間を切り替える。タスク再開部１１４は、実行再開するタスクを実行待機状態から実行状態に変更する。
【０００６】
記憶手段１３０は、タスク情報記憶領域１３１と、複数のタスクアドレス空間１３２−１〜１３２−ｎとを備える。
【０００７】
タスク情報記憶領域１３１は、各タスクを識別するためのタスク番号と、各タスクの状態を示すタスク情報とを関連付けるタスク情報記憶データを記憶する領域である。ここで、タスク情報には、ＣＰＵ(中央処理装置)のレジスタの内容や、当該タスクが利用していたタスクアドレス空間の指定子等の当該タスクを後刻実行再開するのに必要なデータや、当該タスクの優先度や累計実行時間等の管理上のデータが含まれる。
【０００８】
図１５は、タスク情報記憶データのデータ構造を具体例で示す図である。タスク情報記憶データ３００は、タスク番号欄とタスク情報欄とを備える行から構成される表形式のデータであり、同一行のタスク番号欄のタスク番号と、タスク情報欄のタスク情報が関連付けられている。尚、タスク情報は一般に複雑なデータ構造であるため、図示は省略している。又、タスク情報記憶データの行のことをレコードとも呼ぶ。
【０００９】
図１４に示すタスクアドレス空間１３２−１〜１３２−ｎは、各タスクに固有のアドレス空間であるタスクアドレス空間である。タスクアドレス空間は論理アドレス空間であり、物理アドレス空間とのマッピング（対応付け）はタスクごとに一般に異なる。即ち、異なるタスクで同じアドレスに対しアクセスしても、実際にアクセスされる物理アドレスは一般に異なる（同じであっても良い）。
【００１０】
但し、アドレス空間のマッピングのための機構を備えていない電子計算機も世に多数存在し、そのような電子計算機ではタスクアドレス空間は全て物理アドレス空間と等しいアドレス空間となる。
【００１１】
次に、従来のタスク管理システムの動作について説明する。図１６は、従来のタスク管理システム１００がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００１２】
図１６のステップＳ１０１において、タスク中断部１１１は、現在実行状態であるタスクを実行待機状態にし、そのタスクのタスク情報を、タスク情報記憶領域１３１に記憶する。ここで実行状態であったタスクを、以降「タスクＡ」と参照することにする。
【００１３】
次に、ステップＳ１０２において、次タスク選択部１１２は、次に実行再開対象とするタスクを選択する。ここで、実行再開対象として選択されたタスクを、以降「タスクＢ」と参照することにする。より具体的には、次タスク選択部１１２は、タスク情報記憶領域１３１を参照して、タスク間の公平性や優先度等を考慮して、タスク管理システム１００が取り扱うタスクの中から、実行再開する対象となるタスク(タスクＢ)を決定する。
【００１４】
次に、ステップＳ１０３において、アドレス切替部１１３は、タスクＢが以前実行状態であったときに利用していたタスクアドレス空間が利用できるように、タスクアドレス空間を切り替える。より具体的には、ＣＰＵのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとのマッピング機構の設定変更によって、タスクアドレス空間を切り替える。但し、かかるアドレスマッピング機構を用いていない電子計算機（即ち、物理アドレスを唯一のアドレス空間とするシステム）において、物理アドレス空間を分割した各々をタスクアドレス空間とする場合には、タスクアドレス空間の切り替えの設定処理は不要である。
【００１５】
次に、ステップＳ１０４において、タスク再開部１１４は、タスクＢを実行状態にし、本動作は終了する。より具体的には、タスク再開部１１４は、タスク情報記憶領域１３１からタスクＢのタスク情報を取得し、取得したタスク情報に基づいてＣＰＵのレジスタ内容を設定することでタスクＢの実行を再開させる。
【００１６】
上述のような従来のタスク管理システムの例としては、タスクスイッチ制御部とタスク中断部とタスク再開部とを備えるシステム（例えば、特許文献１参照。）や、ＵＮＩＸ(登録商標)等のマルチタスクＯＳが知られている。
【特許文献１】特開２０００−６６９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、従来のタスク管理システムでは、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こっても、それを検知できないという問題点があった。
【００１８】
したがって、他のタスクによってタスクの重要なデータが不正に書き換えられたことが検知されずに見過ごされてしまい、かかるデータを利用するタスクの処理に影響が出てしまう。
【００１９】
さらに、従来のタスク管理システムでは、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納される重要なデータを当該タスク以外のタスクが読み出すことが可能であるという問題点があった。
【００２０】
タスクが以上のように他のタスクのタスク用アドレス空間に格納されるデータを書き換えたり、読み出したりアクセスすることは一般的には技術的に防止されているが、たとえばUNIXではptrace(ピートレース)システムコールなどを用いることでそのようなアクセスが可能である。
【００２１】
そこで、本発明は、上記の課題に鑑み、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こったことを検知することができ、かつ、当該データの読み出しを防ぐことができるタスク管理システムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
上記目的を達成するため、本発明の特徴は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、遅延処理を行うべきか判断する処理選択部と、データを記憶する記憶手段とを備え、記憶手段のタスク情報記憶領域にはタスクを特定するタスク番号と該タスクが利用しているデータを特定するデータ番号とを関連付けるレコードから構成されるタスク情報記憶データを記憶し、記憶手段の検証子記憶領域にはデータを特定するデータ番号と該データのデータ長と該データのアクセス履歴とを関連付けるレコードから構成される検証子記憶データを記憶し、処理選択部は、タスクが実行待機状態から実行状態に変更される際に、タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、検証子記憶データのデータ番号に関連付けられたアクセス履歴より求められる観測されたアクセス確率および検証子記憶データのデータ番号に関連付けられたデータ長を引数とする関数により求めた値の確率で遅延処理を行うべきか判断するタスク管理システムであることを要旨とする。
【００２３】
又、本発明の特徴に係るタスク管理システムにおいて、検証子記憶データはデータを特定するデータ番号と該データが遅延処理の対象となっているか否かを示す遅延フラグと該データがアクセスされたか否かを示すアクセスフラグと該データのアクセス履歴とを関連付けるレコードから構成され、処理選択部は、タスクが実行状態から実行待機状態に変更される際に検証子記憶データのデータ番号に関連付けられたアクセス履歴に、データ番号に関連付けられた遅延フラグとデータ番号に関連付けられたアクセスフラグとから決まるアクセス種別を追加してもよい。
【００２４】
又、本発明の特徴に係るタスク管理システムは、タスクによるデータのアクセスを検知するアクセス検知部を更に備え、記憶手段のページテーブル記憶領域にはページテーブルを記憶し、タスクが実行待機状態から実行状態に変更される際に、タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、処理選択部が遅延処理を行うべきであると判断した場合は、アクセス検知部は、データのアドレス範囲をタスクがアクセスした場合にページフォールトが発生するようにページテーブルを操作し、それ以外の場合は、データを参照する第１の所定の処理を行ってもよい。
【００２５】
又、本発明の特徴に係るタスク管理システムにおいて、ページフォールトが発生した場合、タスク情報記憶データにおいてページフォールトを発生させたタスクのタスク番号に関連付けられているデータ番号で特定されるデータであり、かつ、ページフォールトの発生したアドレスの近傍のデータを参照する第1の所定の処理を行い、検証子記憶データのデータ番号と関連付けられたアクセスフラグを真値に設定してもよい。
【００２６】
又、本発明の特徴に係るタスク管理システムにおいて、タスクが実行状態から実行待機状態に変更される際に、タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、処理選択部が遅延処理を行うべきである旨の判断をしなかった場合もしくは検証子記憶データのデータ番号と関連付けられたアクセスフラグが真値である場合に、データを参照する第２の所定の処理を行ってもよい。
【００２７】
又、本発明の特徴に係るタスク管理システムは、検証子生成処理を行う検証子生成部と検証処理を行う検証部とデータの復号を行う復号部とを更に備え、検証子記憶データは、データを特定するデータ番号と該データが遅延処理の対象となっているか否かを示す遅延フラグと該データがアクセスされたか否かを示すアクセスフラグと該データのアクセス履歴と該データの検証子とを関連付けるレコードから構成され、第１の所定の処理は、検証子生成部による、参照するデータについての検証子の生成処理と、検証部による、検証子記憶データにおいてデータを特定するデータ番号と関連付けられた検証子と照合する検証処理と、復号部による、データの復号処理とを含んでもよい。
【００２８】
又、本発明の特徴に係るタスク管理システムは、検証子更新処理を行う検証子更新部とデータの暗号化を行う暗号化部とを更に備え、第２の所定の処理は、暗号化部による、参照するデータについての暗号化処理と、検証子生成部による、該暗号化したデータについての検証子の生成処理と、検証子更新部による、該検証子を検証子記憶データにおいてデータを特定するデータ番号と関連付けて記憶する検証子更新処理とを含んでもよい。
【発明の効果】
【００２９】
本発明によると、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こったことを検知することができ、かつ、当該データの読み出しを防ぐことができるタスク管理システムを提供することができる。
【発明を実施するための最良の形態】
【００３０】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。但し、図面は模式的なものであることに留意すべきである。
【００３１】
（タスク管理システム）
本実施形態では、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムについて説明する。
【００３２】
本実施形態に係るタスク管理システム２００は、図１に示すように、タスク管理手段２１０と記憶手段２３０とを備える。
【００３３】
タスク管理手段２１０は、タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４と、暗号化部２１５と、検証子更新部２１６と、検証子生成部２１７と、検証部２１８と、アクセス検知部２１９と、復号部２２０と、処理選択部２２１とを備える。
【００３４】
タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４とは、従来技術によるタスク管理手段１１０における各部と同一である。
【００３５】
検証子生成部２１７は、タスク用のタスクアドレス空間に記憶されているデータの検証子を生成する。具体的には、検証子生成部２１７は、記憶手段２３０の現在利用できるタスクアドレス空間を含むアドレス空間における所定アドレス範囲に記憶されているデータから検証子を生成する。
【００３６】
ここで、検証子は、所定アドレス範囲に記憶されているデータを、所定の変換関数に入力することによって算出される出力データである。但し、かかる変換関数の性質としては、同一の入力データに対して同一の出力データを算出し、又、任意の入力データ「Ａ」に対する出力データが「Ｂ」であったときに、出力データが同じく「Ｂ」となるような入力データ「Ａ」とは異なる入力データ「Ｃ」を見出すことが非常に困難であることが必要である。
【００３７】
そのような性質を満たす変換関数としては、「MD5(Message Digest 5)」や「SHA(Secure Hash Algorithm)」等のセキュアハッシュ関数や、入力データを可逆符号化する可逆符号化関数（入力データをそのまま出力データとする変換関数を含む）等が挙げられる。又、セキュアハッシュ関数は、入力データ長によらない長さのデータを出力するが、計算処理負荷が比較的大きい。一方、可逆符号化関数は、計算処理負荷は比較的小さいが、入力データ長に応じた長さのデータを出力するという性質を持つ。したがって、検証子生成部２１７は、指定された所定アドレス範囲の広さが、比較的小さい場合（例えば、所定閾値よりも小さい場合)には、可逆符号化関数の出力を出力データとして採用し、それ以外の場合(例えば、所定閾値よりも大きい場合)には、セキュアハッシュ関数の出力を出力データとして採用する変換関数を用いることもできる。
【００３８】
検証子更新部２１６は、タスクアドレス空間中の共有メモリに格納されているデータから生成された検証子を検証子記憶領域２３３に記憶する。
【００３９】
検証部２１８は、タスクアドレス空間に格納されているデータから生成された検証子と、検証子記憶領域２３３に記憶されている当該共有メモリの検証子とが一致するか否かについて検証する。
【００４０】
暗号化部２１５は、タスクアドレス空間中の所定アドレス範囲に記憶されているデータを暗号化する。
【００４１】
復号部２２０は、タスクアドレス空間中の所定アドレス範囲に記憶されている暗号化されたデータを復号する。
【００４２】
処理選択部２２１は、タスク用アドレス空間に格納されているデータに対する処理を遅延処理で行うか否かを判断する。
【００４３】
アクセス検知部２１９は、タスクによるデータのアクセスを検知する。
【００４４】
記憶手段２３０は、タスク情報記憶領域２３１と、複数のタスクアドレス空間１３２−１〜１３２−ｎと、検証子記憶領域２３３と、ページテーブル記憶領域２３４とを備える。記憶手段２３０は、ＲＡＭなどの内部記憶装置であってもよく、ＨＤなどの外部記憶装置であってもよい。
【００４５】
タスクアドレス空間１３２−１〜１３２−ｎは、従来技術に係るタスク管理システム１００におけるタスクアドレス空間１３２−１〜１３２−ｎと同一である。
【００４６】
タスク情報記憶領域２３１は、タスクを識別するためのタスク番号と、タスクの状態を示すタスク情報と、データの置かれているアドレスを示すデータアドレスと、データを識別するデータ番号とを要素として関連付けるタスク情報記憶データを記憶する領域である。
【００４７】
これら要素のうち、タスク番号およびタスク情報に関しては、従来技術におけるそれらと同一である。データアドレスは、重要なデータの先頭アドレスである。データ番号は、当該重要データを識別する番号である。
【００４８】
図２は、タスク情報記憶データのデータ構造を具体例で示す図である。タスク情報記憶データ３１０はタスク番号欄とタスク情報欄とデータアドレス欄とデータ番号欄とを備える行から構成される表形式のデータであり、同一行のタスク番号欄のタスク番号と、タスク情報欄のタスク情報と、データアドレス欄のアドレスと、データ番号欄のデータ番号とが関連付けられている。なお、タスク情報は一般に複雑なデータ構造であるため、図示は省略している。
【００４９】
検証子記憶領域２３３は、データを識別するデータ番号と、データのサイズを示すデータ長と、データの暗号化の要否を示す暗号化フラグと、遅延処理を行ったかどうかを示す遅延フラグと、データがアクセスされたかどうかを示すアクセスフラグと、データの過去のアクセス状況を示すアクセス履歴と、データの検証子とを要素として関連付ける検証子記憶データを記憶する領域である。
【００５０】
これら要素のうち、データ番号および検証子、物理アドレスについては前述したとおりである。データ長は、データ番号で特定されるデータ(以下「注目データ」)の大きさを、バイト数やワード数などで示したものである。暗号化フラグは注目データの暗号化処理・復号処理の要否を指定するフラグであり、真値の時には暗号化処理・復号処理が必要であることを意味する。遅延フラグは注目データの処理を遅延処理で行っているのか、そうでないのかを示すフラグであり、真値の時には遅延処理を行っていることを意味する。アクセスフラグは、注目データがアクセスされたかどうかを示すフラグであり、真値の時にはアクセスされたことを意味する。アクセス履歴は、注目データに対するタスクの過去のアクセスを一定数記録したものである。なお、遅延処理とは注目データに対するなんらかの処理(検証処理や復号処理。その他の処理でも良い)を、注目データを所有するタスクが実行待機状態から実行状態に遷移する時に確定的に行うのではなく、当該タスクが注目データをアクセスする直前に行う処理の形態の事を指す。
【００５１】
図３は、検証子記憶データのデータ構造を具体例で示す図である。検証子記憶データ４００はデータ番号欄と、データ長欄と、暗号化フラグ欄と、遅延フラグ欄と、アクセスフラグ欄と、アクセス履歴欄と、検証子欄とを備える行から構成される表形式のデータであり、同一行のデータ番号欄のデータ番号と、データ長欄のデータ長と、暗号化フラグ欄の暗号化フラグと、遅延フラグ欄の遅延フラグと、アクセスフラグ欄のアクセスフラグと、アクセス履歴欄のアクセス履歴と、検証子欄の検証子とが関連付けられている。なお、検証子記憶データの行のことをレコードとも呼ぶ。
【００５２】
（タスク管理方法）
次に、本実施形態に係るタスク管理方法について、図４〜図１１を用いて説明する。尚、タスク中断部１１１と次タスク選択部１１２とアドレス切替部１１３とタスク再開部１１４の動作は、従来技術に係る動作と同じであるため、説明を省略する。
【００５３】
まず、図４を用いて、タスク管理システム２００がタスクの切り替えを行う際に行う動作について説明する。
【００５４】
ステップＳ１０１において、タスク中断部１１１が現在実行状態であるタスクを実行待機状態にし、そのタスクのタスク情報を、タスク情報記憶領域１３１に記憶する。ここで実行状態であったタスクを、以降「タスクＡ」と参照することにする。
【００５５】
次に、ステップＳ１０２において、次タスク選択部１１２が次に実行再開対象とするタスクを選択する。ここで実行再開対象として選択されたタスクを、以降「タスクＢ」と参照することにする。より具体的には、次タスク選択部１１２は、タスク情報記憶領域１３１を参照して、タスク間の公平性や優先度等を考慮して、タスク管理システム１００が取り扱うタスクの中から、実行再開する対象となるタスク(タスクＢ)を決定する。
【００５６】
次に、ステップＳ１１１において、タスクＡの検証子を更新する。より具体的には、タスクＡとタスクＢのタスク番号をパラメタとして、検証子更新部２１６が中心となり、後述の検証子更新処理を行う。
【００５７】
次に、ステップＳ１０３において、アドレス切替部１１３は、タスクＢが以前実行状態であったときに利用していたタスクアドレス空間が利用できるように、タスクアドレス空間を切り替える。アドレス空間の切り替えは、より具体的には、ＣＰＵのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとのマッピング機構の設定変更によって、タスクアドレス空間を切り替える。但し、かかるアドレスマッピング機構を用いていない電子計算機（即ち、物理アドレスを唯一のアドレス空間とするシステム）において、物理アドレス空間を分割した各々をタスクアドレス空間とする場合には、タスクアドレス空間の切り替えの設定処理は不要である。
【００５８】
次に、ステップＳ１１２において、タスクＢについて検証する。より具体的には、タスクＡとタスクＢのタスク番号をパラメタとして、検証部２１８が中心となり後述の検証処理を行う。
【００５９】
次に、ステップＳ１１３において、検証部２１８が検証処理にて検証成功の報告をした場合には、ステップＳ１０４に進み、それ以外の場合は、ステップＳ１１４に進む。
【００６０】
次に、ステップＳ１０４において、タスク再開部１１４は、タスクＢを実行状態にし、処理を終了する。より具体的には、タスク再開部１１４は、タスク情報記憶領域１３１からタスクＢのタスク情報を取得し、取得したタスク情報に基づいて、ＣＰＵのレジスタ内容を設定することでタスクＢの実行を再開させる。
【００６１】
一方、ステップＳ１１４において、タスク管理システム２００は、異常検出時処理を行い、処理を終了する。異常検出時処理とは、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクＢに異常発生を通知する処理や、ステップＳ１０４と同じ処理や、タスクＢを終了させる処理のいずれか又はそれらの処理の複合等が挙げられる。
【００６２】
次に、図４のステップＳ１１１に示す、タスク管理システム２００、とりわけ検証子更新部２１６が中心となり行う検証子更新処理の動作について、図５を用いて詳細に説明する。
【００６３】
まず、ステップＳ２０１において、検証子更新部２１６は、検証子更新処理のパラメタであるタスクAのタスク番号を、図示は省略する変数TAに代入する。
【００６４】
次に、ステップＳ２０２〜ステップＳ２１０はループ処理であり、タスク管理システム２００は、タスク情報記憶領域２３１の記憶するタスク情報記憶データを走査し、タスク番号欄がTAの値と等しい行があるごとに、当該行を「行LT」と参照し、ステップＳ２０３以下の処理を行う。タスク情報記憶データをすべて走査し終わったら、ループ処理を終了し、本動作を終了する。具体例を用いて説明すると、タスク情報記憶領域２３１が図２のタスク情報記憶データ３１０を記憶しており、TAの値が4335であった場合には、タスク番号欄がTAの値と等しい行はタスク情報記憶データ３１０に行L32と行L33の2つあるため、本ループ処理においてステップＳ２０３以下の処理は2回行われる。そのうち1回においては行L32が行LTとして参照され、別の1回においては行L33が行LTとして参照される。
【００６５】
ステップＳ２０３において、検証子更新部２１６は、行LTのデータアドレス欄の値と行LTのデータ番号欄の値とを図示は省略する変数Aと変数Dにそれぞれ代入し、検証子記憶領域２３３の記憶する検証子記憶データの中でデータ番号欄がDの値と等しい行を以下行LVと参照し、行LVのデータ長欄の値を図示は省略する変数Nに代入する。
【００６６】
次に、ステップＳ２０４において、検証子更新部２１６は、行LVの遅延フラグ欄の値が偽値であるか、または同アクセスフラグ欄の値が真値であるという条件が成立するか確認し、成立する場合には本動作はステップＳ２０５に進み、それ以外の場合は本動作はステップＳ２０９に進む。
【００６７】
次に、ステップＳ２０５において、検証子更新部２１６は、行LVの暗号化フラグ欄の値を確認し、それが真値の場合は本動作はステップＳ２０６に進み、それ以外の場合は本動作はステップＳ２０７に進む。
【００６８】
次に、ステップＳ２０６において、暗号化部２１５は、記憶手段２３０においてAの値のアドレスおよびNの値のデータ長で定まるアドレス範囲に格納されているデータを暗号化する。
【００６９】
次に、ステップＳ２０７において、検証子生成部２１７は、記憶手段２３０においてAの値のアドレスおよびNの値のデータ長で定まるアドレス範囲に格納されているデータにつき検証子を生成する。
【００７０】
次に、ステップＳ２０８において、検証子更新部２１６は、行LVの検証子欄に生成された検証子を代入する。
【００７１】
次に、ステップＳ２０９において、処理選択部２２１は、行LVのアクセス履歴欄にアクセス種別をプッシュする。なお、ここでアクセス種別とは、行LVの遅延フラグ欄の値が偽値である場合はシンボル「U」、行LVの遅延フラグ欄の値が真値であり、かつ、行LVのアクセスフラグ欄の値が偽値である場合はシンボル「N」、行LVの遅延フラグ欄の値が真値であり、かつ、行LVのアクセスフラグ欄の値が真値である場合はシンボル「A」のことを指す。このアクセス種別をアクセス履歴欄にプッシュするとは、アクセス履歴欄のシンボル列の先頭シンボルを削除し、同シンボル列の末尾にアクセス種別を追加することを指す。図１１に示す例では、アクセス履歴欄のシンボル列が「ANNNANNN」であったときに、アクセス種別「A」をプッシュする場合を示している。
【００７２】
次に、ステップＳ２１０において、本動作はループ始端であるステップＳ２０２に進み、ループ処理を継続する。
【００７３】
次に、図４のステップＳ１１２に示す、タスク管理システム２００、とりわけ検証部２１８が中心となり行う検証処理の動作について、図６を用いて詳細に説明する。
【００７４】
まず、ステップＳ３０１において、検証部２１８は、検証処理のパラメタであるタスクBのタスク番号を、図示は省略する変数TBに代入する。
【００７５】
次に、ステップＳ３０２〜ステップＳ３１０はループ処理であり、タスク管理システム２００はタスク情報記憶領域２３１の記憶するタスク情報記憶データを走査しタスク番号欄がTBの値と等しい行があるごとに、当該行を「行LT」と参照し、ステップＳ３０３以下の処理を行う。タスク情報記憶データをすべて走査し終わったら、ループ処理を終了し、本動作はステップＳ３１１に進む。
【００７６】
次に、ステップＳ３０３において、検証部２１８は、行LTのデータアドレス欄の値と行LTのデータ番号欄の値とを図示は省略する変数Aと変数Dにそれぞれ代入し、検証子記憶領域233の記憶する検証子記憶データの中でデータ番号欄がDの値と等しい行を以下行LVと参照し、行LVのデータ長欄の値を図示は省略する変数Nに代入する。
【００７７】
次に、ステップＳ３０４において、処理選択部２２１は、遅延処理すべきか否か決定する。この決定の仕方については後述する。
【００７８】
次に、ステップＳ３０５において、ステップＳ３０４にて遅延処理すべきと決定したときは、本動作はステップＳ３０５に進み、それ以外の場合は、本動作はステップＳ３０８に進む。
【００７９】
次に、ステップＳ３０６において、アクセス検知部２１９は、ページテーブル記憶領域２３４の格納するページテーブルを操作し、アドレス範囲[A, A+N-1]を包含するメモリページがアクセスされた際にページフォールトが発生するようにする。ここで、アドレス範囲[A, A+N-1]は、アドレスA以上かつアドレスA+N-1以下であるアドレス範囲のことを指す。また、アドレス範囲[A, A+N-1]を包含するメモリページとは、当該アドレス範囲からはみ出すことなく完全に含まれるメモリページおよび、アドレスAを含むメモリページ、アドレスA+N-1を含むメモリページを指す。例を用いて説明すると、アドレス範囲[S, E]が、図１２に示すような範囲であった場合に、同アドレス範囲を包含するメモリページとは、同アドレス範囲に完全に含まれるページ(ページC)および、アドレスSが含まれるページ(ページB)、アドレスEが含まれるページ(ページD)すなわち、ページB、C、およびDである。なお、メモリページがアクセスされた際にページフォールトが発生するようにする具体的な実施手段としては、当該メモリページの管理データを格納するページテーブルエントリーの内容を書き換えることにより、当該メモリページを読み書き禁止設定とすることや、当該メモリページが物理ページ(ページフレーム)と対応付けられていないように設定することで実施しても良い。
【００８０】
次に、ステップＳ３０７において、検証部２１８は、行LVのアクセスフラグ欄に偽値を代入する。
【００８１】
次に、ステップＳ３０８において、タスク管理システム２００は、後述の処理Ｐ３を行う。
【００８２】
次に、ステップＳ３０９において、検証部２１８は、行LVの遅延フラグ欄を設定する。この際、ステップＳ３０４にて遅延処理すべきと決定したときは、遅延フラグ欄には真値を代入し、それ以外の場合は、偽値を代入する。
【００８３】
次に、ステップＳ３１０において、本動作はループ始端であるステップＳ３０２に進み、ループ処理を継続する。
【００８４】
次に、ステップＳ３１１において、検証部２１８は、ステップＳ３０２〜ステップＳ３１０のループ処理にて検証子不一致があったかどうか確認し、検証子不一致があった場合には本動作はステップＳ３１３に進み、それ以外の場合は本動作はステップＳ３１２に進む。なお、検証子不一致があったかどうかの判断は、ステップＳ３０８の処理Ｐ３におけるステップＳ３２３の処理が行われたことがあるかどうかにより判断する。同処理が行われたことがある場合には、検証子不一致があったと判断する。
【００８５】
次に、ステップＳ３１２において、検証部２１８は、検証成功を報告し、本動作を終了する。
【００８６】
ステップＳ３１３において、検証部２１８は、検証失敗を報告し、本動作を終了する。
【００８７】
ここで、図６のステップＳ３０４に示す、処理選択部２２１の動作である、遅延処理すべきか否かの決定の仕方について説明する。処理選択部２２１は、観測されたアクセス確率Pとデータ長Nとから遅延処理確率Qを決定し、確率Qで遅延処理すべきと決定する。
【００８８】
なお、観測されたアクセス確率Pとは、行LVのアクセス履歴欄のシンボル列におけるシンボル「A」または「N」の個数に占める、シンボル「A」の個数の割合の事である。例を用いて説明すると、アクセス履歴欄のシンボル列が「UAUUNAAU」であったとすると、この場合のアクセス確率Pは0.75である。
【００８９】
なお、アクセス確率Pとデータ長Nとから遅延処理確率Qを決定するにはPおよびNを引数とする関数Q(P,N)を用いる。関数Q(P,N)は0以上1以下の値を出力する任意の関数であるが、典型例としては図９に示すように、Pがある値以下の場合は1、それ以外の場合は1未満の一定値をとるような関数としても良い。また、引数Nが大きいほど大きい値をとる関数Ps(N)を用いて、関数Q(P,N)をPがPs(N)以下の場合は1、それ以外の場合は1未満の一定値をとるような関数としても良い。また、関数Q(P,N)を図１０のようにPがPs(N)以下の場合は1、それ以外の場合はPの値に応じて減少する値をとるような関数としても良い。
【００９０】
なお、確率Qで遅延処理すべきと決定するとは、Qの値が関数Q(P,N)により求まった時に、その値の確率で遅延処理すべきと決定することを意味する。例えば、Qの値が常に0.5であったとすると、処理選択部２２１は遅延処理すべきであるという決定と、それ以外(遅延処理すべきでない)の決定とを、長期的に見て等しく半々の割合で下すという事になる。これを具体的に実施する方法としては、0以上1未満の値を発生する乱数を発生し、その値がQの値未満である場合には遅延処理すべきであると決定する方法や、これまで求められたQの値を合計し、それに新たに求めたQの値を加えたときにその値の整数部が変化する場合には遅延処理すべきであると決定する方法などが考えられるが、これらの方法を実施することは当業者にとり容易であるため詳細な説明は割愛する。
【００９１】
次に、図６のステップＳ３０８に示す、タスク管理システム２００、とりわけ検証部２１８が中心となり行う処理Ｐ３の動作について、図７を用いて詳細に説明する。
【００９２】
まず、ステップＳ３２１において、検証子生成部２１３は、記憶手段２３０においてAの値のアドレスおよびNの値のデータ長で定まるアドレス範囲に格納されているデータにつき検証子を生成する。
【００９３】
次に、ステップＳ３２２において、検証部２１８は、生成された検証子と行LVの検証子欄の値とが一致するかどうか確認し、一致する場合は本動作はステップＳ３２４に進み、それ以外の場合は本動作はステップＳ３２３に進む。
【００９４】
次に、ステップＳ３２３において、タスク管理システム２００は、検証子不一致処理を行い、本動作を終了する。検証子不一致処理は、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクBに異常発生を通知する処理や、ステップＳ３２４とステップＳ３２５からなる処理と同じ処理や、タスクBを終了させる処理のいずれか又はそれらの処理の複合等が考えられる。
【００９５】
次に、ステップＳ３２４において、検証部２１８は、行LVの暗号化フラグ欄の値を確認し、それが真値の場合は本動作はステップＳ３２５に進み、それ以外の場合は本動作を終了する。
【００９６】
次に、ステップＳ３２５において、復号部２２０は、記憶手段２３０においてAの値のアドレスおよびNの値のデータ長で定まるアドレス範囲に格納されているデータを復号し、本動作を終了する。
【００９７】
次に、タスク管理システム２００のアクセス検知部２１９が中心となり行うページフォールト処理の動作について、図８を用いて説明する。
【００９８】
まず、ステップＳ４０１において、アクセス検知部２１９は、ページフォールトを起こしたタスクのタスク番号と、ページフォールトが発生したアドレスとを、図示は省略する変数Tおよび変数APにそれぞれ代入する。
【００９９】
次に、ステップＳ４０２〜ステップＳ４０７はループ処理であり、タスク管理システム２００は、タスク情報記憶領域２３１の記憶するタスク情報記憶データを走査しタスク番号欄がTの値と等しい行があるごとに、当該行を「行LT」と参照し、ステップＳ４０３以下の処理を行う。タスク情報記憶データをすべて走査し終わったら、ループ処理を終了し、本動作はステップＳ４０８に進む。
【０１００】
次に、ステップＳ４０３において、アクセス検知部２１９は、行LTのデータアドレス欄の値と行LTのデータ番号欄の値とを図示は省略する変数Aと変数Dにそれぞれ代入し、検証子記憶領域２３３の記憶する検証子記憶データの中でデータ番号欄がDの値と等しい行を以下行LVと参照し、行LVのデータ長欄の値を図示は省略する変数Nに代入する。
【０１０１】
次に、ステップＳ４０４において、アクセス検知部２１９は、アドレス範囲[A, A+N-1]はアドレスAPの近傍であるか確認し、近傍である場合には本動作はステップＳ４０５に進み、それ以外の場合は本動作はステップＳ４０７に進む。
【０１０２】
次に、ステップＳ４０５において、タスク管理システム２００は、処理Ｐ３を行う。
【０１０３】
次に、ステップＳ４０６において、アクセス検知部２１９は、行LVのアクセスフラグ欄に真値を代入する。
【０１０４】
次に、ステップＳ４０７において、本動作はループ始端であるステップＳ４０２に進み、ループ処理を継続する。
【０１０５】
次に、ステップＳ４０８において、検証部２１８は、ステップＳ４０２〜ステップＳ４０７のループ処理にて検証子不一致があったかどうか確認し、検証子不一致があった場合には本動作はステップＳ４０９に進み、それ以外の場合は本動作は終了する。なお、検証子不一致があったかどうかの判断は、ステップＳ４０５の処理Ｐ３におけるステップＳ３２３の処理が行われたことがあるかどうかにより判断する。同処理が行われたことがある場合には、検証子不一致があったと判断する。
【０１０６】
次に、ステップＳ４０９において、タスク管理システム２００は、異常検出時処理を行い、本動作は終了する。異常検出時処理とは例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクBに異常発生を通知する処理や、タスクBを終了させる処理や、何もしない処理のいずれか又はそれらの処理の複合等が考えられる。
【０１０７】
ここで、図８のステップＳ４０４におけるアクセス検知部２１９の動作ではアドレス範囲[A, A+N-1]がアドレスAPの近傍であるか判断するが、その「近傍」の判断基準について補足する。
【０１０８】
近傍の基準としては、アドレス範囲がAPを包含することをもって近傍とする基準(基準C1)や、アドレス範囲を包含するページ範囲にAPが含まれることをもって近傍とする基準(基準C2)や、アドレス範囲を包含するページ範囲およびその前後の数ページの範囲にAPが含まれることをもって近傍とする基準(基準C3)などが考えられる。具体例で説明すると、アドレスAPが図１３に示す値であるときには、基準C1を採用したときにはアドレス範囲R1のみが近傍であり、基準C2を採用したときにはアドレス範囲R1およびR2が近傍、基準C3を採用したときにはアドレス範囲R1、R2に加え、R3も近傍となる。
【０１０９】
（作用及び効果）
本実施形態に係るタスク管理システム２００によると、遅延処理を行うべきか判断する処理選択部２２１と、データを記憶する記憶手段２３０とを備えることにより、重要データのアクセス頻度を観測し、アクセス頻度が低い場合は、遅延処理を、高い場合は、非遅延処理を高確率で選択することができる。このため、タスクが実行待機状態である期間中に、当該タスクのタスク用アドレス空間に格納されるデータにおいて、当該タスクの処理に影響を与えるような変化が起こったことを検知することができ、かつ、当該データの読み出しを防ぐことができる。又、暗号処理及びページフォールト処理を総合的に軽減できる。
【０１１０】
又、処理選択部２２１は、タスクが実行状態から実行待機状態に変更される際に検証子記憶データのデータ番号に関連付けられたアクセス履歴に、データ番号に関連付けられた遅延フラグとデータ番号に関連付けられたアクセスフラグとから決まるアクセス種別を追加することができる。このように、本実施形態に係るタスク管理システム２００によると、アクセス履歴を更新することができる。
【０１１１】
又、ページフォールトが発生した場合、タスク情報記憶データにおいてページフォールトを発生させたタスクのタスク番号に関連付けられているデータ番号で特定されるデータであり、かつ、ページフォールトの発生したアドレスの近傍のデータを参照する第1の所定の処理を行い、検証子記憶データのデータ番号と関連付けられたアクセスフラグを真値に設定することができる。このように、本実施形態に係るタスク管理システム２００によると、適切なページフォールト処理を行うことができる。
【０１１２】
又、タスクが実行状態から実行待機状態に変更される際に、タスク情報記憶データにおいて該タスクを特定するタスク番号に関連付けられているデータ番号で特定されるデータについて、処理選択部２２１が遅延処理を行うべきである旨の判断をしなかった場合もしくは検証子記憶データのデータ番号と関連付けられたアクセスフラグが真値である場合に、データを参照する第２の所定の処理を行うことができる。
【０１１３】
又、本実施形態に係るタスク管理システム２００は、検証子生成処理を行う検証子生成部２１７と検証処理を行う検証部２１８とデータの復号を行う復号部２２０と、データの暗号化を行う暗号化部２１５とを備えるため、重要データを暗号化し、検証子を記録しておき、重要データの所有プロセスが利用にのみ遅延処理又は非遅延処理により、検証、復号を行うことができる。これにより、重要データへの不正アクセスを防ぐことが可能となる。
【０１１４】
又、本実施形態に係るタスク管理システム２００は、検証子更新処理を行う検証子更新部２１６とデータの暗号化を行う暗号化部２１５とを更に備え、第２の所定の処理は、暗号化部２１５による、参照するデータについての暗号化処理と、検証子生成部２１７による、該暗号化したデータについての検証子の生成処理と、検証子更新部２１６による、該検証子を検証子記憶データにおいてデータを特定するデータ番号と関連付けて記憶する検証子更新処理とを含むことができる。
【０１１５】
このタスク管理システム２００によると、タスクが実行状態から実行待機状態に変更される際に、当該タスクが利用する重要なデータは暗号化し検証子を求める検証子更新処理が行われ、次に当該タスクが実行状態に変更される際には再び当該データの検証子が求められて比較される検証処理が行われるので、当該データが他のタスクから変更されたことが検知できる。また、他のタスクが当該データを読み出しても暗号化されているため有効に利用することができない。
【０１１６】
また、検証処理はタスクが実行状態に変更される際に確定的に行うだけでなく、処理選択部２２１の決定によって、当該タスクが重要データにアクセスする直前に行う遅延処理も行われる。処理選択部２２１は当該データのアクセス履歴に応じて遅延処理と、タスクが実行状態に変更される際に検証処理を確定的に行う非遅延処理のうちのいずれか処理コストの小さい方を高確率に選択するため、暗号化処理や復号処理、検証子生成処理等で発生する処理コストを低減できる。
【図面の簡単な説明】
【０１１７】
【図１】本実施形態に係るタスク管理システムの構成ブロック図である。
【図２】本実施形態に係るタスク管理システムのタスク情報記憶領域に記憶されるタスク情報記憶データの一例である。
【図３】本実施形態に係るタスク管理システムの検証子記憶領域に記憶される検証子記憶データの一例である。
【図４】本実施形態に係るタスク管理方法を示すフローチャートである。
【図５】図４のステップＳ１１１の詳細を示すフローチャートである。
【図６】図４のステップＳ１１２の詳細を示すフローチャートである。
【図７】図６のステップＳ３０８の詳細を示すフローチャートである。
【図８】本実施形態に係るタスク管理方法におけるページフォールト処理を示すフローチャートである。
【図９】本実施形態に係るタスク管理システムが用いる関数Ｑの一例を説明するためのグラフである（その１）。
【図１０】本実施形態に係るタスク管理システムが用いる関数Ｑの一例を説明するためのグラフである（その２）。
【図１１】本実施形態において、検証子記憶データのアクセス履歴欄へのプッシュ操作を説明するための図である。
【図１２】本実施形態において、アドレス範囲とそれを包含するメモリページの関係を説明するための図である。
【図１３】本実施形態において、アドレスの近傍の基準を説明するための図である。
【図１４】従来のタスク管理システムの構成ブロック図である。
【図１５】従来のタスク管理システムのタスク情報記憶領域に記憶されるタスク情報記憶データの一例である。
【図１６】従来のタスク管理方法を示すフローチャートである。
【符号の説明】
【０１１８】
１００、２００…タスク管理システム
１１０、２１０…タスク管理手段
１１１…タスク中断部
１１２…次タスク選択部
１１３…アドレス切替部
１１４…タスク再開部
１３０、２３０…記憶手段
１３１、２３１…タスク情報記憶領域
１３２、２３２…タスクアドレス空間
２１５…暗号化部
２１６…検証子更新部
２１７…検証子生成部
２１８…検証部
２１９…アクセス検知部
２２０…復号部
２２１…処理選択部
２３３…検証子記憶領域
２３４…ページテーブル記憶領域
３００、３１０…タスク情報記憶データ
４００…検証子記憶データ
【図１】
2006302131.tif 000003
【図２】
2006302131.tif 000004
【図３】
2006302131.tif 000005
【図４】
2006302131.tif 000006
【図５】
2006302131.tif 000007
【図６】
2006302131.tif 000008
【図７】
2006302131.tif 000009
【図８】
2006302131.tif 000010
【図９】
2006302131.tif 000011
【図１０】
2006302131.tif 000012
【図１１】
2006302131.tif 000013
【図１２】
2006302131.tif 000014
【図１３】
2006302131.tif 000015
【図１４】
2006302131.tif 000016
【図１５】
2006302131.tif 000017
【図１６】
2006302131.tif 000018