説明

オペレーティングシステムおよび情報処理装置

【課題】既存システムの再利用や、既存システムの統合を容易にすることができ、各システム間の連携が高速かつ安全にできるオペレーティングシステムおよび情報処理装置を提供する。
【解決手段】マルチコアプロセッサ上で動作するオペレーティングシステムにおいて、複数のプロセッサコアを1以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するようにした。また、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成するようにした。そして、1の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスが不正アクセスとして検出されるようにした。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数のプロセッサコアを有するプロセッサ上で動作するオペレーティングシステムに関する。また、複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作するオペレーティングシステムと、を有する情報処理装置に関する。
特に、不正アクセスの検出機能を有するオペレーティングシステムおよび情報処理装置に関する。
【背景技術】
【0002】
近年、組み込みシステム等の情報処理システムは複雑度を増してきており、例えば複数のシステムを統合した情報処理システムの構築が求められている。また、処理が複雑化しているにも関わらず、同時に、複雑な処理を高速に処理することをも求められているのが現状である。
そして、こうした情報処理システムにおいて、複雑な処理を高速に処理するためには、例えばマルチコアプロセッサを用いることにより、複数の処理を同時並行的に処理することが有効である。マルチコアプロセッサは、複数のプロセッサコアを1つの集積回路に実装したものであり、複数の処理を同時並行的に処理できるとともに、複数の集積回路を使用した場合に比べて部品コストやプロセッサの実装面積を低減できる、などの利点を有するものである。
【0003】
ところで、こうしたマルチコアプロセッサの制御方法としては、まず、非対称型マルチプロセッシング(AMP)と対称型マルチプロセッシング(SMP)とが考えられる。
非対称型マルチプロセッシングは、マルチコアプロセッサの複数のプロセッサコアごとに実行する処理が決められている制御方法である。
また、対称型マルチプロセッシングは、マルチコアプロセッサの複数のプロセッサコアを同等に扱い、適宜ロードバランスなどを考慮して処理を実行するプロセッサを決定する制御方法である。つまり、処理を分散させてプロセッサ資源を効率良く使用するという点から見れば、対称型マルチプロセッシングの方が優れている。
【0004】
しかしながら、対称型マルチプロセッシングにおいては、処理が実行されるプロセッサが決定されていないため、他の処理から受ける影響を予測できないという問題がある。具体的には、複数のシステムを統合する際や、既存システムの再利用を図る際に、リソース競合などの問題を予測できないという問題がある。すなわち、信頼性などの処理特性に関わらず様々な処理が並列に扱われるとすると、リアルタイム性の求められる処理が期待したような処理時間で処理されなかったり、高い信頼度を求められるプログラムが他のプログラムにより破壊されてしまうといった問題を引き起こす可能性がある。
こうした問題を解決する手段としては、例えばプロセッサコアなどの各種のリソースを分割してパーティションを作成し、各パーティションで実行されるべき処理を決定することで、各パーティションで実行される処理が他の処理から受ける影響を少なくするという構成が考えられる。
【0005】
例えば特許文献1には、複数の論理パーティションを設けることによりCPUなどの共有リソースを分割し、各々の論理パーティションで異なるOSを動作させる構成が開示されている。この構成においては、ハイパーバイザが各論理パーティションを管理するとともに、このハイパーバイザは各論理パーティションから隠ぺいされている。
また、特許文献2には、制御OSが複数のゲストOSを制御し、この複数のゲストOSごとにパーティションを設ける構成が開示されている。
このような構成を使用すれば、複数のOSにより制御されるサブシステム間の干渉を避けることができるとともに、複数のOSを制御する制御用OSのプログラムやデータをサブシステムから保護することができる。
【特許文献1】特開2008−243203号公報
【特許文献2】特開2006−127462号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記した従来技術では、異なるOSを使用しているため、OS間の連携が複雑化するという問題点があった。
また、OS間で通信を行うには、ハイパーバイザもしくは制御OSを介して行わねばならず、処理のオーバヘッドが発生するという問題点があった。
更には、重複するOSが搭載されることによりメモリ容量が圧迫される、デバイスドライバ等のプログラムを共有できない、システム全体の分析が困難になる、などの問題点があった。
【課題を解決するための手段】
【0007】
各請求項にそれぞれ記載された発明は、上記した課題を解決するためになされたものである。以下、図面に示した発明の実施の形態を用いて、各請求項にそれぞれ記載された発明の特徴および作用を説明する。
なお、符号は、発明の実施の形態において用いた符号を示し、本発明の技術的範囲を限定するものではない。
(請求項1)
請求項1に記載の発明は、以下を特徴とする。
すなわち、請求項1に記載のオペレーティングシステム1は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、を有するシステム上で動作するオペレーティングシステム1であって、前記複数のプロセッサコア100を1以上のプロセッサコア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に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする。
【0008】
ここで「コアユニット」は、本発明に係るオペレーティングシステムが制御するプロセッサに関し、このプロセッサが有する複数のプロセッサコアをグループ化したものである。コアユニットを構成するプロセッサコアの数は1以上であれば良く、例えば1つのプロセッサコアからなるコアユニットとしても良いし、複数のプロセッサコアからなるコアユニットとしても良い。しかしながら、プロセッサが有するすべてのプロセッサコアは、いずれかのコアユニットに属するようにしなければならない。
「コアユニット管理手段」は、上記したプロセッサコアをコアユニットとしてグループ化して管理するためのものである。グループ化および管理の方法としては、例えば、各プロセッサコアがどのコアユニットに属するかをユーザが記述可能な定義ファイルを設け、この定義ファイルの内容をシステムの初期化時に読み込むことにより、プロセッサコアをグループ化し、そのグループ化された情報を管理テーブルなどで管理するような態様が考えられる。また、このような定義ファイルを用いる態様に限らず、所定のAPIなどを呼び出すことにより、各プロセッサコアがどのコアユニットに属するかを制御するという態様も考えられる。
【0009】
「オペレーティングシステム」は、プロセッサやメモリなどのハードウェアを、後述する各手段として機能させるための制御プログラムである。また、このオペレーティングシステムは、ハードウェアに対して直接的にアクセスできるとともに、ハードウェアを抽象化して各種アプリケーションプログラムに各種のサービスを提供するものである。
「処理単位」は、種々の処理を行うための単位を意味するものであり、一定の法則のもとに分割された処理の集まりである。例えば、タスク、スレッド、プロセスなどが該当する。
「処理単位生成手段」は、前記した処理単位を生成するためのものであり、例えば、処理単位としてタスクが用いられている場合においては、所定の関数呼び出しなどによりタスクを生成するプログラムなどが該当する。なお、処理単位の生成方法は関数呼び出しに限られず、例えば、定義ファイルなどの静的な定義により生成されるものであっても良い。
【0010】
「コアユニット決定手段」は、生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するものである。例えば、処理単位としてタスクが用いられている場合においては、タスク生成時に指定するパラメータなどにより、コアユニットを決定しても良い。この場合、タスク生成時にコアユニットが決定するので、処理単位生成手段がコアユニット決定手段の役割を果たすこととなる。なお、このような態様によらず、処理単位が生成されたのちに、所定のAPIなどを呼び出すことにより、コアユニットを決定することとしても良い。また、一度決定されたコアユニットを、API呼び出しなどにより変更することが可能に形成しても良い。
【0011】
「処理単位グループ」は、コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位をグループ化したものである。この処理単位グループは、コアユニットに対応するように、コアユニットと同数だけ設けられる。なお、処理単位のすべてが処理単位グループに属している必要はなく、一部の例外的な処理単位は処理単位グループに属さないとしても良い。例えば、OSのカーネル部に含まれる処理単位などの特殊な処理単位は処理単位グループに属さないとしても良い。
「処理単位グループ化手段」は、処理単位を上記した処理単位グループにグループ化するものである。例えば、コアユニットごとに処理単位の情報を管理するテーブルを設けても良い。この場合、上記したコアユニット決定手段によりある処理単位のコアユニットが決定されると、当該処理単位の情報がコアユニットごとに設けられたテーブルに登録されて管理される。これにより、同一のコアユニット上で実行される処理単位がグループ化される。なお、このような態様に限らず、各処理単位が保持している情報にコアユニット情報を記述し、この情報を必要に応じて処理単位グループ化手段が読み出して、各処理単位がどの処理単位グループに属しているかを判別するような態様としても良い。
【0012】
「処理単位実行手段」は、各コアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位を、当該コアユニット上で実行させるものである。例えば、処理単位としてタスクが用いられている場合においては、タスクを実行するためのディスパッチャなどが該当する。なお、この処理単位実行手段は、各コアユニットに対応して設けられるので、言い換えると、処理単位グループの数と同数だけ設けられる。
「メモリ領域割り当て手段」は、前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるものである。すなわち、メモリ領域割り当て手段により、当該オペレーティングシステムが制御するシステムに設けられたメモリのうちの所定のメモリ領域は、各処理単位グループのそれぞれが使用するメモリ領域として、割り当てられている。
【0013】
「不正アクセス検出手段」は、不正アクセスを検出するためのものである。
ここで、不正アクセスを検出する具体的な態様としてはさまざまな態様が考えられ、例えば、アクセスモニタプログラムを用いる態様が考えられる。この場合、アクセスモニタプログラムは物理アドレスによるアクセスを制御する。つまり、コアユニットごとに保護される物理アドレスを設定することにより、その設定された領域に対するアクセスを検出するように構成する。この構成は、プロセッサの機能を使用しないため、アクセスモニタが搭載されているシステムであれば適用可能である。この場合、不正アクセス検出手段は、当該アクセスモニタプログラムとして形成される。
【0014】
また、他の不正アクセスを検出する方法としては、プロセッサのページテーブル機能を使用する態様が考えられる。すなわち、コアユニットごとにページテーブルを持つように設定し、各コアユニットのページテーブルには、各コアユニットがアクセス可能なメモリ領域にのみ有効な値を設定する。この構成は、メモリ管理ユニット(MMU)を有するプロセッサであれば適用可能である。この場合、不正アクセス検出手段は、MMUが検知した不正アクセスを処理するプログラムとして形成される。
更に、他の不正アクセスを検出する方法としては、例えば、プロセッサの保護領域指定機能を使用する態様が考えられる。ここで言う保護領域指定機能とは、アドレス空間を複数の保護領域に分割し、各領域に対するアクセス権を個別に設定することができ、これにより、特定のメモリ領域を保護することが可能な機能を意味する。すなわち、コアユニットごとに保護領域を設け、この保護領域内でコアユニットに係る処理単位を実行する。そして、この保護領域に、当該保護領域外からアクセスがあったときに、このアクセスを不正アクセスとして検出する。この構成は、保護領域指定機能を有するプロセッサであれば適用可能である。この場合、不正アクセス検出手段は、保護領域指定機能が検知した不正アクセスを処理するプログラムとして形成される。
【0015】
なお、請求項1の不正アクセス検出手段は、メモリ領域割り当て手段によって各処理単位グループに割り当てられた固有のメモリ領域に対し、他の処理単位グループに属する処理単位がアクセスしたときに、このアクセスを不正アクセスとして検出するものである。
(請求項1記載の発明の作用)
このようなオペレーティングシステムにおいては、複数のプロセッサコアが1以上のプロセッサコアからなる複数のコアユニットにグループ化して管理される。また、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成するようになっている。そして、1の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときには、このアクセスが不正アクセスとして検出される。
【0016】
(請求項2)
請求項2に記載の発明は、上記した請求項1に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項2に記載のオペレーティングシステムは、前記処理単位生成手段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に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【0017】
すなわち、本請求項に係る処理単位生成手段は、処理単位として「通常処理単位」と「特権処理単位」とを生成可能に形成されている。そして、「特権処理単位」は「通常処理単位」よりも強いアクセス権を有するものである。
ここで、どの処理単位を「通常処理単位」とし、また「特権処理単位」とするかは任意である。しかしながら、例えば、処理単位としてタスクが用いられている場合においては、ユーザが作成したアプリケーションタスクを「通常処理単位」とし、ファイルシステムなどのミドルウェアのタスクを「特権処理単位」とするような態様が考えられる。このように形成することで、ユーザが作成したアプリケーションタスクについてはアクセス権を制限し、より汎用的なシステムプログラムに強いアクセス権を与えることができる。
【0018】
なお、処理単位生成手段が生成する処理単位としては、「通常処理単位」と「特権処理単位」との2種類に限るものではない。例えば、OSのカーネル部に含まれる処理単位などの特殊な処理単位は、「通常処理単位」および「特権処理単位」とは異なる種類の処理単位とすることにより、「通常処理単位」および「特権処理単位」とは異なるアクセス権を与えるように構成しても良い。
また、本請求項に係るメモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、各処理単位のそれぞれが使用するメモリ領域として割り当てられている。
【0019】
そして、本請求項に係る不正アクセス検出手段は、請求項1に言う不正アクセスの検出に加え、通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしたときには、このアクセスを不正アクセスとして検出する。
また、処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われる。その結果、請求項1に記載されているとおり、不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域(すなわち、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域の一部として扱われるメモリ領域)に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出する。
【0020】
その一方で、不正アクセス検出手段は、特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしたときには、このアクセスを不正アクセスとして検出しない。すなわち、特権処理単位は、当該特権処理単位の属する処理単位グループ固有のメモリ領域にアクセスできるのみならず、通常処理単位であるか特権処理単位であるかを問わず、同一の処理単位グループに属する処理単位でさえあれば、当該処理単位固有のメモリ領域に対してもアクセスできるものである。
上記した内容を言い換えると、本請求項に係る不正アクセス検出手段が不正アクセスとして検出するのは以下の場合である。
【0021】
1)通常処理単位が、当該通常処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域(当該特権処理単位の属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域を含む)に対してアクセスしたとき。
2)特権処理単位が、当該特権処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域(当該特権処理単位の属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域を含む)に対してアクセスしたとき。
3)通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしたとき(1以外の場合)。
【0022】
(請求項2記載の発明の作用)
このようなオペレーティングシステムにおいては、弱いアクセス権の通常処理単位は、当該通常処理単位固有のメモリ領域にのみアクセスできる。また、通常処理単位よりも強いアクセス権を有する特権処理単位は、当該特権処理単位固有のメモリ領域のみならず、当該特権処理単位の属する処理単位グループ固有のメモリ領域、および当該特権処理単位の属する処理単位グループに属する他の処理単位固有のメモリ領域にもアクセスできる。
更には、特権処理単位であっても、当該特権処理単位の属する処理単位グループとは異なる別の処理単位グループ固有のメモリ領域にはアクセスできない。
【0023】
(請求項3)
請求項3に記載の発明は、上記した請求項1または請求項2に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項3に記載のオペレーティングシステム1は、前記複数のコアユニット101のうちの少なくとも2以上のコアユニット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に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【0024】
ここで「共有処理」は、前記複数のコアユニットのうちの少なくとも2以上のコアユニット上で実行可能なものである。そして、この共有処理は、当該共有処理を実行可能なコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行されものである。例えば、この共有処理として、複数の処理単位グループに共通のアプリケーションを設けることができる。更に具体的には、例えば、この共有処理として、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスク、などを設ける態様が考えられる。
なお、共有処理を実行可能なコアユニットの範囲としては、本発明に係るコアユニット管理手段が管理するすべてのコアユニットで実行可能としても良いし、一部のコアユニットでのみ共有処理を実行可能としても良い。
【0025】
「共有処理定義手段」は、上記共有処理を定義するためのものである。例えば、共有処理として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、共有処理として定義するような態様が考えられる。
ところで、本請求項に係るメモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、共有処理が使用するメモリ領域として割り当てられている。
そして、本請求項に係る不正アクセス検出手段は、前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出する。すなわち、共有処理固有のメモリ領域は、処理単位グループのいずれかに属する処理単位によるアクセスから保護されるようになっている。
【0026】
しかしながら、共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しない。すなわち、共有処理は、自らを共有するコアユニットに係る処理単位グループ固有のメモリ領域に対しては、自由にアクセスが可能である。
(請求項3記載の発明の作用)
このようなオペレーティングシステムにおいては、複数のコアユニット間で共有されて実行可能な共有処理を設けることができる。そして、共有処理固有のメモリ領域は、処理単位によるアクセスから保護されるようになっている。また、共有処理は、関連する処理単位グループ固有のメモリ領域に対しては、自由にアクセスできるように構成されている。
【0027】
(請求項4)
請求項4に記載の発明は、上記した請求項3に記載の発明の特徴点に加え、以下を特徴とする。
すなわち、請求項4に記載のオペレーティングシステム1は、前記複数のコアユニット101のうちの任意のコアユニット101上で実行可能なカーネル部50を定義するカーネル部定義手段47を有し、前記カーネル部50は、当該カーネル部50を実行するコアユニット101に係る前記処理単位実行手段30により当該コアユニット101上で実行され、前記メモリ領域割り当て手段35は、前記カーネル部50に対して、前記メモリ3からカーネル部50固有のメモリ領域212を割り当てており、前記不正アクセス検出手段40は、前記カーネル部50に含まれない処理が、前記カーネル部50固有のメモリ領域212に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、前記カーネル部50が、前記処理単位グループ200固有のメモリ領域222および前記共有処理55固有のメモリ領域211のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする。
【0028】
ここで「カーネル部」は、前記複数のコアユニットのうちの任意のコアユニット上で実行可能なものである。言い換えると、このカーネル部は、前記複数のコアユニットのうちいずれのコアユニット上でも実行可能なものである。そして、このカーネル部は、当該カーネル部を実行するコアユニットに係る前記処理単位実行手段により、当該コアユニット上で実行されものである。このカーネル部は、本発明に係るオペレーティングシステムの根幹部分をなすプログラムであり、ハードウェアリソースの管理を行ったり、処理単位の管理を行ったりするものである。例えば、このカーネル部は、本発明に係る処理単位生成手段や処理単位実行手段などを含むものである。また、システムタイマ割り込みハンドラ、CPU例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを、このカーネル部の一部としても良い。
【0029】
「カーネル部定義手段」は、上記カーネル部を定義するためのものである。例えば、カーネル部として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、カーネル部として定義するような態様が考えられる。
ところで、本請求項に係るメモリ領域割り当て手段は、カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステムが制御するシステムに設けられたメモリのうち、所定のメモリ領域は、カーネル部が使用するメモリ領域として割り当てられている。
そして、本請求項に係る不正アクセス検出手段は、カーネル部に含まれない処理が、カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出する。すなわち、カーネル部固有のメモリ領域は、カーネル部以外の他のプログラムから保護されるようになっている。
【0030】
逆に、カーネル部が、処理単位グループ固有のメモリ領域や、共有処理固有のメモリ領域にアクセスしようとしたときには、このアクセスを不正アクセスとして検出しない。すなわち、カーネル部には非常に強いアクセス権が与えられており、請求項1乃至3で説明したような各種のメモリ領域のすべてにアクセスが可能となっている。
(請求項4記載の発明の作用)
このようなオペレーティングシステムにおいては、すべてのコアユニット間で共有されて実行可能なカーネル部が設けられている。そして、カーネル部固有のメモリ領域は、他のプログラムから保護される。
【0031】
(請求項5)
請求項5に記載の発明は、以下を特徴とする。
すなわち、請求項5に記載の情報処理装置は、複数のプロセッサコア100を有するプロセッサ2と、前記複数のプロセッサコア100のすべてからアクセス可能なメモリ3と、前記プロセッサ2上で動作する請求項1から4のいずれかに記載のオペレーティングシステム1と、を有することを特徴とする。
(請求項5記載の発明の作用)
このような情報処理装置は、請求項1から4のいずれかに記載の発明と同様に作用する。
【発明の効果】
【0032】
(請求項1)
請求項1記載の構成によれば、複数のプロセッサコアを1以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するので、対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドした構成とすることができる。すなわち、複数のプロセッサコアからなるコアユニットを作成するとともに、別のプロセッサコアを用いて単一のプロセッサコアからなるコアユニットを作成すれば、複数のプロセッサコアからなるコアユニットは対称型マルチプロセッシングとして動作し、単一のプロセッサコアからなるコアユニットは非対称型マルチプロセッシングとして動作する。このように構成することにより、対称型マルチプロセッシングと非対称型マルチプロセッシングとの両方の利点を生かした構成とすることができる。例えば、高い信頼性を求められる処理は単一のプロセッサコアからなるコアユニットに割り当てることにより他の処理の影響を受けないように構成するとともに、高い信頼性を求められない処理は複数のプロセッサコアからなるコアユニットに割り当てることにより処理の負荷を分散させるように構成することができる(なお、本発明に係るコアユニット構成としては、対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドした構成に限るものではなく、すべてのコアユニットを1つのプロセッサコアからなるものとして構成しても良い。すなわち、非対称型マルチプロセッシングとして構成しても良い)。
【0033】
更には、同一のコアユニットで実行される処理単位群は、それぞれグループ化されて処理単位グループを形成している。そして、1の処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときには、このアクセスが不正アクセスとして検出されるので、それぞれのコアユニットに割り当てられた処理間での競合問題を回避できる。
そして、上記したような機能を単一のOSにより実現しているため、複数のOSを使用した場合に発生する様々な問題点を解決することが可能となっている。例えば、重複するOSが搭載されることによりメモリ容量が圧迫される、デバイスドライバ等のプログラムを共有できない、システム全体の分析が困難になる、などの問題点を解決することが可能となっている。
【0034】
(請求項2)
請求項2記載の構成によれば、弱いアクセス権の通常処理単位は、当該通常処理単位固有のメモリ領域にのみアクセスできる。また、通常処理単位よりも強いアクセス権を有する特権処理単位は、当該特権処理単位固有のメモリ領域のみならず、同一の処理単位グループに属する他の処理単位のメモリ領域にもアクセスできる。これにより、処理単位グループ内においても、処理単位ごとに異なるアクセス権を付与することができるので、各処理単位固有のメモリ領域を適切に保護することが可能となっている。
更には、特権処理単位であっても、他の処理単位グループ固有のメモリ領域にはアクセスできないため、処理単位グループが互いに干渉することを避けることができ、処理単位グループの独立性を保つことができる。
【0035】
(請求項3)
請求項3記載の構成によれば、複数のコアユニット間で共有されて実行可能な共有処理を設けることができる。そして、共有処理固有のメモリ領域は、処理単位によるアクセスから保護されるようになっている。このため、例えばデバイスドライバやミドルウェアなどの汎用性の高いアプリケーションを処理単位グループの枠を超えて共有することが可能となっている。すなわち、複数のOSを使用した場合にはこのような共有ができないため、システムが複雑となる、メモリ容量が圧迫される、などの問題点があったが、これらの問題点を解決することが可能となっている。
【0036】
また、共有処理は、処理単位グループに属する処理単位よりも強いアクセス権を有している。このため、実行する処理の信頼性に応じて、共有処理とするか、処理単位グループに属する処理単位とするか、を選択することができる。例えば、デバイスドライバを共有処理として設けるとともに、ユーザアプリケーションを処理単位グループに属する処理単位として設けることにより、デバイスドライバが使用するメモリ領域をユーザアプリケーションが破壊するといった問題を回避できる。
(請求項4)
請求項4記載の構成によれば、すべてのコアユニット間で共有されて実行可能なカーネル部を設けることができる。そして、カーネル部固有のメモリ領域は、他のプログラムから保護されるようになっている。このため、オペレーティングシステムの根幹部であるカーネル部が、他のプログラムにより破壊されることを防止することができる。
【0037】
また、OSの機能を実現するプログラム間でも信頼性が異なる環境では、信頼性の高いプログラムをカーネル部とし、信頼性の低いプログラムを共有処理もしくは特権処理単位として実行することにより、信頼性の低いプログラムが信頼性の高いプログラムのメモリを破壊するという問題を回避でき、信頼性の高いシステムを構築することができる。
(請求項5)
請求項5記載の構成によれば、請求項1から4のいずれかに記載の発明と同様の効果を奏することができる。
【発明を実施するための最良の形態】
【0038】
図1〜12は、本発明の実施の形態の一例を示すものであり、図1は本発明の情報処理装置の構成を示すブロック図、図2は本発明のコアユニットの構成を示すブロック図、図3は本発明のタスクグループの概要を示す説明図、図4は本発明のシステムの初期化処理を示すフロー図、図5は本発明のタスクの実行処理を示すフロー図、図6は本発明の各実行モードでのアクセス権を示す表、図7は本発明の各エリア間でアクセス可能な範囲を示す概念図、図8は本発明の割り込み処理を示すフロー図、図9は本発明のシステムコール処理を示すフロー図、図10は本発明の不正アクセス検出処理を示すフロー図、図11は本発明の不正アクセス検出したときのCPU例外ハンドラの処理を示すフロー図、図12は本発明の不正アクセス検出したときの例外マネージャタスクの処理を示すフロー図を各々示すものである。
【0039】
以下、本発明の実施形態について、図を参照しながら説明する。
(情報処理装置)
図1は、本発明に係る情報処理装置の構成を示すブロック図である。この図が示すように、本発明に係る情報処理装置は、プロセッサ2と、メモリ3と、オペレーティングシステム1と、を有している。なお、情報処理装置の構成としては少なくともこれらを有していれば良く、他の構成を含んでいても良い。例えば、外部記憶装置や入出力装置などを備えていても良い。
(プロセッサ2)
本実施形態に係るプロセッサ2は、複数のプロセッサコア100を1つの集積回路に実装したマルチコアプロセッサであり、図1に示すように、4つのプロセッサコア100を有している。なお、プロセッサコア100の数としてはこれに限らず、5つ以上でも良いし、3つ以下でも良い。
【0040】
このプロセッサ2は、後述するオペレーティングシステム1や、オペレーティングシステム1により作成されるタスク等を実行する。
また、このプロセッサ2は、後述する保護領域指定機能と、後述する複数の実行モードと、を有するものである。
(メモリ3)
メモリ3は、図1に示すように、バスによりプロセッサ2と接続されている。このメモリ3には、後述するオペレーティングシステム1や、オペレーティングシステム1により作成されるタスク等のプログラムや種々のデータが記憶され、また、プログラムを実行する際のデータを一時的に記憶するための領域としても使用される。
【0041】
(オペレーティングシステム1)
オペレーティングシステム1は、プロセッサやメモリなどのハードウェアを、下記の(1)乃至(10)の手段として機能させるための制御プログラムである。このオペレーティングシステムは、ハードウェアに対して直接的にアクセスできるとともに、ハードウェアを抽象化して各種アプリケーションプログラムに各種のサービスを提供するものである。
なお、オペレーティングシステム1としては、下記の(1)乃至(10)の手段に限定されるものではなく、他の手段を含んでいても良い。
(1)コアユニット管理手段10
(2)タスク生成手段25
(3)コアユニット決定手段20
(4)タスクグループ化手段26
(5)タスク実行手段30
(6)メモリ領域割り当て手段35
(7)不正アクセス検出手段40
(8)モード切替手段45
(9)共有カーネルアプリケーション定義手段46
(10)カーネル部定義手段47
以下、それぞれについて説明する。
【0042】
(1)コアユニット管理手段10
コアユニット管理手段10は、上記したプロセッサコア100をコアユニット101としてグループ化して管理するためのものである。
本実施形態においては、各プロセッサコア100がどのコアユニット101に属するかを記述するための定義ファイルが設けられている。そして、コアユニット管理手段10は、この定義ファイルをシステムの初期化時に読み込むことにより、プロセッサコア100をコアユニット101としてグループ化している。グループ化の情報は、後述するタスクグループ化手段26の有するテーブル管理され、後述するタスクグループと関連付けられる。
【0043】
なお、コアユニット101を指定する定義ファイルはユーザが自由に書き換えることが可能であり、この定義ファイルを書き換えることで、コアユニット101の構成を自由に決定することができる。
なお、本実施形態においては、図1に示すように、コアユニット101を3つ設けている。すなわち、1つのプロセッサコア100からなるコアユニット101(このように単一のプロセッサコア100からなるコアユニット101を、以下「シングルコアユニット」と呼ぶ)が2つと、2つのプロセッサコア100からなるコアユニット101(このように複数のプロセッサコア100からなるコアユニット101を、以下「マルチコアユニット」と呼ぶ)が1つの、3つである。なお、コアユニット101の数としてはこれに限らず、4つ以上でも良いし、2つ以下でも良い。しかしながら、プロセッサ2が有するすべてのプロセッサコア100は、いずれかのコアユニット101に属するようにしなければならない。
【0044】
例えば、図2は、コアユニット101の構成例を示す図であるが、この図が示すように、コアユニット101の構成としては様々な態様が考えられる。すなわち、構成例1に示すようにすべてのプロセッサコア100で1つのマルチコアユニットを構成することとしても良い。この場合、システムの制御方法は完全な対称型マルチプロセッシングとなる。また、構成例2に示すようにシングルコアユニットとマルチコアユニットを組み合わせた構成としても良い。この場合、システムの制御方法は対称型マルチプロセッシングと非対称型マルチプロセッシングとをブレンドしたものとなる。更に、構成例3に示すようにシングルコアユニットのみからなる構成としても良い。この場合、システムの制御方法は完全な非対称型マルチプロセッシングとなる。なお、本実施形態においては、構成例2の構成を採用している。
【0045】
(2)タスク生成手段25
タスク生成手段25は、オペレーティングシステム1が制御するタスクを生成するためのものであり、請求項に言う「処理単位生成手段」に相当する。
本実施形態に係るタスク生成手段25は、タスク生成用の所定のAPIが呼び出されたときに、このAPIのパラメータとして指定された条件に従ってタスクを生成する。
(3)コアユニット決定手段20
コアユニット決定手段20は、生成されたタスクがどのコアユニット101で実行されるかを決定するものである。
【0046】
本実施形態においては、タスク生成手段25が、実質的にこのコアユニット決定手段20を構成している。すなわち、本実施形態においては、タスク生成用のAPIのパラメータとして、生成されるタスクがどのコアユニット101で実行されるかの情報を指定することが可能である。そして、タスク生成手段25すなわちコアユニット決定手段20は、このパラメータを取得することにより、タスク生成時にコアユニット101を決定する。
なお、タスクを実行するコアユニット101がマルチコアユニットである場合、このマルチコアユニットを構成する複数のプロセッサコア100のうちのいずれのプロセッサコア100上でタスクが実行されるかは、後述するスケジューリングポリシーによって決定される。
【0047】
(4)タスクグループ化手段26
タスクグループ化手段26は、アプリケーションタスク70をタスクグループ200にグループ化するものであり、請求項に言う処理単位グループ化手段に相当する。
ここで、タスクグループ200とは、上記コアユニット決定手段20により同一のコアユニット101で実行されると決定されたアプリケーションタスク70をグループ化したものであり、請求項に言う処理単位グループに相当する。このタスクグループ200は、コアユニット101に対応するように、コアユニット101と同数だけ設けられる。
なお、タスクグループ化手段26は、コアユニット101ごとに設けられたテーブルを用いて、アプリケーションタスク70をグループ化している。具体的には、上記コアユニット決定手段20によりアプリケーションタスク70が実行されるコアユニット101が決定されたのちに、当該アプリケーションタスク70の情報を、対応するコアユニット101に係るテーブルで管理し、これにより同一のコアユニット101上で実行されるアプリケーションタスク70をグループ化している。
【0048】
ところで、本実施の形態においては、タスクグループ200に属しているのは、タスク生成手段25により生成されたタスクのすべてではなく、後述する共有カーネルアプリケーション55や、カーネル部50に含まれるタスクは、いずれのタスクグループ200に属さない。詳細は後述する。
(5)タスク実行手段30
タスク実行手段30は、各コアユニット101に対応して設けられ、当該コアユニット101に対応するタスクグループ200に属するアプリケーションタスク70等を、当該コアユニット101上で実行させるものであり、請求項に言う処理単位実行手段に相当する。
【0049】
具体的には、タスク実行手段30は、タスクを実行するためのディスパッチャである。なお、このタスク実行手段30は、各コアユニット101に対応して設けられるので、言い換えると、タスクグループ200の数と同数(本実施形態においては3つ)設けられている。
なお、タスク実行手段30が実行するのはアプリケーションタスク70に限らず、その他のプログラム、具体的には、後述する共有カーネルアプリケーション55や、カーネル部50に含まれるプログラムをも実行するものである。
(6)メモリ領域割り当て手段35
メモリ領域割り当て手段35は、後述する各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50、のそれぞれに対し、メモリ3からそれぞれ固有のメモリ領域を割り当てるものである。すなわち、当該オペレーティングシステム1が制御するシステムに設けられたメモリのうち、所定のメモリ領域は、各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50、のそれぞれが使用するメモリ領域として割り当てられている。
【0050】
このメモリ領域割り当て手段35は、具体的には、各タスクグループ200、各アプリケーションタスク70、共有カーネルアプリケーション55、カーネル部50のそれぞれをメモリ3のどこに配置すべきかを定めるメモリマップを規定する手段と、このメモリマップに従って、プログラムやデータを配置する手段と、からなる。プログラムやデータを配置する手段としては、ROMに記憶されたプログラムを当該プログラムの実行時にRAMに展開するプログラムや、システムの起動後に動的にロードされたプログラムをRAMに配置するプログラムが該当する。
なお、本実施形態においては、上記したメモリマップの一部は、オペレーティングシステム1のコンパイル(リンク)時に予め決定され、その他はシステムの初期化時に決定される。これにより、どのメモリ領域が、どういったアクセスから保護されるかが決定される。すなわち、メモリマップ上のある番地からある番地までは共有カーネルアプリケーション55用のメモリ領域であり、これとは別のある番地からある番地まではカーネル部50用のメモリ領域である、というように各メモリ領域が規定される。そして、各アプリケーションタスク70に固有のメモリ領域222に各アプリケーションタスク70を配置し、共有カーネルアプリケーション55に固有のメモリ領域211に共有カーネルアプリケーション55を配置し、カーネル部50に固有のメモリ領域212にカーネル部50を配置する。このように構成することにより、これらの各メモリ領域に配置されたプログラムが他のメモリ領域にアクセスしたときに、プログラムの配置されたメモリ領域の属性と、プログラムがアクセスしようとしているメモリ領域の属性と、を比較することにより不正アクセスを検出し、メモリ保護がされるようになっている。
【0051】
具体的には、本実施形態では、プロセッサ2の保護領域指定機能(特定のメモリ領域を保護することが可能な機能)と、プロセッサ2の実行モードと、の2つの機能を用いてメモリ保護を実現している。このメモリ保護の詳細については後述する。
(7)不正アクセス検出手段40
不正アクセス検出手段40は、メモリ3への不正アクセスを検出するためのものである。不正アクセスとして検出されるアクセスの内容は後述する。
なお、本実施形態の不正アクセス検出手段40は、具体的には、上述したプロセッサ2の保護領域指定機能とプロセッサ2の実行モードとにより検知された不正アクセスを処理する手段として構成されている。すなわち、プロセッサ2が不正アクセスを検知してCPU例外を発生させた場合に、そのCPU例外を処理するプログラムとして構成されている。
【0052】
(8)モード切替手段45
上述したプロセッサ2の実行モードを切り替えるためのものである。すなわち、本発明に係るオペレーティングシステム1は、各プロセッサコア100が処理を実行するモードとして複数の実行モードを有しており、この実行モードはモード切替手段45により適宜切り替えられる。具体的には、本実施形態では「ユーザモード」と、「システムモード」と、「カーネルモード」と、を有しており、実行される処理に応じてこれらを切り替えるようになっている。この各モードの詳細は後述する。
(9)共有カーネルアプリケーション定義手段46
共有カーネルアプリケーション定義手段46は、共有カーネルアプリケーション55を定義するためのものであり、請求項に言う共有処理定義手段に相当する。
【0053】
共有カーネルアプリケーション定義手段46は、共有カーネルアプリケーション55として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、共有カーネルアプリケーション55として定義する。共有カーネルアプリケーション55として定義されたプログラムは、共有カーネルアプリケーション55に与えられるべきアクセス権が設定される。すなわち、実質的には、前述したメモリ領域割り当て手段35が、この共有カーネルアプリケーション定義手段46としても機能する。
なお、共有カーネルアプリケーション55とは、複数のコアユニット101のうちの少なくとも2以上のコアユニット101上で実行可能なものである。そして、この共有カーネルアプリケーション55は、当該共有カーネルアプリケーション55を実行可能なコアユニット101に係るタスク実行手段30により当該コアユニット101上で実行されものである。
【0054】
本実施形態では、共有カーネルアプリケーション55として、例えば、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスクが設けられている。
なお、本実施の形態では、共有カーネルアプリケーション55はすべてのコアユニット101で実行可能であるが、これに限らず、一部のコアユニット101でのみ実行可能な共有カーネルアプリケーション55を設けても良い。
(10)カーネル部定義手段47
カーネル部定義手段47は、カーネル部50を定義するためのものである。
【0055】
カーネル部定義手段47は、カーネル部50として扱うべきプログラムを特定のメモリ領域に配置することにより、当該プログラムに属性を与え、カーネル部50として定義する。カーネル部50として定義されたプログラムは、カーネル部50に与えられるべきアクセス権が設定される。すなわち、実質的には、前述したメモリ領域割り当て手段35が、このカーネル部定義手段47としても機能する。
なお、カーネル部50は、複数のコアユニット101のうちのいずれかのコアユニット101上で実行可能なものである。そして、このカーネル部50は、当該カーネル部50を実行可能なコアユニット101に係るタスク実行手段30により当該コアユニット101上で実行されものである。カーネル部50は、オペレーティングシステム1の根幹部分をなすプログラムであり、ハードウェアリソースの管理を行ったり、処理単位の管理を行ったりするものである。本実施形態に係るカーネル部50は、タスク生成手段25やタスク実行手段30などの各手段、システムタイマ割り込みハンドラ、CPU例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを含んでいる。
【0056】
(タスクグループ200)
次に、図3を見ながら、タスクグループ200について説明する。
タスクグループ200は、前述したように、コアユニット決定手段20により同一のコアユニット101で実行されると決定されたアプリケーションタスク70(請求項に言う「処理単位」)をグループ化したものである。このタスクグループ200は、コアユニット101に対応するように、コアユニット101と同数だけ設けられる。
タスクグループ200の実体はアプリケーションタスク70の集合であり、同一のタスクグループ200に属するアプリケーションタスク70は、同一のコアユニット101で実行されるようになっている。例えば、図3のタスクグループ1に属するアプリケーションタスク70はコアユニット1で実行され、タスクグループ2に属するアプリケーションタスク70はコアユニット2で実行され、タスクグループ3に属するアプリケーションタスク70はコアユニット3で実行される。なお、図3ではタスクグループ200に属するアプリケーションタスク70を3つとしているが、これは説明の便宜上であり、アプリケーションタスク70の数はシステムの設計により適宜決定することができる。
【0057】
ところで、アプリケーションタスク70は、ユーザアプリケーションタスク65(請求項に言う「通常処理単位」)とカーネルアプリケーションタスク60(請求項に言う「特権処理単位」)とからなる。
そして、これらのユーザアプリケーションタスク65とカーネルアプリケーションタスク60とからなるタスクグループ200のそれぞれが後述するタスクグループの保護領域230に配置されることにより、1つの独立したサブシステムを構成している。つまり、後述するように、各タスクグループの保護領域230間でメモリ保護がされているため、他のタスクグループの保護領域230から干渉されることがないサブシステムを構成している。これにより、例えば既存システムの流用やシステムの統合を行う際に、これらのシステムを所定のタスクグループの保護領域230に配置してサブシステム化することができる。これにより、他のサブシステムから受ける影響を小さくし、サブシステム内のリアルタイム性の予測を容易とすることが可能となっている。また、これらのサブシステムを互いに独立したものとすることができるので、他のサブシステムによるメモリ破壊からプログラムを保護することが可能となっている。
【0058】
更には、前述したように、コアユニット101の構成を自由に設定できるため、例えば、高い信頼性が求められるサブシステムはシングルコアユニットで動作させ、また、高い信頼性が求められない処理は統合してサブシステムとし、マルチコアユニットで動作させることができる。このように構成すれば、高い信頼性が求められるサブシステムは他のサブシステムの影響を全く受けずに動作させることができ、また、高い信頼性が求められないサブシステムは効率的にプロセッサ2資源を活用して動作させることができる。この例は、図3で言えば、タスクグループ1およびタスクグループ2が高い信頼性が求められるサブシステム、タスクグループ3が高い信頼性が求められない処理を統合したサブシステム、ということになる。
【0059】
ところで、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60とがどのように切り分けられるのかはサブシステムの構成による。一般的には、カーネルアプリケーションタスク60は、サブシステム特有のシステム処理を行うタスク(例えばミドルウェアタスク)である。また、ユーザアプリケーションタスク65は、これらのシステム処理を使用して動作するアプリケーションタスク70である。
なお、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との一番の違いは、他のアプリケーションタスク70に対するアクセス権(不正アクセス検出手段40が不正アクセスとして検出するアクセスの違い)であるが、この点は後ほど詳述する。
【0060】
また、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との他の違いとしては、カーネルアプリケーションタスク60はI/Oに直接アクセスできる点がある。また、カーネルアプリケーションタスク60のみが呼び出せるOSのAPI(システムコール)が存在する点も、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60との違いである。例えば、デバイスドライバの登録や削除は、カーネルアプリケーションタスク60のみが行える。更には、ユーザアプリケーションタスク65がOSのAPIを呼び出した場合、間違ったパラメータや、不正なバッファなどを渡してもOSが破壊されないように様々なチェックが行われるが、カーネルアプリケーションタスク60がOSのAPIを呼び出した場合にはこのようなチェックがされない点でも、ユーザアプリケーションタスク65とカーネルアプリケーションタスク60とは異なる。このことは、ユーザアプリケーションタスク65がOSのAPIを呼び出した場合には、カーネルアプリケーションタスク60がOSのAPIを呼び出した場合と比較して、パフォーマンスオーバヘッドがあるということも意味している。
【0061】
(スケジューリングについて)
次に、本システムにおけるタスクスケジューリングについて説明する。
前述したように、本システムでは、コアユニット101ごとにタスク実行手段30が設けられている。同様に、本システムは、コアユニット101ごとに図示しないスケジューラが設けられ、また、図示しないレディーキューを保持している。これにより、タスクグループ200に属するアプリケーションタスク70は、当該アプリケーションタスク70がREADY状態となると、当該タスクグループ200に係るコアユニット101用のスケジューラにより、当該コアユニット101に係るレディーキューにつながれることとなる。そして、当該レディーキューの先頭にあるタスクが、タスク実行手段30により順次実行される。すなわち、タスクグループ200に属するアプリケーションタスク70は、必ず当該アプリケーションタスク70に係るコアユニット101上で動作することになる。
【0062】
なお、タスクグループ200に係るコアユニット101がマルチコアユニットの場合、当該タスクグループ200に属するアプリケーションタスク70がタスク実行手段30により実行される条件は、当該アプリケーションタスク70がレディーキューの先頭となった時に、(1)マルチコアユニット内にアイドル状態のプロセッサコア100があるか、もしくは(2)マルチコアユニット内のプロセッサコア100でスケジュールされているアプリケーションタスク70の中に、当該アプリケーションタスク70よりも優先度の低いアプリケーションタスク70があったとき、のいずれかに該当する場合である。
ところで、マルチコアユニットは複数のプロセッサコア100からなるため、マルチコアユニットに係るアプリケーションタスク70が実行される場合、どのプロセッサコア100で実行されるのかを決定する必要がある。マルチコアユニットに係るアプリケーションタスク70が実行されるプロセッサコア100は以下の通りである。
【0063】
(1)アイドル状態のプロセッサコア100
(2)アイドル状態のプロセッサコア100がないときには、最も優先度の低いタスクを実行しているプロセッサコア100
(3)アイドル状態のプロセッサコア100が複数あるか、最も優先度の低いタスクを実行しているプロセッサコア100が複数ある場合には、当該アプリケーションタスク70が前回動作したプロセッサコア100
(4)(3)で当該アプリケーションタスク70が前回動作したプロセッサコア100が選択可能でない場合は、プロセッサコア100に割り振ったID(図示せず)が小さい方のプロセッサコア100
(共有カーネルアプリケーション55、カーネル部50)
共有カーネルアプリケーション55(請求項に言う「共有処理」)は、タスクグループ200共通のシステム処理を行うものであり、前述したように、割り込みハンドラ、タイムイベントハンドラ、デバイスドライバ関数、ファイルシステムなどのミドルウェアタスクなどを含んでいる。この共有カーネルアプリケーション55は、カーネルアプリケーションタスク60と同様の処理が可能である。すなわち、I/Oに直接アクセスでき、呼び出せるOSのAPI(システムコール)もカーネルアプリケーションタスク60と同様である。異なる点は、共有カーネルアプリケーション55はタスクグループ200に属しないため、1のコアユニット101と関連付けられていない点である。これに起因して、(1)共有カーネルアプリケーション55はいずれのコアユニット101上でも実行可能であり、(2)共有カーネルアプリケーション55は後述する各タスクグループ200固有のメモリ領域にもアクセスできる点で、カーネルアプリケーションタスク60とは異なる。このように、共有カーネルアプリケーション55は、アプリケーションタスク70と比較して処理の自由度が高いため、システムに与える影響が大きいものである。そのため、後述するように、アプリケーションタスク70よりも強力に不正アクセスから保護されている。
【0064】
なお、本実施形態では、共有カーネルアプリケーション55はすべてのコアユニット101上で実行可能としているが、特定の2以上のコアユニット101上でのみ実行可能としても良い。
カーネル部50は、前述したように、オペレーティングシステム1の根幹部分をなすプログラムであり、タスク生成手段25やタスク実行手段30などの各手段、システムタイマ割り込みハンドラ、CPU例外ハンドラ、カーネルの動作に必要なカーネル内部タスクなどを含んでいる。このカーネル部50は、共有カーネルアプリケーション55と同様にタスクグループ200に属しないため、1のコアユニット101と関連付けられておらず、いずれのコアユニット101上でも実行可能である。また、システム上のすべてのメモリ領域にアクセス可能であり、システムに与える影響が最も大きい部分である。そのため、後述するように、このカーネル部50は最も強力に不正アクセスから保護されている。
【0065】
(システムの初期化)
次に、図4を見ながら本システムの初期化処理について説明する。なお、以下の初期化処理は、予め決められた所定のプロセッサコア100(マスタコア)において実行される。
まず、図4のS100において、システムの初期化処理が開始する。具体的には、モニタプログラムが起動し、各種のハードウェアの初期化処理などを行い、カーネル部50を起動させる。そして、S101に進む。
S101において、カーネル部50が起動する。そして、システム構成情報の内容に従ってカーネル部50自身の初期化処理を行う。また、メモリ関連の初期化処理、CPU/デバイスの初期化処理、タスクなどのカーネルオブジェクトの初期化処理を行う。そして、S102に進む。
【0066】
S102において、コアユニット管理手段10が所定の定義ファイルを読み込んで、コアユニット101情報を取得する。そして、S103に進む。
S103において、タスクグループ化手段26は、コアユニット管理手段10がS102で取得したコアユニット101情報を元にコアユニット101ごとの管理テーブルを作成する。これにより、タスクグループ200が作成される。そして、S104に進む。
S104において、コアユニット101(タスクグループ200)ごとの初期化処理が実行される。例えば、コアユニット101(タスクグループ200)ごとにタスク実行手段30が起動され、初期タスクが実行される。
【0067】
そして、初期化処理を終了する。
(タスクの実行)
次に、図5を見ながら本実施形態に係るタスクの実行について説明する。
まず、図5のS200において、タスク生成用のAPIが呼び出される。そして、S201に進む。
S201において、コアユニット決定手段20すなわちタスク生成手段25が、タスク生成用のAPIのパラメータとして指定されたコアユニット101情報を取得する。これにより、タスクが実行されるコアユニット101が決定される。ここで、パラメータでコアユニット101が指定されていない場合、このタスクは、呼び出し元のタスクと同じコアユニット101で実行されると決定される。なお、タスクグループ200に属するアプリケーションタスク222は、コアユニット101情報を指定してタスク生成用のAPIを呼び出すことはできない。これは、他のタスクグループ200にアプリケーションタスク222を作成できるとすると、タスクグループの保護領域230間の干渉を避けるという目的を達成できないためである。そして、S202に進む。
【0068】
S202において、タスク生成手段25がタスクを生成する。なお、生成されたタスクは、タスクグループ化手段26がコアユニット101ごとに保持している管理テーブルにより管理される。しかしながら、管理テーブルにより管理されているすべてのタスクがタスクグループ200に属しているわけではなく、管理テーブルにより管理されているタスクのうちアプリケーションタスク70のみがタスクグループ200に属するとして扱われる。言い換えると、共有カーネルアプリケーション55やカーネル部50に含まれるタスクは、タスクグループ200に係る管理テーブルにより管理されているにも拘らず、タスクグループ200には属さないとして扱われる(タスクが配置されるメモリ領域が異なるため、タスクグループ200に属するタスクとは異なるアクセス権が与えられる)。そして、S203に進む。
【0069】
S203において、タスクは、実行可能状態(READY)となるまで待機する。そして、S204に進む。
S204において、タスクがREADY状態となると、当該タスクは、タスクが実行されるコアユニット101に係るレディーキューへとつながれる。なお、このとき、タスクグループ化手段26がコアユニット101ごとに保持している管理テーブルを参照することにより、タスクが実行されるコアユニット101の情報が取得される。
その後、S205において、タスクがレディーキューの先頭となり、使用可能なプロセッサコア100があれば、タスクが実行される。
【0070】
(不正アクセスの検出)
次に、本発明に係る不正アクセスの検出について説明する。
本実施形態においては、プロセッサ2の実行モードと保護領域指定機能とを用いて不正アクセスを検出している。以下において、実行モードと保護領域指定機能とのそれぞれについて説明する。
(実行モード)
本実施形態に係るオペレーティングシステム1は、各プロセッサコア100が処理を実行するモードとして複数の実行モードを有しており、この実行モードはモード切替手段45により切り替えられる。具体的には、実行モードとして、「ユーザモード」「システムモード」「カーネルモード」が設けられており、それぞれのモードでアクセス可能なメモリ領域として、「カーネルエリア」「システムエリア」「ユーザエリア」が設けられている。
【0071】
ここで、「カーネルエリア」「システムエリア」「ユーザエリア」の各エリアは、メモリ3上に確保した特別な領域であり、これらの領域にプログラムやデータなどを配置することにより、その領域へのアクセス権を制御することで保護機能を実現するためのものである。
そして、図6に示すように、「カーネルモード」では「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能であり、「システムモード」では「カーネルエリア」以外の「システムエリア」「ユーザエリア」にアクセス可能であり、「ユーザモード」では「ユーザエリア」のみがアクセス可能となっている。
【0072】
なお、本実施形態では、ユーザエリアには、ユーザアプリケーションタスク65、およびこれらに固有のデータが配置される。
また、システムエリアには、共有カーネルアプリケーション55、カーネルアプリケーションタスク60、およびこれらに固有のデータが配置される。このシステムエリアは、プロセッサ2の機能を用いて、プロセッサ2が特権モードのときのみアクセスできるよう保護されたエリアである。
また、カーネルエリアには、カーネル部50、およびこれらに固有のデータが配置される。このカーネルエリアは、プロセッサ2が特権モードのときでもアクセスできないようにメモリ属性が与えられているエリアである。なお、ユーザエリアおよびシステムエリアに配置されたプログラムがカーネルエリアにアクセスするには、カーネル部50が持つ特別な手続きを踏んでアクセスする必要があるため、他のプログラムによりカーネル部50が破壊されることはないようになっている。
【0073】
次に、図8および図9を見ながら、実際にどのように実行モードが変更されるのかについて説明する。
まず、図8を参照して割り込み処理を例にして説明する。
図8のS300において、割り込みが発生する。そして、S301に進む。
S301において、モード切替手段45により、実行モードがカーネルモードに切り替えられる。すなわち、「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能なモードとなる。そして、S302に進む。
S302において、カーネル部50により割り込みが受け付けられる。カーネル部50は発生した割込みを特定して、該当する割込みハンドラを呼び出す。そして、S303に進む。
【0074】
S303において、モード切替手段45により、実行モードがシステムモードに切り替えられる。すなわち、「カーネルエリア」以外の「システムエリア」「ユーザエリア」にアクセス可能なモードとなる。そして、S304に進む。
S304において、割り込みハンドラが実行される。そして、S305に進む。
S305において、割り込みハンドラの実行が終了したのち、割り込み発生前のプログラムに復帰する。このとき、割り込み発生前の実行モードがシステムモードでなければ、モード切替手段45により、実行モードが割り込み発生前の実行モードに切り替えられる。例えば「ユーザモード」に切り替わった場合、「ユーザエリア」のみにアクセ可能となる。
【0075】
次に、図9を参照してシステムコール処理を例にして説明する。
図9のS400において、ユーザアプリケーションタスク65がシステムコールを発行する。そして、S401に進む。
S401において、モード切替手段45により、実行モードがカーネルモードに切り替えられる。すなわち、「カーネルエリア」「システムエリア」「ユーザエリア」のすべてにアクセス可能なモードとなる。そして、S402に進む。
S402において、カーネル部50によりシステムコールに対応した処理が実行される。そして、S403に進む。
【0076】
S403において、モード切替手段45により、実行モードがシステムコール発行前の実行モード、すなわち、ユーザモードに切り替えられる。すなわち、「ユーザエリア」のみにアクセス可能なモードとなる。
(保護領域指定機能)
本実施形態に係るプロセッサ2は、特定のメモリ領域を保護することが可能な保護領域指定機能を有している。これにより、所定のメモリ領域へのアクセス権を制御し、当該メモリ領域への不正アクセスを検出している。
具体的には、各ユーザアプリケーションタスク65に固有のメモリ領域であるユーザアプリケーションタスク固有エリア220と、各タスクグループ200に固有のメモリ領域であるタスクグループ固有エリア202と、が、この保護領域指定機能により保護されている。
【0077】
(不正アクセスとして検出されるアクセス)
次に、具体的に各メモリ領域がどのように保護されており、どのようなアクセスが不正アクセスとして検出されるのかを、図7を参照しながら説明する。
図7は、各エリア間でアクセス可能な範囲を示す概念図であり、上に行くほど保護が弱い領域であり、下に行くほど保護が強い領域となっている。そして、「OK」として示したものは、矢印の始端側のメモリ領域に配置されたプログラムが矢印の終端側のメモリ領域にアクセス可能な場合を表しており、「NG」として示したものは、矢印の始端側のメモリ領域に配置されたプログラムが矢印の終端側のメモリ領域にアクセスできない場合、すなわち、不正アクセスとして検出されるアクセスを表している。なお、便宜上、近接したレイヤの領域間のアクセス(矢印)しか記載していないが、矢印の有無に関わらず、下の領域から上の領域へのアクセスはすべて可能であり、上の領域から下の領域へのアクセスはすべて禁止されている。例えば、カーネル部固有エリア212からユーザアプリケーションタスク固有エリア220へのアクセスは可能であるが、ユーザアプリケーションタスク固有エリア220からカーネル部固有エリア212へのアクセスは当然に禁止される。
【0078】
以下、各領域について説明する。
タスクグループ共有エリア201は、システムに1つ設けられた領域であり、すべてのプログラムからアクセス可能である。例えば、タスクグループ200間でメモリを使った通信を行う場合など、アクセスが禁止されたメモリ領域間でデータの受け渡しを行う場合などに使用する。
タスクグループ固有エリア202は、タスクグループ200ごとに設けられた領域である。この領域は、当該タスクグループ200に属するアプリケーションタスク222、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222からはアクセスできない。
【0079】
ユーザアプリケーションタスク固有エリア220は、ユーザアプリケーションタスク65ごとに設けられた領域であり、各ユーザアプリケーションタスク65が配置される。この領域は、当該タスクグループ200に属するカーネルアプリケーションタスク60、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222や、当該タスクグループ200に属する他のユーザアプリケーションタスク65からはアクセスできない。
カーネルアプリケーションタスク固有エリア221は、カーネルアプリケーションタスク60ごとに設けられた領域であり、各カーネルアプリケーションタスク60が配置される。この領域は、当該タスクグループ200に属するカーネルアプリケーションタスク60、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、他のタスクグループ200に属するアプリケーションタスク222や、当該タスクグループ200に属するユーザアプリケーションタスク65からはアクセスできない。
【0080】
共有カーネルアプリケーション固有エリア211は、システムに1つ設けられた領域であり、共有カーネルアプリケーション55が配置される。この領域は、共有カーネルアプリケーション55、カーネル部50からアクセス可能である。しかしながら、アプリケーションタスク222からはアクセスできない。
カーネル部固有エリア212は、システムに1つ設けられた領域であり、カーネル部50が配置される。この領域は、カーネル部50のみアクセス可能である。アプリケーションタスク222や共有カーネルアプリケーション55からはアクセスできない。
なお、上述したユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とが、請求項に言う「処理単位固有のメモリ領域」に相当する。また、このユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とに、タスクグループ固有エリア202を加えた領域が、請求項に言う「処理単位グループ固有のメモリ領域」に相当する。
【0081】
ところで、(A)(B)(C)として示したものは、それぞれ(A)ユーザエリア(B)システムエリア(C)カーネルエリアを意味するものである。すなわち、タスクグループ共有エリア201、タスクグループ固有エリア202、ユーザアプリケーションタスク固有エリア220は、ユーザエリアである。カーネルアプリケーションタスク固有エリア221、共有カーネルアプリケーション固有エリア211は、システムエリアである。カーネル部固有エリア212は、カーネルエリアである。そして、このように各エリアの属性が決められていることにより、前述したような実行モードの切り替えがおこなわれる。すなわち、(C)のエリアに配置されたプログラムを実行する場合には、カーネルモードに切り替えられ、(A)(B)(C)のすべてのエリアにアクセス可能となる。(B)のエリアに配置されたプログラムを実行する場合には、システムモードに切り替えられ、(B)(C)のエリアにアクセス可能となる。(A)のエリアに配置されたプログラムを実行する場合には、ユーザモードに切り替えられ、(C)のエリアにアクセス可能となる(ただし、保護領域指定機能により、タスクグループ200間、ユーザアプリケーションタスク65間のメモリアクセスは制限される)。
【0082】
また、タスクグループの保護領域230間の矢印として示したタスクグループ200間のアクセスは、前述した保護領域指定機能により禁止されている。すなわち、図7で示したように、タスクグループ固有エリア202とユーザアプリケーションタスク固有エリア220とカーネルアプリケーションタスク固有エリア221とで形成された、タスクグループ200に係るメモリ領域は、タスクグループの保護領域230として管理されており、他のタスクグループの保護領域230からのアクセスは不正アクセスとして検出される。
そして、ユーザアプリケーションタスク固有エリア220についても、この保護領域指定機能により保護されている。これにより、1のユーザアプリケーションタスク65に係るユーザアプリケーションタスク固有エリア220は、他のユーザアプリケーションタスク65によるアクセスから保護されている。
【0083】
(不正アクセスの検出処理)
次に、不正アクセスが検出された場合の動作について、図10乃至12を参照しながら説明する。
まず、図10のS500において、不正アクセスが発生する。そして、S501に進む。
S501において、発生した不正アクセスをプロセッサ2が検知し、CPU例外を発生させる。そして、S502に進む。
S502において、不正アクセス検出手段40が、CPU例外を検出し、対応するCPU例外ハンドラを起動する。そして、図11で示すCPU例外ハンドラ処理に進む。
【0084】
図11は、CPU例外ハンドラによる処理である。
まず、図11のS600において、CPU例外ハンドラは、例外を発生したタスクをサスペンドする。そして、S601に進む。
S601において、CPU例外ハンドラは、CPU例外発生時の情報を取得する。CPU例外発生時の情報は、具体的には、例外の発生したプロセッサコア100、例外の発生したコアユニット101、実行中のタスクの情報、レジスタ値などである。これらの情報は、後述する例外ハンドラコールバックや例外タスクコールバックで使用可能となっている。そして、S602に進む。
【0085】
S602において、例外ハンドラコールバックが登録されているかが判定される。そして、例外ハンドラコールバックが登録されている場合、S603に進む。例外ハンドラコールバックが登録されていない場合、S604に進む。
S603において、例外ハンドラコールバックが呼び出され、ユーザが指定した例外ハンドラコールバック処理が実行される。そして、S604に進む。
S604において、例外ハンドラは、例外マネージャタスクを起床して処理を終了する。なお、例外マネージャタスクとは、後述する例外タスクコールバックを呼び出すためのタスクであり、最高優先度を持つため、CPU例外ハンドラの処理が終了するとすぐに実行される。
【0086】
そして、上記したS604で例外マネージャタスクが起床された結果、例外マネージャタスクが実行状態となると、図12で示す例外マネージャタスク処理が実行される。
例外マネージャタスク処理では、図12のS700で示すように、例外タスクコールバックが登録されているかが判定される。そして、例外タスクコールバックが登録されている場合、S701に進む。例外タスクコールバックが登録されていない場合、例外マネージャタスク処理は終了する。
S701において、例外タスクコールバックが呼び出され、ユーザが指定した例外タスクコールバック処理が実行される。そして、例外マネージャタスク処理が終了する。
【0087】
なお、上記した例外ハンドラコールバックおよび例外タスクコールバックは、不正アクセス検出時の動作をユーザが指定するためのものである。コールバックに指定する例外処理の例としては、ログを作成後にシステム再起動したり、特定のソフトウェアの処理を中断したりすることが考えられる。なお、なるべく早く例外処理を行いたい場合は例外ハンドラコールバックを使用するのが適しており、さまざまなOSの機能を使用したい場合には例外タスクコールバックを使用するのが適している。
(まとめ)
本実施形態によれば、上記のように構成されているので、対称型マルチプロセッシングと非対称型マルチプロセッシングとの双方の利点を生かしたシステムを構築できる。
【0088】
また、タスクグループの保護領域230間でのメモリアクセス、タスクグループ200内でのカーネルアプリケーションタスク60に対するメモリアクセス、共有カーネルアプリケーション55に対するメモリアクセス、カーネル部50に対するメモリアクセスが、それぞれ制限されているので、各処理間での干渉を回避しながら、最適なアクセス権を与えることが可能となっている。
このようなオペレーティングシステム1を使用すれば、例えば異なる信頼性が求められる複数のシステムを統合する際に、これら複数のシステム(サブシステム)のそれぞれが異なるタスクグループの保護領域230に属するように設計することで、互いの干渉を避けることができる。すなわち、システムの再利用性を高め、安全性を確保することができる。そして、各タスクグループ200はそれぞれにCPUリソースが配分されているため、それぞれのパフォーマンス予測が容易となっている。
【0089】
加えて、サブシステム内でも処理特性に応じて異なるアクセス権を与えることができるため、サブシステムにおいて高い信頼性が求められる処理を保護することができ、サブシステムの信頼性を高めることができる。
更に、これらサブシステムを動作させるオペレーティングシステム1の基幹部分は、サブシステムから保護されているため、システム全体の信頼性も高めることができる。しかも、サブシステムから保護される基幹部分の保護レベルも2段階に設けられており、より信頼性が求められるカーネル部50と、複数のサブシステム間で共有されるべき共有カーネルアプリケーション55と、による2段階の保護が可能となっている。これにより、カーネル部50を強力に保護しながら、必要な処理はサブシステム間で共有できるようになっている。
【0090】
さらに、上記したような機能を単一のオペレーティングシステム1により実現しているため、デバイスドライバやOSリソースの共有、使用メモリの削減、サブシステム間の高速な通信、が可能となっている。
なお、上記した実施形態では、請求項に言う「処理単位」が「タスク」であるとして説明したが、これに限らない。例えば、「処理単位」が「プロセス」であるとしても良い。なお、ここで言う「プロセス」とは、複数のタスクもしくはスレッドからなるものであり、同一のプロセスに属する複数のタスクもしくはスレッドは、当該プロセス内のメモリ領域を共有できるものを指す。
【0091】
また、上記した実施形態では、プロセッサ2の保護領域指定機能や実行モードを使用してメモリ保護を実現するとしたが、これに限らず、アクセスモニタやページテーブルを用いてメモリ保護を実現しても良い。
【図面の簡単な説明】
【0092】
【図1】情報処理装置の構成を示すブロック図である。
【図2】コアユニットの構成を示すブロック図である。
【図3】タスクグループの概要を示す説明図である。
【図4】システムの初期化処理を示すフロー図である。
【図5】タスクの実行処理を示すフロー図である。
【図6】各実行モードでのアクセス権を示す表である。
【図7】各エリア間でアクセス可能な範囲を示す概念図である。
【図8】割り込み処理を示すフロー図である。
【図9】システムコール処理を示すフロー図である。
【図10】不正アクセス検出処理を示すフロー図である。
【図11】不正アクセス検出したときの、CPU例外ハンドラの処理を示すフロー図である。
【図12】不正アクセス検出したときの、例外マネージャタスクの処理を示すフロー図である。
【符号の説明】
【0093】
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 タスクグループの保護領域(処理単位グループ固有のメモリ領域)

