(57)【特許請求の範囲】
【請求項１】
システムのコンテキスト（Ｓｙｓｔｅｍ  Ｃｏｎｔｅｘｔ）の変更有無をモニタリングし、現在のシステムのコンテキストが変更されれば、その変更されたシステムのコンテキストによって、現在先占モードを設定して、カーネルの先占区間（Ｐｒｅｅｍｐｔｉｏｎ  Ｓｅｃｔｉｏｎ）を動的に調整するプリエンプションマネージャー（Ｐｒｅｅｍｐｔｉｏｎ  Ｍａｎａｇｅｒ）を含み、さらに、
カーネルサービスルーチン（Ｋｅｒｎｅｌ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）で、カーネルのカーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在スレッドの再スケジュールチェック如何を動的に変更するプリエンプションポイントマネージャー（Ｐｒｅｅｍｐｔｉｏｎ  Ｐｏｉｎｔ  Ｍａｎａｇｅｒ）を含む、
運用体制で動的に先占区間を調整する装置。
【請求項２】
前記現在先占モードは、
システムのコンテキストのリアルタイム処理を要求する程度によって、細分化された非先占モード（Ｎｏｎ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）、一般先占モード（Ｇｅｎｅｒａｌ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）、及び完全先占モード（Ｆｕｌｌｙ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）のうちの何れか１つである、
請求項１に記載の装置。
【請求項３】
前記各先占モードは、
システムのコンテキストのリアルタイム処理を要求する程度によって、細部的な先占レベルに区分され、
前記プリエンプションマネージャーは、
前記現在先占モードの細部的な先占レベルをさらに設定して、カーネルの先占区間を動的に調整する、
請求項２に記載の装置。
【請求項４】
前記設定された現在先占モードによって、ＩＳＲ（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）の処理方法を動的に変更するインタラプトコンテキストマネージャー（Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｅｘｔ  Ｍａｎａｇｅｒ）をさらに含む、
請求項１に記載の装置。
【請求項５】
前記インタラプトコンテキストマネージャーは、
ハードウェアインタラプトが発生すれば、現在先占モードをチェックし、
前記インタラプトコンテキストマネージャーは、
前記現在先占モードが非先占モードであれば、インタラプトコンテキストモード（Ｉｎｔｅｒｒｕｐ  Ｃｏｎｔｅｘｔ  Ｍｏｄｅ）でＩＳＲを引き続き行わせ、非先占モードでなければ、インタラプトスレッドモード（Ｉｎｔｅｒｒｕｐｔ  Ｔｈｒｅａｄ  Ｍｏｄｅ）でＩＳＲを行わせる、
請求項４に記載の装置。
【請求項６】
前記プリエンプションポイントは、
現在先占モードが非先占モードではない場合、現在スレッドの再スケジュール有無をチェックするコードセクションを含み、
前記プリエンプションポイントマネージャーは、
現在先占モードによって、現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止または許容する、
請求項１に記載の装置。
【請求項７】
前記プリエンプションポイントマネージャーは、
カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在先占モードが非先占モードであるか否かを決定し、その決定の結果、現在先占モードが非先占モードであれば、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止する設定を行い、現在先占モードが非先占モードでなければ、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を許容する設定を行う、
請求項６に記載の装置。
【請求項８】
カーネルがスピンロック（Ｓｐｉｎ  Ｌｏｃｋ）を有したタスクを行う時、現在先占モードによって、動的にスピンロックまたはミューテックス（ｍｕｔｅｘ）を使って、そのタスクを行わせるプリエンプティブロックマネージャー（Ｐｒｅｅｍｐｔｉｖｅ  Ｌｏｃｋ  Ｍａｎａｇｅｒ）をさらに含む、
請求項１に記載の装置。
【請求項９】
ＩＰＣ（Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）処理時、前記現在先占モードによって、ＩＰＣのタイムアウトを動的に調整し、システムコールが行われれば、現在先占モードによって、同期式または非同期式に前記システムコールを行わせるプリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャーをさらに含む、
請求項１に記載の装置。
【請求項１０】
前記プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャーは、
現在先占モードが非先占モードであるか否かを決定し、その結果、現在先占モードが非先占モードであれば、そのシステムコールを非同期式に行わせ、現在先占モードが非先占モードでなければ、そのシステムコールを同期式に行わせる、
請求項９に記載の装置。
【請求項１１】
前記現在先占モードによって、リアルタイム処理が要求されるタスクが、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）でフラッシュ（ｆｌｕｓｈ）されないように動的にＴＬＢのロックダウン（Ｌｏｃｋｄｏｗｎ）を設定するプリエンプティブＨＷマネージャーをさらに含む、
請求項１に記載の装置。
【請求項１２】
コンピュータによって、運用体制で動的に先占区間を調整する方法であって、
システムのコンテキストの変更有無をモニタリングする段階と、
現在システムのコンテキストが変更されれば、その変更されたシステムのコンテキストによって、現在先占モードを設定して、カーネルの先占区間を動的に調整する段階と、
を含み、さらに、
前記現在先占モードによって、カーネルサービスルーチンで、カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在スレッドの再スケジュールチェック如何を動的に変更する段階、
を含む、方法。
【請求項１３】
前記現在先占モードは、
システムのコンテキストのリアルタイム処理を要求する程度によって、細分化された非先占モード、一般先占モード、及び完全先占モードのうちの何れか１つである、
請求項１２に記載の方法。
【請求項１４】
前記各先占モードは、
システムのコンテキストのリアルタイム処理を要求する程度によって、再び細部的な先占レベルに区分され、
前記カーネルの先占区間を動的に調整する段階は、
前記設定された現在先占モードの細部的な先占レベルをさらに設定して、カーネルの先占区間を動的に調整する、
請求項１２に記載の方法。
【請求項１５】
前記設定された現在先占モードによって、ＩＳＲの処理方法を動的に変更する段階をさらに含む、
請求項１２に記載の方法。
【請求項１６】
前記ＩＳＲの処理方法を変更する段階は、
ハードウェアインタラプトが発生すれば、前記設定された現在先占モードを確認する段階と、
前記確認の結果、現在先占モードが非先占モードであれば、インタラプトコンテキストモードでＩＳＲを引き続き行わせ、非先占モードでなければ、インタラプトスレッドモードでＩＳＲを行わせる段階と、
を含む、
請求項１５に記載の方法。
【請求項１７】
前記プリエンプションポイントは、
プリエンプションポイントは、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションを含み、
前記現在スレッドの再スケジュールチェック如何を動的に変更する段階は、
現在先占モードによって、現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止または許容する段階を含む、
請求項１２に記載の方法。
【請求項１８】
前記コードセクションの実行を防止または許容する段階は、
カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、
現在先占モードが非先占モードであるか否かを決定する段階と、
その決定の結果、現在先占モードが非先占モードであれば、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止する設定を行う段階と、
現在先占モードが非先占モードでなければ、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を許容する設定を行う段階と、
を含む、
請求項１７に記載の方法。
【請求項１９】
カーネルがスピンロックを有したタスクを行う時、前記現在先占モードによって、動的にスピンロックまたはミューテックスを使って、前記タスクを行わせる段階をさらに含む、
請求項１２に記載の方法。
【請求項２０】
ＩＰＣ処理時、現在先占モードによって、動的にＩＰＣのタイムアウトを調整する段階と、
システムコール（Ｓｙｓｔｅｍ  Ｃａｌｌ）が行われれば、前記現在先占モードによって、そのシステムコールを同期式または非同期式に行わせる段階と、
をさらに含む、
請求項１２に記載の方法。
【請求項２１】
前記システムコールを同期式または非同期式に行わせる段階は、
現在先占モードが非先占モードであるか否かを決定する段階と、
その結果、現在先占モードが非先占モードであれば、そのシステムコールを非同期式に行わせる段階と、
現在先占モードが非先占モードでなければ、そのシステムコールを同期式に行わせる段階と、
を含む、
請求項２０に記載の方法。
【請求項２２】
前記設定された現在先占モードによって、リアルタイム処理が要求されるタスクが、ＴＬＢでフラッシュされないように動的にＴＬＢのロックダウンを設定する段階をさらに含む、
請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種の運用体制で多様な応用及びサービスによって動的に先占区間を調整する技術に関する。
【背景技術】
【０００２】
最近、コンピュータ技術の発達につれて、運用体制も発展しつつある。現在の運用体制は、特定のアプリケーションの要求事項に最適化されてデザインされており、大きく性能を極大化するための運用体制とリアルタイム性を極大化するための運用体制とに分類されうる。前者としては、サーバやデスクトップまたはモバイル用運用体制として、ウィンドウズ（登録商標）、リナックス（登録商標）、アンドロイド、ＭａｃＯＳなどがあり、後者としては、Ｎｕｃｌｅｕｓ、ＲＴＬｉｎｕｘ（登録商標）、ＶｘＷｏｒｋｓなどがある。今後のコンピューティング環境は、最近増加しているＩＴ融複合化傾向によって、多様なアプリケーションが混在する趨勢である。しかし、現在の一般的な運用体制は、特定の目的に最適化されるように設計されていて、スマートカーまたはパーソナルヘルス機器のように、リアルタイム性を要求するアプリケーションと処理効率性を優先する一般アプリケーションなど多様なアプリケーションの要求事項を満足させるのに限界がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、運用体制で動的に先占区間を調整する装置及び方法を提供することである。
【課題を解決するための手段】
【０００４】
本発明の一態様によれば、運用体制で動的に先占区間を調整する装置は、システムコンテキスト（Ｓｙｓｔｅｍ  Ｃｏｎｔｅｘｔ）の変更有無をモニタリングし、現在のシステムコンテキストが変更されれば、その変更されたシステムコンテキストによって、現在先占モードを設定して、カーネルの先占区間（Ｐｒｅｅｍｐｔｉｏｎ  Ｓｅｃｔｉｏｎ）を動的に調整するプリエンプションマネージャー（Ｐｒｅｅｍｐｔｉｏｎ  Ｍａｎａｇｅｒ）を含む。
【０００５】
この際、現在先占モードは、システムコンテキストのリアルタイム処理要求程度によって、細分化された非先占モード（Ｎｏｎ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）、一般先占モード（Ｇｅｎｅｒａｌ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）、及び完全先占モード（Ｆｕｌｌｙ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）のうちの何れか１つであり得る。
【０００６】
各先占モードは、システムコンテキストのリアルタイム処理要求程度によって、再び細部的な先占レベルに区分され、プリエンプションマネージャーは、設定された現在先占モードの細部的な先占レベルをさらに設定して、カーネルの先占区間を動的に調整することができる。
【０００７】
その装置は、設定された現在先占モードによって、ＩＳＲ（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）の処理方法を動的に変更するインタラプトコンテキストマネージャー（Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｅｘｔ  Ｍａｎａｇｅｒ）をさらに含みうる。
【０００８】
ハードウェアインタラプトが発生する時、そのインタラプトコンテキストは、現在先占モードをチェックし、インタラプトコンテキストマネージャーは、設定された現在先占モードが非先占モードであれば、インタラプトコンテキストモード（Ｉｎｔｅｒｒｕｐ  Ｃｏｎｔｅｘｔ  Ｍｏｄｅ）でＩＳＲを引き続き行わせ、非先占モードでなければ、インタラプトスレッドモード（Ｉｎｔｅｒｒｕｐｔ  Ｔｈｒｅａｄ  Ｍｏｄｅ）でＩＳＲを行わせうる。
【０００９】
その装置は、カーネルサービスルーチン（Ｋｅｒｎｅｌ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）で、カーネルのカーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在スレッドの再スケジュールチェック如何を動的に変更するプリエンプションポイントマネージャー（Ｐｒｅｅｍｐｔｉｏｎ  Ｐｏｉｎｔ  Ｍａｎａｇｅｒ）をさらに含みうる。
【００１０】
プリエンプションポイントは、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションを含みうる。プリエンプションポイントマネージャーは、現在先占モードによって、現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止または許容することができる。
【００１１】
プリエンプションポイントマネージャーは、カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在先占モードが非先占モードであるか否かを決定することができる。その決定の結果、現在先占モードが非先占モードであれば、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止し、現在先占モードが非先占モードでなければ、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を許容することができる。
【００１２】
その装置は、カーネルがスピンロック（Ｓｐｉｎ  Ｌｏｃｋ）を有したタスクを行う時、現在先占モードによって、そのタスクを行うカーネルに、動的にスピンロックミューテックス（ｍｕｔｅｘ）を使わせるプリエンプティブロックマネージャー（Ｐｒｅｅｍｐｔｉｖｅ  Ｌｏｃｋ  Ｍａｎａｇｅｒ）をさらに含みうる。
【００１３】
その装置は、ＩＰＣ（Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）が行われれば、現在先占モードによって、ＩＰＣのタイムアウトを動的に調整し、システムコールが生成されれば、現在先占モードによって、そのシステムコールを同期式または非同期式に行わせるプリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャーをさらに含みうる。
【００１４】
プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャーは、現在先占モードが非先占モードであるか否かを決定し、その結果、現在先占モードが非先占モードであれば、そのシステムコールを非同期式に行わせ、現在先占モードが非先占モードでなければ、そのシステムコールを同期式に行わせうる。
【００１５】
その装置は、設定された現在先占モードによって、リアルタイム処理が要求されるタスクが、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）でフラッシュ（ｆｌｕｓｈ）されないように動的にＴＬＢロックダウン（Ｌｏｃｋｄｏｗｎ）を設定または解除するプリエンプティブＨＷマネージャーをさらに含みうる。
【００１６】
本発明の一態様によれば、運用体制で動的に先占区間を調整する方法は、システムコンテキストの変更有無をモニタリングする段階と、モニタリング結果、現在システムコンテキストが変更されれば、その変更されたシステムコンテキストによって、現在先占モードを設定して、カーネルの先占区間を動的に調整する段階と、を含む。
【００１７】
この際、現在先占モードは、システムコンテキストのリアルタイム処理要求程度によって、細分化された非先占モード、一般先占モード、及び完全先占モードのうちの何れか１つであり得る。
【００１８】
各先占モードは、システムコンテキストのリアルタイム処理要求程度によって、再び細部的な先占レベルに区分され、カーネルの先占区間を動的に調整する段階は、設定された現在先占モードの細部的な先占レベルをさらに設定して、カーネルの先占区間を動的に調整することができる。
【００１９】
その方法は、現在先占モードによって、ＩＳＲの処理方法を動的に変更する段階をさらに含みうる。
【００２０】
ＩＳＲの処理方法を変更する段階は、ハードウェアインタラプトが発生すれば、設定された現在先占モードを確認する段階と、確認の結果、現在先占モードが非先占モードであれば、インタラプトコンテキストモードでＩＳＲを引き続き行わせ、非先占モードでなければ、インタラプトスレッドモードでＩＳＲを行わせる段階と、を含みうる。
【００２１】
その方法は、カーネルサービスルーチンで、カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在スレッドの再スケジュールチェック如何を動的に変更する段階をさらに含みうる。
【００２２】
プリエンプションポイントは、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションを含みうる。現在スレッドが、再スケジュール要否をチェックするか否かを動的に変更する段階は、現在先占モードによって、現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止または許容する段階を含みうる。
【００２３】
コードセクションの実行を防止または許容する段階は、カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時、現在先占モードが非先占モードであるか否かを決定し、その決定の結果、現在先占モードが非先占モードであれば、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止し、現在先占モードが非先占モードでなければ、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を許容することができる。
【００２４】
その方法は、カーネルがスピンロックを有したタスクを行う時、現在先占モードによって、そのカーネルに、動的にスピンロックまたはミューテックスを使って、タスクを行わせる段階をさらに含みうる。
【００２５】
その方法は、ＩＰＣが行われれば、現在先占モードによって、ＩＰＣのタイムアウトを動的に調整し、システムコール（Ｓｙｓｔｅｍ  Ｃａｌｌ）が生成されれば、現在先占モードによって、そのシステムコールを同期式または非同期式に行わせる段階をさらに含みうる。
【００２６】
システムコールを同期式または非同期式に行わせる段階は、現在先占モードが非先占モードであるか否かを決定する段階と、その結果、現在先占モードが非先占モードであれば、そのシステムコールを非同期式に行わせる段階と、現在先占モードが非先占モードでなければ、そのシステムコールを同期式に行わせる段階と、を含みうる。
【００２７】
その方法は、現在先占モードによって、リアルタイム処理が要求されるタスクが、ＴＬＢでフラッシュされないように動的にＴＬＢロックダウンを設定する段階をさらに含みうる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態によって運用体制で動的に先占区間を調整する装置のブロック図である。
【図２】本発明の一実施形態によって運用体制で動的に先占区間を調整する方法の例示図である。
【図３】本発明の一実施形態によってＩＳＲ遂行方法を動的に調整する方法を示す図である。
【図４】本発明の一実施形態によってプリエンプションポイント遂行手続きを動的に調整する方法を示す図である。
【図５】本発明の一実施形態によってシステムのロック方法が動的に調整される例示図である。
【図６】本発明の一実施形態によってシステムコール遂行方法を動的に調整する例示図である。
【図７】本発明の一実施形態によってＴＬＢロックダウンを動的に設定する方法の例示図である。
【発明を実施するための形態】
【００２９】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
以下、実施形態によって、運用体制で動的に先占区間を調整する装置及び方法を説明するために、図面を参考にして詳しく説明する。
【００３０】
図１は、本発明の一実施形態による運用体制で動的に先占区間を調整する装置のブロック図である。本実施形態による動的に先占区間を調整する装置１００は、ハードウェアまたはハードウェアとソフトウェアとの組み合わせであり、その装置１００の各構成は、ハードウェア構成、ソフトウェア構成またはハードウェアとソフトウェアとの組み合わせの構成で具現可能である。
【００３１】
図１に示したように、動的に先占区間を調整する装置１００は、プリエンプションマネージャー１１０を含む。オペレーティング区間（ｏｐｅｒａｔｉｎｇ  ｓｅｃｔｉｏｎ）で先占区間は、運用体制（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）で現在行われる１つのプロセス（ｐｒｏｃｅｓｓ）が他のプロセスが行われることを可能にする、特定の条件下で先占する区間（ｓｅｃｔｉｏｎ）である。プリエンプションマネージャー１１０は、システムコンテキストの変更有無をモニタリングする。現在システムコンテキストが変更されれば、その変更されたシステムコンテキストによって、現在先占モード（Ｃｕｒｒｅｎｔ  Ｐｒｅｅｍｐｔｉｏｎ  Ｍｏｄｅ）を設定して、カーネル（Ｋｅｒｎｅｌ）の先占区間を動的に調整することができる。
【００３２】
この際、システムコンテキストは、ユーザ選好度、デバイスコンテキスト（例：デバイスとセンサーの状態）、サービスコンテキスト（例：現在のＱｏＳ状態）、及び周辺環境（例：リアルタイム性タスク、システムオーバーヘッド、位置など）を含みうる。すなわち、プリエンプションマネージャー１１０は、システムコンテキストによって、カーネルが如何なる先占モードで動作するかを設定するものであって、カーネルのアーキテクチャーによって、ユーザまたはカーネルレイヤで動作可能になるように具現可能である。
【００３３】
プリエンプションマネージャー１１０は、リアルタイム性タスクが登録されるか、デバイスコンテキストの変更のようにシステムコンテキストが変更されれば、これをモニタリングして、変更されたシステムコンテキストに適した先占モードを現在の先占モードとして設定する。この際、先占モードは、システムコンテキストのリアルタイム処理が要求される程度によって、非先占モード、一般先占モード、及び完全先占モードの３段階に大きく細分化されうる。但し、これは、１つの例示に過ぎず、先占モードの細分化程度は、システムコンテキスト、すなわち、システムが処理する各アプリケーションや各種のタスク、インタラプトなどのリアルタイム処理要求程度によって、ユーザまたは開発者などが多様な段階にあらかじめ調節することができる。
【００３４】
非先占モードは、エンベデッドサーバ（Ｅｍｂｅｄｄｅｄ  ｓｅｒｖｅｒ）やデータストリーミング（Ｄａｔａ  Ｓｔｒｅａｍｉｎｇ）アプリケーションのように、リアルタイム処理よりも高い処理効率性が要求されるアプリケーションが実行される環境で設定しうる。
【００３５】
一般先占モードは、マルチメディア、ゲームなどの一般アプリケーションと普通のリアルタイム処理を要求するアプリケーションとが混在されて実行される環境で設定しうる。
完全先占モードは、ヘルスケアモニタリングや運転者監視、カークラッシュアラーム（Ｃａｒ−ｃｒａｓｈ  ａｌａｒｍ）などの処理効率よりもリアルタイム処理が非常に重要なアプリケーションが実行される環境で設定しうる。
【００３６】
一方、運用体制で使える先占区間を全体１００％と仮定すれば、完全先占モードは１００％、一般先占モードは８０％、非先占モードは２０％の先占区間を使用できるように設定しうる。このように、システムコンテキストによって、前記の先占区間を多様に細分化し、動的に設定することによって、多様な運用体制で多様なアプリケーション環境の要求事項を最適に保証することができる。
【００３７】
各先占モードは、再び細部的な先占レベルに区分されうる。すなわち、１００％の先占区間を使える完全先占モードとして設定されるアプリケーションの場合にも、リアルタイム処理要求程度は異なるので、そのアプリケーションのリアルタイム処理要求程度によって、先占区間の８０％から１００％の間をさらに細部的な先占レベル（例：１％、５％または１０％単位など）に細分化することができる。同様に、一般先占モードは、リアルタイム処理と処理効率の調和の要求程度によって、先占区間の２０％から８０％範囲内で細部的な先占レベル（例：１％、５％または１０％単位）に区分されうる。また、非先占モードは、処理効率の要求程度によって、先占区間の０％から２０％範囲内で多数の詳細先占レベルに区分されうる。プリエンプションマネージャー１１０は、現在先占モードを設定し、その現在先占モードの細部的な先占レベルをさらに設定して、カーネルの先占区間を動的に調整することができる。前記の特定パーセントは、単純な例に過ぎず、それ以上の多様なパーセントが状況に応じて使われる。
【００３８】
本発明の追加的な態様によれば、動的に先占区間を調整する装置１００は、インタラプトコンテキストマネージャー１２０をさらに含みうる。インタラプトコンテキストマネージャー１２０は、プリエンプションマネージャー１１０によって設定された現在先占モードによって、ＩＳＲの処理方法を動的に変更することができる。さらに具体的に、インタラプトコンテキストマネージャー１２０は、ハードウェアインタラプトが発生すれば、現在先占モードを確認して、現在先占モードが非先占モードであれば、インタラプトコンテキストモードでＩＳＲを引き続き行わせ、非先占モードでなければ、例えば、現在先占モードが一般先占モードであるか、完全先占モードであれば、インタラプトスレッドモードでＩＳＲが行われるように変更することができる。
【００３９】
特定インタラプトがシステムに印加されれば、ハードウェアによって定められたインタラプトベクトル（ｉｎｔｅｒｒｕｐｔ  ｖｅｃｔｏｒ）に分岐され、インタラプト前処理器は、インタラプトコンテキストモードで現在先占モードを確認する作業を行う。ここで、インタラプトベクトルとは、インタラプトが発生した時、そのインタラプトを処理することができるサービスルーチンのアドレスを有している空間を言う。現在先占モードが非先占モードである場合には、リアルタイム性が重要視されない環境であるので、インタラプトコンテキストモードでＩＳＲを処理し、一般先占モードや完全先占モードである場合には、インタラプトスレッドモードでＩＳＲが処理されるようにインタラプトスレッドをスケジューリングし、ＩＳＲを処理する。インタラプトスレッドを利用すれば、インタラプト自体がスレッドに処理されるために、先占がいつでも可能であり、優先順位によってスケジューリングを変更することもできるために、処理効率に対するオーバーヘッドは多少存在するが、リアルタイム性が向上する。
【００４０】
また、動的に先占区間を調整する装置１００は、プリエンプションポイントマネージャー１３０をさらに含みうる。プリエンプションポイントマネージャー１３０は、現在先占モードによって、カーネルサービスルーチンに挿入されたプリエンプションポイントで現在スレッドの再スケジュールチェック如何を動的に変更することができる。プリエンプションポイントは、実行時間が長くかかるカーネルサービスルーチンの初盤に挿入され、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションを含みうる。
【００４１】
カーネルサービスルーチンの実行がプリエンプションポイントに到逹すれば、プリエンプションポイントマネージャー１３０は、現在先占モードが非先占モードであるか否かを確認し、その結果、現在先占モードが非先占モードであれば、現在スレッドが、再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止して、カーネルサービスルーチンが現在スレッドを引き続き行わせ、現在先占モードが非先占モードでなければ、現在スレッドの再スケジュール有無をチェックするコードセクションの実行を許容することができる。したがって、非先占モードである場合、毎度再スケジュール有無を確認しないので、リアルタイム性は多少低下するが、処理効率性は向上させうる。
【００４２】
動的に先占区間を調整する装置１００は、プリエンプティブロックマネージャー１４０をさらに含みうる。プリエンプティブロックマネージャー１４０は、カーネルがスピンロックを有したタスクを行う時、プリエンプションマネージャー１１０によって設定された現在先占モードによって、動的にスピンロックまたはミューテックスのうちの何れか１つを使って、そのタスクを処理するように変更することができる。スピンロックとは、他のスレッドがロックを返還して、ロックが可能になるまで反復的にチェックし、待機することを言う。ミューテックスとは、相互排除（Ｍｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎ）とも言うが、クリティカルセクション（Ｃｒｉｔｉｃａｌ  Ｓｅｃｔｉｏｎ）を有したスレッドの実行時間が互いに重ならないように、それぞれ単独で実行させる技術である。多重プロセスの共有リソースに対する接近を調律するために、ロック（ｌｏｃｋ）とアンロック（Ｕｎｌｏｃｋ）とを使う。
【００４３】
プリエンプティブロックマネージャー１４０は、設定された現在先占モードが完全先占モードであれば、スピンロックの代わりに、ミューテックスを使うように動的に調整することができる。これは、スピンロックを有している低い優先順位のタスクが遂行中である時、同じコードを行うリアルタイム性タスクが同じスピンロックを要しない場合、既にロックを有したタスクを先占して遂行可能にする。この際、同じロックをリアルタイム性タスクが必要とする場合には、待たなければならない。ミューテックスは、処理効率面では、オーバーヘッドが存在するので、プリエンプションマネージャー１１０によって現在先占モードが非先占モードとして設定されれば、プリエンプションロックマネージャー１４０は、ミューテックスコードをスピンロックコードでポインティングされるように調整して、繁忙待機（ｂｕｓｙ  ｗａｉｔｉｎｇ）を行うが、処理効率面では、性能が相対的に優れたスピンロックコードを行わせうる。
【００４４】
本発明の追加的な態様によれば、動的に先占区間を調整する装置１００は、プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０をさらに含みうる。プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０は、ＩＰＣ処理時、プリエンプションマネージャー１１０によって設定された現在先占モードによって、ＩＰＣのタイムアウトを動的に調整するか、システムコールが行われれば、現在先占モードによって、同期式（Ｓｙｎｃｈｒｏｎｏｕｓ）または非同期式（ａｓｙｎｃｈｒｏｎｏｕｓ）に行われるように動的に調整することができる。
【００４５】
例えば、プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０は、システムコールが行われれば、現在行われたタスクが、リアルタイム性が要求されるタスクであるか否かを把握する。すなわち、プリエンプションマネージャー１１０によって設定された現在先占モードが、完全先占モードとしてリアルタイム処理が要求されるタスクである場合、非同期式にシステムコールを行わせ、設定された現在先占モードが、非先占モードのようにリアルタイム処理が要求されないタスクであり、同期式にシステムコールが行われるように調整することができる。
【００４６】
本発明の追加的な態様による動的に先占区間を調整する装置１００は、プリエンプティブＨＷマネージャー１６０をさらに含みうる。プリエンプティブＨＷマネージャー１６０は、プリエンプションマネージャー１１０によって設定された現在先占モードによって、リアルタイム処理が要求されるリアルタイム性タスクが、ＴＬＢでフラッシュされないように動的にＴＬＢロックダウンを設定または解除することができる。また、そのリアルタイム性タスクでページフォールト（ｐａｇｅ  ｆａｕｌｔ）が発生しないように、タイムクリティカル（ｔｉｍｅ−ｃｒｉｔｉｃａｌ）メモリページをピニング（ｐｉｎｎｉｎｇ）することができる。ＴＬＢは、運用体制及びアプリケーションの仮想アドレスを物理アドレスに変換する時に発生するページテーブル変換オーバーヘッド（ｐａｇｅ  ｔａｂｌｅ  ｔｒａｎｓｌａｔｉｏｎ  ｏｖｅｒｈｅａｄ）を減らすための制限されたハードウェアリソースを言う。ＴＬＢフラッシュは、内部的なアルゴリズムによって動作するために、リアルタイム処理が重要な瞬間にフラッシュが発生すれば、レイテンシー（ｌａｔｅｎｃｙ）を誘発することができる。したがって、プリエンプティブＨＷマネージャー１６０は、設定された現在先占モードが完全先占モードであれば、重要なリアルタイム性アプリケーションが常にＴＬＢに含まれるように動的にロックダウンすることができる。ＴＬＢ、ＴＬＢフラッシュ及びＴＬＢロックダウンは、この分野で既に知られた技術であるので、詳しい説明は省略する。
【００４７】
動的に先占区間を調整する装置１００は、ユーザレベルサーバ及びタスクマネージャー（Ｕｓｅｒ  ｌｅｖｅｌ  Ｓｅｒｖｅｒ  ＆  ｔａｓｋ  ｍａｎａｇｅｒ）１７０をさらに含みうる。ユーザレベルサーバ及びタスクマネージャー１７０は、プリエンプションマネージャー１１０によって現在先占モードが設定されれば、該設定された現在先占モードに合うように動的にユーザレイヤのプリエンプター（ｐｒｅｅｍｐｔｅｒ）、インタラプトスレッド、ページャー（ｐａｇｅｒ）、スケジューラなどの遂行方法を調整することができる。
【００４８】
図２は、本発明の一実施形態によって運用体制で動的に先占区間を調整する方法の例示図である。図２を参照して、動的に先占区間を調整する方法を具体的に説明すれば、まず、プリエンプションマネージャー１１０は、現在のシステムコンテキストが変更されるかをモニタリングし（段階１１１）、システムコンテキストが変更されれば、そのシステムコンテキストを分析する（段階１２１）。次いで、変更されたシステムコンテキストがヘルスケアモニタリングや運転者監視、カークラッシュアラームなどのアプリケーションが実行される場合のように、処理効率よりもリアルタイム処理が非常に重要な環境であれば（段階１３１）、現在先占モードを完全先占モードとして設定することができる（段階１４１）。
【００４９】
もし、分析の結果、そのシステムコンテキストが、エンベデッドサーバやデータストリーミングのように、リアルタイム処理よりも処理効率性がさらに高く要求されるアプリケーションが実行される環境であれば（段階１３２）、現在先占モードを非先占モードとして設定し（段階１４２）、そうでなければ、現在先占モードを一般先占モードとして設定することができる（段階１４３）。
【００５０】
但し、前述したように、各先占モードは、コンテキストによって多様な段階のモードに細分化されることができるので、変更されたシステムコンテキストが非常に高いリアルタイム処理要求環境であるか、処理効率性が非常に高い環境ではない一般的な環境、すなわち、多様なアプリケーションが混在されている環境では、一般先占モードをさらに細分化して設定することができる。
【００５１】
図３は、本発明の一実施形態によってＩＳＲ遂行方法を動的に調整する方法を示す図である。プリエンプションマネージャー１１０によって設定された現在先占モードによって、ＩＳＲ遂行方法を動的に調整する手続きについて説明する。まず、インタラプトコンテキストマネージャーは、ハードウェアでインタラプトが発生すれば（段階２１０）、そのインタラプトをインタラプトベクトルに分岐する（段階２２０）。次いで、インタラプト前処理器（ｉｎｔｅｒｒｕｐｔ  ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）を通じてインタラプトコンテキストモードで現在先占モードを確認し（段階２３０）、非先占モードであるか否かを決定する（段階２４０）。
【００５２】
もし、現在先占モードが非先占モードであれば（段階２４０）、リアルタイム処理が重要ではない環境であるので、そのままインタラプトコンテキストモードでＩＳＲを処理する（段階２９０）。
【００５３】
もし、現在先占モードが非先占モードでなければ、すなわち、一般先占モードであるか、完全先占モードであれば（段階２４０）、インタラプトスレッドモードでＩＳＲが処理されるようにインタラプトスレッドを活性化する（段階２５０）。次いで、現在インタラプトスレッドを優先順位によって再スケジューリングするかを判断し（段階２６０）、再スケジュールが必要であれば、インタラプトスレッドを再スケジューリングし（段階２７０）、ＩＳＲを再スケジューリング結果によって、適切な時期にインタラプトスレッドモードで行わせる（段階２８０）。もし、判断の結果、再スケジュールが必要でなければ、インタラプト優先順位による再スケジュールはせず、インタラプトスレッドモードでＩＳＲを行わせる（段階２８０）。
【００５４】
インタラプトスレッドを利用すれば、インタラプト自体がスレッドに処理されるために、先占がいつでも可能であり、優先順位によってスケジューリングを変更することもできるために、処理効率面でオーバーヘッドは多少存在するが、リアルタイム処理が向上する。
【００５５】
図４は、本発明の一実施形態によってプリエンプションポイント遂行手続きを動的に調整する方法を示す図である。図１と図４とを参照すると、プリエンプションポイントは、実行時間が長くかかるカーネルサービスルーチンの初盤に挿入されうる。プリエンプションポイントは、現在スレッドの再スケジューリングをチェックするか否かを動的に調整するコードセクションを含みうる。カーネルサービスルーチンの実行がプリエンプションポイントに到逹する時（段階３１０）、プリエンプションポイントマネージャー１３０は、現在先占モードが非先占モードであるか否かを確認する（段階３２０）。
【００５６】
確認の結果、現在先占モードが非先占モードであれば、カーネルサービスルーチンが現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を防止して、カーネルサービスルーチンが現在スレッドを引き続き行わせ、次の動作を行わせる（段階３５０）。
【００５７】
現在先占モードが非先占モードでなければ、プリエンプションポイントマネージャー１３０は、カーネルサービスルーチンが現在スレッドの再スケジュールが必要であるか否かをチェックするコードセクションの実行を許容する（段階３３０）。
【００５８】
現在スレッドの再スケジュール有無をチェックして、再スケジューリングが必要であれば、カーネルサービスルーチンは、現在スレッドを再スケジューリングする（段階３４０）。現在スレッドの再スケジュールが必要でなければ、カーネルサービスルーチンは、現在スレッドを引き続き行い、その次の動作を行う（段階３５０）。
【００５９】
したがって、現在先占モードが非先占モードである場合、毎度再スケジューリング有無を確認する必要がないので、リアルタイム処理は多少低下するが、処理効率は向上させうる。
【００６０】
図５は、本発明の一実施形態によってシステムのロック方法が動的に調整される例示図である。プリエンプティブロックマネージャー１４０は、カーネルがスピンロックを有したタスクを行う時、設定された現在先占モードによって、動的にスピンロックまたはミューテックスを使って、そのタスクを行うように変更することができる。例えば、プリエンプティブロックマネージャー１４０は、設定された現在先占モードが完全先占モードであれば、スピンロックの代わりに、ミューテックスを使うように調整することができる。すなわち、スピンロックを有している低い優先順位のタスクが遂行中である時、同じコードを行うリアルタイム性タスクが同じスピンロックを要しない場合、既にロックを有したタスクを先占して行わせうる。ミューテックスは、処理効率面では、オーバーヘッドが存在するので、プリエンプションマネージャー１１０によって現在先占モードが非先占モードとして設定されれば、プリエンプションロックマネージャー１４０は、ミューテックスコードをスピンロックコードにポインティングされるように調整して、繁忙待機を行うが、処理効率面では、性能が相対的に優れたスピンロックコードを行わせうる。
【００６１】
図６は、本発明の一実施形態によってシステムコール遂行方法を動的に調整する例示図である。プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０は、ＩＰＣ処理時、設定された現在先占モードによって、ＩＰＣのタイムアウトを動的に調整することができる。また、システムコールが行われれば、現在先占モードによって、同期式または非同期式に行われるように動的に調整することができる。
【００６２】
図６を参照して、システムコール遂行時、現在先占モードによって、システムコールを行う手続きを説明する。まず、システムコールが行われれば（段階４１０）、プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０は、設定された現在先占モードを確認し（段階４２０）、現在先占モードが非先占モードであるか否かを決定する（段階４３０）。
【００６３】
現在先占モードが、完全先占モードとして現在行われたタスクがリアルタイム処理が要求されるタスクであれば、プリエンプティブＩＰＣ／ＳｙｓＣａｌｌマネージャー１５０は、非同期的にシステムコールを行うように調整し（段階４４０）、現在先占モードが非先占モードであれば、同期的にシステムコールが行われるように調整することができる（段階４５０）。
【００６４】
図７は、本発明の一実施形態によってＴＬＢロックダウンを動的に設定する方法の例示図である。プリエンプティブＨＷマネージャー１６０は、設定された現在先占モードによって、リアルタイム性タスクがＴＬＢでフラッシュされないように動的にＴＬＢロックダウンを設定または解除することができる。また、プリエンプティブＨＷマネージャー１６０は、リアルタイム性タスクでページフォールトが発生しないように、タイムクリティカルメモリページをピニングすることができる。
【００６５】
さらに具体的に、ＴＬＢロックダウンを動的に設定する方法を説明すれば、リアルタイム処理が要求されるタスクが登録されれば（段階５１０）、プリエンプティブＨＷマネージャー１６０は、現在先占モードが非先占モードとして決定されることによって、ＴＬＢロックダウンが必要であるか否かを判断する（段階５２０）。
【００６６】
段階５２０の決定の結果、現在先占モードが非先占モードであれば、プリエンプティブＨ／Ｗマネージャー１６０は、リアルタイム処理が要求されるタスクを一般的に処理させる（段階５５０）。
【００６７】
段階５２０の決定の結果、現在先占モードが非先占モードでなければ、例えば、完全先占モードであるか、一般先占モードであれば、プリエンプティブＨＷマネージャー１６０は、リアルタイム処理が要求されるタスクの優先順位をチェックし、リアルタイム処理が要求されるアプリケーションやタスクを常にＴＬＢに含める（段階５３０）。
【００６８】
段階５３０の判断の結果、リアルタイム処理を要求するタスクが高い優先順位である場合、プリエンプティブＨＷマネージャーは、リアルタイム処理を要求するタスクのために、ＴＬＢロックダウンを設定する（段階５４０）。
【００６９】
段階５３０の判断の結果、リアルタイム処理が要求されるタスクが優先順位が高くなければ、プリエンプティブＨＷマネージャー１６０は、リアルタイム処理が要求されるタスクをＴＬＢロックダウンの設定なしに行わせうる。
【００７０】
当業者は、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
【産業上の利用可能性】
【００７１】
本発明は、運用体制で動的に先占区間を調整する装置及び方法関連の技術分野に適用可能である。
【図１】
0006271123.tif 000002
【図２】
0006271123.tif 000003
【図３】
0006271123.tif 000004
【図４】
0006271123.tif 000005
【図５】
0006271123.tif 000006
【図６】
0006271123.tif 000007
【図７】
0006271123.tif 000008