JP2008506187A - 複数のカーネルの並列実行のための方法およびシステム - Google Patents
複数のカーネルの並列実行のための方法およびシステム Download PDFInfo
- Publication number
- JP2008506187A JP2008506187A JP2007520404A JP2007520404A JP2008506187A JP 2008506187 A JP2008506187 A JP 2008506187A JP 2007520404 A JP2007520404 A JP 2007520404A JP 2007520404 A JP2007520404 A JP 2007520404A JP 2008506187 A JP2008506187 A JP 2008506187A
- Authority
- JP
- Japan
- Prior art keywords
- kernel
- primary
- execution
- interrupt
- kernels
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
Abstract
共通割込みハンドラおよびオプションの共通スケジューラを使用して複数のカーネルを並列実行するための手法が提供される。また、カーネル間で実行を切り替えるための技法も提供される。カーネル間の実行および割込みの優先権は、割込みマスクレベルを使用して示される。また、異なるカーネル上で実行しているタスク間のリソースの共有のための技法も提供される。
Description
関連出願の相互参照
本PCT特許出願は、合衆国法典第35編119条(e)項のもとで、2004年7月6日出願の米国仮出願第60/586,486号の優先権の利益を主張する。
本PCT特許出願は、合衆国法典第35編119条(e)項のもとで、2004年7月6日出願の米国仮出願第60/586,486号の優先権の利益を主張する。
本発明は、一般に、マルチタスク・オペレーティングシステムに関する。より詳細には、本発明は、共通割込みハンドラおよびスケジューラを使用して複数のカーネルの実行を可能にすることによって、単一オペレーティングシステムにおいて複数のカーネルの機能をサポートすることに関する。
オペレーティングシステムは、それらが使用される特定の用途に基づいて、設計され、一般にそれらの動作が最適化される。一方のタイプのオペレーティングシステムの機能が、他方のタイプのオペレーティングシステムにおいて使用可能であることが望ましいことがしばしばある。
例えば、Linux(登録商標)やWindows(登録商標)のような汎用コンピュータ・オペレーティングシステムは、ファイルシステム、デバイスドライバ、アプリケーション、およびライブラリなどのような機能の広範なセットを有する。このようなオペレーティングシステムは、複数のプログラムの並列実行を可能にし、プログラムの並列実行のサービスに関連する、(待ち時間とも呼ばれる)応答時間、およびCPU使用率または負荷の最適化を試みる。しかし、遺憾なことに、このようなオペレーティングシステムは、一般に、例えば、ロボット、通信システム、工作機械、および自動車システムの制御などのような組込みリアルタイムアプリケーションに適していない。これらおよび他の多数のような現実世界のイベントおよび制御に基づくアプリケーションは、いわゆるハードリアルタイム性能を必要とする。ハードリアルタイム性能は、最悪応答時間を保証する。汎用オペレーティングシステム(GPOS)は、一般に、アプリケーションプログラムの平均性能に対するプログラム実行時間の予測可能性について妥協している。iTRONを含むいくつかの知られているリアルタイム・オペレーティングシステム(RTOS)などは、ハードリアルタイム機能を提供する。しかし、遺憾ながら、ほとんどのRTOSは、GPOS機能を有しておらず、例えば、異なるファイルシステム、デバイスドライバ、およびアプリケーションライブラリなどに対するサポートを提供しない。多くのアプリケーションにおいて、RTOSの性能、および汎用オペレーティングシステムの機能を有することが望まれる。
例えば、Linux(登録商標)は、現代的なオペレーティングシステム機能、多数の開発ツール、およびネットワーキングなどを含む現代的なデバイスのための多くの望ましい機能を有する、周知の汎用オペレーティングシステムである。しかし、Linux(登録商標)は、組込みオペレーティングシステムとして設計されなかった。セットトップボックス、携帯電話、およびカーナビゲーション・システムなどを限定としてではなく含む現代的デバイスは、Linux(登録商標)のような汎用オペレーティングシステムの機能だけではなく、リアルタイム性能のような組込みオペレーティングシステムの機能も必要とする。
例えば、iTRONは、多数の組込みデバイスで一般的に使用される、成熟したリアルタイム組込みオペレーティングシステムである。iTRONは、組込みデバイスのための多数の望ましい機能を有するが、ネットワーキングや異なるファイルシステムのサポートのようなLinux(登録商標)の機能を欠いている。
GPOSとRTOSをともに必要とする例は、自動車で使用されるナビゲーションシステム用の制御装置である。この制御装置は、GPSセンサからデータを読み取って、自動車の位置および方向を計算する。現在の位置、目的地、および、ナビゲーションデータDVDから抽出されたトポロジカルマップに基づいて、制御装置は、最良経路を計算して液晶表示画面に表示する。液晶表示画面は、ナビゲーションシステムにパラメータを入力するためのタッチパネルに重畳されることがある。センサやタッチパネル入力の読取りのタスクが、ハードリアルタイムを必要とする一方、経路の計算、グラッフィックスの表示、およびDVDからの読取りのタスクは、標準的なプログラミングタスクであり、汎用オペレーティングシステムの機能を使用する。ハードリアルタイム性能は、iTRONのようなRTOSカーネルを使用して実現されうるが、汎用タスクは、Linux(登録商標)カーネル上で実行されうる。
別の必要例は、ビデオデータ圧縮ハードウェアを使用した固体デジタルビデオカメラ用の制御装置である。このようなアプリケーションでは、圧縮ハードウェアから来るデータストリームを読み取り、画像処理機能を実行するとともに、液晶表示画面上に表示を行い、取外し可能記憶媒体にデータを記憶することが望ましい。また、例えば、同じ制御システムを使用して、光学ズームおよびオートフォーカス機構を管理することが必要なことがある。システムがいくつかのレガシ・コンポーネントを使用する場合、特定のRTOS(例えば、iTRON)に使用可能な広範な制御ソフトウェアが、既に存在することがある。モータならびにデータ収集および格納を制御するタスクが、ハードリアルタイム・オペレーティングシステム(hRTOS)によって最適に処理されうる一方で、表示、画像処理、および他の機能は、一般にGPOSのもとで、標準的プログラミングによって、より適切に処理されうる。更に、一般に、iTRONで使用可能な広範なソフトウェアを別のRTOSに移植することは、かなり費用がかかり、iTRONで表示およびファイルシステムのサポートなどを提供することも同様に簡単ではない。したがって、例えば、RTOSおよび汎用オペレーティングシステムの強みを組み合わせたシステムが、このアプリケーションに最適となる。
別の必要例は、特定の機能の加速または特定の機能性の追加のために専用ハードウェアの使用を必要とするシステムである。例えば、多くのマルチメディアデバイスでは、オーディオまたはビデオ用にグラフィックス・アクセラレータ・チップあるいはDSPまたはCODECを使用する必要がある。いくつかの事例では、オペレーティングシステムが、いくつかのタスクについて保証された性能を提供できる場合に、追加のハードウェアの必要性が解消されうる。例えば、ストリーミング・オーディオをサポートするシステムでは、パケットロスを防止し出力の一定の品質を維持するために、圧縮されエンコードされたオーディオの一定のレートでのデコードを保証する、高性能タスクを有することが必要なことがある。GPOSおよびRTOSからなるシステムは、いくつかの事例では、専用のハードウェアの必要性を解消することが可能であり、したがって製品の費用を削減することができる。
すべての現実世界のシステムは、ハードリアルタイム(HRT)、ソフトリアルタイム(SRT)、または非リアルタイム(NRT)システムに分類することができる。ハードリアルタイム・システムは、1つまたは複数のアクティビティが必ず期限またはタイミング制約に間に合わなければならず、さもなければタスクが失敗したといわれるシステムである。ソフトリアルタイム・システムは、タイミング要件を有するが、全体としてアプリケーション要件が満たされ続ける限り、時折タイミング要件に間に合わなくてもその影響を無視することができるシステムである。最後に、非リアルタイム・システムは、ハードリアルタイムでもソフトウェアリアルタイムでもないシステムである。非リアルタイム・タスクは、どんな期限またはタイミング制約も有していない。現代的なアプリケーションの多くにおいては、リアルタイム・システム性能の全範囲をサポートする必要がある。例えば、セキュリティアプリケーションのためのネットワーク機器の要件を検討する。ネットワーク機器は、1つのパケットも損なわずに、高速ネットワーク接続を介してすべてのネットワークパケットをサンプリングする必要があることがある(ハードリアルタイム・タスク)。ハードリアルタイム・タスクは、これらのパケットを後で処理するためにバッファに蓄える。これは、hRTOSを使用して実現されうる。バッファ内のこれらのパケットサンプルは、処理され分類される必要があるが、場合によっては、そこで処理および分類の速度が落ちても、バッファがオーバフローしない限り問題とならない(ソフトリアルタイム・タスク)。これは、hRTOSおよびGPOSにおけるタスクの組合わせを用いて実現されうる。ウェブサーバは、要求に応じて、処理および分類されたデータを送達するために使用されうる。このアクティビティには一般にタイミング制約は存在せず(すなわち、非リアルタイム・タスク)、したがって、このタスクは、GPOSにおいて行うことができる。
上記に鑑みて、複数のカーネルの性能および機能を効率的かつ好都合に提供し、リアルタイム性能の全範囲をサポートする、マルチカーネル環境(例えば、GPOSおよびRTOS)を実装するシステムが、必要とされる。
本発明は、添付の図面の図において限定ではなく例として例示され、図面では、同様の参照番号は同様の要素を参照する。
他に指示がない限り、図中の例示は、必ずしも原寸に比例して描かれていない。
上記および他の目的を達成するために、かつ本発明の目的に従って、複数のカーネルの並列実行、および複数のカーネル間のリソースの共有のための、様々な技法が提供される。
マルチカーネル環境における複数のカーネルの並列実行のための方法、システム、コンピュータコード、および手段が説明される。本発明の方法の一実施形態では、1次および少なくとも1つの2次カーネルが構成され、少なくとも1つの2次カーネルは、1次カーネルの少なくとも部分的制御下にあり、オプションの共通スケジューラは、1次カーネルと2次カーネルの少なくとも1つとに保留しているプロセスの実行を、スケジュールするように構成され、共通割込みハンドラは、1次カーネルと2次カーネルの少なくとも1つとにおける割込みプロセスの割込みおよび実行を処理するように構成される。別の実施形態により、上記の方法を実装するための手段も提供される。更に別の実施形態により、上記の方法を実装するためのコンピュータコードも提供される。
マルチカーネル環境において複数のカーネル間でシステムリソースを共有するための本発明の他の方法実施形態であって、1次および少なくとも1つの2次カーネルが構成され、少なくとも1つの2次カーネルは、1次カーネルの少なくとも部分的制御下にあり、カーネル間のシステムリソースの共有のためのアプリケーション・プログラム・インターフェース(API)が構成され、呼出しカーネルには、他のカーネルのうち少なくともいくつかに対する適切なダミーAPIコールが提供される、方法実施形態が提供される。更に別の実施形態により、上記の方法を実装するための手段も提供される。更に別の実施形態により、上記の方法を実装するためのコンピュータコードも提供される。
本発明の他の特徴、利点、および目的は、添付の図面と併せて読まれるべき以下の詳細な説明から、より明らかになり、より容易に理解されるであろう。
本発明は、本明細書に示す詳細な図および説明を参照することによって最も理解される。
本発明の実施形態は、図を参照して以下で説明される。しかし、本明細書でこれらの図について与えられる詳細な説明は、説明が目的であり、本発明はこれらの限定された実施形態を超えて拡張されることは、当業者には容易に理解されるであろう。
以下でいくらか詳しく説明される本発明の一態様は、2つ以上のオペレーティングシステム・カーネルが、両方のオペレーティングシステム・カーネルの機能および能力を保持しながら動作することである。
一般に、マルチカーネルシステムを開発する動機は、多数ありうる。4つの理由を挙げる。
1.一方のカーネルの性能特性が、他方において望ましいことがある(リアルタイム機能性が、汎用オペレーティングシステムにおいて望ましいことがある。)、
2.一方のオペレーティングシステム(またはカーネル)の機能が、他方において望ましいことがある(例えば、ファイルシステム、デバイスドライバ、リアルタイムAPI、ライブラリ)、
3.いくつかの事例では、マルチカーネルシステムの使用によって専用ハードウェアの必要性を解消し、それによって製品の費用を削減する、
4.リアルタイム性能の全範囲をサポートできるhRTOSおよびGPOSからなるシステムの必要性がありうる。
1.一方のカーネルの性能特性が、他方において望ましいことがある(リアルタイム機能性が、汎用オペレーティングシステムにおいて望ましいことがある。)、
2.一方のオペレーティングシステム(またはカーネル)の機能が、他方において望ましいことがある(例えば、ファイルシステム、デバイスドライバ、リアルタイムAPI、ライブラリ)、
3.いくつかの事例では、マルチカーネルシステムの使用によって専用ハードウェアの必要性を解消し、それによって製品の費用を削減する、
4.リアルタイム性能の全範囲をサポートできるhRTOSおよびGPOSからなるシステムの必要性がありうる。
図1は、本発明の実施形態による、1つのハードウェアプラットフォーム上で複数のカーネルの実行を可能にする例示的アーキテクチャを示す線図である。この図に示されるように、カーネル0、カーネル1、カーネル2、およびカーネルnとラベル付けされた複数のカーネルが、「CPU」とラベル付けされた従来の中央処理装置上で実行されている。図および以下の開示では、単一CPUシステムのコンテキストで実施形態および例を示し説明するが、本発明は、単一CPU実装に限定されず、本発明の教示に照らし、知られている技法によって、マルチCPUシステムを用いて本発明の教示を適切に実施するよう適宜に構成されうることは、理解されるべきである。本明細書では、カーネル0は、1次カーネルと呼ばれ、カーネル1、カーネル2、…、カーネルnは、カーネル0によって実行されている特定の数のカーネルを表し、一般に、カーネルの数は、システムリソースによって制限されうる。カーネルは、汎用オペレーティングシステム(GPOS)またはリアルタイム・オペレーティングシステム(RTOS)に属することができ、それぞれは、提供された機能および能力が大きく異なることがある。
次に、本発明のカーネルの選択の態様が、いくらか詳しく説明される。図2は、本発明の実施形態による、複数のカーネルを並列実行するための方法のフローチャートである。本プロセスにおける各ステップは、後続の図において別個により詳細に例示される。プロセスの開始において、1次カーネル(カーネル0)として、汎用オペレーティングシステムまたはたいていの能力および機能を有するオペレーティングシステムのカーネル(例えば、図1のカーネル)が、ステップ210で選択され、ステップ220で始動される。本例のコンテキストでは、カーネルの始動は、ハードウェアの電源投入、および、カーネル0を適切にロードまたは実行するブートローダをロードすることを含む。カーネル0は、始動すると、割込みハンドラ、スケジューラ、タスクマネージャなどを始動し、適切なドライバをインストールすることによってシステムハードウェアを初期化する。次に、ステップ230で、1次カーネルにおいて、使用可能でない所与のターゲットアプリケーションに望ましい、あるいは他の望ましい特定の機能を有するカーネルが、1次カーネルの動的モジュール(例えば、カーネル1、カーネル2、…、カーネルn)として追加される。このプロセスは、ステップ230で、すべての所望のカーネルが追加されるまで、ステップ230にループして戻る。
各2次カーネルには、アクティブ化されるとき、一意のカーネル識別手段(ID)が割り当てられることが好ましく、この識別の有用性は、以下にいくらか詳しく例示される。これらのカーネルIDは、好ましくは、予め割り当てられる。ステップ240で、予め割り当てられた割込みマスクおよびカーネルIDに従って、1次カーネルによって、追加カーネルが選択され、その後、ステップ250で、追加カーネル、すなわち2次カーネルであるカーネル1、カーネル2、…、カーネルnが、動的モジュールとしてアクティブ化される。
図3は、本発明の実施形態による、図2に示される1次カーネルの選択のための例示的方法のフローチャートを示す。プロセスは、ステップ310で、最も望ましい能力および機能を有する共通割込みハンドラを選択することから開始する。次いで、ステップ320で、共通割込みハンドラが属するカーネルが、1次カーネルに指定される。ステップ330で、共通スケジューラとして、スケジューラが選択される。このスケジューラは、1次カーネルのスケジューラであっても、他の任意のカーネルのスケジューラであってもよい。特定のアプリケーションの必要に応じて、本発明の代替実施形態は、実装されることができ、さもなければ、1次カーネルおよび/または本システムが任意の適切な割込みハンドラまたはスケジューラを使用することを可能にすることができる。本発明の更に他の実施形態では、1次制御カーネルがなくてもよく、代わりに、マルチカーネルシステムにおけるすべてのカーネルは、共通タスクスケジューラおよび共通割込みハンドラによって制御され、直接互いを制御しない。本発明の更に他の実施形態では、1次カーネルの割込みハンドラが使用されなくてよく、代わりに、別の割込みハンドラが1次カーネルの外部に実装され、この状況において、割込みハンドラ・エミュレータが既知の技法によって実装でき、さもなければ、本発明の他の新規の態様が実装されうる。本実施形態では、そのデフォルトの割込みハンドラが共通割込みハンドラとして使用されるカーネルが、自動的にマルチカーネルシステムの1次カーネルになることを理解されたい。更に、いくつかのアプリケーションでは、システム設計者が、1次カーネルのデフォルト割込みハンドラを除去して別の割込みハンドラに置き換えることを選択してもよく、いずれの場合も、1次カーネルに使用可能である有効な割込みハンドラは、本実施形態の用途のために、そのカーネルの一部分と見なされることを理解されたい。本発明の教示による共通割込みハンドラの他の適切な実装変形形態の多様性は、当業者には容易に明らかとなろう。
図に戻ると、一意のID、および割込みマスクレベルがそれぞれ、ステップ340およびステップ350で1次カーネルに割り当てられる。割込みマスクレベルは、後でいくらか詳しく説明される。
図4は、本発明の実施形態による、図2に示される1次カーネルを始動するための例示的方法のフローチャートを示す。プロセスは、ステップ410で、1次カーネルの共通割込みハンドラをインストールすることから開始する。次いで、ステップ420で、共通スケジューラがインストールされる。ステップ430で、共通アプリケーション・プログラム・インターフェース(API)が、リソース共有のためにインストールされる。1つまたは複数の2次カーネルがあるかどうか、あるいは、選択された2次カーネルのどの特定のリソースがリソース共有のために使用可能であるかは、予め知られていない。リソース共有のための共通APIは、リソースAPIの詳細についての事前知識なしに、リソースの無制限の共有を可能にする。ステップ440で、特定のアプリケーションに依存する所望の切替え方式に従って2次カーネルに実行を切り替える、周期タスクまたはプロセスが、インストールされる。好ましい実施形態では、カーネル間の切替えは、ハードウェアタイマ割込みによってトリガされる。特定のアプリケーションの必要に応じて、当業者が、本発明の教示に照らして、場合によっては、非周期またはイベント駆動方式の他の適切な切替えを考案することができる。限定ではなく例として、周期、非周期、イベントベース、および優先順位ベースの方式を含む、適切なカーネル切替え方式が、カーネル間の切替えのために使用されうる。
図5は、本発明の実施形態による、図2に示される2次カーネルの選択および追加のための例示的方法のフローチャートを示す。プロセスは、ステップ510で、マルチカーネル・ソフトウェアがインストールされるシステムの要件から導かれる望ましい能力および機能の集合を有する2次カーネルを選択することから開始する。一意のID、および割込みマスクレベルがそれぞれ、ステップ520およびステップ530で2次カーネルに割り当てられる。
図6は、本発明の実施形態による、図2に示される2次カーネルを始動するための例示的方法のフローチャートを示す。プロセスは、ステップ610で、2次カーネル用の「フック」として知られるものを、1次カーネルの共通割込みハンドラ内にインストールすることから開始する。次いで、ステップ620で、2次カーネルに対するフックは、共通スケジューラ内にインストールされる。ステップ630で、2次カーネルに対するフックは、共通アプリケーション・プログラミング・インターフェース(API)内にインストールされる。フックは、1次カーネル内の制御アプリケーション(例えば、割込みハンドラ、スケジューラ、または共通API)から、フックが関連付けられる特定の2次カーネルへの制御経路を有効にする。
次に、本発明の割込みマスキングおよびカーネル優先順位の態様がいくらか詳しく説明される。すべての現代的なコンピューティングシステムは、選択的に有効または無効にされうる割込みを有する。割込みマスクレベルは、プロセッサに割り込むために、どの割込みが許可され、どの割込みが許可されないかを決定する。図7は、本発明の実施形態による、複数のカーネルについての共通割込みハンドラおよび共通スケジューラの例示的アーキテクチャを示すブロック図である。図において、カーネル0に対するマスクレベルは、すべての割込みが許可されるようになされている。本発明の好ましい実施形態では、各2次カーネルは、カーネルが実行されているときのみ有効にされる割込みの範囲が割り当てられる。これは、本実施形態では、マスクレベルの使用によって実現される。
たいていの現代的なプロセッサは、割込みマスクレベルをサポートする。上記のように、カーネルマスクレベルは、どの割込みがカーネルによって許可され、どの割込みが許可されないかを決定する。ただし、割込みがカーネルによって許可されても、カーネルによって処理されないことがあることに留意すべきである。したがって、本実施形態は、カーネルおよび割込みについて3つの割込み条件、すなわち、(1)割込みが、ブロックされうる、(2)割込みが、許可されうるが処理されない、および、(3)割込みが、許可されカーネルによって処理されうる(取り扱われうる)、を有する。ある特定のカーネルによって許可され処理された割込みは、そのカーネルに割り当てられたといわれる。更に、すべての割込みは、カーネル0によって許可され処理される。各割込みはまた、任意の他のカーネルに一意的に割り当てられうる。したがって、本発明の手法では、割込みは、カーネル0によって許可され処理されなければならず、かつ、他の唯一のカーネルによって許可され処理されうる。本発明のいくつかの実施形態は更に、CPUの設計によってまたは当業者に知られる他の手段によって指示されうる優先順位を有する割込みを提供する。
本実施形態の一般的なアプリケーションでは、マルチカーネルシステムの設計の際、割込みの優先順位は、好ましくは、最も高い優先順位の割込みが、最も高い実行の優先順位を有するカーネルに割り当てられるように指定される。図に示されるように、カーネル1はカーネル0より高い優先順位を有し、カーネル2はカーネル1より高い優先順位を有し、以下同様である。カーネルnは、最も高い優先順位を有する。したがって、カーネル0は、カーネル1、カーネル2、…、カーネルnによって優先割り込みされうる。カーネル1は、カーネル2からカーネルnまでによって優先割り込みされうる。カーネルnは、いずれのカーネルによっても優先割り込みされることがない。他の代替の適切な割込み優先順位方式は、本発明の教示に照らして、当業者には容易に明らかとなろう。
次に、本発明の割込み処理の態様が、いくらか詳しく説明される。本発明の新規の態様は、共通割込みハンドラが最初に選択されることである。共通割込みハンドラが関連付けられるカーネルは、1次カーネルと呼ばれる。好ましい実施形態では、すべての割込みは、カーネル0割込みハンドラによって処理される。割込みを受け取ると(710)、カーネル0は、非カーネル特定割込みサービスルーチンを実行し、次いで、その特定の割込みが割り当てられるカーネルの割込みハンドラに、制御を渡す。再び図を参照すると、カーネルnに割り当てられる割込みNが発生すると、まずカーネル0ハンドラによって割込みが処理され、次いで、カーネルnの割込みサービスルーチンが呼び出され、この場合、カーネルnは、本明細書では、ターゲットカーネルとして参照される(720)。割込みハンドラが呼び出されたとき、割込みハンドラは、カーネル非依存割込み処理機能を実行し、ターゲットカーネルの割込みサービスルーチンに制御を渡すことに留意すべきである。ターゲットカーネルは、好ましくは割込みマスクレベルを用いて識別される。このようにして、カーネル0の割込みハンドラは、マルチカーネルシステムのための共通割込みハンドラの役割をする。
図8は、図7のコンテキストにおける本発明の実施形態による、複数のカーネルについての割込みマスクレベルの例示的線図を示す。この図は、本実施形態における割込みマスクレベルが、各割込みごとのターゲットカーネルを決定するためにどのように使用されるかを示す。割込み番号は、チャートの左側または軸上の昇順番号として示され、Nは割込みの総数である。
垂直バーの網点(またはほぼ白抜き)の領域(810)は、それぞれのカーネルによって処理され許可される割込みを示す。斜線領域(820)は、それぞれのカーネルによって許可される割込みを示す。れんが模様領域(830)は、それぞれのカーネルが実行されているとき、すなわちCPU時間の制御において、ブロックされる割込みを示す。
図9は、本発明の実施形態による、図2のブロック図および図8のバーチャートに示される複数のカーネルについての割込みマスクレベルの更なる態様を示す。どの割込みがカーネルによって処理されることになりうるか、どの割込みがカーネルによって無効にされうるか、および、どの割込みが所与のカーネルによって有効にされうるかを、マスクレベルが、どのように決定するかについての例が、図に示される。割込み番号は、チャートの左側または軸上の昇順番号(910)として示され、Nは割込みの総数である。
詳細には、i番目のカーネルが、最も右のバーの垂直バーにおけるKiとして示され、「ai」(920)は、カーネルKiによって有効にされうる割込みを、「bi」(930)は、カーネルKiによって無効にされうる割込みを、「ci」(940)は、カーネルKによって処理される割込みを示す。
次に、本発明のスケジューリングの態様が、いくらか詳しく説明される。ほとんどの従来のオペレーティングシステムでは、スケジューラは、ハードウェアタイマを使用して周期的に呼び出される。ハードウェアタイマは、通常、スケジューリングイベントを開始するために周期割込みをトリガするように設定される。マルチカーネルシステムにおける各カーネルは、オペレーティングシステムの用途に応じて、スケジューラを呼び出すための異なる周期を有することができる。限定としてではなく、例えば、汎用オペレーティングシステムの場合、10ミリ秒周期が所望の性能に対して充分でありうる。しかし、リアルタイムカーネルの場合、各100マイクロ秒後毎にスケジューリングイベントを有することが必要なことがある。
本実施形態では、共通スケジューラが、マルチカーネルシステムに対し選択される。すべてのスケジューリングイベントは、最初に共通スケジューラによって受け取られることが好ましい。カーネル非依存スケジューリング機能の実行後、スケジューラは、現在実行中のカーネルのスケジューラに制御を渡すことが好ましい(730)。この例では、現在実行中のカーネルは、スケジューリングイベントが発生したときに実行中のカーネルとして定義される。
次に、本発明のマルチカーネル実行の態様が、いくらか詳しく説明される。本発明の別の新規の態様は、より高い優先順位のカーネルが実行されているときでも、システムは、機会が生じた場合(すなわち、高い優先順位のカーネル内のタスクが実行状態ではない、例えば、待機、スリープ、休止など)、より低い優先順位のカーネル内のタスクの実行を可能にすることである。
図10は、本発明の実施形態による、周期信号によってカーネルを切り替えるための例示的方法のフローチャートを示す。図に示される実施形態では、汎用カーネル(カーネル0、図示せず)が、カーネル切替えプロセスをトリガするステップ1005の周期信号の生成により、あるカーネルから別のカーネルに切替えを行う周期プロセスを実行し、それによって、プロセスが進行して、まず、別のカーネルに保留タスクがあることを決定する。これは、多くの適切な手法によって実現されうるが、1つの適切な手法として、チェイン内のカーネルが実行すべき保留タスクを有するかどうかをを決定するために、シリアルポーリング方法を利用する手法が、図示されている。図示の例では、ステップ1005で周期信号が生成されると、カーネル1は、実行すべき保留タスクをポーリングする。カーネル1が1つまたは複数の実行すべき保留タスクを有する場合(「Yes」経路)、カーネル1における保留タスクの実行は、例えば、現在実行中のIDをカーネル1のIDに変更してそれにより保留タスクの実行のためにCPU時間を転送することによって行われる。カーネル1が実行すべき保留タスクを有していない場合(「No」経路)、プロセスは、次のカーネルを、例えばステップ1020でカーネル2をポーリングし、最後のカーネル、すなわちステップ1030でカーネルnに到達するまで、チェイン内の後続の各カーネルについて同様にプロセスは継続する。カーネルにおけるすべての保留プロセスが実行されたとき、または保留タスクが発見されないとき(すなわち、ステップ1010〜1030を通じて「No」経路)、プロセスは終了し、カーネル0のタスクの実行が再開される。しかし、本発明のいくつかの代替実施形態では、1次カーネルに制御を返す前にすべての保留タスクを完了することを必要とする代わりに、1次カーネルに制御を返す前に、保留プロセスの少なくとも一部分をサービスする既知の技術(限定としてではなく、例えば、まず最も高い優先順位のカーネルのみをサービスし、次いで、後続のパスでより低い優先順位をサービスすることなど)によって、他のポーリングまたは切替え方式が実装されうる。ステップ1005で周期信号の次の生成があると、プロセスは再び開始する。本発明の教示に照らして、特定のアプリケーションの必要に応じ、代替の適切な切替え方式が多数あることは、当業者には理解されよう。
次に、本発明のマルチカーネルのリソース共有の態様が、いくらか詳しく説明される。本発明の更に別の新規の態様は、リソースが、1次カーネルと任意の2次カーネルとの間ならびに2次カーネル間で共有されうることである。多くのアプリケーションでは、オペレーティングシステム・カーネルの機能およびリソースに、他のオペレーティングシステム・カーネルからアクセスするのが望ましいことがしばしばある。いくつかの事例では、これが、マルチカーネルシステムを実装する主な理由である。
図11は、共通システムAPIが複数カーネルのリソース共有のために使用される本発明の実施形態の例示的ブロック図を示す。本実施形態では、複数カーネルのリソース共有は、1次カーネルと2次カーネルの間のリソース共有(例えば、ファイルシステム、デバイスドライバ、ライブラリなど)をサポートする各カーネルごとに定義されるダミーAPIシステムコール(例えば、Sys_call1、Sys_call2、…、Sys_calln)を介して実現される。好ましい実施形態では、1次カーネルが、各カーネルごとにダミーAPIコールを有し、1次カーネルと2次カーネルの間のリソース共有を各カーネルごとにサポートする。2次カーネルが1次カーネルの動的モジュールとしてアクティブ化される場合、ダミーAPIコールは、実APIコールに置き換えられる。
実APIコールが1次カーネルから実行されるとき、2次カーネルは、そのAPIに対応する特定の機能コールを呼び出し、2次カーネルのもとでその機能を実行する。このようにして、2次カーネルのAPIが、1次カーネルに使用可能になされる。したがって、アプリケーション(ユーザおよびシステム)は、2次カーネルの機能にアクセスすることができる。ユーザアプリケーション(1110)が1次カーネル(1120)にカーネルnのAPIを実行するよう要求するとき。1次カーネル(1120)は、リソース共有のための共通APIのSys_call0(1130)を使用して、カーネルn(1140)におけるリソース共有のための共通APIのSys_callnを呼び出す。カーネルnにおけるリソース共有のための共通APIのSys_calln(1150)は、ユーザアプリケーションによって要求される特定のAPIを呼び出す。
Linux(登録商標)(GPOS)およびiTRON(RTOS)オペレーティングシステムに適用されるこのプロセスを例示する、本発明の特定の実施形態が、以下で説明される。本発明の教示によって動作する任意の適切なGPOSおよびRTOSをどのように適切に構成するかが、当業者には容易に認識されるであろうことは理解される。本発明によって認識されるように、Linux(登録商標)カーネルのようなGPOSとiTRONカーネルのようなRTOSとを含むハイブリッドシステムは、多くの現代的な組込み装置に最も望ましい機能を有することになる。
上記の教示のコンテキストで、本実施形態において、Linux(登録商標)カーネルは、汎用オペレーティングカーネル(k0)として選択され、iTRONは、2次カーネル(k1)として選択される。Linux(登録商標)のスケジューラは、共通スケジューラとして、Linux(登録商標)の割込みハンドラは、システムの共通割込みハンドラとしてそれぞれ選択される。コンピュータをブートすると、まずLinux(登録商標)カーネルが始動される。iTRONカーネルは、Linux(登録商標)カーネルのランタイム動的モジュールとして挿入される。一意のカーネルID0および1が、例えば、Linux(登録商標)およびiTRONにそれぞれ割り当てられる。iTRONカーネル1には、(例えば、適切には日立SH−4の実装において)割込みマスクレベル11〜15が割り当てられうる。したがって、例えば、iTRONカーネルが、マスクレベル1〜10で割込みを実行する場合、割込みは許可されない。
Linux(登録商標)スケジューラは、システムのための共通スケジューラとして使用されるため、ハードウェアタイマを使用して周期的にシステムによって呼び出される。スケジューリングイベントがトリガされたとき、Linux(登録商標)スケジューラは呼び出される。Linux(登録商標)スケジューラは、Linux(登録商標)スケジューラが呼び出されたとき実行していたカーネルのカーネルIDを決定する。次いで、実行中のカーネルがLinux(登録商標)であった場合、例えば、以下の擬似コードによって例示されるようなlinux_schedule()関数が呼び出される。
どのカーネルが実行されているかに応じて、特定の割込みがマスクされうる。例えば、iTRONカーネルが実行されているとき、(例えば、SH−4の実装で)マスクレベル1〜10を有するすべての割込みがマスクされる。マスクレベル11〜15を有する割込みが発生する場合、Linux(登録商標)割込みハンドラが呼び出される。Linux(登録商標)割込みハンドラが、非iTRON特有のコードを実行し、次いで、以下の擬似コードによって例示されるようにdo_IRQを使用してiTRON割込みハンドラを実行する。
本実施形態では、(iTRONなどの)2次カーネルがインストールされる必要がある場合、まず、1次カーネルが、カーネル間の実行を切り替えることを目的とする周期信号をインストールする。この周期信号は、ハードウェアタイマによってトリガされうる。この周期信号が発生すると、割込みハンドラは、2次カーネル(iTRON)において実行を保留しているタスクが存在するかどうかを決定し、存在しない場合、Linux(登録商標)カーネルに実行を渡す。これは、2次カーネルがアイドル状態の間、1次カーネルにおけるタスクの実行を可能にする。
本実施形態では、1次カーネル(例えばLinux(登録商標)カーネル)が2次カーネル(例えばiTRONカーネル)に実行を渡すとき、1次カーネルは、まず、その割込みマスクレベルを2次カーネル(iTRON)の割込みマスクレベルに変更することが好ましい。限定としてではなく、例えば、iTRONに実行が転送されたとき、割込みマスクレベルは、以下に示されるように、linux_2_itron()を呼び出すことによって設定される。これは、0x000000A0に割込みマスクを設定する。これで11〜15の間の割り込みのみが許可されることになる。マスクレベル0〜10を有する割込みが発生した場合、以下の擬似コードによって例示されるように、割込みは無視される。
実行がiTRONから返されLinux(登録商標)に転送されると、割込みマスクは、0x00000000に設定され、すべての割込みが許可される。実行が転送される前に、カーネルIDも、実行が渡されるカーネルのIDに変更されることに留意すべきである。例えば、Linux(登録商標)からiTRONに実行が渡されるとき、カーネルIDは、0から1に変更される。実行がLinux(登録商標)に返されるとき、以下の擬似コードによって例示されるように、カーネルIDは、1から0に変更される。
上記のシステムは、日立SHx系列プロセッサ上で実装された。日立SHxプロセッサおよび他の多くのプロセッサは、明示的な割込み優先順位をサポートする。割込み優先順位がハードウェアでサポートされないシステムでは、割込み優先順位は、エミュレーションまたは他の何らかの技法でソフトウェアによって実装されうる。
ほとんどの従来のリアルタイム組込みシステムは、イベントベースのプログラミングを使用する、つまり、特定のイベントが発生したときにタスクを実行する。充分にプログラムされた組込みコンピュータシステムでは、システムCPUが、大部分の時間はアイドル状態である。すべてではないがほとんどの組込みアプリケーションは、ハードリアルタイム(HRT)、ソフトリアルタイム(SRT)、および非リアルタイムまたは通常(NRT)の3つのタイプのタスクからなると見なすことができ、それらのタスクモデルおよび対応する割込みモデルは、次にいくらか詳しく説明される本発明の実施形態で活用される。このコンテキストにおいて、本発明の別の態様は、組込みシステムにおけるこの一般的なアイドル時間を利用して、汎用オペレーティングシステムの性能およびデューティサイクルを増大する。上述のタスクモデルおよびシステムアイドル時間を活用する本発明の一実施形態では、HRTタスクは、RTOSカーネル、限定ではなく例えば、iTRON APIを使用したiTRONカーネルでのタスクとして実装され、SRTタスクは、RTOSカーネル、限定ではなく例えば、iTRON API、および/または、GPOSカーネル、限定ではなく例えば、Linux(登録商標)ライブラリ(システムコールおよびカーネルAPI)を、使用して実装され、NRTタスクは、GPOSカーネル、限定ではなく例えば、標準Linux(登録商標)APIを使用して実装される。
本実施形態は、既知または未開発のRTOSシステムとGPOSシステムの任意の組合わせでの使用に適するが、分かりやすいように、以下の説明では、RTOSがiTRONでありGPOSがLinux(登録商標)であると想定する。本実施形態の手法によれば、iTRONカーネルで実行を保留しているタスクがある限り、Linux(登録商標)プロセスは、実行される機会を得ることがない。実行可能な2つ以上のタスクがある場合、最も高い優先順位を有するタスクが最初に実行され、次に最も高い優先順位を有するタスクが次に実行され、実行可能または保留状態のタスクがなくなるまで、以下同様に実行される。
iTRONシステムに実行を保留しているタスクがない場合、実行制御がLinux(登録商標)に渡されて、再度、最も高い実行優先順位を有するタスクが、最初に実行される。待ち時間を適切に短く維持するために、すべてのSRTタスクは、標準Linux(登録商標)プロセス(すなわちNRTタスク)より高い実行優先順位を有する。好ましい実施形態では、SRTとNRTの間のLinux(登録商標)の優先順位システムは、Linux(登録商標)「RT優先順位」を用いて実装される。したがって、NRTプロセスは、実行を保留しているSRTタスクがなくなるまで実行されない。代替実施形態では、任意の適切なパプリックドメインまたは独自の優先順位管理システムが、HRT、SRT、およびNRTプロセスの優先順位およびスケジューリングを管理するために実装されうる。
先に示唆されたように、本発明の別の新規の態様は、複数のカーネルが、ファイルシステム、デバイスドライバ、およびライブラリなどのリソースを共有することを可能にするプロセスである。本発明の一実施形態では、このリソース共有プロセスは、リソース共有がサポートされる各カーネルごとにダミーAPIコールを定義することによって実現される。限定としてではなく、例えば、RTOSカーネル例えばiTRONで使用可能な機能を、GPOSカーネル例えばLinux(登録商標)から使用することが、非常に望ましい。iTRONカーネルについてのダミーAPIコールは、限定ではなく例として、以下の擬似コードに示される。
2次カーネルが、動的ランタイムモジュールとして初めてアクティブ化(ロード)されたとき、ダミーAPIコールが、実APIにリンクされる。iTRONが動的モジュールとしてLinux(登録商標)のもとでアクティブ化されたとき、ダミーAPIコールは、実APIコールに置き換えられる。このようにして、2次カーネル全体(例えば、この例ではiTRON)のAPIが、以下の擬似コードに限定としてではなく例示されるように、1次カーネル(例えば、この例ではLinux(登録商標))に使用可能にされる。
Linux(登録商標)のランタイム動的モジュールの本実施形態をアクティブ化するために、限定ではなく例として以下の擬似コードが使用されうる。
RTOSモジュール、例えばiTRONが、除去されるとき、以下の擬似コードに限定としてではなく例示されるように、ダミーAPIが除去される。
上記または同様のやり方で、ダミーAPIコールを使用することにより、1次カーネルは、ダミーAPIを介して1次カーネルに特定的に使用可能にされる2次カーネル機能を実行することができる。この機構は、データ共有、タスク同期、および通信機能(セマフォ、イベントフラグ、データキュー、メールボックス)を限定としてではなく含む、2つのカーネル間の複雑な対話の使用を可能にすることが企図される。ダミーAPI、およびGPOS(例えば、Linux(登録商標))システムコールを使用することによって、当業者は、本発明の教示に照らして、リアルタイム組込みプログラムにおいてLinux(登録商標)の豊富な機能(例えば、ファイルシステム、ドライバ、ネットワークなど)を利用できるプログラムを、開発することができる。本発明のいくつかの実施形態は、上記の共通スケジューラおよび/または共通ダミーAPIを、任意選択として含まないことがある。つまり、本発明の共通割込みハンドラを用いて、複数のカーネルが、共通スケジューラおよび/または共通ダミーAPIなしに実行されうる。しかし、多くのアプリケーションでは、共通スケジューラが、より向上した性能、およびより優れたエラー処理をもたらす。複数のカーネル間のリソース共有を必要としないアプリケーションは、本発明の上記の共通ダミーAPIの態様を実装しなくてもよい。
図12は、適切に構成され設計された場合、本発明が実施されうるコンピュータシステムの役割をすることができる、典型的コンピュータシステムを示す。コンピュータシステム1200は、任意の数の(中央処理装置またはCPUとも呼ばれる)プロセッサ1202を含み、プロセッサ1202は、1次ストレージ1206(典型的にはランダムアクセスメモリ即ちRAM)および1次ストレージ1204(典型的には読取り専用メモリ即ちROM)を含むストレージデバイスに結合される。CPU1202は、プログラマブルデバイス(例えば、CPLDおよびFPGA)、ならびにゲートアレイASICや汎用マイクロプロセッサのような非プログラマブルデバイスなどの、マイクロコントローラおよびマイクロプロセッサを含め、様々なタイプでありうる。当技術分野で周知のように、1次ストレージ1204は、データおよび命令をCPUに対して一方向に転送するよう動作し、1次ストレージ1206は、通常、データおよび命令を双方向に転送するために使用される。これら両方の1次ストレージデバイスは、任意の適切な上述のようなコンピュータ可読媒体を含むことができる。大容量ストレージデバイス1208もまた、CPU1202に双方向に結合することができ、追加のデータ記憶容量を提供し、任意の上述のコンピュータ可読媒体を含むことができる。大容量ストレージデバイス1208が、プログラムおよびデータなどを記憶するために使用されてもよく、通常は、ハードディスクのような2次記憶媒体である。大容量ストレージデバイス1208内に保持される情報は、該当する場合、仮想メモリとして標準的様式で1次ストレージ1206の部分として取り込まれることは、理解されよう。CD−ROM1214など特定の大容量ストレージデバイスもまた、データをCPUに一方向に渡すことができる。
CPU1202はまた、インターフェース1210に結合することができ、インターフェース1210は、1つまたは複数の入出力装置に接続し、このような入出力装置は、例えば、ビデオモニタ、トラックボール、マウス、キーボード、マイクロフォン、タッチ検知ディスプレイ、変換カードリーダ、磁気または紙テープリーダ、タブレット、スタイラス、音声または手書き文字認識装置、あるいは、もちろん他のコンピュータなど他の周知の入力装置である。最後に、CPU1202は、任意選択で、1212で概略的に示されるような外部接続を使用して、データベースまたはコンピュータのような外部装置、あるいは遠隔通信またはインターネット・ネットワークに結合されうる。このような接続を用いて、本発明の教示に記載の方法ステップを実行する過程で、CPUは、ネットワークから情報を受け取ることができ、またはネットワークに情報を出力することができることが企図される。
上述のいずれのステップおよび/またはシステムモジュールが、適切に置き換えられ、再配列され、除去されうること、追加のステップおよび/またはシステムモジュールが、特定のアプリケーションの必要に応じて挿入されうること、ならびに、本実施形態の方法およびシステムは、任意の様々な適切なプロセスおよびシステムモジュールを用いて実装されることが可能であって、いずれの特定のコンピュータハードウェア、ソフトウェア、RTOS、GPOS、ファームウェア、およびマイクロコードなどにも限定されないことは、本発明の教示によって当業者には容易に認識されよう。
本発明の少なくとも1つの実施形態を完全に説明したが、本発明による複数のカーネルの並列実行および複数のカーネル間のリソース共有の他の等価または代替の方法は、当業者には明らかであろう。本発明は、例示によって上記に説明されており、開示の特定の実施形態が、本発明を開示の特定の形態に限定するものではない。したがって、本発明は、添付の特許請求の範囲の趣旨および範囲に含まれるすべての修正形態、均等物、および代替形態を含むことになる。
Claims (33)
- マルチカーネル環境における複数のカーネルの並列実行のための方法であって、
前記マルチカーネル環境から1次カーネルを選択するステップと、
前記1次カーネルを始動するステップと、
少なくとも1つの2次カーネルを追加するステップであって、前記少なくとも1つの2次カーネルは、前記1次カーネルの少なくとも部分的制御下にあるステップと、
割込みハンドラを、前記1次カーネルおよび少なくとも1つの前記2次カーネルにおける割込みプロセスの割込みおよび実行を処理する共通割込みハンドラにするステップと、を含む方法。 - 前記1次カーネルは、汎用オペレーティングシステムの能力がある、請求項1に記載のマルチカーネル実行方法。
- 前記少なくとも1つの2次カーネルのうち少なくとも1つは、リアルタイム・オペレーティングシステムの能力がある、請求項1に記載のマルチカーネル実行方法。
- 前記1次カーネルとして選択されたカーネルは、最も望ましい能力を有する前記マルチカーネル環境におけるカーネルである、請求項1に記載のマルチカーネル実行方法。
- スケジューラを、前記1次カーネルおよび少なくとも1つの前記2次カーネルに保留しているプロセスの実行をスケジュールする共通スケジューラにするステップを更に含む、請求項1に記載のマルチカーネル実行方法。
- 前記共通スケジューラは、最も望ましい能力を有する前記マルチカーネル環境におけるオペレーティングシステムから選択される、請求項5に記載のマルチカーネル実行方法。
- 前記共通割込みハンドラは、最も望ましい能力を有する前記マルチカーネル環境におけるオペレーティングシステムから選択される、請求項1に記載のマルチカーネル実行方法。
- 前記共通割込みハンドラまたは前記共通スケジューラは、前記1次カーネル内にある、請求項5に記載のマルチカーネル実行方法。
- 前記マルチカーネル環境を実行するコンピュータをブートすると、前記1次カーネルは、前記少なくとも1つの2次カーネルに先立って始動される、請求項1に記載のマルチカーネル実行方法。
- 前記少なくとも2次カーネルのうち少なくとも1つが、前記1次カーネルのランタイム動的モジュールとしてアクティブ化される、請求項1に記載のマルチカーネル実行方法。
- 一意のカーネル識別子を前記1次カーネルに割り当てるステップと、
少なくとも1つの割込みマスクレベルを前記1次カーネルに割り当てるステップであって、前記少なくとも1つの割込みマスクレベルは、前記1次カーネルについて許可される前記割込みを決定するステップとを更に含む、請求項1に記載のマルチカーネル実行方法。 - 一意のカーネル識別子を前記少なくとも1つの2次カーネルに割り当てるステップと、
少なくとも1つの割込みマスクレベルを少なくとも1つの2次カーネルに割り当てるステップであって、前記少なくとも1つの割込みマスクレベルは、前記特定の2次カーネルについて許可される前記割込みを決定するステップとを更に含む、請求項1に記載のマルチカーネル実行方法。 - 前記少なくとも1つの2次カーネルに対するフックを、前記1次カーネルの前記共通スケジューラまたは前記共通割込みハンドラにインストールするステップを更に含む、請求項5に記載のマルチカーネル実行方法。
- プロセス実行制御を、現在アクティブのカーネルから次のアクティブカーネルに切り替えるタスクを実行するステップであって、前記次のアクティブカーネルは、前記少なくとも1つの2次カーネルのうちの1つであるステップを更に含む、請求項1に記載のマルチカーネル実行方法。
- 前記プロセス実行制御タスクは、周期タスクであり、前記次のアクティブカーネルは、2次カーネル・ポーリング優先順位方式に従ってポーリングによって決定され、最も高い優先順位の2次カーネルの前記2次カーネルは、少なくとも1つの実行すべき保留プロセスを有し、プロセス実行制御は、前記少なくとも1つの2次カーネルにおける前記保留プロセスの少なくとも一部分の完了の後に、前記1次カーネルに転送される、請求項14に記載のマルチカーネル実行方法。
- 前記共通割込みハンドラを呼び出すステップであって、前記共通割込みハンドラは、その後、少なくとも1つのカーネル非依存割込み処理機能を実行し、プロセス実行制御を、前記割込みに関連付けられたターゲットカーネルの割込みサービスルーチンに渡すステップを更に含む、請求項1に記載のマルチカーネル実行方法。
- 前記ターゲットカーネルは、前記少なくとも1つの2次カーネルの前記マスクレベルによって決定される、請求項16に記載のマルチカーネル実行方法。
- 前記共通スケジューラを呼び出すステップと、
前記マルチカーネル環境においてどのカーネルが現在実行中のカーネルであるかを決定するステップと、
プロセス実行制御を、前記現在実行中のカーネルに転送するステップと、
少なくとも1つのカーネル特定スケジューリング機能を前記現在のカーネルによって実行するステップとを更に含む、請求項5に記載のマルチカーネル実行方法。 - 前記1次カーネルが、プロセス実行制御を、前記少なくとも1つの2次カーネルのうちの1つに渡し、それによって、前記少なくとも1つの2次カーネルのうちの1つが、アクティブカーネルになるステップと、
前記1次カーネルが、その割込みマスクレベルを、前記アクティブカーネルに対応するように変更するステップと、
前記1次カーネルが、現在実行中のカーネル識別コードを、前記アクティブカーネルに関連付けられた識別コードに変更するステップとを更に含む、請求項1に記載のマルチカーネル実行方法。 - 前記1次カーネルと前記少なくとも1つの2次カーネルの間のリソース共有のためのアプリケーション・プログラム・インターフェース(API)をインストールするステップを更に含む、請求項1に記載のマルチカーネル実行方法。
- マルチカーネル環境における複数のカーネル間のシステムリソースを共有するための方法であって、
前記マルチカーネル環境から1次カーネルを選択するステップと、
前記1次カーネルを始動するステップと、
少なくとも1つの2次カーネルを追加するステップであって、前記少なくとも1つの2次カーネルは、前記1次カーネルの少なくとも部分的制御下にあるステップと、
第1の前記1次カーネルまたは前記少なくとも1つの2次カーネルと、第2の前記1次カーネルまたは前記少なくとも1つの2次カーネルとの間のシステムリソース共有のためのアプリケーション・プログラム・インターフェース(API)をインストールするステップであって、前記第1のカーネルには、少なくとも前記第2のカーネルに対する適切なダミーAPIコールが提供されるステップと、を含む方法。 - 前記第2のカーネルが前記第1のカーネルからの前記ダミーAPIコールによってアクティブ化されると、前記第2のカーネルは、前記ダミーAPIが定義されたカーネルにおける前記ダミーAPIコールを、前記第2のカーネルに対する実APIコールに置き換えるステップを更に含む、請求項21に記載のシステムリソース共有方法。
- 前記第1のカーネルからの前記実APIコールがあると、前記第2のカーネルの特定のシステム機能を実行し、それによって、前記第1のカーネルにおいて前記第2のカーネルのリソースを使用可能にするステップを更に含む、請求項22に記載のシステムリソース共有方法。
- マルチカーネル環境における複数のカーネルの並列実行のためのシステムであって、
前記マルチカーネル環境から1次カーネルを選択する手段と、
少なくとも1つの2次カーネルを、追加し、少なくとも部分的に制御する手段と、
前記1次カーネルおよび前記少なくとも1つの2次カーネルを実行する手段と、
前記1次カーネルおよび少なくとも1つの前記2次カーネルにおける割込みプロセスの割込みおよび実行を処理する手段と、を含むシステム。 - 前記1次カーネルおよび少なくとも1つの前記2次カーネルに保留しているプロセスの実行をスケジュールする手段を更に含む、請求項24に記載の複数カーネルシステム。
- マルチカーネル環境における複数のカーネル間でシステムリソースを共有するためのシステムであって、
前記マルチカーネル環境から1次カーネルを選択する手段と、
少なくとも1つの2次カーネルを、追加し、少なくとも部分的に制御する手段と、
前記1次カーネルおよび前記少なくとも1つの2次カーネルを実行する手段と、
第1の前記1次カーネルまたは前記少なくとも1つの2次カーネルと、第2の前記1次カーネルまたは前記少なくとも1つの2次カーネルとの間のシステムリソース共有のための手段と、を含むシステム。 - マルチカーネル環境における複数のカーネルの同時実行のためのコンピュータプログラム製品であって、
前記マルチカーネル環境から1次カーネルを選択するコンピュータコードと、
少なくとも1つの2次カーネルを、追加し、少なくとも部分的に制御するコンピュータコードと、
前記1次カーネルおよび前記少なくとも1つの2次カーネルを実行するコンピュータコードと、
前記1次カーネルおよび少なくとも1つの前記2次カーネルにおける割込みプロセスの割込みおよび実行を処理する共通割込みハンドラを実装するコンピュータコードと、
前記コンピュータコードを記憶するコンピュータ可読媒体と、を含むコンピュータプログラム製品。 - 前記1次カーネルおよび少なくとも1つの前記2次カーネルに保留しているプロセスの実行をスケジュールする共通スケジューラを実装する、コンピュータコードを更に含む、請求項27に記載のコンピュータプログラム製品。
- 前記コンピュータ可読媒体は、搬送波に具現化されたデータ信号、CD−ROM、ハードディスク、フロッピー(登録商標)ディスク、テープドライブ、および半導体メモリからなる群から選択される媒体である、請求項27に記載のコンピュータプログラム製品。
- マルチカーネル環境における複数のカーネル間でシステムリソースを共有するためのコンピュータプログラム製品であって、
前記マルチカーネル環境から1次カーネルを選択するコンピュータコードと、
少なくとも1つの2次カーネルを、追加し、少なくとも部分的に制御するコンピュータコードと、
前記1次カーネルおよび前記少なくとも1つの2次カーネルを実行するコンピュータコードと、
第1の前記1次カーネルまたは前記少なくとも1つの2次カーネルと、第2の前記1次カーネルまたは前記少なくとも1つの2次カーネルとの間でシステムリソースを共有するコンピュータコードと、
前記第1のカーネルに、少なくとも前記第2のカーネルに対する適切なダミー・アプリケーション・プログラム・インターフェース(API)コールを提供するコンピュータコードと、
前記コンピュータコードを記憶するコンピュータ可読媒体と、を含むコンピュータプログラム製品。 - 前記第2のカーネルが前記第1のカーネルからの前記ダミーAPIコールによってアクティブ化されると、前記ダミーAPIが定義されたカーネルにおける前記ダミーAPIコールを、前記第2のカーネルに対する実APIコールに置き換えるコンピュータコードを更に含む、請求項30に記載のシステムリソース共有方法。
- 前記第1のカーネルからの前記実APIコールがあると、前記第2のカーネルの特定のシステム機能を実行し、それによって、前記第1のカーネルにおいて前記第2のカーネルのリソースを使用可能にするコンピュータコードを更に含む、請求項30に記載のシステムリソース共有方法。
- 前記コンピュータ可読媒体は、搬送波に具現化されたデータ信号、CD−ROM、ハードディスク、フロッピー(登録商標)ディスク、テープドライブ、および半導体メモリからなる群から選択される媒体である、請求項30に記載のコンピュータプログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US58648604P | 2004-07-06 | 2004-07-06 | |
US11/169,542 US20060010446A1 (en) | 2004-07-06 | 2005-06-29 | Method and system for concurrent execution of multiple kernels |
PCT/US2005/023525 WO2006014354A2 (en) | 2004-07-06 | 2005-07-01 | Method and system for concurrent excution of mutiple kernels |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008506187A true JP2008506187A (ja) | 2008-02-28 |
JP2008506187A5 JP2008506187A5 (ja) | 2008-10-02 |
Family
ID=35542791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007520404A Pending JP2008506187A (ja) | 2004-07-06 | 2005-07-01 | 複数のカーネルの並列実行のための方法およびシステム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20060010446A1 (ja) |
EP (1) | EP1789874A2 (ja) |
JP (1) | JP2008506187A (ja) |
KR (1) | KR20070083460A (ja) |
HK (1) | HK1104102A1 (ja) |
WO (1) | WO2006014354A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020059248A (ja) * | 2018-10-12 | 2020-04-16 | 東芝テック株式会社 | プリンタ |
WO2023277160A1 (ja) * | 2021-07-02 | 2023-01-05 | 株式会社デンソー | 車載装置、制御プログラム、及び起動方法 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US9201703B2 (en) * | 2006-06-07 | 2015-12-01 | International Business Machines Corporation | Sharing kernel services among kernels |
JP2008108075A (ja) * | 2006-10-25 | 2008-05-08 | Matsushita Electric Ind Co Ltd | タスク切替え制御方法及びコンピュータシステム |
US8789052B2 (en) * | 2007-03-28 | 2014-07-22 | BlackBery Limited | System and method for controlling processor usage according to user input |
US8146107B2 (en) * | 2007-07-10 | 2012-03-27 | Mitel Networks Corporation | Virtual machine environment for interfacing a real time operating system environment with a native host operating system |
EP2083525A1 (en) * | 2008-01-28 | 2009-07-29 | Merging Technologies S.A. | System to process a plurality of audio sources |
US8868899B2 (en) * | 2009-07-20 | 2014-10-21 | Motorola Mobility Llc | System and method for switching between environments in a multi-environment operating system |
US9348633B2 (en) * | 2009-07-20 | 2016-05-24 | Google Technology Holdings LLC | Multi-environment operating system |
US9367331B2 (en) * | 2009-07-20 | 2016-06-14 | Google Technology Holdings LLC | Multi-environment operating system |
US9389877B2 (en) * | 2009-07-20 | 2016-07-12 | Google Technology Holdings LLC | Multi-environment operating system |
US9372711B2 (en) * | 2009-07-20 | 2016-06-21 | Google Technology Holdings LLC | System and method for initiating a multi-environment operating system |
KR101015573B1 (ko) * | 2010-07-29 | 2011-02-16 | (주)제이모바일 | Rtos 기반의 안드로이드 어플리케이션 실행 장치 |
US9015622B2 (en) * | 2010-01-20 | 2015-04-21 | Red Hat, Inc. | Profile-based performance tuning of computing systems |
WO2012015083A1 (ko) * | 2010-07-29 | 2012-02-02 | 주식회사 앵글스톤테크놀러지 | Rtos 기반의 안드로이드 어플리케이션 실행 장치 |
US8983536B2 (en) | 2010-10-22 | 2015-03-17 | Google Technology Holdings LLC | Resource management in a multi-operating environment |
US9354900B2 (en) | 2011-04-28 | 2016-05-31 | Google Technology Holdings LLC | Method and apparatus for presenting a window in a system having two operating system environments |
CN102323895A (zh) * | 2011-09-02 | 2012-01-18 | 广东中大讯通软件科技有限公司 | 一种基于机顶盒嵌入式操作***实时调度方法 |
US20130293573A1 (en) | 2012-05-02 | 2013-11-07 | Motorola Mobility, Inc. | Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments |
US9342325B2 (en) | 2012-05-17 | 2016-05-17 | Google Technology Holdings LLC | Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device |
US9804665B2 (en) | 2013-12-29 | 2017-10-31 | Google Inc. | Apparatus and method for passing event handling control from a primary processor to a secondary processor during sleep mode |
US9753527B2 (en) | 2013-12-29 | 2017-09-05 | Google Technology Holdings LLC | Apparatus and method for managing graphics buffers for a processor in sleep mode |
US9798378B2 (en) | 2014-03-31 | 2017-10-24 | Google Technology Holdings LLC | Apparatus and method for awakening a primary processor out of sleep mode |
US10176094B2 (en) | 2015-06-30 | 2019-01-08 | Renesas Electronics America Inc. | Common MCU self-identification information |
KR102235166B1 (ko) | 2015-09-21 | 2021-04-02 | 주식회사 레인보우로보틱스 | 실시간 로봇 시스템, 로봇 시스템 제어 장치 및 로봇 시스템 제어 방법 |
WO2017052059A1 (ko) * | 2015-09-21 | 2017-03-30 | 주식회사 레인보우 | 실시간 제어 시스템, 실시간 제어 장치 및 시스템 제어 방법 |
WO2017052061A1 (ko) * | 2015-09-21 | 2017-03-30 | 주식회사 레인보우 | Gpos 연동형 실시간 로봇 제어 시스템 및 이를 이용한 실시간 디바이스 제어 시스템 |
WO2017066183A1 (en) * | 2015-10-11 | 2017-04-20 | Renesas Electronics America Inc. | Software architecture for embedded systems |
US10466977B2 (en) | 2015-10-11 | 2019-11-05 | Renesas Electronics America Inc. | Data driven embedded application building and configuration |
CN105373425A (zh) * | 2015-10-28 | 2016-03-02 | 浪潮(北京)电子信息产业有限公司 | 一种嵌入式Linux***性能优化的方法及装置 |
CN108153559A (zh) * | 2017-12-08 | 2018-06-12 | 芯海科技(深圳)股份有限公司 | 一种不影响mcu工作实时性的快速重构架构 |
US11044099B2 (en) * | 2018-12-28 | 2021-06-22 | Intel Corporation | Technologies for providing certified telemetry data indicative of resources utilizations |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2677474B1 (fr) * | 1991-06-04 | 1993-09-24 | Sextant Avionique | Dispositif permettant d'accroitre les performances d'un noyau d'executif temps reel associe a une structure multiprocesseur pouvant comprendre un nombre eleve de processeurs. |
JPH08212086A (ja) * | 1994-09-30 | 1996-08-20 | Microsoft Corp | オフィスマシンのオペレーティングシステム及び方法 |
US5721922A (en) * | 1994-10-13 | 1998-02-24 | Intel Corporation | Embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5903752A (en) * | 1994-10-13 | 1999-05-11 | Intel Corporation | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system |
US6466962B2 (en) * | 1995-06-07 | 2002-10-15 | International Business Machines Corporation | System and method for supporting real-time computing within general purpose operating systems |
DE19648422C2 (de) * | 1996-11-22 | 2000-03-30 | Hans Beckhoff | Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm |
US5995745A (en) * | 1996-12-23 | 1999-11-30 | Yodaiken; Victor J. | Adding real-time support to general purpose operating systems |
US6766515B1 (en) * | 1997-02-18 | 2004-07-20 | Silicon Graphics, Inc. | Distributed scheduling of parallel jobs with no kernel-to-kernel communication |
US6772419B1 (en) * | 1997-09-12 | 2004-08-03 | Hitachi, Ltd. | Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
JP4072271B2 (ja) * | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | 複数のオペレーティングシステムを実行する計算機 |
US20040172631A1 (en) * | 2001-06-20 | 2004-09-02 | Howard James E | Concurrent-multitasking processor |
US6782424B2 (en) * | 2002-08-23 | 2004-08-24 | Finite State Machine Labs, Inc. | System, method and computer program product for monitoring and controlling network connections from a supervisory operating system |
US20040088704A1 (en) * | 2002-10-30 | 2004-05-06 | Advanced Simulation Technology, Inc. | Method for running real-time tasks alongside a general purpose operating system |
US7509644B2 (en) * | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
ES2315469T3 (es) * | 2003-04-09 | 2009-04-01 | Virtuallogix Sa | Sistemas operativos. |
-
2005
- 2005-06-29 US US11/169,542 patent/US20060010446A1/en not_active Abandoned
- 2005-07-01 KR KR1020077001072A patent/KR20070083460A/ko not_active Application Discontinuation
- 2005-07-01 JP JP2007520404A patent/JP2008506187A/ja active Pending
- 2005-07-01 WO PCT/US2005/023525 patent/WO2006014354A2/en active Search and Examination
- 2005-07-01 EP EP05768081A patent/EP1789874A2/en not_active Ceased
-
2007
- 2007-08-14 HK HK07108854.1A patent/HK1104102A1/xx unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020059248A (ja) * | 2018-10-12 | 2020-04-16 | 東芝テック株式会社 | プリンタ |
JP7126918B2 (ja) | 2018-10-12 | 2022-08-29 | 東芝テック株式会社 | プリンタ |
WO2023277160A1 (ja) * | 2021-07-02 | 2023-01-05 | 株式会社デンソー | 車載装置、制御プログラム、及び起動方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1789874A2 (en) | 2007-05-30 |
US20060010446A1 (en) | 2006-01-12 |
WO2006014354A2 (en) | 2006-02-09 |
WO2006014354A3 (en) | 2006-04-20 |
HK1104102A1 (en) | 2008-01-04 |
KR20070083460A (ko) | 2007-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008506187A (ja) | 複数のカーネルの並列実行のための方法およびシステム | |
JP3573546B2 (ja) | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 | |
EP2312441B1 (en) | Scheduling of instructions groups for cell processors | |
JP2007058601A (ja) | タスク実行装置および方法 | |
JP2003345612A (ja) | 演算処理システム、コンピュータ・システム上でのタスク制御方法、並びにコンピュータ・プログラム | |
JP2000330806A (ja) | 計算機システム | |
KR20050030871A (ko) | 실시간 동작 수행방법 및 시스템 | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
US20110307236A1 (en) | Simulation apparatus, simulation method and recording medium for recording simulation program | |
JP4241462B2 (ja) | 制御ユニットおよびマイクロコンピュータ | |
TW202036306A (zh) | 任務調度方法及裝置、存儲介質 | |
RU2494446C2 (ru) | Восстановление управления ресурсом обработки, который исполняет внешний контекст исполнения | |
US20040098722A1 (en) | System, method, and computer program product for operating-system task management | |
JP2008108075A (ja) | タスク切替え制御方法及びコンピュータシステム | |
CN111158875B (zh) | 基于多模块的多任务处理方法、装置及*** | |
US10430245B2 (en) | Systems and methods for dynamic low latency optimization | |
JP4523910B2 (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
JPH11272480A (ja) | オンチップリアルタイムos | |
JP2005092780A (ja) | リアルタイムプロセッサシステム及び制御方法 | |
Rammig et al. | Basic concepts of real time operating systems | |
CN100576175C (zh) | 用于多个内核的并行执行的方法和*** | |
US20060277547A1 (en) | Task management system | |
US8806180B2 (en) | Task execution and context switching in a scheduler | |
CN114911538A (zh) | 一种运行***的启动方法及计算设备 | |
JP2000215071A (ja) | 仮想計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080623 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080623 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100225 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100713 |