JP3823475B2 - データ処理方法、記録媒体及びデータ処理装置 - Google Patents
データ処理方法、記録媒体及びデータ処理装置 Download PDFInfo
- Publication number
- JP3823475B2 JP3823475B2 JP25388997A JP25388997A JP3823475B2 JP 3823475 B2 JP3823475 B2 JP 3823475B2 JP 25388997 A JP25388997 A JP 25388997A JP 25388997 A JP25388997 A JP 25388997A JP 3823475 B2 JP3823475 B2 JP 3823475B2
- Authority
- JP
- Japan
- Prior art keywords
- scheduler
- thread
- context switch
- called
- metaspace
- 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.)
- Expired - Fee Related
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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、データ処理方法に関し、特に、オペレーティングシステムによるスケジュール管理機構に関する。また、本発明は、スケジュール管理機構を備えたオペレーティングシステムが記録された記録媒体、並びにそのような記録媒体を備えたデータ処理装置に関する。
【0002】
【従来の技術】
オペレーティングシステムには、いわゆるファットカーネル(Fat Kernel)を採用したオペレーティングシステムと、いわゆるマイクロカーネル(Micro Kernel)を採用したオペレーティングシステムと、いわゆるナノカーネル(Nano Kernel)を採用したオペレーティングシステムとがある。
【0003】
ファットカーネルを採用したオペレーティングシステムでは、オペレーティングシステムの機能が全てカーネル内に実装される。したがって、例えば、アプリケーションプログラムが、スレッドの状態変化を伴うオペレーティングシステムのサービスを要求する場合には、図12に示すように、先ず、ファットカーネル内の対応したモジュール(例えば図12における「Mailer」や「Syncronization」)がシステムコール(system call)によって呼び出される。その後、各モジュールからスレッドの状態を遷移させるために、スレッドの実行順序を制御してそれらのスケジュール管理を行うスケジューラ(Scheduler)が、いわゆる関数呼び出し(function call)によって呼び出され、これにより、スレッドの状態変化を伴う処理が行われる。
【0004】
このように、ファットカーネルを採用したオペレーティングシステムでは、オペレーティングシステムの機能が全てカーネル内に実装される。このため、様々な機能をオペレーティングシステムに実装させるには、カーネル内の知識が必要であり、また、それらの変更も容易ではない。すなわち、ファットカーネルを採用したオペレーティングシステムは、柔軟性に欠けるという問題点を持つ。
【0005】
一方、マイクロカーネルを採用したオペレーティングシステムでは、カーネル内に実装する機能をハードウェア制御等のような基本的な機能だけとする。すなわち、マイクロカーネルを採用したオペレーティングシステムでは、ハードウェア制御等のような基本的な機能がマイクロカーネルに実装され、その他のオペレーティングシステムとしての機能については、マイクロカーネル外で実現される。
【0006】
このようなマイクロカーネルを採用したオペレーティングシステムでは、カーネルに実装される機能を限定することにより、柔軟性が欠けるというファットカーネルにおける問題を解決することができる。
【0007】
マイクロカーネルを採用したオペレーティングシステムでは、図13に示すように、アプリケーションプログラムのみならず、オペレーティングシステムとしての機能を提供するモジュール(例えば図13における「Syncronization」,「Mailer」,「Scheduler」)も、マイクロカーネル上で動作する。したがって、オペレーティングシステムの機能を提供するモジュール自身も、マイクロカーネル内に実装されたスケジューラ(Scheduler)によって、スケジュール管理がなされる。
【0008】
このようなマイクロカーネルを採用したオペレーティングシステムにおいて、アプリケーションプログラムと、オペレーティングシステムの機能を提供するモジュールとの間の呼び出しは、マイクロカーネルによって提供される通信機構(Mailer)を用いて行う。また、オペレーティングシステムの機能を提供するモジュールは、マイクロカーネルによって提供されるインターフェースを用いて、マイクロカーネル内に実装されたスケジューラ(Scheduler)を間接的に呼び出すことで、アプリケーションプログラムの実行を制御する。
【0009】
また、ナノカーネルを採用したオペレーティングシステムでは、図14に示すように、マイクロカーネルの中から更に、コンテキストの切り替え(いわゆるコンテキストスイッチ)を担うコンテキストスイッチ機構のみをナノカーネルとして取り出す。
【0010】
すなわち、ナノカーネルを採用したオペレーティングシステムでは、CPU等の機種に依存する部分であるコンテキストスイッチ機構を取り出して抽象化する。これにより、カーネルの移植性やプログラミング容易性を更に向上することができる。
【0011】
【発明が解決しようとする課題】
上述したように、オペレーティングシステムの柔軟性を高めて、移植性やプログラミング容易性等の向上を図るという観点からは、ファットカーネルよりもマイクロカーネルを採用した方が好ましく、更にはナノカーネルを採用した方がより好ましい。
【0012】
しかしながら、マイクロカーネルやナノカーネルを採用したときには、全ての実行実体(例えば、オペレーティングシステム上で動作するアプリケーションプログラムや、オペレーティングシステムとしての機能を提供するオブジェクト等)が動作する度に、マイクロカーネルの通信機構やスケジューラを呼び出すこととなるため、多数のコンテキストスイッチが必要となる。このため、マイクロカーネルやナノカーネルを採用したオペレーティングシステムでは、ファットカーネルを採用したオペレーティングシステムよりも、システム全体としての性能が低下してしまうという問題が生じる。
【0013】
また、ナノカーネルを採用したオペレーティングシステムでは、通信機構やスケジューラ等を呼び出すときにも、コンテキストスイッチを必要とする。このため、ナノカーネルを採用したオペレーティングシステムでは、コンテキストスイッチの増加に伴うオーバーヘッドが、マイクロカーネルを採用したオペレーティングシステムよりも、更に増加してしまうという問題がある。
【0014】
このように、ナノカーネルを採用すると、コンテキストスイッチが増加してしまい、システム全体の性能が低下する。このような性能低下を避けるための手段としては、例えば、コンテキストスイッチ時におけるスケジューラの呼び出しを削減することが考えられる。しかしながら、単にスケジューラの呼び出しを行わないようにしたのでは、スケジュール管理が適切になされなくなってしまい、システム動作に不都合が生じる。
【0015】
すなわち、スケジューラの呼び出しを省略してしまうと、スケジュール管理に必要な情報がスケジューラに渡されなくなってしまい、実際のシステムの状態と、スケジューラの側で把握している状態とが相違してしまう。このため、スケジューラによるスケジュール管理が、正しく行われなくなってしまう。また、スケジューラは、スケジュール管理の対象となっているスレッドの待ち行列を変更した場合には、通常、優先度の高い処理が先に行われるように再スケジューリングを行うが、スケジューラの呼び出しを省略してしまうと、再スケジューリングが行われないため、優先度の高い処理が待たされてしまう等の不都合が生じる。
【0016】
本発明は、以上のような従来の実情に鑑みて提案されたものであり、ナノカーネルを採用しつつ、スケジューラの呼び出しを最小限に押さえて、且つ、システム全体を正しく動作させることが可能なデータ処理方法を提供することを目的としている。また、そのようなデータ処理方法を実現するプログラムが記録された記録媒体、並びにそのような記録媒体を備えたデータ処理装置を提供することも目的としている。
【0017】
【課題を解決するための手段】
本発明に係るデータ処理方法では、実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておく。そして、スレッドの実行順序を制御するスケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新する。
【0018】
このような本発明に係るデータ処理法では、スケジューラが呼び出されたときに、コンテキストスイッチの履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって待ち行列を更新するようにしているので、スケジューラの呼び出しを省略してコンテキストスイッチがなされていたとしても、スケジューラによるスケジュール管理を正しく行うことができる。
【0019】
なお、上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すようにしてもよい。このようにしておけば、常に適切なときに待ち行列の順序の再設定がなされることとなるため、例えば、優先度の高い処理が待たされてしまう等の不都合を回避できる。
【0020】
また、フラグを設定するようにしたときには、上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なるようにしてもよい。このようにしておけば、より適切なときに待ち行列の順序の再設定がなされるようにすることが可能となる。
【0021】
また、本発明に係る記録媒体は、スレッドの実行順序を制御するスケジューラを有するオペレーティングシステムが記録されたコンピュータ読み取り可能な記録媒体である。そして、上記オペレーティングシステムは、実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておき、スケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新する。
【0022】
このような本発明に係る記録媒体に記録されたオペレーティングシステムでは、スケジューラが呼び出されたときに、コンテキストスイッチの履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって待ち行列を更新するようにしているので、スケジューラの呼び出しを省略してコンテキストスイッチがなされていたとしても、スケジューラによるスケジュール管理を正しく行うことができる。
【0023】
なお、上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すようにしてもよい。このようにしておけば、常に適切なときに待ち行列の順序の再設定がなされることとなるため、例えば、優先度の高い処理が待たされてしまう等の不都合を回避できる。
【0024】
また、フラグを設定するようにしたときには、上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なるようにしてもよい。このようにしておけば、より適切なときに待ち行列の順序の再設定がなされるようにすることが可能となる。
【0025】
本発明に係るデータ処理装置は、スレッドの実行順序を制御するスケジューラを有するオペレーティングシステムが記録されたコンピュータ読み取り可能な記録媒体を備えたデータ処理装置である。そして、上記オペレーティングシステムは、実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておき、スケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新する。
【0026】
このような本発明に係るデータ処理装置に備えられた記録媒体に記録されたオペレーティングシステムでは、スケジューラが呼び出されたときに、コンテキストスイッチの履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって待ち行列を更新するようにしているので、スケジューラの呼び出しを省略してコンテキストスイッチがなされていたとしても、スケジューラによるスケジュール管理を正しく行うことができる。
【0027】
なお、上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すようにしてもよい。このようにしておけば、常に適切なときに待ち行列の順序の再設定がなされることとなるため、例えば、優先度の高い処理が待たされてしまう等の不都合を回避できる。
【0028】
また、フラグを設定するようにしたときには、上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なるようにしてもよい。このようにしておけば、より適切なときに待ち行列の順序の再設定がなされるようにすることが可能となる。
【0029】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【0030】
1.ハードウェア環境
まず、本発明が適用されるハードウェア構成の一例について、図1を参照して説明する。なお、ここでは、本発明の実施の形態の一例として、テレビ装置に本発明を適用した例を挙げるが、当然の事ながら、本発明は、その他のデータ処理装置にも適用可能である。すなわち、本発明は、オペレーティングシステムが動作するデータ処理装置に広く適用可能であり、例えば、テレビ装置以外のオーディオ・ビジュアル機器(いわゆるAV機器)や、各種の事務機器や、一般のコンピュータ装置等にも適用可能である。
【0031】
本発明が適用されたデータ処理装置である図1に示すテレビ装置は、アンテナ又はケーブル等によって放送局からの信号を受信し、当該信号に基づいて、ブラウン管又は液晶等の画像表示装置に映像を表示すると共にスピーカから音声を出力する。
【0032】
このテレビ装置は、通常のテレビ機能を備えているだけでなく、外部からプログラムやデータを受けとることが可能となっており、図1に示すように、バス/IOブリッジ1を介してバス2に接続されたテレビ機能部3と、バス/メモリブリッジ4を介してバス2に接続されたプロセッサ5と、バス/メモリブリッジ4を介してプロセッサ5に接続されたROM(Read Only Memory)6及びRAM(Random Access Memory)7と、バス2に接続された操作パネル8、外部記憶装置9及び通信装置10とを備えている。
【0033】
テレビ機能部3は、アンテナ又はケーブル等によって受信した信号に基づいて、映像や音声を再生する機能を備えている。このテレビ機能部3は、バス/IOブリッジ1を介してバス2に接続されており、これにより、他の部分との信号のやり取りが可能となっている。
【0034】
プロセッサ5は、このテレビ装置の各部の制御を行うものであり、バス/メモリブリッジ4を介してバス2に接続されている。また、プロセッサ5には、バス/メモリブリッジ4を介してROM6及びRAM7が接続されている。
【0035】
ROM6は、プロセッサ5による制御を行うためのオペレーティングシステムやアプリケーションプログラム等を記憶している。ここで、オペレーティングシステムは、ナノカーネルを採用したオペレーティングシステムである。また、このオペレーティングシステムは、オブジェクト指向が適用されてなるオブジェクト指向型オペレーティングシステムでもある。
【0036】
RAM7は、プロセッサ5のワークエリアとして使われる。すなわち、プロセッサ5は、ROM6に記憶されているオペレーティングシステムやアプリケーションプログラム等を、RAM7をワークエリアとして使用して実行することにより、このテレビ装置を構成する各部を制御する。
【0037】
操作パネル8は、ユーザからの操作入力を受け付けるための入力装置であり、この操作パネル8から、例えば、テレビのチャンネルやボリューム等の切り換えを指示する信号が入力される。この操作パネル8は、具体的には、各種信号を入力するための複数のボタンを備えた入力装置や、いわゆるマウスと称されるようなポインティングデバイス等からなる。この操作パネル8によって入力された信号は、バス2及びバス/メモリブリッジ4を介してプロセッサ5に入力される。そして、プロセッサ5は、操作パネル8によって入力された信号に基づいて、所定の演算処理を行って各部を制御する。
【0038】
外部記憶装置9は、例えばハードディスク装置からなり、画像データ、制御データ、又は外部から通信装置10を介してダウンロードされたアプリケーションプログラム等を記録するのに使われる。また、通信装置10は、外部との間でデータ通信を行うための入出力部であり、例えばモデムやターミナルアダプター等からなる。
【0039】
このテレビ装置は、テレビ機能部3によって提供される通常のテレビ機能を備えているだけでなく、通信装置10を介して、外部からプログラムやデータを受け取ることが可能となっている。すなわち、このテレビ装置では、例えば、外部のネットワークから通信装置10を介して新規ソフトウェアモジュールを受け取ることにより、オペレーティングシステムやアプリケーションプログラムのバージョンアップを行うことが可能となっている。
【0040】
また、このテレビ装置では、プロセッサ5によって、ROM6に記憶されているオペレーティングシステムを実行するとともに、オペレーティングシステム上で、ROM6や外部記憶装置9に記憶されているアプリケーションプログラムを実行することにより、各部の制御を行う。すなわち、このテレビ装置は、オペレーティングシステムが記録されたコンピュータ読み取り可能な記録媒体として、ROM6を備えている。なお、オペレーティングシステムは、RAM7や外部記憶装置9に記録しておくようにしてもよい。特に、オペレーティングシステムの書き換えを行えるようにしたい場合には、RAM7や外部記憶装置9に記録しておくようにする。
【0041】
2.ソフトウェア環境
つぎに、上記テレビ装置におけるソフトウェア環境について説明する。
【0042】
2−1 オペレーティングシステムの概略構成
上記テレビ装置で使用されるオペレーティングシステムは、ナノカーネルを採用したオペレーティングシステムであり、図2に示すように、コンテキストスイッチを司るナノカーネルに相当する部分としてメタコア(MetaCore)を備えている。
【0043】
また、このオペレーティングシステムは、オブジェクト指向を採用している。換言すれば、このオペレーティングシステムにおいて、ナノカーネルに相当するメタコア上で動作する実行実体はオブジェクトであり、オブジェクト間のやり取りはメッセージ通信によってなされる。
【0044】
また、このオペレーティングシステムは、複数のプログラム実行環境を同時に提供することが可能となっている。以下の説明では、このオペレーティングシステムによって提供されるプログラム実行環境のことをメタスペースと呼ぶ。具体的には、このオペレーティングシステムは、メタスペースとして、図2に示すように、mCOOPメタスペースと、mDriveメタスペースと、mCoreメタスペースとを提供する。これらのメタスペースは、複数のオブジェクトで構成される。なお、以下の説明では、メタスペースを構成するオブジェクトのことをメタオブジェクトと称する。
【0045】
mCOOPメタスペースは、オブジェクト指向型のアプリケーションプログラム(例えば、操作パネル8を制御するためのグラフィカル・ユーザ・インターフェースを実現するアプリケーションプログラム)を動作させるためのメタスペースである。なお、mCOOPメタスペースの「m」はメタスペースである旨を示しており、「COOP」は、Concurrent Object Oriented Programmingの略である。
【0046】
mDriveメタスペースは、ハードウェアの制御を担うデバイスドライバを動作させるためのメタスペースである。なお、mDriveメタスペースの「m」はメタスペースである旨を示しており、「Drive」は、デバイスドライバ(Device Driver)を動作させるメタスペースである旨を示している。
【0047】
また、mCoreメタスペースは、mCOOPメタスペース及びmDriveメタスペースを構成するメタオブジェクトを動作させるためのメタスペースであり、マイクロカーネルに相当する。なお、mCoreメタスペースの「m」はメタスペースである旨を示しており、「Core」は、オペレーティングシステムの核となる部分であることを示している。
【0048】
すなわち、このオペレーティングシステムでは、図2に示すように、CPU等のハードウェアの上でmCoreメタスペースが動作し、mCoreメタスペースの上でmCOOPメタスペース及びmDriveメタスペースが動作し、mCOOPメタスペースの上でオブジェクト指向型のアプリケーションプログラムが動作し、mDriveメタスペースの上でデバイスドライバが動作する。そして、これらの間のコンテキストスイッチがメタコアによって制御される。
【0049】
なお、このオペレーティングシステムは、mCoreメタスペースの上で動作するメタスペースとして、mCOOPメタスペースやmDriveメタスペース以外にも、例えば、手続き型のアプリケーションプログラム(例えば、テレビ機能部3に動画像を表示するためのアプリケーションプログラム)を動作させるためのメタスペース等も提供可能とされている。ただし、mCoreメタスペース上で動作するメタスペースが異なっていても、本発明はそれらのメタスペースに対して同様に適用可能であるので、以下の説明では、mCOOPメタスペースやmDriveメタスペースだけを例に挙げ、他のメタスペースについては説明を省略する。
【0050】
2−2 メタオブジェクト
mCOOPメタスペースを構成するメタオブジェクトには、図2に示すように、オブジェクト「mCOOPScheduler」と、オブジェクト「mCOOPMailer」と、オブジェクト「mCOOPFaultHandler」とがある。ここで、オブジェクト「mCOOPScheduler」は、いわゆるスケジューラであり、mCOOPメタスペース上で動作するアプリケーションプログラムのスケジュール管理等を担うメタオブジェクトである。オブジェクト「mCOOPMailer」は、mCOOPメタスペース上で動作するアプリケーションプログラム間のメッセージ通信等を担うメタオブジェクトである。オブジェクト「mCOOPFaultHandler」は、例外処理を担うメタオブジェクトである。なお、mCOOPメタスペースは、実際にはこれらのメタオブジェクトの他、様々なメタオブジェクトによって構成される。
【0051】
mDriveメタスペースを構成するメタオブジェクトには、図2に示すように、オブジェクト「mDriveScheduler」と、オブジェクト「mDriveMailer」と、オブジェクト「mDriveFaultHandler」とがある。ここで、オブジェクト「mDriveScheduler」は、いわゆるスケジューラであり、mDriveメタスペース上で動作するデバイスドライバのスケジュール管理等を担うメタオブジェクトである。オブジェクト「mDriveMailer」は、mDriveメタスペース上で動作するデバイスドライバ間のメッセージ通信等を担うメタオブジェクトである。オブジェクト「mDriveFaultHandler」は、例外処理を担うメタオブジェクトである。なお、mDriveメタスペースも、実際にはこれらのメタオブジェクトの他、様々なメタオブジェクトによって構成される。
【0052】
mCoreメタスペースを構成するメタオブジェクトには、図2に示すように、オブジェクト「mCoreScheduler」と、オブジェクト「mCoreMailer」とがある。ここで、オブジェクト「mCoreScheduler」は、いわゆるスケジューラであり、mCoreメタスペース上で動作するオブジェクトのスケジュール管理等を担うメタオブジェクトである。オブジェクト「mCoreMailer」は、mCoreメタスペース上で動作するメタオブジェクト間のメッセージ通信等を担うメタオブジェクトである。なお、mCoreメタスペースも、実際にはこれらのメタオブジェクトの他、様々なメタオブジェクトによって構成される。
【0053】
なお、本例では、スケジュール管理を担うメタオブジェクトを、それぞれのメタスペース毎に別々のメタオブジェクトとしたが、スケジュール管理を担うメタオブジェクトを全メタスペースで共有するようにしてもよい。すなわち、スケジュール管理を担うメタオブジェクトを、mCOOPメタスペースで使用するときにはmCOOPメタスペースのメタオブジェクトとして振る舞い、mDriveメタスペースで使用するときにはmDriveメタスペースのメタオブジェクトとして振る舞い、mCoreメタスペースで使用するときにはmCoreメタスペースのメタオブジェクトとして振る舞うようにすることにより、全メタスペースで共有することも可能である。
【0054】
なお、以下の説明では、メタスペース上で動くオブジェクトのことをベースオブジェクトと称し、ベースオブジェクトがメタオブジェクトによって提供されるサービスを受けるために行うメタオブジェクト呼び出しのことをメタコール(meta-call)と称する。なお、メタコールは、ファットカーネルにおけるシステムコールに相当する。そして、ベースオブジェクトとメタオブジェクトとの間のコンテキストスイッチは、ナノカーネルに相当するメタコアによって行われる。
【0055】
また、以下の説明において、「スケジューラ」とは、スケジュール管理を担うメタオブジェクトであるオブジェクト「mCOOPScheduler」、オブジェクト「mDriveScheduler」及びオブジェクト「mCoreScheduler」のことをまとめて指すものとする。
【0056】
2−3 従来のスケジュール管理機構
本発明の実施の形態の説明に先立って、従来、ナノカーネルを採用したオペレーティングシステムで、スケジュール管理がどのようになされていたかについて説明する。
【0057】
なお、ここでは、mCOOPメタスペース上で動作するアプリケーションプログラムであるオブジェクトAから、同様にmCOOPメタスペース上で動作するアプリケーションプログラムであるオブジェクトBへ、メッセージを送信する場合を例に挙げ、図3及び図4を参照して説明する。ここで、図3は、オブジェクトAからオブジェクトBへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。なお、図3では、mDriveメタスペースについては、図示を省略している。一方、図4は、オブジェクトAからオブジェクトBへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【0058】
このときの手順は以下の通りである。
【0059】
(1)meta-call to mCOOPMailer
先ず、オブジェクトAが、mCOOPメタスペースのオブジェクト「mCOOPMailer」をメタコールによって呼び出す。すなわち、オブジェクトAからオブジェクトBへメッセージを送信するために、先ず、mCOOPメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCOOPMailer」を呼び出す。
【0060】
このときは、具体的には、先ず、矢印A1に示すように、オブジェクトAのメタコールを処理するオブジェクト「mCOOPMailer」を呼び出すために、オブジェクト「mCOOPMailer」が動作するmCoreメタスペースのオブジェクト「mCoreSchduler」を呼び出す。そして、このオブジェクト「mCoreScheduler」によって、mCoreメタスペース上で動作するオブジェクトのスケジュール管理を行った上で、矢印A2に示すように、mCOOPメタスペースのオブジェクト「mCOOPMailer」を呼び出す。
【0061】
(2)send to mCOOPScheduler
次に、オブジェクト「mCOOPMailer」は、オブジェクトBを起こすために、mCOOPメタスペースのオブジェクト「mCOOPScheduler」にメッセージを送信する。すなわち、オブジェクトBを起こすためには、mCOOPメタスペース上で動作するオブジェクトのスケジュール管理を行う必要があり、そのために、mCOOPメタスペース上で動作するオブジェクトのスケジュール管理を担うメタオブジェクトであるオブジェクト「mCOOPScheduler」に、オブジェクトBを起こすのに必要なメッセージを送信する。
【0062】
このときは、具体的には、先ず、オブジェクト「mCOOPMailer」からオブジェクト「mCOOPScheduler」へのメッセージ送信を行うために、矢印A3に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、メッセージの送り先であるオブジェクト「mCOOPScheduler」がmCoreメタスペース上で動作するため、矢印A4に示すように、mCoreメタスペース上で動作するオブジェクトのスケジュール管理を担うメタオブジェクトであるオブジェクト「mCoreScheduler」を呼び出す。そして、このオブジェクト「mCoreScheduler」によって、mCoreメタスペース上で動作するオブジェクトのスケジュール管理を行った上で、矢印A5に示すようにオブジェクト「mCOOPScheduler」を起こし、このオブジェクト「mCOOPScheduler」へオブジェクトBを起こすのに必要なメッセージを送信する。
【0063】
(3)reply to mCOOPMailer
次に、オブジェクト「mCOOPScheduler」は、上述のように受け取ったメッセージに基づいてオブジェクトBの状態を変更し、その後、当該メッセージに対する返答をオブジェクト「mCOOPMailer」へ送信する。
【0064】
このときは、具体的には、先ず、オブジェクト「mCOOPScheduler」からオブジェクト「mCOOPMailer」へ返答を送信するために、矢印A6に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、返答の送り先であるオブジェクト「mCOOPMailer」がmCoreメタスペース上で動作するため、矢印A7に示すように、mCoreメタスペース上で動作するオブジェクトのスケジュール管理を担うメタオブジェクトであるオブジェクト「mCoreScheduler」を呼び出す。そして、このオブジェクト「mCoreScheduler」によって、mCoreメタスペース上で動作するオブジェクトのスケジュール管理を行った上で、矢印A8に示すようにオブジェクト「mCOOPMailer」を起こし、このオブジェクト「mCOOPMailer」へオブジェクト「mCOOPScheduler」からの返答を送信する。
【0065】
(4)resume base object
その後、オブジェクト「mCOOPMailer」による処理が終了したら、オブジェクトAやオブジェクトBの処理を開始する。
【0066】
このときは、具体的には、先ず、矢印A9に示すように、オブジェクト「mCoreScheduler」を呼び出す。そして、このオブジェクト「mCoreScheduler」により、再スケジューリング等の処理を行った上で、矢印A10に示すように、ベースオブジェクトであるオブジェクトBを呼び出して処理を開始する。なお、このときに、オブジェクトBでの処理よりもオブジェクトAでの処理の方が優先順位が高い場合には、オブジェクトBではなく、オブジェクトAを呼び出して処理を開始する。
【0067】
従来のスケジュール管理機構では、オブジェクトAからオブジェクトBへのメッセージ送信は、以上のような手順により行われるが、このような従来のスケジュール管理機構では、実行するオブジェクトの切り替え、すなわちコンテキストスイッチが非常に多く発生する。このコンテキストスイッチは、ナノカーネル、すなわち本例ではメタコアによって制御され実行されるが、上述したように、コンテキストスイッチの回数が多いとシステム全体の性能が低下してしまう。すなわち、従来のスケジュール管理機構では、多数のコンテキストスイッチを必要としており、システム全体としての性能を高めることが難しいという問題があった。
【0068】
2−4 本発明を適用したスケジュール管理機構
つぎに、本発明を適用したスケジュール管理機構について説明する。
【0069】
通常、オブジェクト間の処理には依存関係がある。このため、スケジュール管理の有無にかかわらず、オブジェクト間の実行遷移の順序関係が変わらないような場合がある。そこで、そのような場合にはスケジュール管理を省略して、スケジューラの呼び出しを行わないようにする。すなわち、オブジェクトの実行遷移の遂次性を利用して、スケジューラの呼び出しを削減する。これにより、コンテキストスイッチの回数を削減でき、システム全体としての性能を高めることが可能となる。
【0070】
2−4−1 スケジュール管理の手順
以下、このような本発明を適用したスケジュール管理の手順について、具体的な例を挙げ、図5及び図6を参照して説明する。なお、ここでは、上述した従来のスケジュール管理と比較するために、上述した従来のスケジュール管理の説明で挙げた例と同様に、mCOOPメタスペース上で動作するアプリケーションプログラムであるオブジェクトAから、mCOOPメタスペース上で動作するアプリケーションプログラムであるオブジェクトBへ、メッセージを送信する場合を例に挙げる。なお、図5は、図3と同様に、オブジェクトAからオブジェクトBへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。また、図6は、図4と同様に、オブジェクトAからオブジェクトBへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【0071】
このときの手順は以下の通りである。
【0072】
(1)meta-call to mCOOPMailer
先ず、オブジェクトAが、mCOOPメタスペースのオブジェクト「mCOOPMailer」をメタコールによって呼び出す。すなわち、オブジェクトAからオブジェクトBへメッセージを送信するために、先ず、mCOOPメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCOOPMailer」を呼び出す。
【0073】
このときは、矢印B1に示すように、オブジェクトAからのメタコールによって、オブジェクト「mCOOPMailer」を直接呼び出す。すなわち、オブジェクトAはオブジェクト「mCOOPMailer」の処理の終了を待つ必要があり、オブジェクトAからオブジェクト「mCOOPMailer」への実行遷移には逐次性があるので、オブジェクト「mCoreScheduler」を呼び出してスケジュール管理を行わせるようなことなく、オブジェクト「mCOOPMailer」を直接呼び出す。
【0074】
(2)send to mCOOPScheduler
次に、オブジェクト「mCOOPMailer」は、オブジェクトBを起こすために、mCOOPメタスペースのオブジェクト「mCOOPScheduler」にメッセージを送信する。すなわち、オブジェクトBを起こすためには、mCOOPメタスペース上で動作するオブジェクトのスケジュール管理を行う必要があり、そのために、mCOOPメタスペース上で動作するオブジェクトのスケジュール管理を担うメタオブジェクトであるオブジェクト「mCOOPScheduler」に、オブジェクトBを起こすのに必要なメッセージを送信する。
【0075】
このときは、具体的には、先ず、オブジェクト「mCOOPMailer」からオブジェクト「mCOOPScheduler」へのメッセージ送信を行うために、矢印B2に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印B3に示すようにオブジェクト「mCOOPScheduler」を直接呼び出して、このオブジェクト「mCOOPScheduler」へオブジェクトBを起こすのに必要なメッセージを送信する。
【0076】
ここで、オブジェクト「mCOOPMailer」はオブジェクト「mCOOPScheduler」の処理の終了を待つ必要があり、オブジェクト「mCOOPMailer」からオブジェクト「mCOOPScheduler」への実行遷移には逐次性があるので、オブジェクト「mCoreScheduler」を呼び出してスケジュール管理を行わせるようなことなく、オブジェクト「mCOOPScheduler」を直接呼び出す。なお、以下の説明では、このように、同じメタスペースのオブジェクト間で、スケジューラの呼び出しを省略して行うメッセージ送信のことを、「FastSend」と称する。
【0077】
(3)reply to mCOOPMailer
次に、オブジェクト「mCOOPScheduler」は、上述のように受け取ったメッセージに基づいてオブジェクトBの状態を変更し、その後、当該メッセージに対する返答をオブジェクト「mCOOPMailer」へFastSendにより送信する。
【0078】
このときは、具体的には、先ず、オブジェクト「mCOOPScheduler」からオブジェクト「mCOOPMailer」へ返答を送信するために、矢印B4に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印B5に示すようにオブジェクト「mCOOPMailer」を直接呼び出して、このオブジェクト「mCOOPMailer」へオブジェクト「mCOOPScheduler」からの返答を送信する。ここで、オブジェクト「mCOOPScheduler」からオブジェクト「mCOOPMailer」への実行遷移には逐次性があるので、オブジェクト「mCoreScheduler」を呼び出してスケジュール管理を行わせるようなことなく、オブジェクト「mCOOPMailer」への返答を直ぐに行う。
【0079】
(4)resume base object
その後、オブジェクト「mCOOPMailer」による処理が終了したら、オブジェクトAやオブジェクトBの処理を開始する。
【0080】
このときは、具体的には、先ず、矢印B6に示すように、オブジェクト「mCoreScheduler」を呼び出す。そして、このオブジェクト「mCoreScheduler」により、再スケジューリング等の処理を行った上で、矢印B7に示すように、ベースオブジェクトであるオブジェクトBを呼び出して処理を開始する。なお、このときに、オブジェクトBでの処理よりもオブジェクトAでの処理の方が優先順位が高い場合には、オブジェクトBではなく、オブジェクトAを呼び出して処理を開始する。
【0081】
以上のように、メタコールの際に直接メタオブジェクトを呼び出す機構や「FastSend」を用いてスケジューラの呼び出しを省略することにより、従来のスケジュール管理機構に比べて、コンテキストスイッチの回数を削減することができ、これにより、システム全体の性能向上を図ることが可能となる。
【0082】
なお、ここではメッセージ送信を例に挙げてスケジューラの呼び出しを省略する手順を説明したが、スケジューラの呼び出しの省略は、その他の処理を行うような場合にも適用可能である。特に、割り込み処理時にスケジューラの呼び出しを省略するようにした場合には、スケジューラの呼び出しに要する時間が省かれるので、割り込み時の遅延時間を短縮することが可能となる。すなわち、スケジューラ呼び出しの省略は、割り込み処理のように即応答性が要求される処理に対しても好適である。
【0083】
2−4−2 Delayed Queuing 機構
しかしながら、以上のようにスケジューラの呼び出しを省略しただけでは、実際のオブジェクトの状態と、スケジューラの側で把握している状態とが異なるものとなり、システム動作に不都合が生じる恐れがある。そこで、本発明では、これらの整合性を取るための機構を設ける。なお、本例では、この機構のことを、Delayed Queuing機構と称している。
【0084】
まず、Delayed Queuing機構の説明に先立って、各オブジェクトのスレッドの状態について、図7を参照して説明する。
【0085】
各オブジェクトには、一つのスレッドが割り当てられる。そして、スケジューラは、スレッド単位で状態を管理して、スケジューリングを行う。ここで、スレッドの状態としては、図7に示すように、DORMANT(休眠状態)と、WAITING(待ち状態)と、RUNNING(処理中)との3つの状態を取りうるものとする。DORMANTは、オブジェクトが何も実行するものがなく、スレッドが停止している状態を表す。WAITINGは、オブジェクトが何らかのイベントを待っていて、スレッドが停止している状態を表す。RUNNINGは、オブジェクトが実行中であることを表す。換言すれば、RUNNINGは、スレッドが動いている状態か、或いは、スレッドがスケジューラによって管理される待ち行列内にいてCPU処理時間を割り当てられるのを待っている状態を表す。そして、スケジューラは、他のオブジェクトからの要求に従ってスレッドの状態を変更するとともに、スレッドの待ち行列を更新する。
【0086】
つぎに、Delayed Queuing機構について説明する。
【0087】
Delayed Queuing機構を適用するにあたっては、まず、各スレッドに構造体を割り当てておき、コンテキストスイッチにより、あるスレッド(ソーススレッドと称する。)から他のスレッド(ターゲットスレッドと称する。)に実行遷移したときに、コンテキストスイッチの履歴を上記構造体に記録しておく。ここで、コンテキストスイッチの履歴とは、各スレッドがどのスレッドからどの実行遷移で起こされたかの履歴のことであり、具体的には、直前に実行されていたスレッド(すなわちソーススレッド)がどのスレッドかを示す情報や、何によって(例えばメタコールやFastSendによって)ターゲットスレッドが起こされたかを示す情報等である。
【0088】
そして、Delayed Queuing機構では、スケジューラが呼び出されたときに、上記構造体に記録されている履歴をたどり、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとる。すなわち、スケジューラが呼び出されたときに、Delayed Queuing機構を実行して、当該スケジューラが前回呼び出された以降に行われたコンテキストスイッチの履歴を、上記構造体に記録されている情報を参照して辿っていく。そして、この履歴に基づいて、実際のオブジェクトの状態に適合するように、スケジューラが管理する状態を変更するとともに、スレッドの待ち行列を更新する。これにより、実際のオブジェクトの状態と、スケジューラの側の状態との整合性がとられることとなる。
【0089】
ここで、Delayed Queuing機構の対象となるスレッドは、スケジューラを呼び出さずに起こされたスレッド群である。具体的には、スケジューラが呼び出される直前に動いていたスレッド(currentThread)から、スケジューラが前回に起こしたスレッド(activeThread)までである。なお、スケジューラが前回に起こしたスレッド(activeThread)とは、換言すれば、スケジューラの側が、現在動いているスレッドであると認識しているスレッドということになる。
【0090】
このようなDelayed Queuing機構では、スケジューラの側で管理しているスレッドの状態についての情報を、表1に示す規則に従って変更する。
【0091】
【表1】
【0092】
すなわち、メタコールによりコンテキストスイッチが生じてターゲットスレッドが起こされていた場合には、当該コンテキストスイッチ後のソーススレッドの状態をWAITINGとし、ターゲットスレッドの状態をRUNNINGとする。また、FastSendによりコンテキストスイッチが生じてターゲットスレッドが起こされていた場合には、当該コンテキストスイッチ後のソーススレッドの状態をRUNNINGとし、ターゲットスレッドの状態をRUNNINGとする。なお、メタコールによりコンテキストスイッチが生じた場合も、FastSendによりコンテキストスイッチが生じた場合も、当該コンテキストスイッチ前のソーススレッドの状態は必ずRUNNINGであり、当該コンテキストスイッチ前のターゲットスレッドの状態は必ずDORMANTである。
【0093】
つぎに、以上のようなDelayed Queuing機構のアルゴリズムについて、図8に示すフローチャートを参照して詳細に説明する。なお、図8のフローチャート、並びに後掲する図9のフローチャートでは、オブジェクト指向型のプログラミング言語C++に準じた表記にて各ステップでの処理を記載している。
【0094】
Delayed Queuing機構は、スケジューラ内に記述されたメソッド「Scheduler::DelayedQueuing()」によって実現される。換言すれば、スケジューラが呼び出されたときには、先ず、このメソッド「Scheduler::DelayedQueuing()」を実行して、Delayed Queuing機構を動作させる。
【0095】
そして、このメソッド「Scheduler::DelayedQueuing()」では、先ず、ステップS1に示すように、pThreadにcurrentThreadを代入する。ここで、pThreadは、Delayed Queuing機構で使用される変数である。また、currentThreadは、スケジューラが呼び出される直前に動いていたスレッドを示している。したがって、ステップS1により、pThreadは、スケジューラが呼び出される直前に動いていたスレッドを示すこととなる。
【0096】
次に、ステップS2に示すように、pThreadとactiveThreadとを比較する。ここで、activeThreadは、スケジューラが前回に起こしたスレッド、換言すれば、現在動いているスレッドであるとスケジューラが認識しているスレッドを示している。そして、pThreadとactiveThreadとが等しくなければ、すなわち、pThreadが、スケジューラが前回に起こしたスレッドを示していないならば、ステップS3へ進む。一方、pThreadとactiveThreadとが等しければ、すなわち、pThreadが、スケジューラが前回に起こしたスレッドを示しているならば、ステップS10へ進む。
【0097】
ステップS3では、pThreadが示すスレッドが、メタコールによって呼び出されたものであるか否かを判別する。そして、メタコールによって呼び出されたものである場合にはステップS4へ進み、メタコールによって呼び出されたものではない場合にはステップS7へ進む。なお、本例において、ステップS7へ進むのは、pThreadが示すスレッドが、FastSendによって呼び出された場合である。
【0098】
ステップS4では、pThreadが示すスレッドが、ベースオブジェクトからメタオブジェクトへのコンテキストスイッチを生じさせたソーススレッド(つまり、後にベースオブジェクトからメタオブジェクトへのコンテキストスイッチを引き起こすソーススレッド)であるため、当該スレッドに対して待ち行列変更フラグを設定する。なお、図8では、待ち行列変更フラグのことを「Hook flag」として表記している。この待ち行列変更フラグは、後述する非同期スケジューラ機構で使用される。そして、ステップS4での処理の後、ステップS5へ進む。
【0099】
ステップS5では、pThreadが示すスレッドの一つ前に実行されていたスレッドの状態をWAITINGとする。すなわち、ステップS5へ進むのは、pThreadが示すスレッドがメタコールで呼び出されたものであるので、表1に示した規則に従って、ステップS5では、pThreadが示すスレッドの一つ前に実行されていたスレッドの状態をWAITINGとする。そして、ステップS5での処理の後、ステップS6へ進む。
【0100】
ステップS6では、コンテキストスイッチの履歴を辿っていくために、pThreadを、それまでpThreadが示していたスレッドの一つ前に実行されていたスレッドを示すように変更する。その後、ステップS2へ戻って処理を繰り返す。
【0101】
一方、ステップS7では、ステップS4と同様に、pThreadが示すスレッドに対して待ち行列変更フラグを設定する。そして、ステップS7での処理の後、ステップS8へ進む。
【0102】
ステップS8では、pThreadが示すスレッドの一つ前に実行されていたスレッドの状態をRUNNINGとする。すなわち、ステップS8へ進むのは、pThreadが示すスレッドがFastSendで呼び出されたものであるので、表1に示した規則に従って、ステップS8では、pThreadが示すスレッドの一つ前に実行されていたスレッドの状態をRUNNINGとする。そして、ステップS8での処理の後、ステップS9へ進む。
【0103】
ステップS9では、pThreadが示すスレッドの一つ前に実行されていたスレッド、すなわち、ステップS8で状態がRUNNINGとされたスレッドを、スケジューラが管理しているスレッドの待ち行列に加える。そして、ステップS9での処理の後、ステップS6へ進む。
【0104】
ステップS6では、上述したように、コンテキストスイッチの履歴を辿っていくために、pThreadを、それまでpThreadが示していたスレッドの一つ前に実行されていたスレッドを示すように変更し、その後、ステップS2へ戻って処理を繰り返す。
【0105】
そして、上述したように、ステップS2において、スケジューラが前回に起こしたスレッドをpThreadが示していると判断されたならば、ステップS10へ進む。このステップS10では、activeThreadにcurrentThreadを代入する。ここで、activeThreadは、現在動いているスレッドであるとスケジューラの側が認識しているスレッドを示しており、currentThreadは、スケジューラが呼び出される直前に動いていたスレッドを示している。したがって、このステップS10での処理により、現在動いているスレッドであるとスケジューラの側が認識しているスレッドと、スケジューラが呼び出される直前に動いていたスレッドとが同じものとなる。
【0106】
なお、ステップS3乃至ステップS9の処理を行うことなく、ステップS1及びステップ2の処理の後に直ぐにステップS10に進むのは、currentThreadとactiveThreadとが最初から等しい場合、すなわち、スケジューラを今回呼び起こしたスレッドと、スケジューラが前回呼び起こしたスレッドとが最初から同じ場合である。
【0107】
そして、スケジューラの呼び出しを省略して行ったコンテキストスイッチがない場合には、スケジューラを今回呼び起こしたスレッドと、スケジューラが前回呼び起こしたスレッドとが同じものとなり、一方、スケジューラの呼び出しを省略して行ったコンテキストスイッチがある場合には、スケジューラを今回呼び起こしたスレッドと、スケジューラが前回呼び起こしたスレッドとが異なるものとなる。
【0108】
したがって、スケジューラの呼び出しを省略して行ったコンテキストスイッチがない場合には、currentThreadとactiveThreadとが最初から等しくなり、この場合は、ステップS3〜ステップS9の処理を行うことなく、ステップS1及びステップ2の処理の後に直ぐにステップS10に進むこととなる。この場合には、activeThreadとcurrentThreadとがもともと等しいので、ステップS10では実質的には何も行わない。一方、スケジューラの呼び出しを省略して行ったコンテキストスイッチがある場合には、currentThreadとactiveThreadとが異なるため、ステップS3以降の処理へと進み、スケジューラの呼び出しを省略して行われたコンテキストスイッチの履歴を辿ることとなる。
【0109】
以上の処理により、コンテキストスイッチ時に省略されていた、スレッドの状態変更や待ち行列の更新は全て完了し、実際のオブジェクトの状態と、スケジューラの側の状態との整合性が取られることとなる。
【0110】
なお、以上のようなDelayed Queuing機構は、メッセージ送信時にスケジューラの呼び出しを省略したようなときだけでなく、割り込み処理のように即応答性を要求される処理を行う際にスケジューラの呼び出しを省略したようなときにも、同様に適用可能であることは言うまでもない。
【0111】
ところで、Delayed Queuing機構によるオブジェクトの状態変更が、スケジューラと同一のメタスペースを構成するメタオブジェクト間のコンテキストスイッチの逐次性に対して影響を与えないときには、メソッド「Scheduler::DelayedQueuing()」による処理を行う前に、図9に示すようなフローチャートに従って処理を行うメソッド「Scheduler::CheckInvoke()」によって、currentThreadを設定するようにしてもよい。
【0112】
このメソッド「Scheduler::CheckInvoke()」では、先ず、ステップS21において、pThreadにschedulerThreadを代入する。ここで、schedulerThreadは、スケジューラのスレッドを示している。したがって、ステップS21により、pThreadは、スケジューラのスレッドを示すこととなる。
【0113】
次に、ステップS22において、pThreadが示すスレッドがFastSendによって呼び出されたものであるか否かを判別する。そして、pThreadが示すスレッドがFastSendによって呼び出されたものであるときにはステップS23へ進む。
【0114】
ここで、pThreadが示すスレッドがFastSendによって呼び出されるのは、当該スレッド及びそのスレッドの直前のスレッドが、スケジューラと同一のメタスペースのメタオブジェクトのスレッドのときである。すなわち、ステップS23へ進むのは、pThreadが示すスレッド及びそのスレッドの直前のスレッドが、スケジューラと同一のメタスペースのメタオブジェクトのスレッドのときである。したがって、このときには、Delayed Queuing機構を動作させる元となるcurrentThreadが示すスレッドを、更に前のスレッドにまで遡ることができる。そこで、ステップS23では、pThreadを、それまでpThreadが示していたスレッドの一つ前に実行されていたスレッドを示すように変更し、その後、ステップS22へ戻って処理を繰り返す。
【0115】
一方、ステップS22において、pThreadが示すスレッドがFastSendによって呼び出されたものでないと判別されたときには、ステップS25へ進む。このときは、pThreadが示すスレッドの直前のスレッドが、スケジューラと同一のメタスペースのメタオブジェクトのスレッドではないときである。
【0116】
そこで、ステップS25では、currentThreadにpThreadを代入して、このときのpThreadが示すスレッドを、currentThreadが示すスレッドに設定する。このステップS25により、currentThreadが示すスレッドは、当該スレッドの直前のスレッドがスケジューラと同一のメタスペースのメタオブジェクトのスレッドではないようなスレッドとされる。
【0117】
そして、ステップS25により、currentThreadの設定が完了したら、メソッド「Scheduler::CheckInvoke()」の処理を終了して、上記メソッド「Scheduler::DelayedQueuing()」へ処理を移行する。
【0118】
以上のように、currentThreadの設定を行った上で、メソッド「Scheduler::DelayedQueuing()」の処理を行うようにすれば、コンテキストスイッチの履歴を辿ってスケジューラの持つ状態を変更する処理を削減でき、処理の効率化を図ることができる。
【0119】
2−4−3 非同期スケジューラ呼び出し機構
Delayed Queuing機構により待ち行列を変更するときに待ち行列変更フラグを設定しておき、この待ち行列変更フラグに基づいて、非同期にスケジューラを呼び出して再スケジューリングを行う。すなわち、Delayed Queuing機構を動作させたときに、再スケジューリングが必要なコンテキストスイッチを起こすソーススレッドに対して待ち行列変更フラグを設定しておき、そのコンテキストスイッチが起きたときに、スケジューラを呼び出して再スケジューリングを行う。この機構のことを非同期スケジューラ呼び出し機構と称する。
【0120】
非同期スケジューラ呼び出し機構の手順は以下の通りである。
【0121】
(1)Delayed Queuing機構により待ち行列を変更したときに、メタオブジェクトからベースオブジェクトへのコンテキストスイッチを起こすソーススレッドに、待ち行列変更フラグを設定する。なお、この待ち行列フラグの設定は、上述したステップS4,S7で行われる。
【0122】
(2)メタオブジェクトからベースオブジェクトへのコンテキストスイッチが生じたときに、ターゲットスレッド(ベースオブジェクトのスレッド)を起こす前に、ソーススレッド(メタオブジェクトのスレッド)に待ち行列変更フラグが設定されているか否かを調べる。そして、ソーススレッドに待ち行列変更フラグが設定されている場合には、ターゲットスレッドを起こす代わりにスケジューラを呼び出す。そして、メタオブジェクトからベースオブジェクトへのコンテキストスイッチを行う前に、再スケジューリングを行う。
【0123】
なお、待ち行列変更フラグは、スケジューラが待ち行列を変更した状況に応じて、具体的には下記のように設定される。
【0124】
(1)オブジェクト「mCoreScheduler」によってDelayed Queuing機構が実行されたとき(或いは、スケジューラを全メタスペースで共有するようにしている場合には、当該スケジューラがmCoreメタスペースのメタオブジェクトとして動作して、Delayed Queuing機構が実行されたとき)には、mCoreメタスペースを構成するメタオブジェクトからmCoreメタスペース上で動作するオブジェクトへのコンテキストスイッチを生じさせるスレッドに、待ち行列変更フラグを設定する。
【0125】
(2)mCoreメタスペースのメタオブジェクトによって呼び出されたオブジェクト「mCOOPScheduler」によって、Delayed Queuing機構が実行されたとき(或いは、スケジューラを全メタスペースで共有するようにしている場合には、当該スケジューラがmCOOPメタスペースのメタオブジェクトとして動作して、Delayed Queuing機構が実行されたとき)には、mCOOPメタスペースを構成するメタオブジェクトからmCOOPメタスペース上で動作するオブジェクトへのコンテキストスイッチを生じさせるスレッドに、待ち行列変更フラグを設定する。これは、具体的には、図9に示したメソッド「Scheduler::CheckInvoke()」を用いて、Delayed Queuing機構を開始するスレッドを変更することで行う。
【0126】
このような待ち行列変更フラグを用いて行われる非同期スケジューラ呼び出し機構について、mCOOPメタスペース上で動作するオブジェクトAがmDriveメタスペース上で動作するオブジェクトCへメッセージを送信する場合を例に挙げて説明する。なお、ここでは、スケジューラを全メタスペースで共有するものとする。すなわち、どのメタスペースにおいても、共通のオブジェクト「Scheduler」がスケジュール管理を担うものとする。
【0127】
また、このときの手順を図10及び図11に示す。図10は、図3や図5と同様に、オブジェクトAからオブジェクトCへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。また、図11は、図4や図6と同様に、オブジェクトAからオブジェクトCへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【0128】
このときの手順は以下の通りである。
【0129】
(1)meta-call to mCOOPMailer
先ず、オブジェクトAが、mCOOPメタスペースのオブジェクト「mCOOPMailer」をメタコールによって呼び出す。すなわち、オブジェクトAからオブジェクトCへメッセージを送信するために、先ず、mCOOPメタスペース上で動作するオブジェクトによるメッセージ通信を担うメタオブジェクトであるオブジェクト「mCOOPMailer」を呼び出す。
【0130】
このときは、矢印C1に示すように、オブジェクトAからのメタコールによって、オブジェクト「mCOOPMailer」を直接呼び出す。すなわち、オブジェクトAからオブジェクト「mCOOPMailer」への実行遷移には逐次性があるので、オブジェクト「Scheduler」を呼び出してスケジュール管理を行わせるようなことなく、オブジェクト「mCOOPMailer」を直接呼び出す。
【0131】
(2)send to mDriveMailer
次に、オブジェクト「mCOOPMailer」は、メッセージ送信先のオブジェクトCがmDriveメタスペース上にあるため、オブジェクトCへのメッセージ送信を要求するメッセージを、mDriveメタスペース上で動作するオブジェクトによるメッセージ通信を担うメタオブジェクトであるオブジェクト「mDriveMailer」に送信する。
【0132】
このときは、具体的には、先ず、オブジェクト「mCOOPMailer」からオブジェクト「mDriveMailer」へのメッセージ送信を行うために、矢印C2に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印C3に示すようにオブジェクト「mDriveMailer」を直接呼び出す。ここで、オブジェクト「mCOOPMailer」からオブジェクト「mDriveMailer」への実行遷移には逐次性があるので、オブジェクト「Scheduler」を呼び出してスケジュール管理を行わせるようなことなく、オブジェクト「mDriveMailer」を直接呼び出す。すなわち、ここでのオブジェクト「mCOOPMailer」からオブジェクト「mDriveMailer」へのメッセージ送信は、FastSendによって行われる。
【0133】
(3)send to Scheduler
次に、オブジェクト「mDriveMailer」は、オブジェクトCを起こすために、オブジェクト「Scheduler」にメッセージを送信する。すなわち、オブジェクトCを起こすためにはスケジュール管理を行う必要があり、そのために、スケジュール管理を担うメタオブジェクトであるオブジェクト「Scheduler」に、オブジェクトCを起こすのに必要なメッセージを送信する。
【0134】
このときは、具体的には、先ず、オブジェクト「mDriveMailer」からオブジェクト「Scheduler」へのメッセージ送信を行うために、矢印C4に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印C5に示すようにオブジェクト「Scheduler」を直接呼び出して、このオブジェクト「Scheduler」へオブジェクトCを起こすのに必要なメッセージを送信する。ここで、オブジェクト「mCOOPMailer」からオブジェクト「Scheduler」への実行遷移には逐次性があるので、スケジューリングを行うことなく、オブジェクト「Scheduler」を直接呼び出す。すなわち、ここでのオブジェクト「mDriveMailer」からオブジェクト「Scheduler」へのメッセージ送信は、FastSendによって行われる。
【0135】
(4)update scheduling queue
次に、オブジェクト「Scheduler」は、上述のように受け取ったメッセージに基づいてオブジェクトCの状態を変更するとともに、Delayed Queuing機構によって待ち行列を変更する。
【0136】
ここで、オブジェクト「Scheduler」は、オブジェクトCの状態を変更するために呼び起こされたものであり、mDriveメタスペースのメタオブジェクトとして動作している。そこで、このとき、オブジェクト「Scheduler」は、mDriveメタスペース上で動作するオブジェクトの実行を再開するコンテキストスイッチ、又は、mDriveメタスペースと同一階層のメタスペースであるmCOOPメタスペース上で動作するオブジェクトの実行を再開するコンテキストスイッチを起こすスレッドに対して、待ち行列変更フラグを設定する。具体的には、オブジェクト「Scheduler」は、オブジェクト「mCOOPMailer」のスレッドに対して、待ち行列変更フラグを設定する。
【0137】
これは、具体的には、メソッド「Scheduler::CheckInvoke()」のアルゴリズムを用い、オブジェクト「Scheduler」→オブジェクト「mCoreMailer(1)」→オブジェクト「mDriveMailer」→オブジェクト「mCoreMailer(2)」→オブジェクト「mCOOPMailer」→オブジェクトAというように、オブジェクト間の遷移を辿ってから、オブジェクト「mCoreMailer(2)」を起点にしてDelayed Queuing機構を実行することで実現される。なお、オブジェクト「mCoreMailer(1)」及びオブジェクト「mCoreMailer(2)」は、同じオブジェクト「mCoreMailer」であるが、呼び出されたタイミングの違いを示すために、(1)(2)を付記している。
【0138】
(5)reply to mDriveMailer
次に、オブジェクト「Scheduler」は、FastSendによってオブジェクト「mDriveMailer」から受け取ったメッセージに対する返答をオブジェクト「mDriveMailer」へ送信する。このときは、具体的には、先ず、オブジェクト「Scheduler」からオブジェクト「mDriveMailer」へ返答を送信するために、矢印C6に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印C7に示すようにオブジェクト「mDriveMailer」を直接呼び出して、このオブジェクト「mDriveMailer」へオブジェクト「Scheduler」からの返答を送信する。ここで、オブジェクト「Scheduler」からオブジェクト「mDriveMailer」への実行遷移には逐次性があるので、スケジューリングを行うことなく、オブジェクト「mDriveMailer」への返答を送信する。そして、これにより、オブジェクト「mDriveMailer」の実行が再開される。
【0139】
(6)reply to mCOOPMailer
次に、オブジェクト「mDriveMailer」は、FastSendによってオブジェクト「mCOOPMailer」から受け取ったメッセージに対する返答をオブジェクト「mCOOPMailer」へ送信する。このときは、具体的には、先ず、オブジェクト「mDriveMailer」からオブジェクト「mCOOPMailer」へ返答を送信するために、矢印C8に示すように、mCoreメタスペース上で動作するオブジェクト間のメッセージ通信を担うメタオブジェクトであるオブジェクト「mCoreMailer」を呼び出す。次に、矢印C9に示すようにオブジェクト「mCOOPMailer」を直接呼び出して、このオブジェクト「mCOOPMailer」へオブジェクト「mDriveMailer」からの返答を送信する。ここで、オブジェクト「mDriveMailer」からオブジェクト「mCOOPMailer」への実行遷移には逐次性があるので、スケジューリングを行うことなく、オブジェクト「mCOOPMailer」への返答を送信する。そして、これにより、オブジェクト「mCOOPMailer」の実行が再開される。
【0140】
(7)resume base object
その後、オブジェクト「mCOOPMailer」による処理が終了したら、オブジェクトAを再開させるために、オブジェクトAのスレッドへのコンテキストスイッチの処理を行う。しかしながら、このコンテキストスイッチにおけるソーススレッドであるオブジェクト「mCOOPMailer」のスレッドには、待ち行列変更フラグが設定されている。そこで、オブジェクトAのスレッドへコンテキストスイッチするのではなく、非同期スケジューラ呼び出し機構を動作させる。すなわち、オブジェクトAを再開させるのではなく、矢印C10に示すように、オブジェクト「Scheduler」を呼び出す。
【0141】
(8)reschedule
そして、オブジェクト「Scheduler」によって再スケジューリングを行う。ここでは、この再スケジューリングにより、オブジェクトAよりもオブジェクトCを先に実行するように、待ち行列のスケジュールが変更されたとする。そして、オブジェクト「Scheduler」によって再スケジューリングを行った後、この再スケジューリングにより、次に実行するオブジェクトとして設定されたオブジェクトCを、矢印C11に示すように呼び出して実行する。
【0142】
以上のように、非同期スケジューラ呼び出し機構を採用して、オブジェクトAからオブジェクトCへのメッセージの送信を行うことにより、スケジューラ(すなわちオブジェクト「Scheduler」)の呼び出しの回数が削減される。すなわち、上記の例では、mCOOPメタスペースやmDriveメタスペース上で動作するオブジェクトのスケジューリングを遅らせ、オブジェクトAのスレッドを再開させようとするコンテキストスイッチが生じたときに、非同期的にスケジューラを呼び出すようにしており、これにより、FastSendに対する返答のためのコンテキストスイッチを行う毎にスケジューラを呼び出すような場合に比べて、スケジューラの呼び出し回数が2回少なくなっている。
【0143】
なお、上記の例において、スケジューラによって管理される待ち行列は、mCOOPメタスペースやmDriveメタスペース上で動作するオブジェクトに関して変更しているだけで、この変更は、mCoreメタスペース上で動作するオブジェクトに対しては影響しない。したがって、mCOOPメタスペースやmDriveメタスペース上で動作するオブジェクトのスケジューリングを遅らせて、スケジューラの呼び出し回数を削減したとしても、システムの動作に影響を与えることはない。
【0144】
【発明の効果】
以上の説明から明らかなように、本発明によれば、スケジューラの呼び出しを最小限に押さえて、且つ、システム全体を正しく動作させることが可能となる。したがって、本発明によれば、ナノカーネルを採用しつつ、システム全体の性能向上を図ることが可能となる。
【図面の簡単な説明】
【図1】本発明を適用したテレビ装置の一例について、その概略構成を示す図である。
【図2】本発明を適用したオペレーティングシステムの階層構造を示す図である。
【図3】従来のスケジューリング管理機構を説明するための図であり、オブジェクトAからオブジェクトBへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。
【図4】従来のスケジューリング管理機構を説明するための図であり、オブジェクトAからオブジェクトBへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【図5】本発明を適用したスケジューリング管理機構を説明するための図であり、オブジェクトAからオブジェクトBへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。
【図6】本発明を適用したスケジューリング管理機構を説明するための図であり、オブジェクトAからオブジェクトBへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【図7】スレッドの状態遷移を示す図である。
【図8】 Delayed Queuing機構のアルゴリズムを説明するためのフローチャートである。
【図9】 Delayed Queuing機構におけるcurrentThread設定のアルゴリズムを説明するためのフローチャートである。
【図10】非同期スケジューラ呼び出し機構を用いて、オブジェクトAからオブジェクトCへメッセージを送信する際の手順をオペレーティングシステムの階層構造とともに示した図である。
【図11】非同期スケジューラ呼び出し機構を用いて、オブジェクトAからオブジェクトCへメッセージを送信する際の各オブジェクト間のやり取りをタイムチャートとして示した図である。
【図12】ファットカーネルを採用したオペレーティングシステムを示す図である。
【図13】マイクロカーネルを採用したオペレーティングシステムを示す図である。
【図14】ナノカーネルを採用したオペレーティングシステムを示す図である。
【符号の説明】
1 バス/IOブリッジ、 2 バス、 3 テレビ機能部、 4 バス/メモリブリッジ、 5 プロセッサ、 6 ROM、 7 RAM、 8 操作パネル、 9 外部記憶装置、 10 通信装置
Claims (9)
- 実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておき、
スレッドの実行順序を制御するスケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新すること
を特徴とするデータ処理方法。 - 上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、
コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すこと
を特徴とする請求項1記載のデータ処理方法。 - 上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なること
を特徴とする請求項2記載のデータ処理方法。 - スレッドの実行順序を制御するスケジューラを有するオペレーティングシステムが記録されたコンピュータ読み取り可能な記録媒体であって、
上記オペレーティングシステムは、実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておき、スケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新すること
を特徴とする記録媒体。 - 上記オペレーティングシステムは、上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すこと
を特徴とする請求項4記載の記録媒体。 - 上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なること
を特徴とする請求項5記載の記録媒体。 - スレッドの実行順序を制御するスケジューラを有するオペレーティングシステムが記録されたコンピュータ読み取り可能な記録媒体を備えたデータ処理装置であって、
上記オペレーティングシステムは、実行するスレッドの切り替えを行うコンテキストスイッチが生じたときに、当該コンテキストスイッチの履歴を記録しておき、スケジューラが呼び出されたときに、当該スケジューラが管理する待ち行列を上記履歴を辿り、実際のオブジェクトの状態と、スケジューラの側の状態との整合性をとって更新すること
を特徴とするデータ処理装置。 - 上記オペレーティングシステムは、上記更新を行うときに、上記待ち行列の順序を設定し直す必要があるコンテキストスイッチを生じさせるスレッドに対して所定のフラグを設定しておき、コンテキストスイッチが生じたときに、当該コンテキストスイッチを生じさせたスレッドに上記フラグが設定されている場合には、スケジューラを呼び出して待ち行列の順序を設定し直すこと
を特徴とする請求項7記載のデータ処理装置。 - 上記スケジューラの呼び出され方によって、上記フラグが設定されるスレッドが異なること
を特徴とする請求項8記載のデータ処理装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25388997A JP3823475B2 (ja) | 1997-09-18 | 1997-09-18 | データ処理方法、記録媒体及びデータ処理装置 |
EP98307130A EP0905620B1 (en) | 1997-09-18 | 1998-09-04 | Data processing method and recording medium |
DE69834885T DE69834885T2 (de) | 1997-09-18 | 1998-09-04 | Datenverarbeitungsverfahren und Aufzeichnungsmedium |
US09/154,105 US6829766B1 (en) | 1997-09-18 | 1998-09-16 | Data processing method and apparatus and recording medium, for implementing a schedule managing mechanism when a context switch has occurred |
CN98119611A CN1119746C (zh) | 1997-09-18 | 1998-09-17 | 数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25388997A JP3823475B2 (ja) | 1997-09-18 | 1997-09-18 | データ処理方法、記録媒体及びデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1196025A JPH1196025A (ja) | 1999-04-09 |
JP3823475B2 true JP3823475B2 (ja) | 2006-09-20 |
Family
ID=17257531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25388997A Expired - Fee Related JP3823475B2 (ja) | 1997-09-18 | 1997-09-18 | データ処理方法、記録媒体及びデータ処理装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6829766B1 (ja) |
EP (1) | EP0905620B1 (ja) |
JP (1) | JP3823475B2 (ja) |
CN (1) | CN1119746C (ja) |
DE (1) | DE69834885T2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4609070B2 (ja) * | 2004-12-28 | 2011-01-12 | 沖電気工業株式会社 | マルチ呼処理スレッド処理方法 |
US7606363B1 (en) | 2005-07-26 | 2009-10-20 | Rockwell Collins, Inc. | System and method for context switching of a cryptographic engine |
JP2008102778A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | 情報処理装置、情報処理装置の制御方法及びプログラム |
US7870560B2 (en) * | 2007-06-18 | 2011-01-11 | International Business Machines Corporation | Method of receiving a message processable by a component on one of plurality of processing threads |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5459845A (en) * | 1990-12-20 | 1995-10-17 | Intel Corporation | Instruction pipeline sequencer in which state information of an instruction travels through pipe stages until the instruction execution is completed |
JP3544214B2 (ja) * | 1992-04-29 | 2004-07-21 | サン・マイクロシステムズ・インコーポレイテッド | プロセッサの状態を監視する方法及び監視システム |
US5485626A (en) * | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US5632032A (en) * | 1994-02-07 | 1997-05-20 | International Business Machines Corporation | Cross address space thread control in a multithreaded environment |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US5666523A (en) * | 1994-06-30 | 1997-09-09 | Microsoft Corporation | Method and system for distributing asynchronous input from a system input queue to reduce context switches |
US5802272A (en) * | 1994-12-19 | 1998-09-01 | Digital Equipment Corporation | Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system |
US6029205A (en) * | 1994-12-22 | 2000-02-22 | Unisys Corporation | System architecture for improved message passing and process synchronization between concurrently executing processes |
US5872909A (en) * | 1995-01-24 | 1999-02-16 | Wind River Systems, Inc. | Logic analyzer for software |
US6341301B1 (en) * | 1997-01-10 | 2002-01-22 | Lsi Logic Corporation | Exclusive multiple queue handling using a common processing algorithm |
-
1997
- 1997-09-18 JP JP25388997A patent/JP3823475B2/ja not_active Expired - Fee Related
-
1998
- 1998-09-04 DE DE69834885T patent/DE69834885T2/de not_active Expired - Lifetime
- 1998-09-04 EP EP98307130A patent/EP0905620B1/en not_active Expired - Lifetime
- 1998-09-16 US US09/154,105 patent/US6829766B1/en not_active Expired - Lifetime
- 1998-09-17 CN CN98119611A patent/CN1119746C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1211766A (zh) | 1999-03-24 |
EP0905620A3 (en) | 2002-11-20 |
JPH1196025A (ja) | 1999-04-09 |
CN1119746C (zh) | 2003-08-27 |
EP0905620B1 (en) | 2006-06-14 |
DE69834885D1 (de) | 2006-07-27 |
DE69834885T2 (de) | 2007-05-24 |
EP0905620A2 (en) | 1999-03-31 |
US6829766B1 (en) | 2004-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2988269C (en) | Opportunistic multitasking | |
US9996392B2 (en) | Idle time service | |
JP4196333B2 (ja) | 並列処理システム及び並列処理プログラム | |
US20070101325A1 (en) | System and method for utilizing a remote memory to perform an interface save/restore procedure | |
US5381347A (en) | Method and system for displaying images on a display device using an offscreen video memory | |
US20010034751A1 (en) | Real-time OS simulator | |
JP2000330806A (ja) | 計算機システム | |
KR20020087388A (ko) | 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체 | |
JP5450271B2 (ja) | シミュレーション装置、シミュレーションプログラム及び方法 | |
JP2002099433A (ja) | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 | |
JP2010287205A (ja) | 電子装置、コンピュータ実行システム及びその応用プログラムの表示制御方法 | |
US7308565B2 (en) | Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions | |
WO2024160154A1 (zh) | Cpu调度方法、装置、电子设备及可读存储介质 | |
JP3823475B2 (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
CN115080158B (zh) | 界面显示方法、装置、终端设备及计算机可读存储介质 | |
JP2005228301A (ja) | 暗黙の構成可能なメッセージキューベースのユーザインターフェースオートメーション同期化のためのシステムおよび方法 | |
JP3823468B2 (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
JP2001142725A (ja) | 情報処理装置 | |
CN118467043A (zh) | 低功耗多操作系统的终端多屏异显方法、系统及终端设备 | |
CN116708915A (zh) | 一种显示设备系统重启方法及显示设备 | |
JPH05143271A (ja) | 画面切り換え制御方式 | |
JP2000029850A (ja) | オペレーティングシステムのプロセッサ間通信を使用したタスク制御方法 | |
AU2013205570A1 (en) | Opportunistic multitasking | |
JP2005190293A (ja) | 情報処理装置、情報処理プログラム | |
WO2013038549A1 (ja) | 電源制御方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060314 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060511 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060619 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120707 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130707 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |