(57)【要約】【課題】既存システムの再利用や、既存システムの統合を容易にすることができ、各システム間の連携が高速かつ安全にできるオペレーティングシステムおよび情報処理装置を提供する。【解決手段】マルチコアプロセッサ上で動作するオペレーティングシステムにおいて、複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するようにした。また、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成するようにした。そして、１の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスが不正アクセスとして検出されるようにした。【選択図】図７
2010113488.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、を有するシステム上で動作するオペレーティングシステムであって、
前記複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するコアユニット管理手段と、
種々の処理を行うための処理単位を生成する処理単位生成手段と、
生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するためのコアユニット決定手段と、
前記コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位を処理単位グループとしてグループ化する処理単位グループ化手段と、
前記複数のコアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位を、当該コアユニット上で実行させる複数の処理単位実行手段と、
前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるメモリ領域割り当て手段と、
前記メモリへの不正アクセスを検出する不正アクセス検出手段と、
を有し、
前記不正アクセス検出手段は、
処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする、
オペレーティングシステム。
【請求項２】
前記処理単位生成手段は、処理単位として、通常処理単位と、通常処理単位よりも強いアクセス権を有する特権処理単位と、を生成可能であり、
前記メモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てており、
前記処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われ、その結果、前記不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出し、
また、前記不正アクセス検出手段は、
通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出し、
特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１記載のオペレーティングシステム。
【請求項３】
前記複数のコアユニットのうちの少なくとも２以上のコアユニット上で実行可能な共有処理を定義する共有処理定義手段を有し、
前記共有処理は、当該共有処理を実行可能なコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行され、
前記メモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域、に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１または２記載のオペレーティングシステム。
【請求項４】
前記複数のコアユニットのうちの任意のコアユニット上で実行可能なカーネル部を定義するカーネル部定義手段を有し、
前記カーネル部は、当該カーネル部を実行するコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行され、
前記メモリ領域割り当て手段は、前記カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記カーネル部に含まれない処理が、前記カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記カーネル部が、前記処理単位グループ固有のメモリ領域および前記共有処理固有のメモリ領域のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項３に記載のオペレーティングシステム。
【請求項５】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作する請求項１から４のいずれかに記載のオペレーティングシステムと、を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のプロセッサコアを有するプロセッサ上で動作するオペレーティングシステムに関する。また、複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作するオペレーティングシステムと、を有する情報処理装置に関する。
特に、不正アクセスの検出機能を有するオペレーティングシステムおよび情報処理装置に関する。
【背景技術】
【０００２】
近年、組み込みシステム等の情報処理システムは複雑度を増してきており、例えば複数のシステムを統合した情報処理システムの構築が求められている。また、処理が複雑化しているにも関わらず、同時に、複雑な処理を高速に処理することをも求められているのが現状である。
そして、こうした情報処理システムにおいて、複雑な処理を高速に処理するためには、例えばマルチコアプロセッサを用いることにより、複数の処理を同時並行的に処理することが有効である。マルチコアプロセッサは、複数のプロセッサコアを１つの集積回路に実装したものであり、複数の処理を同時並行的に処理できるとともに、複数の集積回路を使用した場合に比べて部品コストやプロセッサの実装面積を低減できる、などの利点を有するものである。
【０００３】
ところで、こうしたマルチコアプロセッサの制御方法としては、まず、非対称型マルチプロセッシング（ＡＭＰ）と対称型マルチプロセッシング（ＳＭＰ）とが考えられる。
非対称型マルチプロセッシングは、マルチコアプロセッサの複数のプロセッサコアごとに実行する処理が決められている制御方法である。
また、対称型マルチプロセッシングは、マルチコアプロセッサの複数のプロセッサコアを同等に扱い、適宜ロードバランスなどを考慮して処理を実行するプロセッサを決定する制御方法である。つまり、処理を分散させてプロセッサ資源を効率良く使用するという点から見れば、対称型マルチプロセッシングの方が優れている。
【０００４】
しかしながら、対称型マルチプロセッシングにおいては、処理が実行されるプロセッサが決定されていないため、他の処理から受ける影響を予測できないという問題がある。具体的には、複数のシステムを統合する際や、既存システムの再利用を図る際に、リソース競合などの問題を予測できないという問題がある。すなわち、信頼性などの処理特性に関わらず様々な処理が並列に扱われるとすると、リアルタイム性の求められる処理が期待したような処理時間で処理されなかったり、高い信頼度を求められるプログラムが他のプログラムにより破壊されてしまうといった問題を引き起こす可能性がある。
こうした問題を解決する手段としては、例えばプロセッサコアなどの各種のリソースを分割してパーティションを作成し、各パーティションで実行されるべき処理を決定することで、各パーティションで実行される処理が他の処理から受ける影響を少なくするという構成が考えられる。
【０００５】
例えば特許文献１には、複数の論理パーティションを設けることによりＣＰＵなどの共有リソースを分割し、各々の論理パーティションで異なるＯＳを動作させる構成が開示されている。この構成においては、ハイパーバイザが各論理パーティションを管理するとともに、このハイパーバイザは各論理パーティションから隠ぺいされている。
また、特許文献２には、制御ＯＳが複数のゲストＯＳを制御し、この複数のゲストＯＳごとにパーティションを設ける構成が開示されている。
このような構成を使用すれば、複数のＯＳにより制御されるサブシステム間の干渉を避けることができるとともに、複数のＯＳを制御する制御用ＯＳのプログラムやデータをサブシステムから保護することができる。
【特許文献１】特開２００８−２４３２０３号公報
【特許文献２】特開２００６−１２７４６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した従来技術では、異なるＯＳを使用しているため、ＯＳ間の連携が複雑化するという問題点があった。
また、ＯＳ間で通信を行うには、ハイパーバイザもしくは制御ＯＳを介して行わねばならず、処理のオーバヘッドが発生するという問題点があった。
更には、重複するＯＳが搭載されることによりメモリ容量が圧迫される、デバイスドライバ等のプログラムを共有できない、システム全体の分析が困難になる、などの問題点があった。
【課題を解決するための手段】
【０００７】
各請求項にそれぞれ記載された発明は、上記した課題を解決するためになされたものである。以下、図面に示した発明の実施の形態を用いて、各請求項にそれぞれ記載された発明の特徴および作用を説明する。
なお、符号は、発明の実施の形態において用いた符号を示し、本発明の技術的範囲を限定するものではない。
（請求項１）
請求項１に記載の発明は、以下を特徴とする。
すなわち、請求項１に記載のオペレーティングシステム１は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、を有するシステム上で動作するオペレーティングシステム1であって、前記複数のプロセッサコア100を１以上のプロセッサコア100からなる複数のコアユニット101にグループ化して管理するコアユニット管理手段10と、種々の処理を行うための処理単位70を生成する処理単位生成手段25と、生成された処理単位70が前記複数のコアユニット101のいずれで実行されるかを決定するためのコアユニット決定手段20と、前記コアユニット決定手段20により同一のコアユニット101で実行されると決定された処理単位70を処理単位グループ200としてグループ化する処理単位グループ化手段26と、前記複数のコアユニット101ごとに対応して設けられ、対応するコアユニット101で実行されると決定された処理単位70を、当該コアユニット101上で実行させる複数の処理単位実行手段30と、前記複数の処理単位グループ200に対して、前記メモリ3から各処理単位グループ200固有のメモリ領域230を割り当てるメモリ領域割り当て手段35と、前記メモリ3への不正アクセスを検出する不正アクセス検出手段40と、を有し、前記不正アクセス検出手段40は、処理単位70が、当該処理単位70の属する処理単位グループ200とは別の処理単位グループ200固有のメモリ領域230に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする。
【０００８】
ここで「コアユニット」は、本発明に係るオペレーティングシステムが制御するプロセッサに関し、このプロセッサが有する複数のプロセッサコアをグループ化したものである。コアユニットを構成するプロセッサコアの数は１以上であれば良く、例えば１つのプロセッサコアからなるコアユニットとしても良いし、複数のプロセッサコアからなるコアユニットとしても良い。しかしながら、プロセッサが有するすべてのプロセッサコアは、いずれかのコアユニットに属するようにしなければならない。
「コアユニット管理手段」は、上記したプロセッサコアをコアユニットとしてグループ化して管理するためのものである。グループ化および管理の方法としては、例えば、各プロセッサコアがどのコアユニットに属するかをユーザが記述可能な定義ファイルを設け、この定義ファイルの内容をシステムの初期化時に読み込むことにより、プロセッサコアをグループ化し、そのグループ化された情報を管理テーブルなどで管理するような態様が考えられる。また、このような定義ファイルを用いる態様に限らず、所定のＡＰＩなどを呼び出すことにより、各プロセッサコアがどのコアユニットに属するかを制御するという態様も考えられる。
【０００９】
「オペレーティングシステム」は、プロセッサやメモリなどのハードウェアを、後述する各手段として機能させるための制御プログラムである。また、このオペレーティングシステムは、ハードウェアに対して直接的にアクセスできるとともに、ハードウェアを抽象化して各種アプリケーションプログラムに各種のサービスを提供するものである。
「処理単位」は、種々の処理を行うための単位を意味するものであり、一定の法則のもとに分割された処理の集まりである。例えば、タスク、スレッド、プロセスなどが該当する。
「処理単位生成手段」は、前記した処理単位を生成するためのものであり、例えば、処理単位としてタスクが用いられている場合においては、所定の関数呼び出しなどによりタスクを生成するプログラムなどが該当する。なお、処理単位の生成方法は関数呼び出しに限られず、例えば、定義ファイルなどの静的な定義により生成されるものであっても良い。
【００１０】
「コアユニット決定手段」は、生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するものである。例えば、処理単位としてタスクが用いられている場合においては、タスク生成時に指定するパラメータなどにより、コアユニットを決定しても良い。この場合、タスク生成時にコアユニットが決定するので、処理単位生成手段がコアユニット決定手段の役割を果たすこととなる。なお、このような態様によらず、処理単位が生成されたのちに、所定のＡＰＩなどを呼び出すことにより、コアユニットを決定することとしても良い。また、一度決定されたコアユニットを、ＡＰＩ呼び出しなどにより変更することが可能に形成しても良い。
【００１１】
「処理単位グループ」は、コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位をグループ化したものである。この処理単位グループは、コアユニットに対応するように、コアユニットと同数だけ設けられる。なお、処理単位のすべてが処理単位グループに属している必要はなく、一部の例外的な処理単位は処理単位グループに属さないとしても良い。例えば、ＯＳのカーネル部に含まれる処理単位などの特殊な処理単位は処理単位グループに属さないとしても良い。
「処理単位グループ化手段」は、処理単位を上記した処理単位グループにグループ化するものである。例えば、コアユニットごとに処理単位の情報を管理するテーブルを設けても良い。この場合、上記したコアユニット決定手段によりある処理単位のコアユニットが決定されると、当該処理単位の情報がコアユニットごとに設けられたテーブルに登録されて管理される。これにより、同一のコアユニット上で実行される処理単位がグループ化される。なお、このような態様に限らず、各処理単位が保持している情報にコアユニット情報を記述し、この情報を必要に応じて処理単位グループ化手段が読み出して、各処理単位がどの処理単位グループに属しているかを判別するような態様としても良い。
【００１２】
「処理単位実行手段」は、各コアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位を、当該コアユニット上で実行させるものである。例えば、処理単位としてタスクが用いられている場合においては、タスクを実行するためのディスパッチャなどが該当する。なお、この処理単位実行手段は、各コアユニットに対応して設けられるので、言い換えると、処理単位グループの数と同数だけ設けられる。
「メモリ領域割り当て手段」は、前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるものである。すなわち、メモリ領域割り当て手段により、当該オペレーティングシステムが制御するシステムに設けられたメモリのうちの所定のメモリ領域は、各処理単位グループのそれぞれが使用するメモリ領域として、割り当てられている。
【００１３】
「不正アクセス検出手段」は、不正アクセスを検出するためのものである。
ここで、不正アクセスを検出する具体的な態様としてはさまざまな態様が考えられ、例えば、アクセスモニタプログラムを用いる態様が考えられる。この場合、アクセスモニタプログラムは物理アドレスによるアクセスを制御する。つまり、コアユニットごとに保護される物理アドレスを設定することにより、その設定された領域に対するアクセスを検出するように構成する。この構成は、プロセッサの機能を使用しないため、アクセスモニタが搭載されているシステムであれば適用可能である。この場合、不正アクセス検出手段は、当該アクセスモニタプログラムとして形成される。
【００１４】
また、他の不正アクセスを検出する方法としては、プロセッサのページテーブル機能を使用する態様が考えられる。すなわち、コアユニットごとにページテーブルを持つように設定し、各コアユニットのページテーブルには、各コアユニットがアクセス可能なメモリ領域にのみ有効な値を設定する。この構成は、メモリ管理ユニット（ＭＭＵ）を有するプロセッサであれば適用可能である。この場合、不正アクセス検出手段は、ＭＭＵが検知した不正アクセスを処理するプログラムとして形成される。
更に、他の不正アクセスを検出する方法としては、例えば、プロセッサの保護領域指定機能を使用する態様が考えられる。ここで言う保護領域指定機能とは、アドレス空間を複数の保護領域に分割し、各領域に対するアクセス権を個別に設定することができ、これにより、特定のメモリ領域を保護することが可能な機能を意味する。すなわち、コアユニットごとに保護領域を設け、この保護領域内でコアユニットに係る処理単位を実行する。そして、この保護領域に、当該保護領域外からアクセスがあったときに、このアクセスを不正アクセスとして検出する。この構成は、保護領域指定機能を有するプロセッサであれば適用可能である。この場合、不正アクセス検出手段は、保護領域指定機能が検知した不正アクセスを処理するプログラムとして形成される。
【００１５】
なお、請求項１の不正アクセス検出手段は、メモリ領域割り当て手段によって各処理単位グループに割り当てられた固有のメモリ領域に対し、他の処理単位グループに属する処理単位がアクセスしたときに、このアクセスを不正アクセスとして検出するものである。
（請求項１記載の発明の作用）
このようなオペレーティングシステムにおいては、複数のプロセッサコアが１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理される。また、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成するようになっている。そして、１の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときには、このアクセスが不正アクセスとして検出される。
【００１６】
（請求項２）
請求項２に記載の発明は、上記した請求項１に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項２に記載のオペレーティングシステムは、前記処理単位生成手段25は、処理単位70として、通常処理単位65と、通常処理単位65よりも強いアクセス権を有する特権処理単位60と、を生成可能であり、前記メモリ領域割り当て手段35は、各処理単位70に対し、前記メモリ3から各処理単位70固有のメモリ領域222を割り当てており、前記処理単位70固有のメモリ領域222は、当該処理単位70の属する処理単位グループ200固有のメモリ領域230の一部として扱われ、その結果、前記不正アクセス検出手段40は、処理単位70が、当該処理単位70が属する処理単位グループ200とは別の処理単位グループ200に属する処理単位70固有のメモリ領域222に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出し、また、前記不正アクセス検出手段40は、通常処理単位65が、当該通常処理単位65とは別の処理単位70固有のメモリ領域222に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、特権処理単位60が、当該特権処理単位60とは別の処理単位70であって、同一の処理単位グループ200に属する処理単位70固有のメモリ領域222に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【００１７】
すなわち、本請求項に係る処理単位生成手段は、処理単位として「通常処理単位」と「特権処理単位」とを生成可能に形成されている。そして、「特権処理単位」は「通常処理単位」よりも強いアクセス権を有するものである。
ここで、どの処理単位を「通常処理単位」とし、また「特権処理単位」とするかは任意である。しかしながら、例えば、処理単位としてタスクが用いられている場合においては、ユーザが作成したアプリケーションタスクを「通常処理単位」とし、ファイルシステムなどのミドルウェアのタスクを「特権処理単位」とするような態様が考えられる。このように形成することで、ユーザが作成したアプリケーションタスクについてはアクセス権を制限し、より汎用的なシステムプログラムに強いアクセス権を与えることができる。
【００１８】
なお、処理単位生成手段が生成する処理単位としては、「通常処理単位」と「特権処理単位」との２種類に限るものではない。例えば、ＯＳのカーネル部に含まれる処理単位などの特殊な処理単位は、「通常処理単位」および「特権処理単位」とは異なる種類の処理単位とすることにより、「通常処理単位」および「特権処理単位」とは異なるアクセス権を与えるように構成しても良い。
また、本請求項に係るメモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、各処理単位のそれぞれが使用するメモリ領域として割り当てられている。
【００１９】
そして、本請求項に係る不正アクセス検出手段は、請求項１に言う不正アクセスの検出に加え、通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしたときには、このアクセスを不正アクセスとして検出する。
また、処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われる。その結果、請求項１に記載されているとおり、不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域（すなわち、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域の一部として扱われるメモリ領域）に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出する。
【００２０】
その一方で、不正アクセス検出手段は、特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしたときには、このアクセスを不正アクセスとして検出しない。すなわち、特権処理単位は、当該特権処理単位の属する処理単位グループ固有のメモリ領域にアクセスできるのみならず、通常処理単位であるか特権処理単位であるかを問わず、同一の処理単位グループに属する処理単位でさえあれば、当該処理単位固有のメモリ領域に対してもアクセスできるものである。
上記した内容を言い換えると、本請求項に係る不正アクセス検出手段が不正アクセスとして検出するのは以下の場合である。
【００２１】
１）通常処理単位が、当該通常処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域（当該特権処理単位の属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域を含む）に対してアクセスしたとき。
２）特権処理単位が、当該特権処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域（当該特権処理単位の属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域を含む）に対してアクセスしたとき。
３）通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしたとき（１以外の場合）。
【００２２】
（請求項２記載の発明の作用）
このようなオペレーティングシステムにおいては、弱いアクセス権の通常処理単位は、当該通常処理単位固有のメモリ領域にのみアクセスできる。また、通常処理単位よりも強いアクセス権を有する特権処理単位は、当該特権処理単位固有のメモリ領域のみならず、当該特権処理単位の属する処理単位グループ固有のメモリ領域、および当該特権処理単位の属する処理単位グループに属する他の処理単位固有のメモリ領域にもアクセスできる。
更には、特権処理単位であっても、当該特権処理単位の属する処理単位グループとは異なる別の処理単位グループ固有のメモリ領域にはアクセスできない。
【００２３】
（請求項３）
請求項３に記載の発明は、上記した請求項１または請求項２に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項３に記載のオペレーティングシステム1は、前記複数のコアユニット101のうちの少なくとも２以上のコアユニット101上で実行可能な共有処理55を定義する共有処理定義手段46を有し、前記共有処理55は、当該共有処理55を実行可能なコアユニット101に係る前記処理単位実行手段30により当該コアユニット101上で実行され、前記メモリ領域割り当て手段35は、前記共有処理55に対して、前記メモリ3から共有処理55固有のメモリ領域211を割り当てており、前記不正アクセス検出手段40は、前記複数の処理単位グループ200のいずれかに属する処理単位70が、当該共有処理55固有のメモリ領域211に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、前記共有処理55が、当該共有処理55を実行可能なコアユニット101に係る処理単位グループ200のいずれかに固有のメモリ領域230、および、当該共有処理55を実行可能なコアユニット101に係る処理単位グループ200のいずれかに属する処理単位70固有のメモリ領域222に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【００２４】
ここで「共有処理」は、前記複数のコアユニットのうちの少なくとも2以上のコアユニット上で実行可能なものである。そして、この共有処理は、当該共有処理を実行可能なコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行されものである。例えば、この共有処理として、複数の処理単位グループに共通のアプリケーションを設けることができる。更に具体的には、例えば、この共有処理として、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスク、などを設ける態様が考えられる。
なお、共有処理を実行可能なコアユニットの範囲としては、本発明に係るコアユニット管理手段が管理するすべてのコアユニットで実行可能としても良いし、一部のコアユニットでのみ共有処理を実行可能としても良い。
【００２５】
「共有処理定義手段」は、上記共有処理を定義するためのものである。例えば、共有処理として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、共有処理として定義するような態様が考えられる。
ところで、本請求項に係るメモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、共有処理が使用するメモリ領域として割り当てられている。
そして、本請求項に係る不正アクセス検出手段は、前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出する。すなわち、共有処理固有のメモリ領域は、処理単位グループのいずれかに属する処理単位によるアクセスから保護されるようになっている。
【００２６】
しかしながら、共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しない。すなわち、共有処理は、自らを共有するコアユニットに係る処理単位グループ固有のメモリ領域に対しては、自由にアクセスが可能である。
（請求項３記載の発明の作用）
このようなオペレーティングシステムにおいては、複数のコアユニット間で共有されて実行可能な共有処理を設けることができる。そして、共有処理固有のメモリ領域は、処理単位によるアクセスから保護されるようになっている。また、共有処理は、関連する処理単位グループ固有のメモリ領域に対しては、自由にアクセスできるように構成されている。
【００２７】
（請求項４）
請求項４に記載の発明は、上記した請求項３に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項４に記載のオペレーティングシステム1は、前記複数のコアユニット101のうちの任意のコアユニット101上で実行可能なカーネル部50を定義するカーネル部定義手段47を有し、前記カーネル部50は、当該カーネル部50を実行するコアユニット101に係る前記処理単位実行手段30により当該コアユニット101上で実行され、前記メモリ領域割り当て手段35は、前記カーネル部50に対して、前記メモリ3からカーネル部50固有のメモリ領域212を割り当てており、前記不正アクセス検出手段40は、前記カーネル部50に含まれない処理が、前記カーネル部50固有のメモリ領域212に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、前記カーネル部50が、前記処理単位グループ200固有のメモリ領域222および前記共有処理55固有のメモリ領域211のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【００２８】
ここで「カーネル部」は、前記複数のコアユニットのうちの任意のコアユニット上で実行可能なものである。言い換えると、このカーネル部は、前記複数のコアユニットのうちいずれのコアユニット上でも実行可能なものである。そして、このカーネル部は、当該カーネル部を実行するコアユニットに係る前記処理単位実行手段により、当該コアユニット上で実行されものである。このカーネル部は、本発明に係るオペレーティングシステムの根幹部分をなすプログラムであり、ハードウェアリソースの管理を行ったり、処理単位の管理を行ったりするものである。例えば、このカーネル部は、本発明に係る処理単位生成手段や処理単位実行手段などを含むものである。また、システムタイマ割り込みハンドラ、ＣＰＵ例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを、このカーネル部の一部としても良い。
【００２９】
「カーネル部定義手段」は、上記カーネル部を定義するためのものである。例えば、カーネル部として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、カーネル部として定義するような態様が考えられる。
ところで、本請求項に係るメモリ領域割り当て手段は、カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、カーネル部が使用するメモリ領域として割り当てられている。
そして、本請求項に係る不正アクセス検出手段は、カーネル部に含まれない処理が、カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出する。すなわち、カーネル部固有のメモリ領域は、カーネル部以外の他のプログラムから保護されるようになっている。
【００３０】
逆に、カーネル部が、処理単位グループ固有のメモリ領域や、共有処理固有のメモリ領域にアクセスしようとしたときには、このアクセスを不正アクセスとして検出しない。すなわち、カーネル部には非常に強いアクセス権が与えられており、請求項１乃至３で説明したような各種のメモリ領域のすべてにアクセスが可能となっている。
（請求項４記載の発明の作用）
このようなオペレーティングシステムにおいては、すべてのコアユニット間で共有されて実行可能なカーネル部が設けられている。そして、カーネル部固有のメモリ領域は、他のプログラムから保護される。
【００３１】
（請求項５）
請求項５に記載の発明は、以下を特徴とする。
すなわち、請求項５に記載の情報処理装置は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、前記プロセッサ2上で動作する請求項１から４のいずれかに記載のオペレーティングシステム1と、を有することを特徴とする。
（請求項５記載の発明の作用）
このような情報処理装置は、請求項１から４のいずれかに記載の発明と同様に作用する。
【発明の効果】
【００３２】
（請求項１）
請求項１記載の構成によれば、複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するので、対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドした構成とすることができる。すなわち、複数のプロセッサコアからなるコアユニットを作成するとともに、別のプロセッサコアを用いて単一のプロセッサコアからなるコアユニットを作成すれば、複数のプロセッサコアからなるコアユニットは対称型マルチプロセッシングとして動作し、単一のプロセッサコアからなるコアユニットは非対称型マルチプロセッシングとして動作する。このように構成することにより、対称型マルチプロセッシングと非対称型マルチプロセッシングとの両方の利点を生かした構成とすることができる。例えば、高い信頼性を求められる処理は単一のプロセッサコアからなるコアユニットに割り当てることにより他の処理の影響を受けないように構成するとともに、高い信頼性を求められない処理は複数のプロセッサコアからなるコアユニットに割り当てることにより処理の負荷を分散させるように構成することができる（なお、本発明に係るコアユニット構成としては、対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドした構成に限るものではなく、すべてのコアユニットを１つのプロセッサコアからなるものとして構成しても良い。すなわち、非対称型マルチプロセッシングとして構成しても良い）。
【００３３】
更には、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成している。そして、１の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときには、このアクセスが不正アクセスとして検出されるので、それぞれのコアユニットに割り当てられた処理間での競合問題を回避できる。
そして、上記したような機能を単一のＯＳにより実現しているため、複数のＯＳを使用した場合に発生する様々な問題点を解決することが可能となっている。例えば、重複するＯＳが搭載されることによりメモリ容量が圧迫される、デバイスドライバ等のプログラムを共有できない、システム全体の分析が困難になる、などの問題点を解決することが可能となっている。
【００３４】
（請求項２）
請求項２記載の構成によれば、弱いアクセス権の通常処理単位は、当該通常処理単位固有のメモリ領域にのみアクセスできる。また、通常処理単位よりも強いアクセス権を有する特権処理単位は、当該特権処理単位固有のメモリ領域のみならず、同一の処理単位グループに属する他の処理単位のメモリ領域にもアクセスできる。これにより、処理単位グループ内においても、処理単位ごとに異なるアクセス権を付与することができるので、各処理単位固有のメモリ領域を適切に保護することが可能となっている。
更には、特権処理単位であっても、他の処理単位グループ固有のメモリ領域にはアクセスできないため、処理単位グループが互いに干渉することを避けることができ、処理単位グループの独立性を保つことができる。
【００３５】
（請求項３）
請求項３記載の構成によれば、複数のコアユニット間で共有されて実行可能な共有処理を設けることができる。そして、共有処理固有のメモリ領域は、処理単位によるアクセスから保護されるようになっている。このため、例えばデバイスドライバやミドルウェアなどの汎用性の高いアプリケーションを処理単位グループの枠を超えて共有することが可能となっている。すなわち、複数のＯＳを使用した場合にはこのような共有ができないため、システムが複雑となる、メモリ容量が圧迫される、などの問題点があったが、これらの問題点を解決することが可能となっている。
【００３６】
また、共有処理は、処理単位グループに属する処理単位よりも強いアクセス権を有している。このため、実行する処理の信頼性に応じて、共有処理とするか、処理単位グループに属する処理単位とするか、を選択することができる。例えば、デバイスドライバを共有処理として設けるとともに、ユーザアプリケーションを処理単位グループに属する処理単位として設けることにより、デバイスドライバが使用するメモリ領域をユーザアプリケーションが破壊するといった問題を回避できる。
（請求項４）
請求項４記載の構成によれば、すべてのコアユニット間で共有されて実行可能なカーネル部を設けることができる。そして、カーネル部固有のメモリ領域は、他のプログラムから保護されるようになっている。このため、オペレーティングシステムの根幹部であるカーネル部が、他のプログラムにより破壊されることを防止することができる。
【００３７】
また、ＯＳの機能を実現するプログラム間でも信頼性が異なる環境では、信頼性の高いプログラムをカーネル部とし、信頼性の低いプログラムを共有処理もしくは特権処理単位として実行することにより、信頼性の低いプログラムが信頼性の高いプログラムのメモリを破壊するという問題を回避でき、信頼性の高いシステムを構築することができる。
（請求項５）
請求項５記載の構成によれば、請求項１から４のいずれかに記載の発明と同様の効果を奏することができる。
【発明を実施するための最良の形態】
【００３８】
図１〜１２は、本発明の実施の形態の一例を示すものであり、図１は本発明の情報処理装置の構成を示すブロック図、図２は本発明のコアユニットの構成を示すブロック図、図３は本発明のタスクグループの概要を示す説明図、図４は本発明のシステムの初期化処理を示すフロー図、図５は本発明のタスクの実行処理を示すフロー図、図６は本発明の各実行モードでのアクセス権を示す表、図７は本発明の各エリア間でアクセス可能な範囲を示す概念図、図８は本発明の割り込み処理を示すフロー図、図９は本発明のシステムコール処理を示すフロー図、図１０は本発明の不正アクセス検出処理を示すフロー図、図１１は本発明の不正アクセス検出したときのＣＰＵ例外ハンドラの処理を示すフロー図、図１２は本発明の不正アクセス検出したときの例外マネージャタスクの処理を示すフロー図を各々示すものである。
【００３９】
以下、本発明の実施形態について、図を参照しながら説明する。
（情報処理装置）
図１は、本発明に係る情報処理装置の構成を示すブロック図である。この図が示すように、本発明に係る情報処理装置は、プロセッサ2と、メモリ3と、オペレーティングシステム1と、を有している。なお、情報処理装置の構成としては少なくともこれらを有していれば良く、他の構成を含んでいても良い。例えば、外部記憶装置や入出力装置などを備えていても良い。
（プロセッサ2）
本実施形態に係るプロセッサ2は、複数のプロセッサコア100を１つの集積回路に実装したマルチコアプロセッサであり、図１に示すように、４つのプロセッサコア100を有している。なお、プロセッサコア100の数としてはこれに限らず、５つ以上でも良いし、３つ以下でも良い。
【００４０】
このプロセッサ2は、後述するオペレーティングシステム1や、オペレーティングシステム1により作成されるタスク等を実行する。
また、このプロセッサ2は、後述する保護領域指定機能と、後述する複数の実行モードと、を有するものである。
（メモリ3）
メモリ3は、図１に示すように、バスによりプロセッサ2と接続されている。このメモリ3には、後述するオペレーティングシステム1や、オペレーティングシステム1により作成されるタスク等のプログラムや種々のデータが記憶され、また、プログラムを実行する際のデータを一時的に記憶するための領域としても使用される。
【００４１】
（オペレーティングシステム1）
オペレーティングシステム1は、プロセッサやメモリなどのハードウェアを、下記の（１）乃至（１０）の手段として機能させるための制御プログラムである。このオペレーティングシステムは、ハードウェアに対して直接的にアクセスできるとともに、ハードウェアを抽象化して各種アプリケーションプログラムに各種のサービスを提供するものである。
なお、オペレーティングシステム1としては、下記の（１）乃至（１０）の手段に限定されるものではなく、他の手段を含んでいても良い。
（１）コアユニット管理手段10
（２）タスク生成手段25
（３）コアユニット決定手段20
（４）タスクグループ化手段26
（５）タスク実行手段30
（６）メモリ領域割り当て手段35
（７）不正アクセス検出手段40
（８）モード切替手段45
（９）共有カーネルアプリケーション定義手段46
（１０）カーネル部定義手段47
以下、それぞれについて説明する。
【００４２】
（１）コアユニット管理手段10
コアユニット管理手段10は、上記したプロセッサコア100をコアユニット101としてグループ化して管理するためのものである。
本実施形態においては、各プロセッサコア100がどのコアユニット101に属するかを記述するための定義ファイルが設けられている。そして、コアユニット管理手段10は、この定義ファイルをシステムの初期化時に読み込むことにより、プロセッサコア100をコアユニット101としてグループ化している。グループ化の情報は、後述するタスクグループ化手段26の有するテーブル管理され、後述するタスクグループと関連付けられる。
【００４３】
なお、コアユニット101を指定する定義ファイルはユーザが自由に書き換えることが可能であり、この定義ファイルを書き換えることで、コアユニット101の構成を自由に決定することができる。
なお、本実施形態においては、図１に示すように、コアユニット101を３つ設けている。すなわち、１つのプロセッサコア100からなるコアユニット101（このように単一のプロセッサコア100からなるコアユニット101を、以下「シングルコアユニット」と呼ぶ）が２つと、２つのプロセッサコア100からなるコアユニット101（このように複数のプロセッサコア100からなるコアユニット101を、以下「マルチコアユニット」と呼ぶ）が１つの、３つである。なお、コアユニット101の数としてはこれに限らず、４つ以上でも良いし、２つ以下でも良い。しかしながら、プロセッサ2が有するすべてのプロセッサコア100は、いずれかのコアユニット101に属するようにしなければならない。
【００４４】
例えば、図２は、コアユニット101の構成例を示す図であるが、この図が示すように、コアユニット101の構成としては様々な態様が考えられる。すなわち、構成例１に示すようにすべてのプロセッサコア100で１つのマルチコアユニットを構成することとしても良い。この場合、システムの制御方法は完全な対称型マルチプロセッシングとなる。また、構成例２に示すようにシングルコアユニットとマルチコアユニットを組み合わせた構成としても良い。この場合、システムの制御方法は対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドしたものとなる。更に、構成例３に示すようにシングルコアユニットのみからなる構成としても良い。この場合、システムの制御方法は完全な非対称型マルチプロセッシングとなる。なお、本実施形態においては、構成例２の構成を採用している。
【００４５】
（２）タスク生成手段25
タスク生成手段25は、オペレーティングシステム1が制御するタスクを生成するためのものであり、請求項に言う「処理単位生成手段」に相当する。
本実施形態に係るタスク生成手段25は、タスク生成用の所定のＡＰＩが呼び出されたときに、このＡＰＩのパラメータとして指定された条件に従ってタスクを生成する。
（３）コアユニット決定手段20
コアユニット決定手段20は、生成されたタスクがどのコアユニット101で実行されるかを決定するものである。
【００４６】
本実施形態においては、タスク生成手段25が、実質的にこのコアユニット決定手段20を構成している。すなわち、本実施形態においては、タスク生成用のＡＰＩのパラメータとして、生成されるタスクがどのコアユニット101で実行されるかの情報を指定することが可能である。そして、タスク生成手段25すなわちコアユニット決定手段20は、このパラメータを取得することにより、タスク生成時にコアユニット101を決定する。
なお、タスクを実行するコアユニット101がマルチコアユニットである場合、このマルチコアユニットを構成する複数のプロセッサコア100のうちのいずれのプロセッサコア100上でタスクが実行されるかは、後述するスケジューリングポリシーによって決定される。
【００４７】
（４）タスクグループ化手段26
タスクグループ化手段26は、アプリケーションタスク70をタスクグループ200にグループ化するものであり、請求項に言う処理単位グループ化手段に相当する。
ここで、タスクグループ200とは、上記コアユニット決定手段20により同一のコアユニット101で実行されると決定されたアプリケーションタスク70をグループ化したものであり、請求項に言う処理単位グループに相当する。このタスクグループ200は、コアユニット101に対応するように、コアユニット101と同数だけ設けられる。
なお、タスクグループ化手段26は、コアユニット101ごとに設けられたテーブルを用いて、アプリケーションタスク70をグループ化している。具体的には、上記コアユニット決定手段20によりアプリケーションタスク70が実行されるコアユニット101が決定されたのちに、当該アプリケーションタスク70の情報を、対応するコアユニット101に係るテーブルで管理し、これにより同一のコアユニット101上で実行されるアプリケーションタスク70をグループ化している。
【００４８】
ところで、本実施の形態においては、タスクグループ200に属しているのは、タスク生成手段25により生成されたタスクのすべてではなく、後述する共有カーネルアプリケーション55や、カーネル部50に含まれるタスクは、いずれのタスクグループ200に属さない。詳細は後述する。
（５）タスク実行手段30
タスク実行手段30は、各コアユニット101に対応して設けられ、当該コアユニット101に対応するタスクグループ200に属するアプリケーションタスク70等を、当該コアユニット101上で実行させるものであり、請求項に言う処理単位実行手段に相当する。
【００４９】
具体的には、タスク実行手段30は、タスクを実行するためのディスパッチャである。なお、このタスク実行手段30は、各コアユニット101に対応して設けられるので、言い換えると、タスクグループ200の数と同数（本実施形態においては３つ）設けられている。
なお、タスク実行手段30が実行するのはアプリケーションタスク70に限らず、その他のプログラム、具体的には、後述する共有カーネルアプリケーション55や、カーネル部50に含まれるプログラムをも実行するものである。
（６）メモリ領域割り当て手段35
メモリ領域割り当て手段35は、後述する各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50、のそれぞれに対し、メモリ3からそれぞれ固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステム1が制御するシステムに設けられたメモリのうち、所定のメモリ領域は、各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50、のそれぞれが使用するメモリ領域として割り当てられている。
【００５０】
このメモリ領域割り当て手段35は、具体的には、各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50のそれぞれをメモリ3のどこに配置すべきかを定めるメモリマップを規定する手段と、このメモリマップに従って、プログラムやデータを配置する手段と、からなる。プログラムやデータを配置する手段としては、ＲＯＭに記憶されたプログラムを当該プログラムの実行時にＲＡＭに展開するプログラムや、システムの起動後に動的にロードされたプログラムをＲＡＭに配置するプログラムが該当する。
なお、本実施形態においては、上記したメモリマップの一部は、オペレーティングシステム1のコンパイル（リンク）時に予め決定され、その他はシステムの初期化時に決定される。これにより、どのメモリ領域が、どういったアクセスから保護されるかが決定される。すなわち、メモリマップ上のある番地からある番地までは共有カーネルアプリケーション55用のメモリ領域であり、これとは別のある番地からある番地まではカーネル部50用のメモリ領域である、というように各メモリ領域が規定される。そして、各アプリケーションタスク70に固有のメモリ領域222に各アプリケーションタスク70を配置し、共有カーネルアプリケーション55に固有のメモリ領域211に共有カーネルアプリケーション55を配置し、カーネル部50に固有のメモリ領域212にカーネル部50を配置する。このように構成することにより、これらの各メモリ領域に配置されたプログラムが他のメモリ領域にアクセスしたときに、プログラムの配置されたメモリ領域の属性と、プログラムがアクセスしようとしているメモリ領域の属性と、を比較することにより不正アクセスを検出し、メモリ保護がされるようになっている。
【００５１】
具体的には、本実施形態では、プロセッサ2の保護領域指定機能（特定のメモリ領域を保護することが可能な機能）と、プロセッサ2の実行モードと、の２つの機能を用いてメモリ保護を実現している。このメモリ保護の詳細については後述する。
（７）不正アクセス検出手段40
不正アクセス検出手段40は、メモリ3への不正アクセスを検出するためのものである。不正アクセスとして検出されるアクセスの内容は後述する。
なお、本実施形態の不正アクセス検出手段40は、具体的には、上述したプロセッサ2の保護領域指定機能とプロセッサ2の実行モードとにより検知された不正アクセスを処理する手段として構成されている。すなわち、プロセッサ2が不正アクセスを検知してＣＰＵ例外を発生させた場合に、そのＣＰＵ例外を処理するプログラムとして構成されている。
【００５２】
（８）モード切替手段45
上述したプロセッサ2の実行モードを切り替えるためのものである。すなわち、本発明に係るオペレーティングシステム1は、各プロセッサコア100が処理を実行するモードとして複数の実行モードを有しており、この実行モードはモード切替手段45により適宜切り替えられる。具体的には、本実施形態では「ユーザモード」と、「システムモード」と、「カーネルモード」と、を有しており、実行される処理に応じてこれらを切り替えるようになっている。この各モードの詳細は後述する。
（９）共有カーネルアプリケーション定義手段46
共有カーネルアプリケーション定義手段46は、共有カーネルアプリケーション55を定義するためのものであり、請求項に言う共有処理定義手段に相当する。
【００５３】
共有カーネルアプリケーション定義手段46は、共有カーネルアプリケーション55として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、共有カーネルアプリケーション55として定義する。共有カーネルアプリケーション55として定義されたプログラムは、共有カーネルアプリケーション55に与えられるべきアクセス権が設定される。すなわち、実質的には、前述したメモリ領域割り当て手段35が、この共有カーネルアプリケーション定義手段46としても機能する。
なお、共有カーネルアプリケーション55とは、複数のコアユニット101のうちの少なくとも2以上のコアユニット101上で実行可能なものである。そして、この共有カーネルアプリケーション55は、当該共有カーネルアプリケーション55を実行可能なコアユニット101に係るタスク実行手段30により当該コアユニット101上で実行されものである。
【００５４】
本実施形態では、共有カーネルアプリケーション55として、例えば、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスクが設けられている。
なお、本実施の形態では、共有カーネルアプリケーション55はすべてのコアユニット101で実行可能であるが、これに限らず、一部のコアユニット101でのみ実行可能な共有カーネルアプリケーション55を設けても良い。
（１０）カーネル部定義手段47
カーネル部定義手段47は、カーネル部50を定義するためのものである。
【００５５】
カーネル部定義手段47は、カーネル部50として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、カーネル部50として定義する。カーネル部50として定義されたプログラムは、カーネル部50に与えられるべきアクセス権が設定される。すなわち、実質的には、前述したメモリ領域割り当て手段35が、このカーネル部定義手段47としても機能する。
なお、カーネル部50は、複数のコアユニット101のうちのいずれかのコアユニット101上で実行可能なものである。そして、このカーネル部50は、当該カーネル部50を実行可能なコアユニット101に係るタスク実行手段30により当該コアユニット101上で実行されものである。カーネル部50は、オペレーティングシステム1の根幹部分をなすプログラムであり、ハードウェアリソースの管理を行ったり、処理単位の管理を行ったりするものである。本実施形態に係るカーネル部50は、タスク生成手段25やタスク実行手段30などの各手段、システムタイマ割り込みハンドラ、ＣＰＵ例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを含んでいる。
【００５６】
（タスクグループ200）
次に、図３を見ながら、タスクグループ200について説明する。
タスクグループ200は、前述したように、コアユニット決定手段20により同一のコアユニット101で実行されると決定されたアプリケーションタスク70（請求項に言う「処理単位」）をグループ化したものである。このタスクグループ200は、コアユニット101に対応するように、コアユニット101と同数だけ設けられる。
タスクグループ200の実体はアプリケーションタスク70の集合であり、同一のタスクグループ200に属するアプリケーションタスク70は、同一のコアユニット101で実行されるようになっている。例えば、図３のタスクグループ１に属するアプリケーションタスク70はコアユニット１で実行され、タスクグループ２に属するアプリケーションタスク70はコアユニット２で実行され、タスクグループ３に属するアプリケーションタスク70はコアユニット３で実行される。なお、図３ではタスクグループ200に属するアプリケーションタスク70を３つとしているが、これは説明の便宜上であり、アプリケーションタスク70の数はシステムの設計により適宜決定することができる。
【００５７】
ところで、アプリケーションタスク70は、ユーザアプリケーションタスク65（請求項に言う「通常処理単位」）とカーネルアプリケーションタスク60（請求項に言う「特権処理単位」）とからなる。
そして、これらのユーザアプリケーションタスク65とカーネルアプリケーションタスク60とからなるタスクグループ200のそれぞれが後述するタスクグループの保護領域230に配置されることにより、１つの独立したサブシステムを構成している。つまり、後述するように、各タスクグループの保護領域230間でメモリ保護がされているため、他のタスクグループの保護領域230から干渉されることがないサブシステムを構成している。これにより、例えば既存システムの流用やシステムの統合を行う際に、これらのシステムを所定のタスクグループの保護領域230に配置してサブシステム化することができる。これにより、他のサブシステムから受ける影響を小さくし、サブシステム内のリアルタイム性の予測を容易とすることが可能となっている。また、これらのサブシステムを互いに独立したものとすることができるので、他のサブシステムによるメモリ破壊からプログラムを保護することが可能となっている。
【００５８】
更には、前述したように、コアユニット101の構成を自由に設定できるため、例えば、高い信頼性が求められるサブシステムはシングルコアユニットで動作させ、また、高い信頼性が求められない処理は統合してサブシステムとし、マルチコアユニットで動作させることができる。このように構成すれば、高い信頼性が求められるサブシステムは他のサブシステムの影響を全く受けずに動作させることができ、また、高い信頼性が求められないサブシステムは効率的にプロセッサ2資源を活用して動作させることができる。この例は、図３で言えば、タスクグループ１およびタスクグループ２が高い信頼性が求められるサブシステム、タスクグループ３が高い信頼性が求められない処理を統合したサブシステム、ということになる。
【００５９】
ところで、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60とがどのように切り分けられるのかはサブシステムの構成による。一般的には、カーネルアプリケーションタスク60は、サブシステム特有のシステム処理を行うタスク（例えばミドルウェアタスク）である。また、ユーザアプリケーションタスク65は、これらのシステム処理を使用して動作するアプリケーションタスク70である。
なお、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との一番の違いは、他のアプリケーションタスク70に対するアクセス権（不正アクセス検出手段40が不正アクセスとして検出するアクセスの違い）であるが、この点は後ほど詳述する。
【００６０】
また、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との他の違いとしては、カーネルアプリケーションタスク60はＩ／Ｏに直接アクセスできる点がある。また、カーネルアプリケーションタスク60のみが呼び出せるＯＳのＡＰＩ（システムコール）が存在する点も、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との違いである。例えば、デバイスドライバの登録や削除は、カーネルアプリケーションタスク60のみが行える。更には、ユーザアプリケーションタスク65がＯＳのＡＰＩを呼び出した場合、間違ったパラメータや、不正なバッファなどを渡してもＯＳが破壊されないように様々なチェックが行われるが、カーネルアプリケーションタスク60がＯＳのＡＰＩを呼び出した場合にはこのようなチェックがされない点でも、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60とは異なる。このことは、ユーザアプリケーションタスク65がＯＳのＡＰＩを呼び出した場合には、カーネルアプリケーションタスク60がＯＳのＡＰＩを呼び出した場合と比較して、パフォーマンスオーバヘッドがあるということも意味している。
【００６１】
（スケジューリングについて）
次に、本システムにおけるタスクスケジューリングについて説明する。
前述したように、本システムでは、コアユニット101ごとにタスク実行手段30が設けられている。同様に、本システムは、コアユニット101ごとに図示しないスケジューラが設けられ、また、図示しないレディーキューを保持している。これにより、タスクグループ200に属するアプリケーションタスク70は、当該アプリケーションタスク70がＲＥＡＤＹ状態となると、当該タスクグループ200に係るコアユニット101用のスケジューラにより、当該コアユニット101に係るレディーキューにつながれることとなる。そして、当該レディーキューの先頭にあるタスクが、タスク実行手段30により順次実行される。すなわち、タスクグループ200に属するアプリケーションタスク70は、必ず当該アプリケーションタスク70に係るコアユニット101上で動作することになる。
【００６２】
なお、タスクグループ200に係るコアユニット101がマルチコアユニットの場合、当該タスクグループ200に属するアプリケーションタスク70がタスク実行手段30により実行される条件は、当該アプリケーションタスク70がレディーキューの先頭となった時に、（１）マルチコアユニット内にアイドル状態のプロセッサコア100があるか、もしくは（２）マルチコアユニット内のプロセッサコア100でスケジュールされているアプリケーションタスク70の中に、当該アプリケーションタスク70よりも優先度の低いアプリケーションタスク70があったとき、のいずれかに該当する場合である。
ところで、マルチコアユニットは複数のプロセッサコア100からなるため、マルチコアユニットに係るアプリケーションタスク70が実行される場合、どのプロセッサコア100で実行されるのかを決定する必要がある。マルチコアユニットに係るアプリケーションタスク70が実行されるプロセッサコア100は以下の通りである。
【００６３】
（１）アイドル状態のプロセッサコア100
（２）アイドル状態のプロセッサコア100がないときには、最も優先度の低いタスクを実行しているプロセッサコア100
（３）アイドル状態のプロセッサコア100が複数あるか、最も優先度の低いタスクを実行しているプロセッサコア100が複数ある場合には、当該アプリケーションタスク70が前回動作したプロセッサコア100
（４）（３）で当該アプリケーションタスク70が前回動作したプロセッサコア100が選択可能でない場合は、プロセッサコア100に割り振ったＩＤ（図示せず）が小さい方のプロセッサコア100
（共有カーネルアプリケーション55、カーネル部50）
共有カーネルアプリケーション55（請求項に言う「共有処理」）は、タスクグループ200共通のシステム処理を行うものであり、前述したように、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスクなどを含んでいる。この共有カーネルアプリケーション55は、カーネルアプリケーションタスク60と同様の処理が可能である。すなわち、Ｉ／Ｏに直接アクセスでき、呼び出せるＯＳのＡＰＩ（システムコール）もカーネルアプリケーションタスク60と同様である。異なる点は、共有カーネルアプリケーション55はタスクグループ200に属しないため、１のコアユニット101と関連付けられていない点である。これに起因して、（１）共有カーネルアプリケーション55はいずれのコアユニット101上でも実行可能であり、（２）共有カーネルアプリケーション55は後述する各タスクグループ200固有のメモリ領域にもアクセスできる点で、カーネルアプリケーションタスク60とは異なる。このように、共有カーネルアプリケーション55は、アプリケーションタスク70と比較して処理の自由度が高いため、システムに与える影響が大きいものである。そのため、後述するように、アプリケーションタスク70よりも強力に不正アクセスから保護されている。
【００６４】
なお、本実施形態では、共有カーネルアプリケーション55はすべてのコアユニット101上で実行可能としているが、特定の２以上のコアユニット101上でのみ実行可能としても良い。
カーネル部50は、前述したように、オペレーティングシステム1の根幹部分をなすプログラムであり、タスク生成手段25やタスク実行手段30などの各手段、システムタイマ割り込みハンドラ、ＣＰＵ例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを含んでいる。このカーネル部50は、共有カーネルアプリケーション55と同様にタスクグループ200に属しないため、１のコアユニット101と関連付けられておらず、いずれのコアユニット101上でも実行可能である。また、システム上のすべてのメモリ領域にアクセス可能であり、システムに与える影響が最も大きい部分である。そのため、後述するように、このカーネル部50は最も強力に不正アクセスから保護されている。
【００６５】
（システムの初期化）
次に、図４を見ながら本システムの初期化処理について説明する。なお、以下の初期化処理は、予め決められた所定のプロセッサコア100（マスタコア）において実行される。
まず、図４のＳ１００において、システムの初期化処理が開始する。具体的には、モニタプログラムが起動し、各種のハードウェアの初期化処理などを行い、カーネル部50を起動させる。そして、Ｓ１０１に進む。
Ｓ１０１において、カーネル部50が起動する。そして、システム構成情報の内容に従ってカーネル部50自身の初期化処理を行う。また、メモリ関連の初期化処理、ＣＰＵ／デバイスの初期化処理、タスクなどのカーネルオブジェクトの初期化処理を行う。そして、Ｓ１０２に進む。
【００６６】
Ｓ１０２において、コアユニット管理手段10が所定の定義ファイルを読み込んで、コアユニット101情報を取得する。そして、Ｓ１０３に進む。
Ｓ１０３において、タスクグループ化手段26は、コアユニット管理手段10がＳ１０２で取得したコアユニット101情報を元にコアユニット101ごとの管理テーブルを作成する。これにより、タスクグループ200が作成される。そして、Ｓ１０４に進む。
Ｓ１０４において、コアユニット101（タスクグループ200）ごとの初期化処理が実行される。例えば、コアユニット101（タスクグループ200）ごとにタスク実行手段30が起動され、初期タスクが実行される。
【００６７】
そして、初期化処理を終了する。
（タスクの実行）
次に、図５を見ながら本実施形態に係るタスクの実行について説明する。
まず、図５のＳ２００において、タスク生成用のＡＰＩが呼び出される。そして、Ｓ２０１に進む。
Ｓ２０１において、コアユニット決定手段20すなわちタスク生成手段25が、タスク生成用のＡＰＩのパラメータとして指定されたコアユニット101情報を取得する。これにより、タスクが実行されるコアユニット101が決定される。ここで、パラメータでコアユニット101が指定されていない場合、このタスクは、呼び出し元のタスクと同じコアユニット101で実行されると決定される。なお、タスクグループ200に属するアプリケーションタスク222は、コアユニット101情報を指定してタスク生成用のＡＰＩを呼び出すことはできない。これは、他のタスクグループ200にアプリケーションタスク222を作成できるとすると、タスクグループの保護領域230間の干渉を避けるという目的を達成できないためである。そして、Ｓ２０２に進む。
【００６８】
Ｓ２０２において、タスク生成手段25がタスクを生成する。なお、生成されたタスクは、タスクグループ化手段26がコアユニット101ごとに保持している管理テーブルにより管理される。しかしながら、管理テーブルにより管理されているすべてのタスクがタスクグループ200に属しているわけではなく、管理テーブルにより管理されているタスクのうちアプリケーションタスク70のみがタスクグループ200に属するとして扱われる。言い換えると、共有カーネルアプリケーション55やカーネル部50に含まれるタスクは、タスクグループ200に係る管理テーブルにより管理されているにも拘らず、タスクグループ200には属さないとして扱われる（タスクが配置されるメモリ領域が異なるため、タスクグループ200に属するタスクとは異なるアクセス権が与えられる）。そして、Ｓ２０３に進む。
【００６９】
Ｓ２０３において、タスクは、実行可能状態（ＲＥＡＤＹ）となるまで待機する。そして、Ｓ２０４に進む。
Ｓ２０４において、タスクがＲＥＡＤＹ状態となると、当該タスクは、タスクが実行されるコアユニット101に係るレディーキューへとつながれる。なお、このとき、タスクグループ化手段26がコアユニット101ごとに保持している管理テーブルを参照することにより、タスクが実行されるコアユニット101の情報が取得される。
その後、Ｓ２０５において、タスクがレディーキューの先頭となり、使用可能なプロセッサコア100があれば、タスクが実行される。
【００７０】
（不正アクセスの検出）
次に、本発明に係る不正アクセスの検出について説明する。
本実施形態においては、プロセッサ2の実行モードと保護領域指定機能とを用いて不正アクセスを検出している。以下において、実行モードと保護領域指定機能とのそれぞれについて説明する。
（実行モード）
本実施形態に係るオペレーティングシステム1は、各プロセッサコア100が処理を実行するモードとして複数の実行モードを有しており、この実行モードはモード切替手段45により切り替えられる。具体的には、実行モードとして、「ユーザモード」「システムモード」「カーネルモード」が設けられており、それぞれのモードでアクセス可能なメモリ領域として、「カーネルエリア」「システムエリア」「ユーザエリア」が設けられている。
【００７１】
ここで、「カーネルエリア」「システムエリア」「ユーザエリア」の各エリアは、メモリ3上に確保した特別な領域であり、これらの領域にプログラムやデータなどを配置することにより、その領域へのアクセス権を制御することで保護機能を実現するためのものである。
そして、図６に示すように、「カーネルモード」では「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能であり、「システムモード」では「カーネルエリア」以外の「システムエリア」「ユーザエリア」にアクセス可能であり、「ユーザモード」では「ユーザエリア」のみがアクセス可能となっている。
【００７２】
なお、本実施形態では、ユーザエリアには、ユーザアプリケーションタスク65、およびこれらに固有のデータが配置される。
また、システムエリアには、共有カーネルアプリケーション55、カーネルアプリケーションタスク60、およびこれらに固有のデータが配置される。このシステムエリアは、プロセッサ2の機能を用いて、プロセッサ2が特権モードのときのみアクセスできるよう保護されたエリアである。
また、カーネルエリアには、カーネル部50、およびこれらに固有のデータが配置される。このカーネルエリアは、プロセッサ2が特権モードのときでもアクセスできないようにメモリ属性が与えられているエリアである。なお、ユーザエリアおよびシステムエリアに配置されたプログラムがカーネルエリアにアクセスするには、カーネル部50が持つ特別な手続きを踏んでアクセスする必要があるため、他のプログラムによりカーネル部50が破壊されることはないようになっている。
【００７３】
次に、図８および図９を見ながら、実際にどのように実行モードが変更されるのかについて説明する。
まず、図８を参照して割り込み処理を例にして説明する。
図８のＳ３００において、割り込みが発生する。そして、Ｓ３０１に進む。
Ｓ３０１において、モード切替手段45により、実行モードがカーネルモードに切り替えられる。すなわち、「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能なモードとなる。そして、Ｓ３０２に進む。
Ｓ３０２において、カーネル部50により割り込みが受け付けられる。カーネル部50は発生した割込みを特定して、該当する割込みハンドラを呼び出す。そして、Ｓ３０３に進む。
【００７４】
Ｓ３０３において、モード切替手段45により、実行モードがシステムモードに切り替えられる。すなわち、「カーネルエリア」以外の「システムエリア」「ユーザエリア」にアクセス可能なモードとなる。そして、Ｓ３０４に進む。
Ｓ３０４において、割り込みハンドラが実行される。そして、Ｓ３０５に進む。
Ｓ３０５において、割り込みハンドラの実行が終了したのち、割り込み発生前のプログラムに復帰する。このとき、割り込み発生前の実行モードがシステムモードでなければ、モード切替手段45により、実行モードが割り込み発生前の実行モードに切り替えられる。例えば「ユーザモード」に切り替わった場合、「ユーザエリア」のみにアクセ可能となる。
【００７５】
次に、図９を参照してシステムコール処理を例にして説明する。
図９のＳ４００において、ユーザアプリケーションタスク65がシステムコールを発行する。そして、Ｓ４０１に進む。
Ｓ４０１において、モード切替手段45により、実行モードがカーネルモードに切り替えられる。すなわち、「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能なモードとなる。そして、Ｓ４０２に進む。
Ｓ４０２において、カーネル部50によりシステムコールに対応した処理が実行される。そして、Ｓ４０３に進む。
【００７６】
Ｓ４０３において、モード切替手段45により、実行モードがシステムコール発行前の実行モード、すなわち、ユーザモードに切り替えられる。すなわち、「ユーザエリア」のみにアクセス可能なモードとなる。
（保護領域指定機能）
本実施形態に係るプロセッサ2は、特定のメモリ領域を保護することが可能な保護領域指定機能を有している。これにより、所定のメモリ領域へのアクセス権を制御し、当該メモリ領域への不正アクセスを検出している。
具体的には、各ユーザアプリケーションタスク65に固有のメモリ領域であるユーザアプリケーションタスク固有エリア220と、各タスクグループ200に固有のメモリ領域であるタスクグループ固有エリア202と、が、この保護領域指定機能により保護されている。
【００７７】
（不正アクセスとして検出されるアクセス）
次に、具体的に各メモリ領域がどのように保護されており、どのようなアクセスが不正アクセスとして検出されるのかを、図７を参照しながら説明する。
図７は、各エリア間でアクセス可能な範囲を示す概念図であり、上に行くほど保護が弱い領域であり、下に行くほど保護が強い領域となっている。そして、「ＯＫ」として示したものは、矢印の始端側のメモリ領域に配置されたプログラムが矢印の終端側のメモリ領域にアクセス可能な場合を表しており、「ＮＧ」として示したものは、矢印の始端側のメモリ領域に配置されたプログラムが矢印の終端側のメモリ領域にアクセスできない場合、すなわち、不正アクセスとして検出されるアクセスを表している。なお、便宜上、近接したレイヤの領域間のアクセス（矢印）しか記載していないが、矢印の有無に関わらず、下の領域から上の領域へのアクセスはすべて可能であり、上の領域から下の領域へのアクセスはすべて禁止されている。例えば、カーネル部固有エリア212からユーザアプリケーションタスク固有エリア220へのアクセスは可能であるが、ユーザアプリケーションタスク固有エリア220からカーネル部固有エリア212へのアクセスは当然に禁止される。
【００７８】
以下、各領域について説明する。
タスクグループ共有エリア201は、システムに１つ設けられた領域であり、すべてのプログラムからアクセス可能である。例えば、タスクグループ200間でメモリを使った通信を行う場合など、アクセスが禁止されたメモリ領域間でデータの受け渡しを行う場合などに使用する。
タスクグループ固有エリア202は、タスクグループ200ごとに設けられた領域である。この領域は、当該タスクグループ200に属するアプリケーションタスク222、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222からはアクセスできない。
【００７９】
ユーザアプリケーションタスク固有エリア220は、ユーザアプリケーションタスク65ごとに設けられた領域であり、各ユーザアプリケーションタスク65が配置される。この領域は、当該タスクグループ200に属するカーネルアプリケーションタスク60、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222や、当該タスクグループ200に属する他のユーザアプリケーションタスク65からはアクセスできない。
カーネルアプリケーションタスク固有エリア221は、カーネルアプリケーションタスク60ごとに設けられた領域であり、各カーネルアプリケーションタスク60が配置される。この領域は、当該タスクグループ200に属するカーネルアプリケーションタスク60、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222や、当該タスクグループ200に属するユーザアプリケーションタスク65からはアクセスできない。
【００８０】
共有カーネルアプリケーション固有エリア211は、システムに１つ設けられた領域であり、共有カーネルアプリケーション55が配置される。この領域は、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、アプリケーションタスク222からはアクセスできない。
カーネル部固有エリア212は、システムに１つ設けられた領域であり、カーネル部50が配置される。この領域は、カーネル部50のみアクセス可能である。アプリケーションタスク222や共有カーネルアプリケーション55からはアクセスできない。
なお、上述したユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とが、請求項に言う「処理単位固有のメモリ領域」に相当する。また、このユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とに、タスクグループ固有エリア202を加えた領域が、請求項に言う「処理単位グループ固有のメモリ領域」に相当する。
【００８１】
ところで、（Ａ）（Ｂ）（Ｃ）として示したものは、それぞれ（Ａ）ユーザエリア（Ｂ）システムエリア（Ｃ）カーネルエリアを意味するものである。すなわち、タスクグループ共有エリア201、タスクグループ固有エリア202、ユーザアプリケーションタスク固有エリア220は、ユーザエリアである。カーネルアプリケーションタスク固有エリア221、共有カーネルアプリケーション固有エリア211は、システムエリアである。カーネル部固有エリア212は、カーネルエリアである。そして、このように各エリアの属性が決められていることにより、前述したような実行モードの切り替えがおこなわれる。すなわち、（Ｃ）のエリアに配置されたプログラムを実行する場合には、カーネルモードに切り替えられ、（Ａ）（Ｂ）（Ｃ）のすべてのエリアにアクセス可能となる。（Ｂ）のエリアに配置されたプログラムを実行する場合には、システムモードに切り替えられ、（Ｂ）（Ｃ）のエリアにアクセス可能となる。（Ａ）のエリアに配置されたプログラムを実行する場合には、ユーザモードに切り替えられ、（Ｃ）のエリアにアクセス可能となる（ただし、保護領域指定機能により、タスクグループ200間、ユーザアプリケーションタスク65間のメモリアクセスは制限される）。
【００８２】
また、タスクグループの保護領域230間の矢印として示したタスクグループ200間のアクセスは、前述した保護領域指定機能により禁止されている。すなわち、図7で示したように、タスクグループ固有エリア202とユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とで形成された、タスクグループ200に係るメモリ領域は、タスクグループの保護領域230として管理されており、他のタスクグループの保護領域230からのアクセスは不正アクセスとして検出される。
そして、ユーザアプリケーションタスク固有エリア220についても、この保護領域指定機能により保護されている。これにより、１のユーザアプリケーションタスク65に係るユーザアプリケーションタスク固有エリア220は、他のユーザアプリケーションタスク65によるアクセスから保護されている。  
【００８３】
（不正アクセスの検出処理）
次に、不正アクセスが検出された場合の動作について、図１０乃至１２を参照しながら説明する。
まず、図１０のＳ５００において、不正アクセスが発生する。そして、Ｓ５０１に進む。
Ｓ５０１において、発生した不正アクセスをプロセッサ2が検知し、ＣＰＵ例外を発生させる。そして、Ｓ５０２に進む。
Ｓ５０２において、不正アクセス検出手段40が、ＣＰＵ例外を検出し、対応するＣＰＵ例外ハンドラを起動する。そして、図１１で示すＣＰＵ例外ハンドラ処理に進む。
【００８４】
図１１は、ＣＰＵ例外ハンドラによる処理である。
まず、図１１のＳ６００において、ＣＰＵ例外ハンドラは、例外を発生したタスクをサスペンドする。そして、Ｓ６０１に進む。
Ｓ６０１において、ＣＰＵ例外ハンドラは、ＣＰＵ例外発生時の情報を取得する。ＣＰＵ例外発生時の情報は、具体的には、例外の発生したプロセッサコア100、例外の発生したコアユニット101、実行中のタスクの情報、レジスタ値などである。これらの情報は、後述する例外ハンドラコールバックや例外タスクコールバックで使用可能となっている。そして、Ｓ６０２に進む。
【００８５】
Ｓ６０２において、例外ハンドラコールバックが登録されているかが判定される。そして、例外ハンドラコールバックが登録されている場合、Ｓ６０３に進む。例外ハンドラコールバックが登録されていない場合、Ｓ６０４に進む。
Ｓ６０３において、例外ハンドラコールバックが呼び出され、ユーザが指定した例外ハンドラコールバック処理が実行される。そして、Ｓ６０４に進む。
Ｓ６０４において、例外ハンドラは、例外マネージャタスクを起床して処理を終了する。なお、例外マネージャタスクとは、後述する例外タスクコールバックを呼び出すためのタスクであり、最高優先度を持つため、ＣＰＵ例外ハンドラの処理が終了するとすぐに実行される。
【００８６】
そして、上記したＳ６０４で例外マネージャタスクが起床された結果、例外マネージャタスクが実行状態となると、図１２で示す例外マネージャタスク処理が実行される。
例外マネージャタスク処理では、図１２のＳ７００で示すように、例外タスクコールバックが登録されているかが判定される。そして、例外タスクコールバックが登録されている場合、Ｓ７０１に進む。例外タスクコールバックが登録されていない場合、例外マネージャタスク処理は終了する。
Ｓ７０１において、例外タスクコールバックが呼び出され、ユーザが指定した例外タスクコールバック処理が実行される。そして、例外マネージャタスク処理が終了する。
【００８７】
なお、上記した例外ハンドラコールバックおよび例外タスクコールバックは、不正アクセス検出時の動作をユーザが指定するためのものである。コールバックに指定する例外処理の例としては、ログを作成後にシステム再起動したり、特定のソフトウェアの処理を中断したりすることが考えられる。なお、なるべく早く例外処理を行いたい場合は例外ハンドラコールバックを使用するのが適しており、さまざまなＯＳの機能を使用したい場合には例外タスクコールバックを使用するのが適している。
（まとめ）
本実施形態によれば、上記のように構成されているので、対称型マルチプロセッシングと非対称型マルチプロセッシングとの双方の利点を生かしたシステムを構築できる。
【００８８】
また、タスクグループの保護領域230間でのメモリアクセス、タスクグループ200内でのカーネルアプリケーションタスク60に対するメモリアクセス、共有カーネルアプリケーション55に対するメモリアクセス、カーネル部50に対するメモリアクセスが、それぞれ制限されているので、各処理間での干渉を回避しながら、最適なアクセス権を与えることが可能となっている。
このようなオペレーティングシステム1を使用すれば、例えば異なる信頼性が求められる複数のシステムを統合する際に、これら複数のシステム（サブシステム）のそれぞれが異なるタスクグループの保護領域230に属するように設計することで、互いの干渉を避けることができる。すなわち、システムの再利用性を高め、安全性を確保することができる。そして、各タスクグループ200はそれぞれにＣＰＵリソースが配分されているため、それぞれのパフォーマンス予測が容易となっている。
【００８９】
加えて、サブシステム内でも処理特性に応じて異なるアクセス権を与えることができるため、サブシステムにおいて高い信頼性が求められる処理を保護することができ、サブシステムの信頼性を高めることができる。
更に、これらサブシステムを動作させるオペレーティングシステム1の基幹部分は、サブシステムから保護されているため、システム全体の信頼性も高めることができる。しかも、サブシステムから保護される基幹部分の保護レベルも２段階に設けられており、より信頼性が求められるカーネル部50と、複数のサブシステム間で共有されるべき共有カーネルアプリケーション55と、による２段階の保護が可能となっている。これにより、カーネル部50を強力に保護しながら、必要な処理はサブシステム間で共有できるようになっている。
【００９０】
さらに、上記したような機能を単一のオペレーティングシステム1により実現しているため、デバイスドライバやＯＳリソースの共有、使用メモリの削減、サブシステム間の高速な通信、が可能となっている。
なお、上記した実施形態では、請求項に言う「処理単位」が「タスク」であるとして説明したが、これに限らない。例えば、「処理単位」が「プロセス」であるとしても良い。なお、ここで言う「プロセス」とは、複数のタスクもしくはスレッドからなるものであり、同一のプロセスに属する複数のタスクもしくはスレッドは、当該プロセス内のメモリ領域を共有できるものを指す。
【００９１】
また、上記した実施形態では、プロセッサ2の保護領域指定機能や実行モードを使用してメモリ保護を実現するとしたが、これに限らず、アクセスモニタやページテーブルを用いてメモリ保護を実現しても良い。
【図面の簡単な説明】
【００９２】
【図１】情報処理装置の構成を示すブロック図である。
【図２】コアユニットの構成を示すブロック図である。
【図３】タスクグループの概要を示す説明図である。
【図４】システムの初期化処理を示すフロー図である。
【図５】タスクの実行処理を示すフロー図である。
【図６】各実行モードでのアクセス権を示す表である。
【図７】各エリア間でアクセス可能な範囲を示す概念図である。
【図８】割り込み処理を示すフロー図である。
【図９】システムコール処理を示すフロー図である。
【図１０】不正アクセス検出処理を示すフロー図である。
【図１１】不正アクセス検出したときの、CPU例外ハンドラの処理を示すフロー図である。
【図１２】不正アクセス検出したときの、例外マネージャタスクの処理を示すフロー図である。
【符号の説明】
【００９３】
1    オペレーティングシステム
2    プロセッサ
3    メモリ
10   コアユニット管理手段
20   コアユニット決定手段
25   タスク生成手段（処理単位生成手段）
26   タスクグループ化手段（処理単位グループ化手段）
30   タスク実行手段（処理単位実行手段）
35   メモリ領域割り当て手段
40   不正アクセス検出手段
45   モード切替手段
46   共有カーネルアプリケーション定義手段（共有処理定義手段）
47   カーネル部定義手段
50   カーネル部
55   共有カーネルアプリケーション（共有処理）
60   カーネルアプリケーションタスク（特権処理単位）
65   ユーザアプリケーションタスク（通常処理単位）
70   アプリケーションタスク（処理単位）
100  プロセッサコア
101  コアユニット
200  タスクグループ（処理単位グループ）
201  タスクグループ共有エリア
202  タスクグループ固有エリア
211  共有カーネルアプリケーション固有エリア（共有処理固有のメモリ領域）
212  カーネル部固有エリア（カーネル部固有のメモリ領域）
220  ユーザアプリケーションタスク固有エリア
221  カーネルアプリケーションタスク固有エリア
222  アプリケーションタスク固有エリア（処理単位固有のメモリ領域）
230  タスクグループの保護領域（処理単位グループ固有のメモリ領域）
【図１】
2010113488.tif 000003
【図２】
2010113488.tif 000004
【図３】
2010113488.tif 000005
【図４】
2010113488.tif 000006
【図５】
2010113488.tif 000007
【図６】
2010113488.tif 000008
【図７】
2010113488.tif 000009
【図８】
2010113488.tif 000010
【図９】
2010113488.tif 000011
【図１０】
2010113488.tif 000012
【図１１】
2010113488.tif 000013
【図１２】
2010113488.tif 000014
【手続補正書】
【提出日】平成21年5月1日(2009.5.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、を有するシステム上で動作するオペレーティングシステムであって、
前記複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するコアユニット管理手段と、
種々の処理を行うためのタスクまたはプロセスのいずれかである処理単位を生成する処理単位生成手段と、
生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するためのコアユニット決定手段と、
前記コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位を処理単位グループとしてグループ化する処理単位グループ化手段と、
前記複数のコアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位を当該コアユニットごとにスケジューリングして、当該コアユニット上で実行させる複数の処理単位実行手段と、
前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるメモリ領域割り当て手段と、
前記メモリへの不正アクセスを検出する不正アクセス検出手段と、
前記複数のコアユニットのうちの少なくとも２以上のコアユニット上で実行可能な処理単位を含む共有処理を定義する共有処理定義手段と、
を有し、
前記不正アクセス検出手段は、
処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする、
オペレーティングシステム。
【請求項２】
前記処理単位生成手段は、処理単位として、通常処理単位と、通常処理単位よりも強いアクセス権を有する特権処理単位と、を生成可能であり、
前記メモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てており、
前記処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われ、その結果、前記不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出し、
また、前記不正アクセス検出手段は、
通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出し、
特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１記載のオペレーティングシステム。
【請求項３】
前記メモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域、に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１または２記載のオペレーティングシステム。
【請求項４】
前記複数のコアユニットのうちの任意のコアユニット上で実行可能な処理単位を含むカーネル部を定義するカーネル部定義手段を有し、
前記メモリ領域割り当て手段は、前記カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記カーネル部に含まれない処理が、前記カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記カーネル部が、前記処理単位グループ固有のメモリ領域および前記共有処理固有のメモリ領域のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項３に記載のオペレーティングシステム。
【請求項５】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作する請求項１から４のいずれかに記載のオペレーティングシステムと、を有することを特徴とする情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
各請求項にそれぞれ記載された発明は、上記した課題を解決するためになされたものである。以下、図面に示した発明の実施の形態を用いて、各請求項にそれぞれ記載された発明の特徴および作用を説明する。
なお、符号は、発明の実施の形態において用いた符号を示し、本発明の技術的範囲を限定するものではない。
（請求項１）
請求項１に記載の発明は、以下を特徴とする。
すなわち、請求項１に記載のオペレーティングシステム１は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、を有するシステム上で動作するオペレーティングシステム1であって、前記複数のプロセッサコア100を１以上のプロセッサコア100からなる複数のコアユニット101にグループ化して管理するコアユニット管理手段10と、種々の処理を行うためのタスクまたはプロセスのいずれかである処理単位70を生成する処理単位生成手段25と、生成された処理単位70が前記複数のコアユニット101のいずれで実行されるかを決定するためのコアユニット決定手段20と、前記コアユニット決定手段20により同一のコアユニット101で実行されると決定された処理単位70を処理単位グループ200としてグループ化する処理単位グループ化手段26と、前記複数のコアユニット101ごとに対応して設けられ、対応するコアユニット101で実行されると決定された処理単位70を当該コアユニット101ごとにスケジューリングして、当該コアユニット101上で実行させる複数の処理単位実行手段30と、前記複数の処理単位グループ200に対して、前記メモリ3から各処理単位グループ200固有のメモリ領域230を割り当てるメモリ領域割り当て手段35と、前記メモリ3への不正アクセスを検出する不正アクセス検出手段40と、前記複数のコアユニット101のうちの少なくとも２以上のコアユニット101上で実行可能な処理単位70を含む共有処理55を定義する共有処理定義手段46と、を有し、前記不正アクセス検出手段40は、処理単位70が、当該処理単位70の属する処理単位グループ200とは別の処理単位グループ200固有のメモリ領域230に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
なお、請求項１の不正アクセス検出手段は、メモリ領域割り当て手段によって各処理単位グループに割り当てられた固有のメモリ領域に対し、他の処理単位グループに属する処理単位がアクセスしたときに、このアクセスを不正アクセスとして検出するものである。
「共有処理」は、前記複数のコアユニットのうちの少なくとも2以上のコアユニット上で実行可能なものである。そして、この共有処理は、当該共有処理を実行可能なコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行されものである。例えば、この共有処理として、複数の処理単位グループに共通のアプリケーションを設けることができる。更に具体的には、例えば、この共有処理として、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスク、などを設ける態様が考えられる。
なお、共有処理を実行可能なコアユニットの範囲としては、本発明に係るコアユニット管理手段が管理するすべてのコアユニットで実行可能としても良いし、一部のコアユニットでのみ共有処理を実行可能としても良い。
「共有処理定義手段」は、上記共有処理を定義するためのものである。例えば、共有処理として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、共有処理として定義するような態様が考えられる。
（請求項１記載の発明の作用）
このようなオペレーティングシステムにおいては、複数のプロセッサコアが１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理される。また、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成するようになっている。そして、１の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときには、このアクセスが不正アクセスとして検出される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
（請求項３）
請求項３に記載の発明は、上記した請求項１または請求項２に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項３に記載のオペレーティングシステム1は、前記メモリ領域割り当て手段35は、前記共有処理55に対して、前記メモリ3から共有処理55固有のメモリ領域211を割り当てており、前記不正アクセス検出手段40は、前記複数の処理単位グループ200のいずれかに属する処理単位70が、当該共有処理55固有のメモリ領域211に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、前記共有処理55が、当該共有処理55を実行可能なコアユニット101に係る処理単位グループ200のいずれかに固有のメモリ領域230、および、当該共有処理55を実行可能なコアユニット101に係る処理単位グループ200のいずれかに属する処理単位70固有のメモリ領域222に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
ところで、本請求項に係るメモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、共有処理が使用するメモリ領域として割り当てられている。
そして、本請求項に係る不正アクセス検出手段は、前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出する。すなわち、共有処理固有のメモリ領域は、処理単位グループのいずれかに属する処理単位によるアクセスから保護されるようになっている。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
（請求項４）
請求項４に記載の発明は、上記した請求項３に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項４に記載のオペレーティングシステム1は、前記複数のコアユニット101のうちの任意のコアユニット101上で実行可能な処理単位70を含むカーネル部50を定義するカーネル部定義手段47を有し、前記メモリ領域割り当て手段35は、前記カーネル部50に対して、前記メモリ3からカーネル部50固有のメモリ領域212を割り当てており、前記不正アクセス検出手段40は、前記カーネル部50に含まれない処理が、前記カーネル部50固有のメモリ領域212に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、前記カーネル部50が、前記処理単位グループ200固有のメモリ領域222および前記共有処理55固有のメモリ領域211のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【手続補正書】
【提出日】平成22年2月22日(2010.2.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、を有するシステム上で動作するオペレーティングシステムであって、
前記複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するコアユニット管理手段と、
種々の処理を行うためのタスクまたはプロセスのいずれかである処理単位を生成する処理単位生成手段と、
処理単位生成時に指定されたパラメータに基づいて、生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するためのコアユニット決定手段と、
前記コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位を処理単位グループとしてグループ化する処理単位グループ化手段と、
前記複数のコアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位が実行可能状態となったときに、当該処理単位をコアユニットごとに設けられたレディーキューにつなぐことによって当該コアユニットごとにスケジューリングして、当該コアユニット上で実行させる複数の処理単位実行手段と、
前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるメモリ領域割り当て手段と、
前記メモリへの不正アクセスを検出する不正アクセス検出手段と、
前記複数のコアユニットのうちの少なくとも２以上のコアユニット上で実行可能な処理単位を含む共有処理を定義する共有処理定義手段と、
を有し、
前記不正アクセス検出手段は、
処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする、
オペレーティングシステム。
【請求項２】
前記処理単位生成手段は、処理単位として、通常処理単位と、通常処理単位よりも強いアクセス権を有する特権処理単位と、を生成可能であり、
前記メモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てており、
前記処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われ、その結果、前記不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出し、
また、前記不正アクセス検出手段は、
通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出し、
特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１記載のオペレーティングシステム。
【請求項３】
前記メモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域、に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項１または２記載のオペレーティングシステム。
【請求項４】
前記複数のコアユニットのうちの任意のコアユニット上で実行可能な処理単位を含むカーネル部を定義するカーネル部定義手段を有し、
前記メモリ領域割り当て手段は、前記カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記カーネル部に含まれない処理が、前記カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記カーネル部が、前記処理単位グループ固有のメモリ領域および前記共有処理固有のメモリ領域のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項３に記載のオペレーティングシステム。
【請求項５】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作する請求項１から４のいずれかに記載のオペレーティングシステムと、を有することを特徴とする情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
各請求項にそれぞれ記載された発明は、上記した課題を解決するためになされたものである。以下、図面に示した発明の実施の形態を用いて、各請求項にそれぞれ記載された発明の特徴および作用を説明する。
なお、符号は、発明の実施の形態において用いた符号を示し、本発明の技術的範囲を限定するものではない。
（請求項１）
請求項１に記載の発明は、以下を特徴とする。
すなわち、請求項１に記載のオペレーティングシステム１は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、を有するシステム上で動作するオペレーティングシステム1であって、前記複数のプロセッサコア100を１以上のプロセッサコア100からなる複数のコアユニット101にグループ化して管理するコアユニット管理手段10と、種々の処理を行うためのタスクまたはプロセスのいずれかである処理単位70を生成する処理単位生成手段25と、処理単位70生成時に指定されたパラメータに基づいて、生成された処理単位70が前記複数のコアユニット101のいずれで実行されるかを決定するためのコアユニット決定手段20と、前記コアユニット決定手段20により同一のコアユニット101で実行されると決定された処理単位70を処理単位グループ200としてグループ化する処理単位グループ化手段26と、前記複数のコアユニット101ごとに対応して設けられ、対応するコアユニット101で実行されると決定された処理単位70が実行可能状態となったときに、当該処理単位70をコアユニット101ごとに設けられたレディーキューにつなぐことによって当該コアユニット101ごとにスケジューリングして、当該コアユニット101上で実行させる複数の処理単位実行手段30と、前記複数の処理単位グループ200に対して、前記メモリ3から各処理単位グループ200固有のメモリ領域230を割り当てるメモリ領域割り当て手段35と、前記メモリ3への不正アクセスを検出する不正アクセス検出手段40と、前記複数のコアユニット101のうちの少なくとも２以上のコアユニット101上で実行可能な処理単位70を含む共有処理55を定義する共有処理定義手段46と、を有し、前記不正アクセス検出手段40は、処理単位70が、当該処理単位70の属する処理単位グループ200とは別の処理単位グループ200固有のメモリ領域230に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする。