(57)【要約】【課題】共有メモリに対するタスクのアクセス権の管理を柔軟に行うタスク管理システムを提供する。【解決手段】タスク管理システムは、共有メモリを特定するメモリ番号と共有メモリの検証子とを関連付けるレコードから構成される検証子記憶データを記憶する記憶手段２３０と、タスク用のタスクアドレス空間に記憶されているデータから検証子を生成する検証子生成部２１７と、タスクアドレス空間中の共有メモリに格納されているデータから生成された検証子を検証子記憶領域２３３に記憶する検証子更新部２１６と、タスクアドレス空間中の共有メモリに格納されているデータから生成された検証子と、検証子記憶領域２３３に記憶されている当該共有メモリの検証子とが一致するか否かについて検証する検証部２１８とを備える。【選択図】図１
2006252345.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、
共有メモリを特定するメモリ番号と該共有メモリの検証子とを関連付けるレコードから構成される検証子記憶データを記憶する記憶手段と、
前記タスク用のタスクアドレス空間に記憶されているデータから検証子を生成する検証子生成部と、
タスク切り替えの際に、実行状態から実行待機状態に変更される第１のタスクが正当利用している第１の共有メモリについて、前記検証子生成部が生成した検証子を、前記第１の共有メモリのメモリ番号に関連付けられた検証子の値として、前記検証子記憶データに設定する検証子更新部と、
前記タスク切り替えの際に、実行待機状態から実行状態に変更される第２のタスクが正当利用している第２の共有メモリについて、前記検証子生成部が生成した検証子が、前記検証子記憶データ中の前記第１の共有メモリのメモリ番号に関連付けられた検証子と一致するか否かについて検証する検証部と
を備えることを特徴とするタスク管理システム。
【請求項２】
前記検証子更新部は、前記第１のタスクが正当利用している前記第１の共有メモリを前記第２のタスクが正当利用していない場合に、前記検証子を前記検証子記憶データに設定し、
前記検証部は、前記第２のタスクが正当利用している前記第２の共有メモリを前記第１のタスクが正当利用していない場合に、検証子の一致を検証する
ことを特徴とする請求項１に記載のタスク管理システム。
【請求項３】
前記記憶手段は、タスク情報記憶領域にはタスクを特定するタスク番号と該タスクが正当利用している共有メモリを特定するメモリ番号とを関連付けるレコードから構成されるタスク情報記憶データを更に記憶し、
前記検証子更新部は、前記第1のタスクについて、前記タスク情報記憶データの第１のレコードにより該タスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、前記第1のタスクが正当利用している前記第１の共有メモリとし、
前記検証部は、前記第２のタスクについて、前記タスク情報記憶データの第２のレコードにより該タスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、前記第２のタスクが正当利用している前記第２の共有メモリとする
ことを特徴とする請求項１又は２に記載のタスク管理システム。
【請求項４】
前記タスク情報記憶データを構成するレコードには、該レコードが削除対象であるかどうかを指定する削除フラグが関連付けられており、
前記検証子更新部は、前記検証子を前記検証子記憶データに設定した後に、前記タスク情報記憶データの前記第１のレコードに関連付けられた削除フラグが真値の場合は、該レコードを削除する
ことを特徴とする請求項３に記載のタスク管理システム。
【請求項５】
前記検証子更新部が前記検証子を前記検証子記憶データに設定する前に、前記第１のタスクが正当利用している前記第１の共有メモリに記憶されているデータを暗号化する暗号化部と、
前記検証部が検証子の一致を検証した後に、当該検証結果に応じて、もしくは無条件に、前記第２のタスクが正当利用している前記第２の共有メモリに記憶されているデータを復号する復号部と
を備えることを特徴とする請求項１〜４のいずれかに１項に記載のタスク管理システム。
【請求項６】
前記暗号化部は、前記第１のタスクが正当利用している前記第１の共有メモリを前記第２のタスクが正当利用していない場合には、前記第１の共有メモリに記憶されているデータを暗号化し、
前記復号部は、前記第２のタスクが正当利用している前記第２の共有メモリを前記第１のタスクが正当利用していない場合には、前記第１の共有メモリに記憶されているデータを復号する
ことを特徴とする請求項５に記載のタスク管理システム。
【請求項７】
前記検証子記憶データは、共有メモリを特定するメモリ番号と該共有メモリの物理アドレスとを関連付けるレコードから構成され、
アドレス及びメモリ番号の入力を受けて、
該アドレスの物理アドレスと、該メモリ番号に前記検証子記憶データにおいて関連付けられている物理アドレスとが等しい場合に、該メモリ番号で特定される共有メモリのアドレスは前記入力された前記アドレスで正当であると判断するアドレス確認部を更に備える
ことを特徴とする請求項１〜６のいずれか１項に記載のタスク管理システム。
【請求項８】
前記検証子記憶データは、共有メモリを特定するメモリ番号と該共有メモリに固有の情報であるマークと該共有メモリ中の該マークの位置を指定するマーク位置とを関連付けるレコードから構成され、
アドレス及びメモリ番号の入力を受けて、
該アドレスに前記検証子記憶データにおいて該メモリ番号に関連付けられているマーク位置の値を加えたアドレスに、前記検証子記憶データにおいて該メモリ番号に関連付けられているマークが記憶されている場合に、該メモリ番号で特定される共有メモリのアドレスは前記入力された前記アドレスで正当であると判断するアドレス確認部を更に備える
ことを特徴とする請求項１〜４のいずれか１項に記載のタスク管理システム。
【請求項９】
前記検証子記憶データは共有メモリを特定するメモリ番号と該共有メモリに固有の情報であるマークと該共有メモリ中の該マークの位置を指定するマーク位置とを関連付けるレコードから構成され、
アドレス及びメモリ番号の入力を受けて、
前記復号部は、該アドレスに該メモリ番号で特定されるアドレス範囲のデータを復号し、
該アドレスに前記検証子記憶データにおいて該メモリ番号に関連付けられているマーク位置の値を加えたアドレスに、前記検証子記憶データにおいて該メモリ番号に関連付けられているマークが記憶されている場合に、該メモリ番号で特定される共有メモリのアドレスは前記入力された前記アドレスで正当であると判断するアドレス確認部を備える
ことを特徴とする請求項５又は６に記載のタスク管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを並列に実行するオペレーティングシステム（ＯＳ）におけるタスク管理システムに関する。
【背景技術】
【０００２】
従来から、電子計算機上で複数のタスクを高速に切り替えながら実行することで並行処理を実現する際のタスクの切り替えを実現するタスク管理システムが知られている。かかるタスク管理システムは、電子計算機のオペレーティングシステムのサブシステムである。
【０００３】
図１２〜図１５を参照して、従来のタスク管理システムについて説明する。図１２は、従来のタスク管理システム１００の構成を示すブロック図である。
【０００４】
図１２に示すように、従来のタスク管理システム１００は、タスク管理手段１１０と、記憶手段１３０とを備える。タスク管理手段１１０は、タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４とを備える。
【０００５】
タスク中断部１１１は、実行状態のタスクを実行待機状態に変更する。次タスク選択部１１２は、実行再開するタスクを選出する。アドレス切替部１１３は、タスクアドレス空間を切り替える。タスク再開部１１４は、実行再開するタスクを実行待機状態から実行状態に変更する。
【０００６】
記憶手段１３０は、タスク情報記憶領域１３１と、複数のタスクアドレス空間１３２−１〜１３２−ｎとを備える。
【０００７】
タスク情報記憶領域１３１は、各タスクを識別するためのタスク番号と、各タスクの状態を示すタスク情報とを関連付けるタスク情報記憶データを記憶する領域である。ここで、タスク情報には、ＣＰＵ(中央処理装置)のレジスタの内容や、当該タスクが利用していたタスクアドレス空間の指定子等の当該タスクを後刻実行再開するのに必要なデータや、当該タスクの優先度や累計実行時間等の管理上のデータが含まれる。
【０００８】
図１３は、タスク情報記憶データのデータ構造を具体例で示す図である。タスク情報記憶データ３００は、タスク番号欄とタスク情報欄とを備える行から構成される表形式のデータであり、同一行のタスク番号欄のタスク番号と、タスク情報欄のタスク情報が関連付けられている。尚、タスク情報は一般に複雑なデータ構造であるため、図示は省略している。又、タスク情報記憶データの行のことをレコードとも呼ぶ。
【０００９】
図１２に示すタスクアドレス空間１３２−１〜１３２−ｎは、各タスクに固有のアドレス空間であるタスクアドレス空間である。タスクアドレス空間は論理アドレス空間であり、物理アドレス空間とのマッピング（対応付け）はタスクごとに一般に異なる。即ち、異なるタスクで同じアドレスに対しアクセスしても、実際にアクセスされる物理アドレスは一般に異なる（同じであっても良い）。
【００１０】
但し、アドレス空間のマッピングのための機構を備えていない電子計算機も世に多数存在し、そのような電子計算機ではタスクアドレス空間は全て物理アドレス空間と等しいアドレス空間となる。
【００１１】
アドレス空間のマッピング機構を備えている電子計算機において、オペレーティングシステムは一般に、異なるタスクのタスクアドレス空間は互いに重複しない物理アドレス空間にマッピングすることによりタスク相互の隔離を行うが、異なるタスクのタスクアドレス空間の一部を意図的に同じ物理アドレス空間にマッピングすることにより、タスク間でデータの受け渡しを行えるようにすることもできる。そのように、複数のタスクアドレス空間にマッピングされることが想定される物理アドレス空間の部分、又は、広義にはその物理アドレス空間の部分がマッピングされる各タスクのタスクアドレス空間の部分のことを共有メモリという。
【００１２】
図１４は、共有メモリの概念を説明する図であり、共有メモリである物理アドレス空間の同一の部分を３つのタスクがそれぞれのタスクアドレス空間の一部としてマッピングしている。同図のように、一般に共有メモリがマッピングされるアドレスは各タスクにおいて異なる。
【００１３】
尚、共有メモリは、物理アドレス空間において一般に複数用意することができる。そのうち特定の共有メモリを特定のタスクがタスクアドレス空間にマッピングしているとき、そのタスクはその共有メモリを利用しているという。
【００１４】
次に、従来のタスク管理システムの動作について説明する。図１５は、従来のタスク管理システム１００がタスクの切り替えを行う際に行う処理を説明するフローチャートである。
【００１５】
図１５のステップＳ１０１において、タスク中断部１１１は、現在実行状態であるタスクを実行待機状態にし、そのタスクのタスク情報を、タスク情報記憶領域１３１に記憶する。ここで実行状態であったタスクを、以降「タスクＡ」と参照することにする。
【００１６】
次に、ステップＳ１０２において、次タスク選択部１１２は、次に実行再開対象とするタスクを選択する。ここで、実行再開対象として選択されたタスクを、以降「タスクＢ」と参照することにする。より具体的には、次タスク選択部１１２は、タスク情報記憶領域１３１を参照して、タスク間の公平性や優先度等を考慮して、タスク管理システム１００が取り扱うタスクの中から、実行再開する対象となるタスク(タスクＢ)を決定する。
【００１７】
次に、ステップＳ１０３において、アドレス切替部１１３は、タスクＢが以前実行状態であったときに利用していたタスクアドレス空間が利用できるように、タスクアドレス空間を切り替える。より具体的には、ＣＰＵのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとのマッピング機構の設定変更によって、タスクアドレス空間を切り替える。但し、かかるアドレスマッピング機構を用いていない電子計算機（即ち、物理アドレスを唯一のアドレス空間とするシステム）において、物理アドレス空間を分割した各々をタスクアドレス空間とする場合には、タスクアドレス空間の切り替えの設定処理は不要である。
【００１８】
次に、ステップＳ１０４において、タスク再開部１１４は、タスクＢを実行状態にし、本動作は終了する。より具体的には、タスク再開部１１４は、タスク情報記憶領域１３１からタスクＢのタスク情報を取得し、取得したタスク情報に基づいてＣＰＵのレジスタ内容を設定することでタスクＢの実行を再開させる。
【００１９】
上述のような従来のタスク管理システムの例としては、タスクスイッチ制御部とタスク中断部とタスク再開部とを備えるシステム（例えば、特許文献１参照。）や、ＵＮＩＸ(登録商標)等のマルチタスクＯＳが知られている。
【特許文献１】特開２０００−６６９０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、従来のタスク管理システムでは、共有メモリに対するタスクのアクセス権の管理を柔軟に行うことができなかった。即ち、個々の共有メモリに独立してタスクごとのアクセス権設定ができず、又、アクセス権を動的に変更できなかった。
【００２１】
このため、あるタスクを特定の共有メモリにアクセス可能とすると、そのタスクは同時に別の共有メモリにもアクセス可能となってしまう不都合があり、又、タスクの共有メモリに対するアクセス権をそのタスクのライフタイムの途中で剥奪したり、再び付与したりすることができず、継続してアクセスを許すしかなかった。
【００２２】
これらの不都合があることにより、注目する共有メモリに本来アクセスすることが認められないはずのタスクが当該共有メモリに格納されているデータを読み出して利用することが可能であるという問題点があり、又、共有メモリを正当利用（共有メモリのアクセス権を持ち、かつ、その共有メモリを利用すること）する他のタスクに知られることなく、当該共有メモリの格納するデータを書き換えてしまうことが可能であるという問題点があった。
【００２３】
そこで、本発明は、上記の課題に鑑み、共有メモリに対するタスクのアクセス権の管理を柔軟に行うことができ、共有メモリに対するアクセス権のないタスクからは当該共有メモリに格納されているデータを読み出して利用することを不可能にでき、又、共有メモリに対するアクセス権のないタスクが当該共有メモリに格納されているデータを書き換えた場合にはそれを検知することができるタスク管理システムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
上記目的を達成するため、本発明の特徴は、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムであって、（ａ）共有メモリを特定するメモリ番号と共有メモリの検証子とを関連付けるレコードから構成される検証子記憶データを記憶する記憶手段と、（ｂ）タスク用のタスクアドレス空間に記憶されているデータから検証子を生成する検証子生成部と、（ｃ）タスク切り替えの際に、実行状態から実行待機状態に変更される第１のタスクが正当利用している第１の共有メモリについて、検証子生成部が生成した検証子を、第１の共有メモリのメモリ番号に関連付けられた検証子の値として、検証子記憶データに設定する検証子更新部と、（ｄ）タスク切り替えの際に、実行待機状態から実行状態に変更される第２のタスクが正当利用している第２の共有メモリについて、検証子生成部が生成した検証子が、検証子記憶データ中の第１の共有メモリのメモリ番号に関連付けられた検証子と一致するか否かについて検証する検証部とを備えるタスク管理システムであることを要旨とする。
【００２５】
本発明の特徴に係るタスク管理システムによると、特定の共有メモリに注目した時に、その共有メモリを正当利用するタスクが実行状態から実行待機状態に変更される時にはその共有メモリの検証子が生成されて検証子記憶データに記憶され、次にその共有メモリを正当利用するタスクが実行待機状態から実行状態に変更される時にはその共有メモリの検証子が生成され、それと検証子記憶データに記憶されている検証子とが比較される。
【００２６】
よって、その間にその共有メモリが不当利用(正当利用以外の共有データの利用のこと)され、その記憶するデータに変更が生じたことを検知することができる。
【００２７】
又、本発明の特徴に係るタスク管理システムの検証子更新部は、第１のタスクが正当利用している第１の共有メモリを第２のタスクが正当利用していない場合に、検証子を検証子記憶データに設定し、検証部は、第２のタスクが正当利用している第２の共有メモリを第１のタスクが正当利用していない場合に、検証子の一致を検証してもよい。
【００２８】
このタスク管理システムによると、タスクを切り替える際に切り替わる前後のタスクが共通の共有メモリを正当利用している場合に、検証子更新処理のうちその共有メモリについての部分処理を省略することができ、かつ、検証処理のうちその共有メモリについての部分処理を省略することができる。
【００２９】
又、本発明の特徴に係るタスク管理システムの記憶手段は、タスク情報記憶領域にはタスクを特定するタスク番号とタスクが正当利用している共有メモリを特定するメモリ番号とを関連付けるレコードから構成されるタスク情報記憶データを更に記憶し、検証子更新部は、第1のタスクについて、タスク情報記憶データの第１のレコードによりタスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第1のタスクが正当利用している第１の共有メモリとし、検証部は、第２のタスクについて、タスク情報記憶データの第２のレコードによりタスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第２のタスクが正当利用している第２の共有メモリとしてもよい。
【００３０】
このタスク管理システムによると、タスク情報記憶データを参照することにより、共有メモリに対するタスクのアクセス権の管理を更に柔軟に行うことができる。
【００３１】
又、本発明の特徴に係るタスク管理システムにおいて、タスク情報記憶データを構成するレコードには、レコードが削除対象であるかどうかを指定する削除フラグが関連付けられており、検証子更新部は、検証子を検証子記憶データに設定した後に、タスク情報記憶データの第１のレコードに関連付けられた削除フラグが真値の場合は、レコードを削除してもよい。
【００３２】
このタスク管理システムによると、検証子更新処理の後にタスク情報記憶データのレコードが削除される。このため、検証子更新処理の前にタスク情報記憶データのレコードが削除されてしまうことにより、当該レコードに基づいて行われるべきであった共有メモリの検証子更新処理が行われず、検証子記憶データ中の検証子が共有メモリに記憶されているデータの現状を反映しなくなってしまうような不都合が起こらず、アクセス権の剥奪を動的に行っても問題が起こらない。
【００３３】
又、本発明の特徴に係るタスク管理システムは、検証子更新部が検証子を検証子記憶データに設定する前に、第１のタスクが正当利用している第１の共有メモリに記憶されているデータを暗号化する暗号化部と、検証部が検証子の一致を検証した後に、当該検証結果に応じて、もしくは無条件に、第２のタスクが正当利用している第２の共有メモリに記憶されているデータを復号する復号部とを備えてもよい。
【００３４】
このタスク管理システムによると、特定の共有メモリに注目した時に、その共有メモリを正当利用するタスクが実行状態から実行待機状態に変更される時にはその共有メモリに記憶されているデータが暗号化され、次にその共有メモリを正当利用するタスクが実行待機状態から実行状態に変更される時にはその共有メモリに記憶されているデータが復号される。よって、その間にその共有メモリが不当利用されてその記憶するデータが読み出されても、当該データは暗号化されているために正常に利用することは実用上不可能である。
【００３５】
又、本発明の特徴に係るタスク管理システムにおいて、暗号化部は、第１のタスクが正当利用している第１の共有メモリを第２のタスクが正当利用していない場合には、第１の共有メモリに記憶されているデータを暗号化し、復号部は、第２のタスクが正当利用している第２の共有メモリを第１のタスクが正当利用していない場合には、第１の共有メモリに記憶されているデータを復号してもよい。
【００３６】
このタスク管理システムによると、タスクを切り替える際に切り替わる前後のタスクが共通の共有メモリを正当利用している場合に、暗号化処理のうちその共有メモリについての部分処理を省略することができ、かつ、復号処理のうちその共有メモリについての部分処理を省略することができる。
【００３７】
又、本発明の特徴に係るタスク管理システムにおいて、検証子記憶データは、共有メモリを特定するメモリ番号と共有メモリの物理アドレスとを関連付けるレコードから構成され、アドレス及びメモリ番号の入力を受けて、アドレスの物理アドレスと、メモリ番号に検証子記憶データにおいて関連付けられている物理アドレスとが等しい場合に、メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断するアドレス確認部を更に備えてもよい。
【００３８】
このタスク管理システムによると、共有メモリがタスクアドレス空間における特定のアドレスに存在するかどうかを確認することができる。よって、事前にこの確認をしておくことにより、タスク情報記憶データに誤った共有メモリアドレスを設定してしまうことによりその誤った情報に基づいて検証子更新処理が行われたり、その誤った情報に基づいて共有メモリのデータが暗号化されたりする不都合が発生することを防止できるため、タスク情報記憶データの編集によりタスクにアクセス権を動的に付与しても問題が起こりにくい。
【００３９】
又、本発明の特徴に係るタスク管理システムにおいて、検証子記憶データは、共有メモリを特定するメモリ番号と共有メモリに固有の情報であるマークと共有メモリ中のマークの位置を指定するマーク位置とを関連付けるレコードから構成され、アドレス及びメモリ番号の入力を受けて、アドレスに検証子記憶データにおいてメモリ番号に関連付けられているマーク位置の値を加えたアドレスに、検証子記憶データにおいてメモリ番号に関連付けられているマークが記憶されている場合に、メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断するアドレス確認部を更に備えてもよい。
【００４０】
このタスク管理システムによると、共有メモリがタスクアドレス空間における特定のアドレスに存在するかどうかを確認することができる。よって、事前にこの確認をしておくことにより、タスク情報記憶データに誤った共有メモリアドレスを設定してしまうことによりその誤った情報に基づいて検証子更新処理が行われたりする不都合が発生することを防止できるため、タスク情報記憶データの編集によりタスクにアクセス権を動的に付与しても問題が起こりにくい。
【００４１】
又、本発明の特徴に係るタスク管理システムにおいて、検証子記憶データは共有メモリを特定するメモリ番号と共有メモリに固有の情報であるマークと共有メモリ中のマークの位置を指定するマーク位置とを関連付けるレコードから構成され、アドレス及びメモリ番号の入力を受けて、復号部は、アドレスにメモリ番号で特定されるアドレス範囲のデータを復号し、アドレスに検証子記憶データにおいてメモリ番号に関連付けられているマーク位置の値を加えたアドレスに、検証子記憶データにおいてメモリ番号に関連付けられているマークが記憶されている場合に、メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断するアドレス確認部を備えてもよい。
【００４２】
このタスク管理システムによると、共有メモリがタスクアドレス空間における特定のアドレスに存在するかどうかを確認することができる。よって、事前にこの確認をしておくことにより、タスク情報記憶データに誤った共有メモリアドレスを設定してしまうことによりその誤った情報に基づいて検証子更新処理が行われたり、その誤った情報に基づいて共有メモリのデータが暗号化されたりする不都合が発生することを防止できるため、タスク情報記憶データの編集によりタスクにアクセス権を動的に付与しても問題が起こりにくい。
【発明の効果】
【００４３】
本発明によると、共有メモリに対するタスクのアクセス権の管理を柔軟に行うことができ、共有メモリに対するアクセス権のないタスクからは当該共有メモリに格納されているデータを読み出して利用することを不可能にでき、又、共有メモリに対するアクセス権のないタスクが当該共有メモリに格納されているデータを書き換えた場合にはそれを検知することができるタスク管理システムを提供することができる。
【発明を実施するための最良の形態】
【００４４】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。但し、図面は模式的なものであることに留意すべきである。
【００４５】
（タスク管理システム）
本実施形態では、複数のタスクを並列に実行するオペレーティングシステムにおけるタスク管理システムについて説明する。
【００４６】
本実施形態に係るタスク管理システム２００は、図１に示すように、タスク管理手段２１０と記憶手段２３０とを備える。
【００４７】
タスク管理手段２１０は、タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４と、暗号化部２１５と、検証子更新部２１６と、検証子生成部２１７と、検証部２１８と、復号部２１９と、アドレス確認部２２０とを備える。
【００４８】
タスク中断部１１１と、次タスク選択部１１２と、アドレス切替部１１３と、タスク再開部１１４とは、従来技術によるタスク管理手段１１０における各部と同一である。
【００４９】
検証子生成部２１７は、タスク用のタスクアドレス空間に記憶されているデータの検証子を生成する。具体的には、検証子生成部２１７は、記憶手段２３０の現在利用できるタスクアドレス空間を含むアドレス空間における所定アドレス範囲に記憶されているデータから検証子を生成する。
【００５０】
ここで、検証子は、所定アドレス範囲に記憶されているデータを、所定の変換関数に入力することによって算出される出力データである。但し、かかる変換関数の性質としては、同一の入力データに対して同一の出力データを算出し、又、任意の入力データ「Ａ」に対する出力データが「Ｂ」であったときに、出力データが同じく「Ｂ」となるような入力データ「Ａ」とは異なる入力データ「Ｃ」を見出すことが非常に困難であることが必要である。
【００５１】
そのような性質を満たす変換関数としては、「MD5(Message Digest 5)」や「SHA(Secure Hash Algorithm)」等のセキュアハッシュ関数や、入力データを可逆符号化する可逆符号化関数（入力データをそのまま出力データとする変換関数を含む）等が挙げられる。又、セキュアハッシュ関数は、入力データ長によらない長さのデータを出力するが、計算処理負荷が比較的大きい。一方、可逆符号化関数は、計算処理負荷は比較的小さいが、入力データ長に応じた長さのデータを出力するという性質を持つ。したがって、検証子生成部２１７は、指定された所定アドレス範囲の広さが、比較的小さい場合（例えば、所定閾値よりも小さい場合)には、可逆符号化関数の出力を出力データとして採用し、それ以外の場合(例えば、所定閾値よりも大きい場合)には、セキュアハッシュ関数の出力を出力データとして採用する変換関数を用いることもできる。
【００５２】
検証子更新部２１６は、タスクアドレス空間中の共有メモリに格納されているデータから生成された検証子を検証子記憶領域２３３に記憶する。具体的には、検証子更新部２１６は、タスク切り替えの際に、実行状態から実行待機状態に変更される第１のタスクが正当利用している第１の共有メモリについて、検証子生成部２１７が生成した検証子を、第１の共有メモリのメモリ番号に関連付けられた検証子の値として、記憶手段２３０に記憶された検証子記憶データに設定する。又、検証子更新部２１６は、第１のタスクが正当利用している第１の共有メモリを第２のタスクが正当利用していない場合にのみ、検証子を検証子記憶データに設定してもよい。
【００５３】
尚、後に詳述するが、検証子更新部２１６は、第1のタスクについて、タスク情報記憶データの第１のレコードにより当該タスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第1のタスクが正当利用している第１の共有メモリとする。
【００５４】
又、検証子更新部２１６は、検証子を検証子記憶データに設定した後に、タスク情報記憶データの第１のレコードに関連付けられた削除フラグが真値の場合は、当該レコードを削除する。
【００５５】
検証部２１８は、タスクアドレス空間中の共有メモリに格納されているデータから生成された検証子と、検証子記憶領域２３３に記憶されている当該共有メモリの検証子とが一致するか否かについて検証する。具体的には、検証部２１８は、タスク切り替えの際に、実行待機状態から実行状態に変更される第２のタスクが正当利用している第２の共有メモリについて、検証子生成部２１７が生成した検証子が、記憶手段２３０に記憶された検証子記憶データ中の第１の共有メモリのメモリ番号に関連付けられた検証子と一致するか否かについて検証する。又、検証部２１８は、第２のタスクが正当利用している第２の共有メモリを第１のタスクが正当利用していない場合にのみ、検証子の一致を検証してもよい。
【００５６】
尚、後に詳述するが、検証部２１８は、第２のタスクについて、タスク情報記憶データの第２のレコードにより当該タスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第２のタスクが正当利用している第２の共有メモリとする。
【００５７】
暗号化部２１５は、タスクアドレス空間中の所定アドレス範囲に記憶されているデータを暗号化する。具体的には、暗号化部２１５は、検証子更新部２１６が検証子を検証子記憶データに設定する前に、タスク切り替えの際に、実行状態から実行待機状態に変更される第１のタスクが正当利用している第１の共有メモリに記憶されているデータを暗号化する。
【００５８】
復号部２１９は、タスクアドレス空間中の所定アドレス範囲に記憶されている暗号化されたデータを復号する。具体的には、復号部２１９は、検証部２１８が検証子の一致を検証した後に、当該検証結果に応じて、もしくは無条件に、タスク切り替えの際に、実行待機状態から実行状態に変更される第２のタスクが正当利用している第２の共有メモリに記憶されているデータを復号する。又、復号部２１９は、アドレス及びメモリ番号の入力を受けて、当該アドレスにメモリ番号で特定されるアドレス範囲のデータを復号してもよい。
【００５９】
アドレス確認部２２０は、指定されたアドレスに指定された共有メモリが存在するかを確認する。具体的には、アドレス確認部２２０は、アドレス及びメモリ番号の入力を受けて、当該アドレスの物理アドレスと、当該メモリ番号に検証子記憶データにおいて関連付けられている物理アドレスとが等しい場合に、当該メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断してもよい。あるいは、アドレス確認部２２０は、アドレス及びメモリ番号の入力を受けて、当該アドレスに検証子記憶データにおいて当該メモリ番号に関連付けられているマーク位置の値を加えたアドレスに、検証子記憶データにおいて当該メモリ番号に関連付けられているマークが記憶されている場合に、当該メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断してもよい。
【００６０】
記憶手段２３０は、タスク情報記憶領域２３１と、複数のタスクアドレス空間１３２−１〜１３２−ｎと、検証子記憶領域２３３とを備える。記憶手段２３０は、ＲＡＭなどの内部記憶装置であってもよく、ＨＤなどの外部記憶装置であってもよい。
【００６１】
タスクアドレス空間１３２−１〜１３２−ｎは、従来技術に係るタスク管理システム１００におけるタスクアドレス空間１３２−１〜１３２−ｎと同一である。
【００６２】
タスク情報記憶領域２３１は、タスクを識別するためのタスク番号と、タスクの状態を示すタスク情報と、共有メモリのタスクアドレス空間におけるアドレスを示す共有メモリアドレスと、共有メモリを識別するメモリ番号と、削除すべき情報かどうかを示す削除フラグとを要素として関連付ける、タスク情報記憶データを記憶する領域である。
【００６３】
これら要素のうち、タスク番号及びタスク情報に関しては、従来技術におけるそれらと同一である。共有メモリアドレスは、特定のタスクアドレス空間における特定の共有メモリのアドレスである。メモリ番号は、共有メモリを識別する番号であり、タスク管理システム１００の全域を通じて通用する番号である。即ち、あるタスクにおけるメモリ番号が“3”の共有メモリは、その他のタスクにおけるメモリ番号“3”の共有メモリと同一である。削除フラグは、その値が真値であるときには、タスク情報記憶データにおけるその削除フラグを要素とする関連付けを削除すべきであることを意味するフラグである。
【００６４】
尚、タスク情報記憶データにおいて、タスク番号とメモリ番号が関連付けられている場合、そのタスク番号で特定されるタスクは、そのメモリ番号で特定される共有メモリのアクセス権を持つ。
【００６５】
図２は、タスク情報記憶データのデータ構造を具体例で示す図である。タスク情報記憶データ３１０は、タスク番号欄とタスク情報欄と共有メモリアドレス欄とメモリ番号欄と削除フラグ欄とを備える行（図２では、Ｌ３１〜３８）から構成される表形式のデータであり、同一行のタスク番号欄のタスク番号と、タスク情報欄のタスク情報と、共有メモリアドレス欄と共有メモリアドレスと、メモリ番号欄のメモリ番号と、削除フラグ欄の削除フラグとが関連付けられている。尚、タスク情報は一般に複雑なデータ構造であるため、図示は省略している。又、後に詳述するが、Ｌ３６は、削除フラグの値が真値であるため、図３に示すように、削除される。
【００６６】
検証子記憶領域２３３は、共有メモリを識別するメモリ番号と、共有メモリのアドレス空間のサイズを示すメモリ長と、共有メモリの暗号化の要否を示す暗号化フラグと、共有メモリの検証子と、共有メモリの物理アドレスと、マークのデータ内容であるマーク内容と、マークの共有メモリの先頭からの相対アドレスであるマーク位置とを要素として関連付ける検証子記憶データを記憶する領域である。
【００６７】
これら要素のうち、メモリ番号及び検証子、物理アドレスについては前述したとおりである。メモリ長は、共有メモリのアドレス空間の大きさを、その空間に記憶することが可能な最長のデータのバイト数やワード数などで示したものである。暗号化フラグは共有メモリに格納するデータの暗号化処理・復号処理の要否を指定するフラグであり、真値の時には、暗号化処理・復号処理が必要であることを意味する。マーク内容は、マークのデータパタンとして用いられているデータである。マーク位置は、共有メモリにおいてマークが格納されているアドレスを共有メモリの先頭アドレスからの相対アドレスで示したものである。尚、ここで、「マーク」とは、共有メモリを識別するために共有メモリのアドレス空間の一部に格納されるデータパタンである。異なる共有メモリではマーク内容もしくはマーク位置が異なるようにしておくことにより、既知のマークを確認することで、あるアドレス空間がいずれかの共有メモリであるかどうかを推測することができる。
【００６８】
図４は、検証子記憶データのデータ構造を具体例で示す図である。検証子記憶データ４００は、メモリ番号欄と、メモリ長欄と、暗号化フラグ欄と、検証子欄と、物理アドレス欄と、マーク内容欄と、マーク位置欄とを備える行から構成される表形式のデータであり、同一行のメモリ番号欄のメモリ番号と、メモリ長欄のメモリ長と、暗号化フラグ欄の暗号化フラグと、検証子欄の検証子と、物理アドレス欄の物理アドレスと、マーク内容欄のマーク内容と、マーク位置欄のマーク位置とが関連付けられている。尚、検証子記憶データの行のことをレコードとも呼ぶ。
【００６９】
（タスク管理方法）
次に、本実施形態に係るタスク管理方法について、図５〜図１１を用いて説明する。尚、タスク中断部１１１と次タスク選択部１１２とアドレス切替部１１３とタスク再開部１１４の動作は、従来技術に係る動作と同じであるため、説明を省略する。
【００７０】
まず、図５を用いて、タスク管理システム２００がタスクの切り替えを行う際に行う動作について説明する。
【００７１】
ステップＳ１０１において、タスク中断部１１１が現在実行状態であるタスクを実行待機状態にし、そのタスクのタスク情報を、タスク情報記憶領域１３１に記憶する。ここで実行状態であったタスクを、以降「タスクＡ」と参照することにする。
【００７２】
次に、ステップＳ１０２において、次タスク選択部１１２が次に実行再開対象とするタスクを選択する。ここで実行再開対象として選択されたタスクを、以降「タスクＢ」と参照することにする。より具体的には、次タスク選択部１１２は、タスク情報記憶領域１３１を参照して、タスク間の公平性や優先度等を考慮して、タスク管理システム１００が取り扱うタスクの中から、実行再開する対象となるタスク(タスクＢ)を決定する。
【００７３】
次に、ステップＳ１１１において、タスクＡの検証子を更新する。より具体的には、タスクＡとタスクＢのタスク番号をパラメタとして、検証子更新部２１６が中心となり、後述の検証子更新処理を行う。
【００７４】
次に、ステップＳ１０３において、アドレス切替部１１３は、タスクＢが以前実行状態であったときに利用していたタスクアドレス空間が利用できるように、タスクアドレス空間を切り替える。アドレス空間の切り替えは、より具体的には、ＣＰＵのセグメントレジスタの設定や、ページテーブルの変更等のように、論理アドレスと物理アドレスとのマッピング機構の設定変更によって、タスクアドレス空間を切り替える。但し、かかるアドレスマッピング機構を用いていない電子計算機（即ち、物理アドレスを唯一のアドレス空間とするシステム）において、物理アドレス空間を分割した各々をタスクアドレス空間とする場合には、タスクアドレス空間の切り替えの設定処理は不要である。
【００７５】
次に、ステップＳ１１２において、タスクＢについて検証する。より具体的には、タスクＡとタスクＢのタスク番号をパラメタとして、検証部２１８が中心となり後述の検証処理を行う。
【００７６】
次に、ステップＳ１１３において、検証部２１８が検証処理にて検証成功の報告をした場合には、ステップＳ１０４に進み、それ以外の場合は、ステップＳ１１４に進む。
【００７７】
次に、ステップＳ１０４において、タスク再開部１１４は、タスクＢを実行状態にし、処理を終了する。より具体的には、タスク再開部１１４は、タスク情報記憶領域１３１からタスクＢのタスク情報を取得し、取得したタスク情報に基づいて、ＣＰＵのレジスタ内容を設定することでタスクＢの実行を再開させる。
【００７８】
一方、ステップＳ１１４において、タスク管理システム１００は、異常検出時処理を行い、処理を終了する。異常検出時処理とは、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクＢに異常発生を通知する処理や、ステップＳ１０４と同じ処理や、タスクＢを終了させる処理のいずれか又はそれらの処理の複合等が挙げられる。
【００７９】
次に、図５のステップＳ１１１に示す検証子更新処理の動作について、図６を用いて詳細に説明する。
【００８０】
まず、ステップＳ２０１において、タスク管理システム２００は、検証子更新処理のパラメタであるタスクＡのタスク番号と、パラメタであるタスクＢのタスク番号とを、変数ＴＡとＴＢとにそれぞれ代入する。
【００８１】
ステップＳ２０２〜ステップＳ２０８はループ処理であり、タスク管理システム２００は、タスク情報記憶領域２３１の記憶するタスク情報記憶データを走査し、タスク番号欄がＴＡの値と等しい行があるごとに、当該行を「行ＬＴ」と参照し、ステップＳ２０３以下の処理を行う。タスク情報記憶データをすべて走査し終わったら、ループ処理を終了し、検証子更新処理を終了する。
【００８２】
具体例を用いて説明すると、タスク情報記憶領域２３１が図２に示すタスク情報記憶データ３１０を記憶しており、ＴＡの値が４３３５であった場合には、タスク番号欄がＴＡの値と等しい行は、タスク情報記憶データ３１０に行Ｌ３２と行Ｌ３３の2つあるため、本ループ処理においてステップＳ２０３以下の処理は、２回行われる。そのうち１回においては、行Ｌ３２が行ＬＴとして参照され、別の１回においては行Ｌ３３が行ＬＴとして参照される。
【００８３】
ステップＳ２０３において、検証子更新部２１６は、行ＬＴの共有メモリアドレス欄の値と行ＬＴのメモリ番号欄の値とを、変数Ａと変数Ｄにそれぞれ代入し、検証子記憶領域２３３の記憶する検証子記憶データの中でメモリ番号欄がＤの値と等しい行を以下行ＬＶと参照し、行ＬＶのデータ長欄の値を変数Ｎに代入する。
【００８４】
次に、ステップＳ２０４において、検証子更新部２１６は、タスク番号がＴＢの値であるタスクもメモリ番号がＤの値である共有メモリを利用しているかを確認する。即ち、タスク情報記憶領域２３１の記憶するタスク情報記憶データの中でタスク番号欄がＴＢの値と等しく、かつ、メモリ番号欄がＤの値と等しい行が存在するかどうか確認し、当該行が存在する場合は、ステップＳ２０６に進み、それ以外の場合は、ステップＳ２０５に進む。
【００８５】
次に、ステップＳ２０５において、後述の処理Ｐ２を行う。
【００８６】
次に、ステップＳ２０６において、検証子更新部２１６は、行ＬＴの削除フラグ欄の値を確認し、それが真値の場合は、ステップＳ２０７に進み、それ以外の場合は、ステップＳ２０８に進む。
【００８７】
次に、ステップＳ２０７において、検証子更新部２１６は、タスク情報記憶領域２３１の記憶するタスク情報記憶データの行ＬＴを削除する。具体例を用いて説明すると、タスク情報記憶領域２３１が図２のタスク情報記憶データ３１０を記憶しており、行ＬＴが行Ｌ３６であった場合にステップＳ２０７の処理を行うと行Ｌ３６は削除され、タスク情報記憶領域２３１の記憶内容は、図３のタスク情報記憶データ３１１のようになる。
【００８８】
次に、ステップＳ２０８において、ループ始端であるステップＳ２０２に進み、ループ処理を継続する。
【００８９】
次に、図６のステップＳ２０５に示す処理Ｐ２の動作について、図７を用いて詳細に説明する。
【００９０】
まず、ステップＳ２１１において、タスク管理システム２００は、行ＬＶの暗号化フラグ欄の値を確認し、それが真値の場合は、ステップＳ２１２に進み、それ以外の場合は、ステップＳ２１３に進む。
【００９１】
次に、ステップＳ２１２において、暗号化部２１５は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータを暗号化する。
【００９２】
次に、ステップＳ２１３において、検証子生成部２１７は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータにつき検証子を生成する。
【００９３】
次に、ステップＳ２１４において、検証子更新部２１６は、行ＬＶの検証子欄に生成された検証子を代入し、本動作を終了する。
【００９４】
次に、図５のステップＳ１１２に示す検証処理の動作について、図８を用いて詳細に説明する。
【００９５】
まず、ステップＳ３０１において、タスク管理システム２００は、検証処理のパラメタであるタスクＡのタスク番号と、パラメタであるタスクＢのタスク番号とを、変数ＴＡとＴＢとにそれぞれ代入する。
【００９６】
ステップＳ３０２〜ステップＳ３０６はループ処理であり、タスク管理システム２００は、タスク情報記憶領域２３１の記憶するタスク情報記憶データを走査し、タスク番号欄がＴＡの値と等しい行があるごとに、当該行を「行ＬＴ」と参照し、ステップＳ３０３以下の処理を行う。タスク情報記憶データをすべて走査し終わったら、ループ処理を終了し、ステップＳ３０７に進む。
【００９７】
ステップＳ３０３において、検証部２１８は、行ＬＴの共有メモリアドレス欄の値と行ＬＴのメモリ番号欄の値とを変数Ａと変数Ｄにそれぞれ代入し、検証子記憶領域２３３の記憶する検証子記憶データの中でメモリ番号欄がＤの値と等しい行を以下行ＬＶと参照し、行ＬＶのデータ長欄の値を変数Ｎに代入する。
【００９８】
次に、ステップＳ３０４において、検証部２１８は、タスク番号がＴＢの値であるタスクもメモリ番号がＤの値である共有メモリを利用しているかを確認する。即ち、タスク情報記憶領域２３１の記憶するタスク情報記憶データの中でタスク番号欄がＴＢの値と等しく、かつ、メモリ番号欄がＤの値と等しい行が存在するかどうか確認し、当該行が存在する場合、ステップＳ３０６に進み、それ以外の場合は、ステップＳ３０５に進む。
【００９９】
次に、ステップＳ３０５において、後述の処理Ｐ３を行う。
【０１００】
次に、ステップＳ３０６において、本動作はループ始端であるステップＳ３０２に進み、ループ処理を継続する。
【０１０１】
次に、ステップＳ３０７において、検証部２１８は、ステップＳ３０２〜ステップＳ３０６のループ処理にて検証子不一致があったかどうか確認し、検証子不一致があった場合には、ステップＳ３０９に進み、それ以外の場合は、ステップＳ３０８に進む。尚、検証子不一致があったかどうかの判断は、ステップＳ３０５の処理Ｐ３におけるステップＳ３１３の処理が行われたことがあるかどうかにより判断する。同処理が行われたことがある場合には、検証子不一致があったと判断する。
【０１０２】
次に、ステップＳ３０８において、検証部２１８は、検証成功を報告し、本動作を終了する。
【０１０３】
一方、ステップＳ３０９において、検証部２１８は、検証失敗を報告し、本動作を終了する。
【０１０４】
次に、図８のステップＳ３０５に示す処理Ｐ３の動作について、図９を用いて詳細に説明する。
【０１０５】
まず、ステップＳ３１１において、検証子生成部２１７は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータにつき検証子を生成する。
【０１０６】
ステップＳ３１２において、検証部２１８は、生成された検証子と行ＬＶの検証子欄の値とが一致するかどうか確認し、一致する場合は、ステップＳ３１４に進み、それ以外の場合は、ステップＳ３１３に進む。
【０１０７】
ステップＳ３１３において、タスク管理システム２００は、検証子不一致処理を行い、本動作を終了する。検証子不一致処理は、例えば、電子計算機の管理者に異常発生を通知する処理や、イベントログに異常発生を記録する処理や、タスクＢに異常発生を通知する処理や、ステップＳ３１４及びＳ３１５からなる処理と同じ処理や、タスクＢを終了させる処理のいずれか又はそれらの処理の複合等が挙げられる。
【０１０８】
次に、ステップＳ３１４において、タスク管理システム２００は、行ＬＶの暗号化フラグ欄の値を確認し、それが真値の場合は、ステップＳ３１５に進み、それ以外の場合は、処理を終了する。
【０１０９】
次に、ステップＳ３１５において、復号部２１９は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータを復号し、処理を終了する。
【０１１０】
本実施形態に係るタスク管理方法では、事前に、共有メモリがタスクアドレス空間における特定のアドレスに存在するか否かを確認する。このアドレス確認処理は、定期的にあるいは任意に、アドレス及びメモリ番号がタスク管理手段２１０に入力されることにより、実行される。
【０１１１】
次に、アドレス確認部２２０が行うアドレス確認処理は、具体的には、以下の２種類の動作が挙げられる。１種類目の動作について、図１０を用いて説明する。
【０１１２】
まず、ステップＳ４０１において、アドレス確認部２２０は、パラメタのアドレス値とパラメタのメモリ番号とを変数Ａと変数Ｄとにそれぞれ代入する。
【０１１３】
次に、ステップＳ４０２において、アドレス確認部２２０は、検証子記憶領域２３３の記憶する検証子記憶データの中でメモリ番号欄がＤの値と等しい行を以下行ＬＶと参照し、行ＬＶの物理アドレス欄の値を変数ＰＤに代入し、Ａの値である論理アドレスを物理アドレスに変換した値を変数ＰＡに代入する。
【０１１４】
次に、ステップＳ４０３において、アドレス確認部２２０は、ＰＡの値とＰＤの値とが等しいかどうか確認し、等しい場合は、ステップＳ４０４に進み、それ以外の場合は、ステップＳ４０５に進む。
【０１１５】
次に、ステップＳ４０４に進んだ場合は、即ち、パラメタのメモリ番号(Ｄ)で特定される共有メモリのアドレスはパラメタのアドレス値(Ａ)のアドレスであるとみなせるため、ステップＳ４０４において、アドレス確認部２２０は、アドレス正当を報告し、処理を終了する。
【０１１６】
一方、ステップＳ４０５において、アドレス確認部２２０は、アドレス不当を報告し、処理を終了する。
【０１１７】
次に、アドレス確認部２２０が行うアドレス確認処理の２種類目の動作について、図１１を用いて説明する。
【０１１８】
まず、ステップＳ４１１において、アドレス確認部２２０は、パラメタのアドレス値とパラメタのメモリ番号とを変数Ａと変数Ｄとにそれぞれ代入する。
【０１１９】
次に、ステップＳ４１２において、アドレス確認部２２０は、検証子記憶領域２３３の記憶する検証子記憶データの中でメモリ番号欄がＤの値と等しい行を以下行ＬＶと参照し、行ＬＶのデータ長欄の値とマーク内容欄の値とマーク位置欄の値とを変数Ｎと変数Ｍと変数Ｐとにそれぞれ代入する。
【０１２０】
次に、ステップＳ４１３において、アドレス確認部２２０は、行ＬＶの暗号化フラグ欄の値を確認し、それが真値の場合は、ステップＳ４１４に進み、それ以外の場合は、ステップＳ４１６に進む。
【０１２１】
次に、ステップＳ４１４において、アドレス確認部２２０は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータを一時保存する。一時保存とは、データを一時保存用変数（図示せず）にコピーすることである。
【０１２２】
次に、ステップＳ４１５において、復号部２１９は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されているデータを復号する。
【０１２３】
次に、ステップＳ４１６において、アドレス確認部２２０は、記憶手段２３０においてＡの値にＰの値を加えた値のアドレスに格納されているデータがＭの値と一致するかどうかを確認し、一致する場合は、ステップＳ４１７に進み、それ以外の場合は、ステップＳ４１８に進む。
【０１２４】
ステップＳ４１７に進んだ場合は、即ち、パラメタのメモリ番号(Ｄ)で特定される共有メモリのアドレスは、パラメタのアドレス値(Ａ)のアドレスであるとみなせるため、ステップＳ４１７において、アドレス確認部２２０は、アドレス正当を報告する。
【０１２５】
一方、ステップＳ４１８において、アドレス確認部２２０は、アドレス不当を報告する。
【０１２６】
次に、ステップＳ４１９において、アドレス確認部２２０は、記憶手段２３０においてＡの値のアドレス及びＮの値のデータ長で定まるアドレス範囲に格納されていたデータを復元し、処理を終了する。復元とは、当該アドレス範囲に、ステップＳ４１４の処理において一時保存用変数にコピーしておいたデータを格納することである。但し、本動作においてステップＳ４１４の処理が行われなかった場合には、この復元処理も行わない。
【０１２７】
（作用及び効果）
本実施形態に係るタスク管理システム２００によると、特定の共有メモリに注目した時に、その共有メモリを正当利用するタスクが実行状態から実行待機状態に変更される時にはその共有メモリの検証子が生成されて記憶手段２３０の検証子記憶領域２３３に記憶され、次にその共有メモリを正当利用するタスクが実行待機状態から実行状態に変更される時にはその共有メモリの検証子が生成され、それと検証子記憶データに記憶されている検証子とが比較される。
【０１２８】
このため、共有メモリに対するタスクのアクセス権の管理を柔軟に行うことができ、共有メモリに対するアクセス権のないタスクからは当該共有メモリに格納されているデータを読み出して利用することを不可能にでき、又、共有メモリに対するアクセス権のないタスクが当該共有メモリに格納されているデータを書き換えた場合にはそれを検知することができる。
【０１２９】
又、本実施形態に係るタスク管理システム２００の検証子更新部２１６は、実行状態から実行待機状態に変更される第１のタスクが正当利用している第１の共有メモリを第２のタスクが正当利用していない場合に、検証子を検証子記憶データに設定し、検証部２１８は、実行待機状態から実行状態に変更される第２のタスクが正当利用している第２の共有メモリを第１のタスクが正当利用していない場合に、検証子の一致を検証することができる。
【０１３０】
このため、タスクを切り替える際に切り替わる前後のタスクが共通の共有メモリを正当利用している場合に、検証子更新処理のうちその共有メモリについての部分処理を省略することができ、かつ、検証処理のうちその共有メモリについての部分処理を省略することができる。
【０１３１】
又、本実施形態に係るタスク管理システム２００の記憶手段２３０は、タスク情報記憶領域にはタスクを特定するタスク番号とタスクが正当利用している共有メモリを特定するメモリ番号とを関連付けるレコードから構成されるタスク情報記憶データを更に記憶し、検証子更新部２１６は、第1のタスクについて、タスク情報記憶データの第１のレコードによりタスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第1のタスクが正当利用している第１の共有メモリとし、検証部２１９は、第２のタスクについて、タスク情報記憶データの第２のレコードによりタスクのタスク番号に関連付けられたメモリ番号で特定される共有メモリを、第２のタスクが正当利用している第２の共有メモリとすることができる。
【０１３２】
このため、タスク情報記憶データを参照することにより、共有メモリに対するタスクのアクセス権の管理を更に柔軟に行うことができる。
【０１３３】
又、本実施形態に係るタスク管理システム２００において、タスク情報記憶データを構成するレコードには、レコードが削除対象であるかどうかを指定する削除フラグが関連付けられており、検証子更新部２１６は、検証子を検証子記憶データに設定した後に、タスク情報記憶データの第１のレコードに関連付けられた削除フラグが真値の場合は、レコードを削除することができる。
【０１３４】
このように、検証子更新処理の後にタスク情報記憶データのレコードが削除されるため、検証子更新処理の前にタスク情報記憶データのレコードが削除されてしまうことにより、当該レコードに基づいて行われるべきであった共有メモリの検証子更新処理が行われず、検証子記憶データ中の検証子が共有メモリに記憶されているデータの現状を反映しなくなってしまうような不都合が起こらず、アクセス権の剥奪を動的に行っても問題が起こらない。
【０１３５】
又、本実施形態に係るタスク管理システム２００は、検証子更新部２１６が検証子を検証子記憶データに設定する前に、第１のタスクが正当利用している第１の共有メモリに記憶されているデータを暗号化する暗号化部２１５と、検証部２１８が検証子の一致を検証した後に、当該検証結果に応じて、もしくは無条件に、第２のタスクが正当利用している第２の共有メモリに記憶されているデータを復号する復号部２１９とを備える。
【０１３６】
このため、特定の共有メモリに注目した時に、その共有メモリを正当利用するタスクが実行状態から実行待機状態に変更される時にはその共有メモリに記憶されているデータが暗号化され、次にその共有メモリを正当利用するタスクが実行待機状態から実行状態に変更される時にはその共有メモリに記憶されているデータが復号される。よって、その間にその共有メモリが不当利用されてその記憶するデータが読み出されても、当該データは暗号化されているために正常に利用することは実用上不可能である。
【０１３７】
又、本実施形態に係るタスク管理システム２００において、暗号化部２１５は、第１のタスクが正当利用している第１の共有メモリを第２のタスクが正当利用していない場合には、第１の共有メモリに記憶されているデータを暗号化し、復号部２１９は、第２のタスクが正当利用している第２の共有メモリを第１のタスクが正当利用していない場合には、第１の共有メモリに記憶されているデータを復号する。
【０１３８】
このため、タスクを切り替える際に切り替わる前後のタスクが共通の共有メモリを正当利用している場合に、暗号化処理のうちその共有メモリについての部分処理を省略することができ、かつ、復号処理のうちその共有メモリについての部分処理を省略することができる。
【０１３９】
又、本実施形態に係るタスク管理システム２００は、アドレス確認部２２０を備える。アドレス確認部２２０は、アドレス及びメモリ番号の入力を受けて、アドレスの物理アドレスと、メモリ番号に検証子記憶データにおいて関連付けられている物理アドレスとが等しい場合に、メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断する。
【０１４０】
又、アドレス確認部２２０は、アドレス及びメモリ番号の入力を受けて、アドレスに検証子記憶データにおいてメモリ番号に関連付けられているマーク位置の値を加えたアドレスに、検証子記憶データにおいてメモリ番号に関連付けられているマークが記憶されている場合に、メモリ番号で特定される共有メモリのアドレスは入力されたアドレスで正当であると判断してもよい。
【０１４１】
更に、復号部２１９は、アドレス及びメモリ番号の入力を受けて、アドレスにメモリ番号で特定されるアドレス範囲のデータを復号する。
【０１４２】
このため、共有メモリがタスクアドレス空間における特定のアドレスに存在するかどうかを確認することができる。よって、事前にこの確認をしておくことにより、タスク情報記憶データに誤った共有メモリアドレスを設定してしまうことによりその誤った情報に基づいて検証子更新処理が行われたり、その誤った情報に基づいて共有メモリのデータが暗号化されたりする不都合が発生することを防止できるため、タスク情報記憶データの編集によりタスクにアクセス権を動的に付与しても問題が起こりにくい。
【図面の簡単な説明】
【０１４３】
【図１】本実施形態に係るタスク管理システムの構成ブロック図である。
【図２】本実施形態に係るタスク管理システムのタスク情報記憶領域に記憶されるタスク情報記憶データの一例である（その１）。
【図３】本実施形態に係るタスク管理システムのタスク情報記憶領域に記憶されるタスク情報記憶データの一例である（その２）。
【図４】本実施形態に係るタスク管理システムの検証子記憶領域に記憶される検証子記憶データの一例である。
【図５】本実施形態に係るタスク管理方法を示すフローチャートである。
【図６】図５のステップＳ１１１の詳細を示すフローチャートである。
【図７】図６のステップＳ２０５の詳細を示すフローチャートである。
【図８】図５のステップＳ１１２の詳細を示すフローチャートである。
【図９】図８のステップＳ３０５の詳細を示すフローチャートである。
【図１０】本実施形態に係るタスク管理方法におけるアドレス確認処理を示すフローチャートである（その１）。
【図１１】本実施形態に係るタスク管理方法におけるアドレス確認処理を示すフローチャートである（その２）。
【図１２】従来のタスク管理システムの構成ブロック図である。
【図１３】従来のタスク管理システムのタスク情報記憶領域に記憶されるタスク情報記憶データの一例である。
【図１４】共有メモリを説明するための図である。
【図１５】従来のタスク管理方法を示すフローチャートである。
【符号の説明】
【０１４４】
１００…タスク管理システム
１１０…タスク管理手段
１１１…タスク中断部
１１２…次タスク選択部
１１３…アドレス切替部
１１４…タスク再開部
１３０…記憶手段
１３１…タスク情報記憶領域
１３２…タスクアドレス空間
２００…タスク管理システム
２１０…タスク管理手段
２１５…暗号化部
２１６…検証子更新部
２１７…検証子生成部
２１８…検証部
２１９…復号部
２２０…アドレス確認部
２３０…記憶手段
２３１…タスク情報記憶領域
２３３…検証子記憶領域
３００、３１０、３１１…タスク情報記憶データ
４００…検証子記憶データ
【図１】
2006252345.tif 000003
【図２】
2006252345.tif 000004
【図３】
2006252345.tif 000005
【図４】
2006252345.tif 000006
【図５】
2006252345.tif 000007
【図６】
2006252345.tif 000008
【図７】
2006252345.tif 000009
【図８】
2006252345.tif 000010
【図９】
2006252345.tif 000011
【図１０】
2006252345.tif 000012
【図１１】
2006252345.tif 000013
【図１２】
2006252345.tif 000014
【図１３】
2006252345.tif 000015
【図１４】
2006252345.tif 000016
【図１５】
2006252345.tif 000017