【特許請求の範囲】
【請求項1】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、を有するシステム上で動作するオペレーティングシステムであって、
前記複数のプロセッサコアを1以上のプロセッサコアからなる複数のコアユニットにグループ化して管理するコアユニット管理手段と、
種々の処理を行うための処理単位を生成する処理単位生成手段と、
生成された処理単位が前記複数のコアユニットのいずれで実行されるかを決定するためのコアユニット決定手段と、
前記コアユニット決定手段により同一のコアユニットで実行されると決定された処理単位を処理単位グループとしてグループ化する処理単位グループ化手段と、
前記複数のコアユニットごとに対応して設けられ、対応するコアユニットで実行されると決定された処理単位を、当該コアユニット上で実行させる複数の処理単位実行手段と、
前記複数の処理単位グループに対して、前記メモリから各処理単位グループ固有のメモリ領域を割り当てるメモリ領域割り当て手段と、
前記メモリへの不正アクセスを検出する不正アクセス検出手段と、
を有し、
前記不正アクセス検出手段は、
処理単位が、当該処理単位の属する処理単位グループとは別の処理単位グループ固有のメモリ領域に対してアクセスしたときに、このアクセスを不正アクセスとして検出することを特徴とする、
オペレーティングシステム。
【請求項2】
前記処理単位生成手段は、処理単位として、通常処理単位と、通常処理単位よりも強いアクセス権を有する特権処理単位と、を生成可能であり、
前記メモリ領域割り当て手段は、各処理単位に対し、前記メモリから各処理単位固有のメモリ領域を割り当てており、
前記処理単位固有のメモリ領域は、当該処理単位の属する処理単位グループ固有のメモリ領域の一部として扱われ、その結果、前記不正アクセス検出手段は、処理単位が、当該処理単位が属する処理単位グループとは別の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときに、このアクセスを不正アクセスとして検出し、
また、前記不正アクセス検出手段は、
通常処理単位が、当該通常処理単位とは別の処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出し、
特権処理単位が、当該特権処理単位とは別の処理単位であって、同一の処理単位グループに属する処理単位固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項1記載のオペレーティングシステム。
【請求項3】
前記複数のコアユニットのうちの少なくとも2以上のコアユニット上で実行可能な共有処理を定義する共有処理定義手段を有し、
前記共有処理は、当該共有処理を実行可能なコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行され、
前記メモリ領域割り当て手段は、前記共有処理に対して、前記メモリから共有処理固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記複数の処理単位グループのいずれかに属する処理単位が、当該共有処理固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記共有処理が、当該共有処理を実行可能なコアユニットに係る処理単位グループのいずれかに固有のメモリ領域、に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項1または2記載のオペレーティングシステム。
【請求項4】
前記複数のコアユニットのうちの任意のコアユニット上で実行可能なカーネル部を定義するカーネル部定義手段を有し、
前記カーネル部は、当該カーネル部を実行するコアユニットに係る前記処理単位実行手段により当該コアユニット上で実行され、
前記メモリ領域割り当て手段は、前記カーネル部に対して、前記メモリからカーネル部固有のメモリ領域を割り当てており、
前記不正アクセス検出手段は、
前記カーネル部に含まれない処理が、前記カーネル部固有のメモリ領域に対してアクセスしようとしたときには、このアクセスを不正アクセスとして検出するが、
前記カーネル部が、前記処理単位グループ固有のメモリ領域および前記共有処理固有のメモリ領域のいずれにアクセスしようとしたときには、このアクセスを不正アクセスとして検出しないことを特徴とする、
請求項3に記載のオペレーティングシステム。
【請求項5】
複数のプロセッサコアを有するプロセッサと、前記複数のプロセッサコアのすべてからアクセス可能なメモリと、前記プロセッサ上で動作する請求項1から4のいずれかに記載のオペレーティングシステムと、を有することを特徴とする情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate