JPH1196025A - データ処理方法、記録媒体及びデータ処理装置 - Google Patents
データ処理方法、記録媒体及びデータ処理装置Info
- Publication number
- JPH1196025A JPH1196025A JP9253889A JP25388997A JPH1196025A JP H1196025 A JPH1196025 A JP H1196025A JP 9253889 A JP9253889 A JP 9253889A JP 25388997 A JP25388997 A JP 25388997A JP H1196025 A JPH1196025 A JP H1196025A
- Authority
- JP
- Japan
- Prior art keywords
- scheduler
- thread
- called
- metaspace
- context switch
- 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.)
- Granted
Links
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)
Abstract
呼び出しを最小限に押さえて、且つ、システム全体を正
しく動作させることが可能なオペレーティングシステム
を実現する。 【解決手段】 実行するスレッドの切り替えを行うコン
テキストスイッチが生じたときに、当該コンテキストス
イッチの履歴を記録しておく。そして、スレッドの実行
順序を制御するスケジューラが呼び出されたときに、当
該スケジューラが管理する待ち行列を、上記履歴を辿っ
て更新する。
Description
関し、特に、オペレーティングシステムによるスケジュ
ール管理機構に関する。また、本発明は、スケジュール
管理機構を備えたオペレーティングシステムが記録され
た記録媒体、並びにそのような記録媒体を備えたデータ
処理装置に関する。
るファットカーネル(Fat Kernel)を採用したオペレー
ティングシステムと、いわゆるマイクロカーネル(Micr
o Kernel)を採用したオペレーティングシステムと、い
わゆるナノカーネル(Nano Kernel)を採用したオペレ
ーティングシステムとがある。
ングシステムでは、オペレーティングシステムの機能が
全てカーネル内に実装される。したがって、例えば、ア
プリケーションプログラムが、スレッドの状態変化を伴
うオペレーティングシステムのサービスを要求する場合
には、図12に示すように、先ず、ファットカーネル内
の対応したモジュール(例えば図12における「Maile
r」や「Syncronization」)がシステムコール(system
call)によって呼び出される。その後、各モジュールか
らスレッドの状態を遷移させるために、スレッドの実行
順序を制御してそれらのスケジュール管理を行うスケジ
ューラ(Scheduler)が、いわゆる関数呼び出し(funct
ion call)によって呼び出され、これにより、スレッド
の状態変化を伴う処理が行われる。
オペレーティングシステムでは、オペレーティングシス
テムの機能が全てカーネル内に実装される。このため、
様々な機能をオペレーティングシステムに実装させるに
は、カーネル内の知識が必要であり、また、それらの変
更も容易ではない。すなわち、ファットカーネルを採用
したオペレーティングシステムは、柔軟性に欠けるとい
う問題点を持つ。
ーティングシステムでは、カーネル内に実装する機能を
ハードウェア制御等のような基本的な機能だけとする。
すなわち、マイクロカーネルを採用したオペレーティン
グシステムでは、ハードウェア制御等のような基本的な
機能がマイクロカーネルに実装され、その他のオペレー
ティングシステムとしての機能については、マイクロカ
ーネル外で実現される。
ペレーティングシステムでは、カーネルに実装される機
能を限定することにより、柔軟性が欠けるというファッ
トカーネルにおける問題を解決することができる。
ングシステムでは、図13に示すように、アプリケーシ
ョンプログラムのみならず、オペレーティングシステム
としての機能を提供するモジュール(例えば図13にお
ける「Syncronization」,「Mailer」,「Schedule
r」)も、マイクロカーネル上で動作する。したがっ
て、オペレーティングシステムの機能を提供するモジュ
ール自身も、マイクロカーネル内に実装されたスケジュ
ーラ(Scheduler)によって、スケジュール管理がなさ
れる。
ペレーティングシステムにおいて、アプリケーションプ
ログラムと、オペレーティングシステムの機能を提供す
るモジュールとの間の呼び出しは、マイクロカーネルに
よって提供される通信機構(Mailer)を用いて行う。ま
た、オペレーティングシステムの機能を提供するモジュ
ールは、マイクロカーネルによって提供されるインター
フェースを用いて、マイクロカーネル内に実装されたス
ケジューラ(Scheduler)を間接的に呼び出すことで、
アプリケーションプログラムの実行を制御する。
ィングシステムでは、図14に示すように、マイクロカ
ーネルの中から更に、コンテキストの切り替え(いわゆ
るコンテキストスイッチ)を担うコンテキストスイッチ
機構のみをナノカーネルとして取り出す。
ーティングシステムでは、CPU等の機種に依存する部
分であるコンテキストスイッチ機構を取り出して抽象化
する。これにより、カーネルの移植性やプログラミング
容易性を更に向上することができる。
レーティングシステムの柔軟性を高めて、移植性やプロ
グラミング容易性等の向上を図るという観点からは、フ
ァットカーネルよりもマイクロカーネルを採用した方が
好ましく、更にはナノカーネルを採用した方がより好ま
しい。
ーネルを採用したときには、全ての実行実体(例えば、
オペレーティングシステム上で動作するアプリケーショ
ンプログラムや、オペレーティングシステムとしての機
能を提供するオブジェクト等)が動作する度に、マイク
ロカーネルの通信機構やスケジューラを呼び出すことと
なるため、多数のコンテキストスイッチが必要となる。
このため、マイクロカーネルやナノカーネルを採用した
オペレーティングシステムでは、ファットカーネルを採
用したオペレーティングシステムよりも、システム全体
としての性能が低下してしまうという問題が生じる。
ィングシステムでは、通信機構やスケジューラ等を呼び
出すときにも、コンテキストスイッチを必要とする。こ
のため、ナノカーネルを採用したオペレーティングシス
テムでは、コンテキストスイッチの増加に伴うオーバー
ヘッドが、マイクロカーネルを採用したオペレーティン
グシステムよりも、更に増加してしまうという問題があ
る。
コンテキストスイッチが増加してしまい、システム全体
の性能が低下する。このような性能低下を避けるための
手段としては、例えば、コンテキストスイッチ時におけ
るスケジューラの呼び出しを削減することが考えられ
る。しかしながら、単にスケジューラの呼び出しを行わ
ないようにしたのでは、スケジュール管理が適切になさ
れなくなってしまい、システム動作に不都合が生じる。
してしまうと、スケジュール管理に必要な情報がスケジ
ューラに渡されなくなってしまい、実際のシステムの状
態と、スケジューラの側で把握している状態とが相違し
てしまう。このため、スケジューラによるスケジュール
管理が、正しく行われなくなってしまう。また、スケジ
ューラは、スケジュール管理の対象となっているスレッ
ドの待ち行列を変更した場合には、通常、優先度の高い
処理が先に行われるように再スケジューリングを行う
が、スケジューラの呼び出しを省略してしまうと、再ス
ケジューリングが行われないため、優先度の高い処理が
待たされてしまう等の不都合が生じる。
て提案されたものであり、ナノカーネルを採用しつつ、
スケジューラの呼び出しを最小限に押さえて、且つ、シ
ステム全体を正しく動作させることが可能なデータ処理
方法を提供することを目的としている。また、そのよう
なデータ処理方法を実現するプログラムが記録された記
録媒体、並びにそのような記録媒体を備えたデータ処理
装置を提供することも目的としている。
方法では、実行するスレッドの切り替えを行うコンテキ
ストスイッチが生じたときに、当該コンテキストスイッ
チの履歴を記録しておく。そして、スレッドの実行順序
を制御するスケジューラが呼び出されたときに、当該ス
ケジューラが管理する待ち行列を上記履歴を辿って更新
する。
は、スケジューラが呼び出されたときに、コンテキスト
スイッチの履歴を辿って待ち行列を更新するようにして
いるので、スケジューラの呼び出しを省略してコンテキ
ストスイッチがなされていたとしても、スケジューラに
よるスケジュール管理を正しく行うことができる。
列の順序を設定し直す必要があるコンテキストスイッチ
を生じさせるスレッドに対して所定のフラグを設定して
おき、コンテキストスイッチが生じたときに、当該コン
テキストスイッチを生じさせたスレッドに上記フラグが
設定されている場合には、スケジューラを呼び出して待
ち行列の順序を設定し直すようにしてもよい。このよう
にしておけば、常に適切なときに待ち行列の順序の再設
定がなされることとなるため、例えば、優先度の高い処
理が待たされてしまう等の不都合を回避できる。
は、上記スケジューラの呼び出され方によって、上記フ
ラグが設定されるスレッドが異なるようにしてもよい。
このようにしておけば、より適切なときに待ち行列の順
序の再設定がなされるようにすることが可能となる。
の実行順序を制御するスケジューラを有するオペレーテ
ィングシステムが記録されたコンピュータ読み取り可能
な記録媒体である。そして、上記オペレーティングシス
テムは、実行するスレッドの切り替えを行うコンテキス
トスイッチが生じたときに、当該コンテキストスイッチ
の履歴を記録しておき、スケジューラが呼び出されたと
きに、当該スケジューラが管理する待ち行列を上記履歴
を辿って更新する。
れたオペレーティングシステムでは、スケジューラが呼
び出されたときに、コンテキストスイッチの履歴を辿っ
て待ち行列を更新するようにしているので、スケジュー
ラの呼び出しを省略してコンテキストスイッチがなされ
ていたとしても、スケジューラによるスケジュール管理
を正しく行うことができる。
列の順序を設定し直す必要があるコンテキストスイッチ
を生じさせるスレッドに対して所定のフラグを設定して
おき、コンテキストスイッチが生じたときに、当該コン
テキストスイッチを生じさせたスレッドに上記フラグが
設定されている場合には、スケジューラを呼び出して待
ち行列の順序を設定し直すようにしてもよい。このよう
にしておけば、常に適切なときに待ち行列の順序の再設
定がなされることとなるため、例えば、優先度の高い処
理が待たされてしまう等の不都合を回避できる。
は、上記スケジューラの呼び出され方によって、上記フ
ラグが設定されるスレッドが異なるようにしてもよい。
このようにしておけば、より適切なときに待ち行列の順
序の再設定がなされるようにすることが可能となる。
レッドの実行順序を制御するスケジューラを有するオペ
レーティングシステムが記録されたコンピュータ読み取
り可能な記録媒体を備えたデータ処理装置である。そし
て、上記オペレーティングシステムは、実行するスレッ
ドの切り替えを行うコンテキストスイッチが生じたとき
に、当該コンテキストスイッチの履歴を記録しておき、
スケジューラが呼び出されたときに、当該スケジューラ
が管理する待ち行列を上記履歴を辿って更新する。
備えられた記録媒体に記録されたオペレーティングシス
テムでは、スケジューラが呼び出されたときに、コンテ
キストスイッチの履歴を辿って待ち行列を更新するよう
にしているので、スケジューラの呼び出しを省略してコ
ンテキストスイッチがなされていたとしても、スケジュ
ーラによるスケジュール管理を正しく行うことができ
る。
列の順序を設定し直す必要があるコンテキストスイッチ
を生じさせるスレッドに対して所定のフラグを設定して
おき、コンテキストスイッチが生じたときに、当該コン
テキストスイッチを生じさせたスレッドに上記フラグが
設定されている場合には、スケジューラを呼び出して待
ち行列の順序を設定し直すようにしてもよい。このよう
にしておけば、常に適切なときに待ち行列の順序の再設
定がなされることとなるため、例えば、優先度の高い処
理が待たされてしまう等の不都合を回避できる。
は、上記スケジューラの呼び出され方によって、上記フ
ラグが設定されるスレッドが異なるようにしてもよい。
このようにしておけば、より適切なときに待ち行列の順
序の再設定がなされるようにすることが可能となる。
て、図面を参照しながら詳細に説明する。
いて、図1を参照して説明する。なお、ここでは、本発
明の実施の形態の一例として、テレビ装置に本発明を適
用した例を挙げるが、当然の事ながら、本発明は、その
他のデータ処理装置にも適用可能である。すなわち、本
発明は、オペレーティングシステムが動作するデータ処
理装置に広く適用可能であり、例えば、テレビ装置以外
のオーディオ・ビジュアル機器(いわゆるAV機器)
や、各種の事務機器や、一般のコンピュータ装置等にも
適用可能である。
図1に示すテレビ装置は、アンテナ又はケーブル等によ
って放送局からの信号を受信し、当該信号に基づいて、
ブラウン管又は液晶等の画像表示装置に映像を表示する
と共にスピーカから音声を出力する。
えているだけでなく、外部からプログラムやデータを受
けとることが可能となっており、図1に示すように、バ
ス/IOブリッジ1を介してバス2に接続されたテレビ
機能部3と、バス/メモリブリッジ4を介してバス2に
接続されたプロセッサ5と、バス/メモリブリッジ4を
介してプロセッサ5に接続されたROM(Read Only Me
mory)6及びRAM(Random Access Memory)7と、バ
ス2に接続された操作パネル8、外部記憶装置9及び通
信装置10とを備えている。
等によって受信した信号に基づいて、映像や音声を再生
する機能を備えている。このテレビ機能部3は、バス/
IOブリッジ1を介してバス2に接続されており、これ
により、他の部分との信号のやり取りが可能となってい
る。
制御を行うものであり、バス/メモリブリッジ4を介し
てバス2に接続されている。また、プロセッサ5には、
バス/メモリブリッジ4を介してROM6及びRAM7
が接続されている。
うためのオペレーティングシステムやアプリケーション
プログラム等を記憶している。ここで、オペレーティン
グシステムは、ナノカーネルを採用したオペレーティン
グシステムである。また、このオペレーティングシステ
ムは、オブジェクト指向が適用されてなるオブジェクト
指向型オペレーティングシステムでもある。
として使われる。すなわち、プロセッサ5は、ROM6
に記憶されているオペレーティングシステムやアプリケ
ーションプログラム等を、RAM7をワークエリアとし
て使用して実行することにより、このテレビ装置を構成
する各部を制御する。
受け付けるための入力装置であり、この操作パネル8か
ら、例えば、テレビのチャンネルやボリューム等の切り
換えを指示する信号が入力される。この操作パネル8
は、具体的には、各種信号を入力するための複数のボタ
ンを備えた入力装置や、いわゆるマウスと称されるよう
なポインティングデバイス等からなる。この操作パネル
8によって入力された信号は、バス2及びバス/メモリ
ブリッジ4を介してプロセッサ5に入力される。そし
て、プロセッサ5は、操作パネル8によって入力された
信号に基づいて、所定の演算処理を行って各部を制御す
る。
装置からなり、画像データ、制御データ、又は外部から
通信装置10を介してダウンロードされたアプリケーシ
ョンプログラム等を記録するのに使われる。また、通信
装置10は、外部との間でデータ通信を行うための入出
力部であり、例えばモデムやターミナルアダプター等か
らなる。
て提供される通常のテレビ機能を備えているだけでな
く、通信装置10を介して、外部からプログラムやデー
タを受け取ることが可能となっている。すなわち、この
テレビ装置では、例えば、外部のネットワークから通信
装置10を介して新規ソフトウェアモジュールを受け取
ることにより、オペレーティングシステムやアプリケー
ションプログラムのバージョンアップを行うことが可能
となっている。
によって、ROM6に記憶されているオペレーティング
システムを実行するとともに、オペレーティングシステ
ム上で、ROM6や外部記憶装置9に記憶されているア
プリケーションプログラムを実行することにより、各部
の制御を行う。すなわち、このテレビ装置は、オペレー
ティングシステムが記録されたコンピュータ読み取り可
能な記録媒体として、ROM6を備えている。なお、オ
ペレーティングシステムは、RAM7や外部記憶装置9
に記録しておくようにしてもよい。特に、オペレーティ
ングシステムの書き換えを行えるようにしたい場合に
は、RAM7や外部記憶装置9に記録しておくようにす
る。
いて説明する。
構成 上記テレビ装置で使用されるオペレーティングシステム
は、ナノカーネルを採用したオペレーティングシステム
であり、図2に示すように、コンテキストスイッチを司
るナノカーネルに相当する部分としてメタコア(MetaCo
re)を備えている。
オブジェクト指向を採用している。換言すれば、このオ
ペレーティングシステムにおいて、ナノカーネルに相当
するメタコア上で動作する実行実体はオブジェクトであ
り、オブジェクト間のやり取りはメッセージ通信によっ
てなされる。
複数のプログラム実行環境を同時に提供することが可能
となっている。以下の説明では、このオペレーティング
システムによって提供されるプログラム実行環境のこと
をメタスペースと呼ぶ。具体的には、このオペレーティ
ングシステムは、メタスペースとして、図2に示すよう
に、mCOOPメタスペースと、mDriveメタスペースと、mCo
reメタスペースとを提供する。これらのメタスペース
は、複数のオブジェクトで構成される。なお、以下の説
明では、メタスペースを構成するオブジェクトのことを
メタオブジェクトと称する。
型のアプリケーションプログラム(例えば、操作パネル
8を制御するためのグラフィカル・ユーザ・インターフ
ェースを実現するアプリケーションプログラム)を動作
させるためのメタスペースである。なお、mCOOPメタス
ペースの「m」はメタスペースである旨を示しており、
「COOP」は、Concurrent Object Oriented Program
mingの略である。
御を担うデバイスドライバを動作させるためのメタスペ
ースである。なお、mDriveメタスペースの「m」はメタ
スペースである旨を示しており、「Drive」は、デバイ
スドライバ(Device Driver)を動作させるメタスペー
スである旨を示している。
ペース及びmDriveメタスペースを構成するメタオブジェ
クトを動作させるためのメタスペースであり、マイクロ
カーネルに相当する。なお、mCoreメタスペースの
「m」はメタスペースである旨を示しており、「Core」
は、オペレーティングシステムの核となる部分であるこ
とを示している。
では、図2に示すように、CPU等のハードウェアの上
でmCoreメタスペースが動作し、mCoreメタスペースの上
でmCOOPメタスペース及びmDriveメタスペースが動作
し、mCOOPメタスペースの上でオブジェクト指向型のア
プリケーションプログラムが動作し、mDriveメタスペー
スの上でデバイスドライバが動作する。そして、これら
の間のコンテキストスイッチがメタコアによって制御さ
れる。
mCoreメタスペースの上で動作するメタスペースとし
て、mCOOPメタスペースやmDriveメタスペース以外に
も、例えば、手続き型のアプリケーションプログラム
(例えば、テレビ機能部3に動画像を表示するためのア
プリケーションプログラム)を動作させるためのメタス
ペース等も提供可能とされている。ただし、mCoreメタ
スペース上で動作するメタスペースが異なっていても、
本発明はそれらのメタスペースに対して同様に適用可能
であるので、以下の説明では、mCOOPメタスペースやmDr
iveメタスペースだけを例に挙げ、他のメタスペースに
ついては説明を省略する。
図2に示すように、オブジェクト「mCOOPScheduler」
と、オブジェクト「mCOOPMailer」と、オブジェクト「m
COOPFaultHandler」とがある。ここで、オブジェクト
「mCOOPScheduler」は、いわゆるスケジューラであり、
mCOOPメタスペース上で動作するアプリケーションプロ
グラムのスケジュール管理等を担うメタオブジェクトで
ある。オブジェクト「mCOOPMailer」は、mCOOPメタスペ
ース上で動作するアプリケーションプログラム間のメッ
セージ通信等を担うメタオブジェクトである。オブジェ
クト「mCOOPFaultHandler」は、例外処理を担うメタオ
ブジェクトである。なお、mCOOPメタスペースは、実際
にはこれらのメタオブジェクトの他、様々なメタオブジ
ェクトによって構成される。
ェクトには、図2に示すように、オブジェクト「mDrive
Scheduler」と、オブジェクト「mDriveMailer」と、オ
ブジェクト「mDriveFaultHandler」とがある。ここで、
オブジェクト「mDriveScheduler」は、いわゆるスケジ
ューラであり、mDriveメタスペース上で動作するデバイ
スドライバのスケジュール管理等を担うメタオブジェク
トである。オブジェクト「mDriveMailer」は、mDriveメ
タスペース上で動作するデバイスドライバ間のメッセー
ジ通信等を担うメタオブジェクトである。オブジェクト
「mDriveFaultHandler」は、例外処理を担うメタオブジ
ェクトである。なお、mDriveメタスペースも、実際には
これらのメタオブジェクトの他、様々なメタオブジェク
トによって構成される。
ェクトには、図2に示すように、オブジェクト「mCoreS
cheduler」と、オブジェクト「mCoreMailer」とがあ
る。ここで、オブジェクト「mCoreScheduler」は、いわ
ゆるスケジューラであり、mCoreメタスペース上で動作
するオブジェクトのスケジュール管理等を担うメタオブ
ジェクトである。オブジェクト「mCoreMailer」は、mCo
reメタスペース上で動作するメタオブジェクト間のメッ
セージ通信等を担うメタオブジェクトである。なお、mC
oreメタスペースも、実際にはこれらのメタオブジェク
トの他、様々なメタオブジェクトによって構成される。
メタオブジェクトを、それぞれのメタスペース毎に別々
のメタオブジェクトとしたが、スケジュール管理を担う
メタオブジェクトを全メタスペースで共有するようにし
てもよい。すなわち、スケジュール管理を担うメタオブ
ジェクトを、mCOOPメタスペースで使用するときにはmCO
OPメタスペースのメタオブジェクトとして振る舞い、mD
riveメタスペースで使用するときにはmDriveメタスペー
スのメタオブジェクトとして振る舞い、mCoreメタスペ
ースで使用するときにはmCoreメタスペースのメタオブ
ジェクトとして振る舞うようにすることにより、全メタ
スペースで共有することも可能である。
動くオブジェクトのことをベースオブジェクトと称し、
ベースオブジェクトがメタオブジェクトによって提供さ
れるサービスを受けるために行うメタオブジェクト呼び
出しのことをメタコール(meta-call)と称する。な
お、メタコールは、ファットカーネルにおけるシステム
コールに相当する。そして、ベースオブジェクトとメタ
オブジェクトとの間のコンテキストスイッチは、ナノカ
ーネルに相当するメタコアによって行われる。
ラ」とは、スケジュール管理を担うメタオブジェクトで
あるオブジェクト「mCOOPScheduler」、オブジェクト
「mDriveScheduler」及びオブジェクト「mCoreSchedule
r」のことをまとめて指すものとする。
ネルを採用したオペレーティングシステムで、スケジュ
ール管理がどのようになされていたかについて説明す
る。
動作するアプリケーションプログラムであるオブジェク
トAから、同様にmCOOPメタスペース上で動作するアプ
リケーションプログラムであるオブジェクトBへ、メッ
セージを送信する場合を例に挙げ、図3及び図4を参照
して説明する。ここで、図3は、オブジェクトAからオ
ブジェクトBへメッセージを送信する際の手順をオペレ
ーティングシステムの階層構造とともに示した図であ
る。なお、図3では、mDriveメタスペースについては、
図示を省略している。一方、図4は、オブジェクトAか
らオブジェクトBへメッセージを送信する際の各オブジ
ェクト間のやり取りをタイムチャートとして示した図で
ある。
ェクト「mCOOPMailer」をメタコールによって呼び出
す。すなわち、オブジェクトAからオブジェクトBへメ
ッセージを送信するために、先ず、mCOOPメタスペース
上で動作するオブジェクト間のメッセージ通信を担うメ
タオブジェクトであるオブジェクト「mCOOPMailer」を
呼び出す。
に示すように、オブジェクトAのメタコールを処理する
オブジェクト「mCOOPMailer」を呼び出すために、オブ
ジェクト「mCOOPMailer」が動作するmCoreメタスペース
のオブジェクト「mCoreSchduler」を呼び出す。そし
て、このオブジェクト「mCoreScheduler」によって、mC
oreメタスペース上で動作するオブジェクトのスケジュ
ール管理を行った上で、矢印A2に示すように、mCOOP
メタスペースのオブジェクト「mCOOPMailer」を呼び出
す。
Bを起こすために、mCOOPメタスペースのオブジェクト
「mCOOPScheduler」にメッセージを送信する。すなわ
ち、オブジェクトBを起こすためには、mCOOPメタスペ
ース上で動作するオブジェクトのスケジュール管理を行
う必要があり、そのために、mCOOPメタスペース上で動
作するオブジェクトのスケジュール管理を担うメタオブ
ジェクトであるオブジェクト「mCOOPScheduler」に、オ
ブジェクトBを起こすのに必要なメッセージを送信す
る。
クト「mCOOPMailer」からオブジェクト「mCOOPSchedule
r」へのメッセージ送信を行うために、矢印A3に示す
ように、mCoreメタスペース上で動作するオブジェクト
間のメッセージ通信を担うメタオブジェクトであるオブ
ジェクト「mCoreMailer」を呼び出す。次に、メッセー
ジの送り先であるオブジェクト「mCOOPScheduler」がmC
oreメタスペース上で動作するため、矢印A4に示すよ
うに、mCoreメタスペース上で動作するオブジェクトの
スケジュール管理を担うメタオブジェクトであるオブジ
ェクト「mCoreScheduler」を呼び出す。そして、このオ
ブジェクト「mCoreScheduler」によって、mCoreメタス
ペース上で動作するオブジェクトのスケジュール管理を
行った上で、矢印A5に示すようにオブジェクト「mCOO
PScheduler」を起こし、このオブジェクト「mCOOPSched
uler」へオブジェクトBを起こすのに必要なメッセージ
を送信する。
に受け取ったメッセージに基づいてオブジェクトBの状
態を変更し、その後、当該メッセージに対する返答をオ
ブジェクト「mCOOPMailer」へ送信する。
クト「mCOOPScheduler」からオブジェクト「mCOOPMaile
r」へ返答を送信するために、矢印A6に示すように、m
Coreメタスペース上で動作するオブジェクト間のメッセ
ージ通信を担うメタオブジェクトであるオブジェクト
「mCoreMailer」を呼び出す。次に、返答の送り先であ
るオブジェクト「mCOOPMailer」がmCoreメタスペース上
で動作するため、矢印A7に示すように、mCoreメタス
ペース上で動作するオブジェクトのスケジュール管理を
担うメタオブジェクトであるオブジェクト「mCoreSched
uler」を呼び出す。そして、このオブジェクト「mCoreS
cheduler」によって、mCoreメタスペース上で動作する
オブジェクトのスケジュール管理を行った上で、矢印A
8に示すようにオブジェクト「mCOOPMailer」を起こ
し、このオブジェクト「mCOOPMailer」へオブジェクト
「mCOOPScheduler」からの返答を送信する。
了したら、オブジェクトAやオブジェクトBの処理を開
始する。
に示すように、オブジェクト「mCoreScheduler」を呼び
出す。そして、このオブジェクト「mCoreScheduler」に
より、再スケジューリング等の処理を行った上で、矢印
A10に示すように、ベースオブジェクトであるオブジ
ェクトBを呼び出して処理を開始する。なお、このとき
に、オブジェクトBでの処理よりもオブジェクトAでの
処理の方が優先順位が高い場合には、オブジェクトBで
はなく、オブジェクトAを呼び出して処理を開始する。
ェクトAからオブジェクトBへのメッセージ送信は、以
上のような手順により行われるが、このような従来のス
ケジュール管理機構では、実行するオブジェクトの切り
替え、すなわちコンテキストスイッチが非常に多く発生
する。このコンテキストスイッチは、ナノカーネル、す
なわち本例ではメタコアによって制御され実行される
が、上述したように、コンテキストスイッチの回数が多
いとシステム全体の性能が低下してしまう。すなわち、
従来のスケジュール管理機構では、多数のコンテキスト
スイッチを必要としており、システム全体としての性能
を高めることが難しいという問題があった。
理機構 つぎに、本発明を適用したスケジュール管理機構につい
て説明する。
がある。このため、スケジュール管理の有無にかかわら
ず、オブジェクト間の実行遷移の順序関係が変わらない
ような場合がある。そこで、そのような場合にはスケジ
ュール管理を省略して、スケジューラの呼び出しを行わ
ないようにする。すなわち、オブジェクトの実行遷移の
遂次性を利用して、スケジューラの呼び出しを削減す
る。これにより、コンテキストスイッチの回数を削減で
き、システム全体としての性能を高めることが可能とな
る。
手順について、具体的な例を挙げ、図5及び図6を参照
して説明する。なお、ここでは、上述した従来のスケジ
ュール管理と比較するために、上述した従来のスケジュ
ール管理の説明で挙げた例と同様に、mCOOPメタスペー
ス上で動作するアプリケーションプログラムであるオブ
ジェクトAから、mCOOPメタスペース上で動作するアプ
リケーションプログラムであるオブジェクトBへ、メッ
セージを送信する場合を例に挙げる。なお、図5は、図
3と同様に、オブジェクトAからオブジェクトBへメッ
セージを送信する際の手順をオペレーティングシステム
の階層構造とともに示した図である。また、図6は、図
4と同様に、オブジェクトAからオブジェクトBへメッ
セージを送信する際の各オブジェクト間のやり取りをタ
イムチャートとして示した図である。
ェクト「mCOOPMailer」をメタコールによって呼び出
す。すなわち、オブジェクトAからオブジェクトBへメ
ッセージを送信するために、先ず、mCOOPメタスペース
上で動作するオブジェクト間のメッセージ通信を担うメ
タオブジェクトであるオブジェクト「mCOOPMailer」を
呼び出す。
ジェクトAからのメタコールによって、オブジェクト
「mCOOPMailer」を直接呼び出す。すなわち、オブジェ
クトAはオブジェクト「mCOOPMailer」の処理の終了を
待つ必要があり、オブジェクトAからオブジェクト「mC
OOPMailer」への実行遷移には逐次性があるので、オブ
ジェクト「mCoreScheduler」を呼び出してスケジュール
管理を行わせるようなことなく、オブジェクト「mCOOPM
ailer」を直接呼び出す。
Bを起こすために、mCOOPメタスペースのオブジェクト
「mCOOPScheduler」にメッセージを送信する。すなわ
ち、オブジェクトBを起こすためには、mCOOPメタスペ
ース上で動作するオブジェクトのスケジュール管理を行
う必要があり、そのために、mCOOPメタスペース上で動
作するオブジェクトのスケジュール管理を担うメタオブ
ジェクトであるオブジェクト「mCOOPScheduler」に、オ
ブジェクトBを起こすのに必要なメッセージを送信す
る。
クト「mCOOPMailer」からオブジェクト「mCOOPSchedule
r」へのメッセージ送信を行うために、矢印B2に示す
ように、mCoreメタスペース上で動作するオブジェクト
間のメッセージ通信を担うメタオブジェクトであるオブ
ジェクト「mCoreMailer」を呼び出す。次に、矢印B3
に示すようにオブジェクト「mCOOPScheduler」を直接呼
び出して、このオブジェクト「mCOOPScheduler」へオブ
ジェクトBを起こすのに必要なメッセージを送信する。
オブジェクト「mCOOPScheduler」の処理の終了を待つ必
要があり、オブジェクト「mCOOPMailer」からオブジェ
クト「mCOOPScheduler」への実行遷移には逐次性がある
ので、オブジェクト「mCoreScheduler」を呼び出してス
ケジュール管理を行わせるようなことなく、オブジェク
ト「mCOOPScheduler」を直接呼び出す。なお、以下の説
明では、このように、同じメタスペースのオブジェクト
間で、スケジューラの呼び出しを省略して行うメッセー
ジ送信のことを、「FastSend」と称する。
に受け取ったメッセージに基づいてオブジェクトBの状
態を変更し、その後、当該メッセージに対する返答をオ
ブジェクト「mCOOPMailer」へFastSendにより送信す
る。
クト「mCOOPScheduler」からオブジェクト「mCOOPMaile
r」へ返答を送信するために、矢印B4に示すように、m
Coreメタスペース上で動作するオブジェクト間のメッセ
ージ通信を担うメタオブジェクトであるオブジェクト
「mCoreMailer」を呼び出す。次に、矢印B5に示すよ
うにオブジェクト「mCOOPMailer」を直接呼び出して、
このオブジェクト「mCOOPMailer」へオブジェクト「mCO
OPScheduler」からの返答を送信する。ここで、オブジ
ェクト「mCOOPScheduler」からオブジェクト「mCOOPMai
ler」への実行遷移には逐次性があるので、オブジェク
ト「mCoreScheduler」を呼び出してスケジュール管理を
行わせるようなことなく、オブジェクト「mCOOPMaile
r」への返答を直ぐに行う。
了したら、オブジェクトAやオブジェクトBの処理を開
始する。
に示すように、オブジェクト「mCoreScheduler」を呼び
出す。そして、このオブジェクト「mCoreScheduler」に
より、再スケジューリング等の処理を行った上で、矢印
B7に示すように、ベースオブジェクトであるオブジェ
クトBを呼び出して処理を開始する。なお、このとき
に、オブジェクトBでの処理よりもオブジェクトAでの
処理の方が優先順位が高い場合には、オブジェクトBで
はなく、オブジェクトAを呼び出して処理を開始する。
オブジェクトを呼び出す機構や「FastSend」を用いてス
ケジューラの呼び出しを省略することにより、従来のス
ケジュール管理機構に比べて、コンテキストスイッチの
回数を削減することができ、これにより、システム全体
の性能向上を図ることが可能となる。
てスケジューラの呼び出しを省略する手順を説明した
が、スケジューラの呼び出しの省略は、その他の処理を
行うような場合にも適用可能である。特に、割り込み処
理時にスケジューラの呼び出しを省略するようにした場
合には、スケジューラの呼び出しに要する時間が省かれ
るので、割り込み時の遅延時間を短縮することが可能と
なる。すなわち、スケジューラ呼び出しの省略は、割り
込み処理のように即応答性が要求される処理に対しても
好適である。
省略しただけでは、実際のオブジェクトの状態と、スケ
ジューラの側で把握している状態とが異なるものとな
り、システム動作に不都合が生じる恐れがある。そこ
で、本発明では、これらの整合性を取るための機構を設
ける。なお、本例では、この機構のことを、Delayed Qu
euing機構と称している。
って、各オブジェクトのスレッドの状態について、図7
を参照して説明する。
り当てられる。そして、スケジューラは、スレッド単位
で状態を管理して、スケジューリングを行う。ここで、
スレッドの状態としては、図7に示すように、DORMANT
(休眠状態)と、WAITING(待ち状態)と、RUNNING(処
理中)との3つの状態を取りうるものとする。DORMANT
は、オブジェクトが何も実行するものがなく、スレッド
が停止している状態を表す。WAITINGは、オブジェクト
が何らかのイベントを待っていて、スレッドが停止して
いる状態を表す。RUNNINGは、オブジェクトが実行中で
あることを表す。換言すれば、RUNNINGは、スレッドが
動いている状態か、或いは、スレッドがスケジューラに
よって管理される待ち行列内にいてCPU処理時間を割
り当てられるのを待っている状態を表す。そして、スケ
ジューラは、他のオブジェクトからの要求に従ってスレ
ッドの状態を変更するとともに、スレッドの待ち行列を
更新する。
明する。
ては、まず、各スレッドに構造体を割り当てておき、コ
ンテキストスイッチにより、あるスレッド(ソーススレ
ッドと称する。)から他のスレッド(ターゲットスレッ
ドと称する。)に実行遷移したときに、コンテキストス
イッチの履歴を上記構造体に記録しておく。ここで、コ
ンテキストスイッチの履歴とは、各スレッドがどのスレ
ッドからどの実行遷移で起こされたかの履歴のことであ
り、具体的には、直前に実行されていたスレッド(すな
わちソーススレッド)がどのスレッドかを示す情報や、
何によって(例えばメタコールやFastSendによって)タ
ーゲットスレッドが起こされたかを示す情報等である。
ジューラが呼び出されたときに、上記構造体に記録され
ている履歴をたどり、実際のオブジェクトの状態と、ス
ケジューラの側の状態との整合性をとる。すなわち、ス
ケジューラが呼び出されたときに、Delayed Queuing機
構を実行して、当該スケジューラが前回呼び出された以
降に行われたコンテキストスイッチの履歴を、上記構造
体に記録されている情報を参照して辿っていく。そし
て、この履歴に基づいて、実際のオブジェクトの状態に
適合するように、スケジューラが管理する状態を変更す
るとともに、スレッドの待ち行列を更新する。これによ
り、実際のオブジェクトの状態と、スケジューラの側の
状態との整合性がとられることとなる。
るスレッドは、スケジューラを呼び出さずに起こされた
スレッド群である。具体的には、スケジューラが呼び出
される直前に動いていたスレッド(currentThread)か
ら、スケジューラが前回に起こしたスレッド(activeThr
ead)までである。なお、スケジューラが前回に起こした
スレッド(activeThread)とは、換言すれば、スケジュー
ラの側が、現在動いているスレッドであると認識してい
るスレッドということになる。
ケジューラの側で管理しているスレッドの状態について
の情報を、表1に示す規則に従って変更する。
スイッチが生じてターゲットスレッドが起こされていた
場合には、当該コンテキストスイッチ後のソーススレッ
ドの状態をWAITINGとし、ターゲットスレッドの状態をR
UNNINGとする。また、FastSendによりコンテキストスイ
ッチが生じてターゲットスレッドが起こされていた場合
には、当該コンテキストスイッチ後のソーススレッドの
状態をRUNNINGとし、ターゲットスレッドの状態をRUNNI
NGとする。なお、メタコールによりコンテキストスイッ
チが生じた場合も、FastSendによりコンテキストスイッ
チが生じた場合も、当該コンテキストスイッチ前のソー
ススレッドの状態は必ずRUNNINGであり、当該コンテキ
ストスイッチ前のターゲットスレッドの状態は必ずDORM
ANTである。
構のアルゴリズムについて、図8に示すフローチャート
を参照して詳細に説明する。なお、図8のフローチャー
ト、並びに後掲する図9のフローチャートでは、オブジ
ェクト指向型のプログラミング言語C++に準じた表記
にて各ステップでの処理を記載している。
に記述されたメソッド「Scheduler::DelayedQueuin
g()」によって実現される。換言すれば、スケジューラ
が呼び出されたときには、先ず、このメソッド「Schedu
ler::DelayedQueuing()」を実行して、Delayed Queuing
機構を動作させる。
edQueuing()」では、先ず、ステップS1に示すよう
に、pThreadにcurrentThreadを代入する。ここで、pThr
eadは、Delayed Queuing機構で使用される変数である。
また、currentThreadは、スケジューラが呼び出される
直前に動いていたスレッドを示している。したがって、
ステップS1により、pThreadは、スケジューラが呼び
出される直前に動いていたスレッドを示すこととなる。
dとactiveThreadとを比較する。ここで、activeThread
は、スケジューラが前回に起こしたスレッド、換言すれ
ば、現在動いているスレッドであるとスケジューラが認
識しているスレッドを示している。そして、pThreadとa
ctiveThreadとが等しくなければ、すなわち、pThread
が、スケジューラが前回に起こしたスレッドを示してい
ないならば、ステップS3へ進む。一方、pThreadとact
iveThreadとが等しければ、すなわち、pThreadが、スケ
ジューラが前回に起こしたスレッドを示しているなら
ば、ステップS10へ進む。
ドが、メタコールによって呼び出されたものであるか否
かを判別する。そして、メタコールによって呼び出され
たものである場合にはステップS4へ進み、メタコール
によって呼び出されたものではない場合にはステップS
7へ進む。なお、本例において、ステップS7へ進むの
は、pThreadが示すスレッドが、FastSendによって呼び
出された場合である。
ドが、ベースオブジェクトからメタオブジェクトへのコ
ンテキストスイッチを生じさせたソーススレッド(つま
り、後にベースオブジェクトからメタオブジェクトへの
コンテキストスイッチを引き起こすソーススレッド)で
あるため、当該スレッドに対して待ち行列変更フラグを
設定する。なお、図8では、待ち行列変更フラグのこと
を「Hook flag」として表記している。この待ち行列変
更フラグは、後述する非同期スケジューラ機構で使用さ
れる。そして、ステップS4での処理の後、ステップS
5へ進む。
ドの一つ前に実行されていたスレッドの状態をWAITING
とする。すなわち、ステップS5へ進むのは、pThread
が示すスレッドがメタコールで呼び出されたものである
ので、表1に示した規則に従って、ステップS5では、
pThreadが示すスレッドの一つ前に実行されていたスレ
ッドの状態をWAITINGとする。そして、ステップS5で
の処理の後、ステップS6へ進む。
の履歴を辿っていくために、pThreadを、それまでpThre
adが示していたスレッドの一つ前に実行されていたスレ
ッドを示すように変更する。その後、ステップS2へ戻
って処理を繰り返す。
同様に、pThreadが示すスレッドに対して待ち行列変更
フラグを設定する。そして、ステップS7での処理の
後、ステップS8へ進む。
ドの一つ前に実行されていたスレッドの状態をRUNNING
とする。すなわち、ステップS8へ進むのは、pThread
が示すスレッドがFastSendで呼び出されたものであるの
で、表1に示した規則に従って、ステップS8では、pT
hreadが示すスレッドの一つ前に実行されていたスレッ
ドの状態をRUNNINGとする。そして、ステップS8での
処理の後、ステップS9へ進む。
ドの一つ前に実行されていたスレッド、すなわち、ステ
ップS8で状態がRUNNINGとされたスレッドを、スケジ
ューラが管理しているスレッドの待ち行列に加える。そ
して、ステップS9での処理の後、ステップS6へ進
む。
テキストスイッチの履歴を辿っていくために、pThread
を、それまでpThreadが示していたスレッドの一つ前に
実行されていたスレッドを示すように変更し、その後、
ステップS2へ戻って処理を繰り返す。
おいて、スケジューラが前回に起こしたスレッドをpThr
eadが示していると判断されたならば、ステップS10
へ進む。このステップS10では、activeThreadにcurr
entThreadを代入する。ここで、activeThreadは、現在
動いているスレッドであるとスケジューラの側が認識し
ているスレッドを示しており、currentThreadは、スケ
ジューラが呼び出される直前に動いていたスレッドを示
している。したがって、このステップS10での処理に
より、現在動いているスレッドであるとスケジューラの
側が認識しているスレッドと、スケジューラが呼び出さ
れる直前に動いていたスレッドとが同じものとなる。
理を行うことなく、ステップS1及びステップ2の処理
の後に直ぐにステップS10に進むのは、currentThrea
dとactiveThreadとが最初から等しい場合、すなわち、
スケジューラを今回呼び起こしたスレッドと、スケジュ
ーラが前回呼び起こしたスレッドとが最初から同じ場合
である。
て行ったコンテキストスイッチがない場合には、スケジ
ューラを今回呼び起こしたスレッドと、スケジューラが
前回呼び起こしたスレッドとが同じものとなり、一方、
スケジューラの呼び出しを省略して行ったコンテキスト
スイッチがある場合には、スケジューラを今回呼び起こ
したスレッドと、スケジューラが前回呼び起こしたスレ
ッドとが異なるものとなる。
略して行ったコンテキストスイッチがない場合には、cu
rrentThreadとactiveThreadとが最初から等しくなり、
この場合は、ステップS3〜ステップS9の処理を行う
ことなく、ステップS1及びステップ2の処理の後に直
ぐにステップS10に進むこととなる。この場合には、
activeThreadとcurrentThreadとがもともと等しいの
で、ステップS10では実質的には何も行わない。一
方、スケジューラの呼び出しを省略して行ったコンテキ
ストスイッチがある場合には、currentThreadとactiveT
hreadとが異なるため、ステップS3以降の処理へと進
み、スケジューラの呼び出しを省略して行われたコンテ
キストスイッチの履歴を辿ることとなる。
時に省略されていた、スレッドの状態変更や待ち行列の
更新は全て完了し、実際のオブジェクトの状態と、スケ
ジューラの側の状態との整合性が取られることとなる。
は、メッセージ送信時にスケジューラの呼び出しを省略
したようなときだけでなく、割り込み処理のように即応
答性を要求される処理を行う際にスケジューラの呼び出
しを省略したようなときにも、同様に適用可能であるこ
とは言うまでもない。
ブジェクトの状態変更が、スケジューラと同一のメタス
ペースを構成するメタオブジェクト間のコンテキストス
イッチの逐次性に対して影響を与えないときには、メソ
ッド「Scheduler::DelayedQueuing()」による処理を行
う前に、図9に示すようなフローチャートに従って処理
を行うメソッド「Scheduler::CheckInvoke()」によっ
て、currentThreadを設定するようにしてもよい。
e()」では、先ず、ステップS21において、pThreadに
schedulerThreadを代入する。ここで、schedulerThread
は、スケジューラのスレッドを示している。したがっ
て、ステップS21により、pThreadは、スケジューラ
のスレッドを示すこととなる。
が示すスレッドがFastSendによって呼び出されたもので
あるか否かを判別する。そして、pThreadが示すスレッ
ドがFastSendによって呼び出されたものであるときには
ステップS23へ進む。
dによって呼び出されるのは、当該スレッド及びそのス
レッドの直前のスレッドが、スケジューラと同一のメタ
スペースのメタオブジェクトのスレッドのときである。
すなわち、ステップS23へ進むのは、pThreadが示す
スレッド及びそのスレッドの直前のスレッドが、スケジ
ューラと同一のメタスペースのメタオブジェクトのスレ
ッドのときである。したがって、このときには、Delaye
d Queuing機構を動作させる元となるcurrentThreadが示
すスレッドを、更に前のスレッドにまで遡ることができ
る。そこで、ステップS23では、pThreadを、それま
でpThreadが示していたスレッドの一つ前に実行されて
いたスレッドを示すように変更し、その後、ステップS
22へ戻って処理を繰り返す。
が示すスレッドがFastSendによって呼び出されたもので
ないと判別されたときには、ステップS25へ進む。こ
のときは、pThreadが示すスレッドの直前のスレッド
が、スケジューラと同一のメタスペースのメタオブジェ
クトのスレッドではないときである。
eadにpThreadを代入して、このときのpThreadが示すス
レッドを、currentThreadが示すスレッドに設定する。
このステップS25により、currentThreadが示すスレ
ッドは、当該スレッドの直前のスレッドがスケジューラ
と同一のメタスペースのメタオブジェクトのスレッドで
はないようなスレッドとされる。
hreadの設定が完了したら、メソッド「Scheduler::Chec
kInvoke()」の処理を終了して、上記メソッド「Schedul
er::DelayedQueuing()」へ処理を移行する。
った上で、メソッド「Scheduler::CheckInvoke()」の処
理を行うようにすれば、コンテキストスイッチの履歴を
辿ってスケジューラの持つ状態を変更する処理を削減で
き、処理の効率化を図ることができる。
機構 Delayed Queuing機構により待ち行列を変更するときに
待ち行列変更フラグを設定しておき、この待ち行列変更
フラグに基づいて、非同期にスケジューラを呼び出して
再スケジューリングを行う。すなわち、Delayed Queuin
g機構を動作させたときに、再スケジューリングが必要
なコンテキストスイッチを起こすソーススレッドに対し
て待ち行列変更フラグを設定しておき、そのコンテキス
トスイッチが起きたときに、スケジューラを呼び出して
再スケジューリングを行う。この機構のことを非同期ス
ケジューラ呼び出し機構と称する。
以下の通りである。
列を変更したときに、メタオブジェクトからベースオブ
ジェクトへのコンテキストスイッチを起こすソーススレ
ッドに、待ち行列変更フラグを設定する。なお、この待
ち行列フラグの設定は、上述したステップS4,S7で
行われる。
ェクトへのコンテキストスイッチが生じたときに、ター
ゲットスレッド(ベースオブジェクトのスレッド)を起
こす前に、ソーススレッド(メタオブジェクトのスレッ
ド)に待ち行列変更フラグが設定されているか否かを調
べる。そして、ソーススレッドに待ち行列変更フラグが
設定されている場合には、ターゲットスレッドを起こす
代わりにスケジューラを呼び出す。そして、メタオブジ
ェクトからベースオブジェクトへのコンテキストスイッ
チを行う前に、再スケジューリングを行う。
ラが待ち行列を変更した状況に応じて、具体的には下記
のように設定される。
よってDelayed Queuing機構が実行されたとき(或い
は、スケジューラを全メタスペースで共有するようにし
ている場合には、当該スケジューラがmCoreメタスペー
スのメタオブジェクトとして動作して、Delayed Queuin
g機構が実行されたとき)には、mCoreメタスペースを構
成するメタオブジェクトからmCoreメタスペース上で動
作するオブジェクトへのコンテキストスイッチを生じさ
せるスレッドに、待ち行列変更フラグを設定する。
クトによって呼び出されたオブジェクト「mCOOPSchedul
er」によって、Delayed Queuing機構が実行されたとき
(或いは、スケジューラを全メタスペースで共有するよ
うにしている場合には、当該スケジューラがmCOOPメタ
スペースのメタオブジェクトとして動作して、DelayedQ
ueuing機構が実行されたとき)には、mCOOPメタスペー
スを構成するメタオブジェクトからmCOOPメタスペース
上で動作するオブジェクトへのコンテキストスイッチを
生じさせるスレッドに、待ち行列変更フラグを設定す
る。これは、具体的には、図9に示したメソッド「Sche
duler::CheckInvoke()」を用いて、Delayed Queuing機
構を開始するスレッドを変更することで行う。
われる非同期スケジューラ呼び出し機構について、mCOO
Pメタスペース上で動作するオブジェクトAがmDriveメ
タスペース上で動作するオブジェクトCへメッセージを
送信する場合を例に挙げて説明する。なお、ここでは、
スケジューラを全メタスペースで共有するものとする。
すなわち、どのメタスペースにおいても、共通のオブジ
ェクト「Scheduler」がスケジュール管理を担うものと
する。
に示す。図10は、図3や図5と同様に、オブジェクト
AからオブジェクトCへメッセージを送信する際の手順
をオペレーティングシステムの階層構造とともに示した
図である。また、図11は、図4や図6と同様に、オブ
ジェクトAからオブジェクトCへメッセージを送信する
際の各オブジェクト間のやり取りをタイムチャートとし
て示した図である。
ェクト「mCOOPMailer」をメタコールによって呼び出
す。すなわち、オブジェクトAからオブジェクトCへメ
ッセージを送信するために、先ず、mCOOPメタスペース
上で動作するオブジェクトによるメッセージ通信を担う
メタオブジェクトであるオブジェクト「mCOOPMailer」
を呼び出す。
ジェクトAからのメタコールによって、オブジェクト
「mCOOPMailer」を直接呼び出す。すなわち、オブジェ
クトAからオブジェクト「mCOOPMailer」への実行遷移
には逐次性があるので、オブジェクト「Scheduler」を
呼び出してスケジュール管理を行わせるようなことな
く、オブジェクト「mCOOPMailer」を直接呼び出す。
信先のオブジェクトCがmDriveメタスペース上にあるた
め、オブジェクトCへのメッセージ送信を要求するメッ
セージを、mDriveメタスペース上で動作するオブジェク
トによるメッセージ通信を担うメタオブジェクトである
オブジェクト「mDriveMailer」に送信する。
クト「mCOOPMailer」からオブジェクト「mDriveMaile
r」へのメッセージ送信を行うために、矢印C2に示す
ように、mCoreメタスペース上で動作するオブジェクト
間のメッセージ通信を担うメタオブジェクトであるオブ
ジェクト「mCoreMailer」を呼び出す。次に、矢印C3
に示すようにオブジェクト「mDriveScheduler」を直接
呼び出して、このオブジェクト「mDriveScheduler」へ
メッセージを送る。ここで、オブジェクト「mCOOPMaile
r」からオブジェクト「mDriveScheduler」への実行遷移
には逐次性があるので、オブジェクト「Scheduler」を
呼び出してスケジュール管理を行わせるようなことな
く、オブジェクト「mDriveScheduler」を直接呼び出
す。すなわち、ここでのオブジェクト「mCOOPMailer」
からオブジェクト「mDriveMailer」へのメッセージ送信
は、FastSendによって行われる。
Cを起こすために、オブジェクト「Scheduler」にメッ
セージを送信する。すなわち、オブジェクトCを起こす
ためにはスケジュール管理を行う必要があり、そのため
に、スケジュール管理を担うメタオブジェクトであるオ
ブジェクト「Scheduler」に、オブジェクトCを起こす
のに必要なメッセージを送信する。
クト「mDriveMailer」からオブジェクト「Scheduler」
へのメッセージ送信を行うために、矢印C4に示すよう
に、mCoreメタスペース上で動作するオブジェクト間の
メッセージ通信を担うメタオブジェクトであるオブジェ
クト「mCoreMailer」を呼び出す。次に、矢印C5に示
すようにオブジェクト「Scheduler」を直接呼び出し
て、このオブジェクト「Scheduler」へオブジェクトC
を起こすのに必要なメッセージを送信する。ここで、オ
ブジェクト「mCOOPMailer」からオブジェクト「Schedul
er」への実行遷移には逐次性があるので、スケジューリ
ングを行うことなく、オブジェクト「Scheduler」を直
接呼び出す。すなわち、ここでのオブジェクト「mDrive
Mailer」からオブジェクト「Scheduler」へのメッセー
ジ送信は、FastSendによって行われる。
け取ったメッセージに基づいてオブジェクトCの状態を
変更するとともに、Delayed Queuing機構によって待ち
行列を変更する。
オブジェクトCの状態を変更するために呼び起こされた
ものであり、mDriveメタスペースのメタオブジェクトと
して動作している。そこで、このとき、オブジェクト
「Scheduler」は、mDriveメタスペース上で動作するオ
ブジェクトの実行を再開するコンテキストスイッチ、又
は、mDriveメタスペースと同一階層のメタスペースであ
るmCOOPメタスペース上で動作するオブジェクトの実行
を再開するコンテキストスイッチを起こすスレッドに対
して、待ち行列変更フラグを設定する。具体的には、オ
ブジェクト「Scheduler」は、オブジェクト「mCOOPMail
er」のスレッドに対して、待ち行列変更フラグを設定す
る。
r::CheckInvoke()」のアルゴリズムを用い、オブジェク
ト「Scheduler」→オブジェクト「mCoreMailer(1)」→
オブジェクト「mDriveMailer」→オブジェクト「mCoreM
ailer(2)」→オブジェクト「mCOOPMailer」→オブジェ
クトAというように、オブジェクト間の遷移を辿ってか
ら、オブジェクト「mCoreMailer(2)」を起点にしてDela
yed Queuing機構を実行することで実現される。なお、
オブジェクト「mCoreMailer(1)」及びオブジェクト「mC
oreMailer(2)」は、同じオブジェクト「mCoreMailer」
であるが、呼び出されたタイミングの違いを示すため
に、(1)(2)を付記している。
てオブジェクト「mDriveMailer」から受け取ったメッセ
ージに対する返答をオブジェクト「mDriveMailer」へ送
信する。このときは、具体的には、先ず、オブジェクト
「Scheduler」からオブジェクト「mDriveMailer」へ返
答を送信するために、矢印C6に示すように、mCoreメ
タスペース上で動作するオブジェクト間のメッセージ通
信を担うメタオブジェクトであるオブジェクト「mCoreM
ailer」を呼び出す。次に、矢印C7に示すようにオブ
ジェクト「mDriveMailer」を直接呼び出して、このオブ
ジェクト「mDriveMailer」へオブジェクト「Schedule
r」からの返答を送信する。ここで、オブジェクト「Sch
eduler」からオブジェクト「mDriveMailer」への実行遷
移には逐次性があるので、スケジューリングを行うこと
なく、オブジェクト「mDriveMailer」への返答を送信す
る。そして、これにより、オブジェクト「mDriveMaile
r」の実行が再開される。
ってオブジェクト「mCOOPMailer」から受け取ったメッ
セージに対する返答をオブジェクト「mCOOPMailer」へ
送信する。このときは、具体的には、先ず、オブジェク
ト「mDriveMailer」からオブジェクト「m
COOPMailer」へ返答を送信するために、矢印
C8に示すように、mCoreメタスペース上で動作するオ
ブジェクト間のメッセージ通信を担うメタオブジェクト
であるオブジェクト「mCoreMailer」を呼び出す。次
に、矢印C9に示すようにオブジェクト「mCOOPMaile
r」を直接呼び出して、このオブジェクト「mCOOPMaile
r」へオブジェクト「mDriveMailer」からの返答を送信
する。ここで、オブジェクト「mDriveMailer」からオブ
ジェクト「mCOOPMailer」への実行遷移には逐次性があ
るので、スケジューリングを行うことなく、オブジェク
ト「mCOOPMailer」への返答を送信する。そして、これ
により、オブジェクト「mCOOPMailer」の実行が再開さ
れる。
了したら、オブジェクトAを再開させるために、オブジ
ェクトAのスレッドへのコンテキストスイッチの処理を
行う。しかしながら、このコンテキストスイッチにおけ
るソーススレッドであるオブジェクト「mCOOPMailer」
のスレッドには、待ち行列変更フラグが設定されてい
る。そこで、オブジェクトAのスレッドへコンテキスト
スイッチするのではなく、非同期スケジューラ呼び出し
機構を動作させる。すなわち、オブジェクトAを再開さ
せるのではなく、矢印C10に示すように、オブジェク
ト「Scheduler」を呼び出す。
ューリングを行う。ここでは、この再スケジューリング
により、オブジェクトAよりもオブジェクトCを先に実
行するように、待ち行列のスケジュールが変更されたと
する。そして、オブジェクト「Scheduler」によって再
スケジューリングを行った後、この再スケジューリング
により、次に実行するオブジェクトとして設定されたオ
ブジェクトCを、矢印C11に示すように呼び出して実
行する。
し機構を採用して、オブジェクトAからオブジェクトC
へのメッセージの送信を行うことにより、スケジューラ
(すなわちオブジェクト「Scheduler」)の呼び出しの
回数が削減される。すなわち、上記の例では、mCOOPメ
タスペースやmDriveメタスペース上で動作するオブジェ
クトのスケジューリングを遅らせ、オブジェクトAのス
レッドを再開させようとするコンテキストスイッチが生
じたときに、非同期的にスケジューラを呼び出すように
しており、これにより、FastSendに対する返答のための
コンテキストスイッチを行う毎にスケジューラを呼び出
すような場合に比べて、スケジューラの呼び出し回数が
2回少なくなっている。
よって管理される待ち行列は、mCOOPメタスペースやmDr
iveメタスペース上で動作するオブジェクトに関して変
更しているだけで、この変更は、mCoreメタスペース上
で動作するオブジェクトに対しては影響しない。したが
って、mCOOPメタスペースやmDriveメタスペース上で動
作するオブジェクトのスケジューリングを遅らせて、ス
ケジューラの呼び出し回数を削減したとしても、システ
ムの動作に影響を与えることはない。
によれば、スケジューラの呼び出しを最小限に押さえ
て、且つ、システム全体を正しく動作させることが可能
となる。したがって、本発明によれば、ナノカーネルを
採用しつつ、システム全体の性能向上を図ることが可能
となる。
その概略構成を示す図である。
階層構造を示す図である。
めの図であり、オブジェクトAからオブジェクトBへメ
ッセージを送信する際の手順をオペレーティングシステ
ムの階層構造とともに示した図である。
めの図であり、オブジェクトAからオブジェクトBへメ
ッセージを送信する際の各オブジェクト間のやり取りを
タイムチャートとして示した図である。
説明するための図であり、オブジェクトAからオブジェ
クトBへメッセージを送信する際の手順をオペレーティ
ングシステムの階層構造とともに示した図である。
説明するための図であり、オブジェクトAからオブジェ
クトBへメッセージを送信する際の各オブジェクト間の
やり取りをタイムチャートとして示した図である。
るためのフローチャートである。
定のアルゴリズムを説明するためのフローチャートであ
る。
オブジェクトAからオブジェクトCへメッセージを送信
する際の手順をオペレーティングシステムの階層構造と
ともに示した図である。
オブジェクトAからオブジェクトCへメッセージを送信
する際の各オブジェクト間のやり取りをタイムチャート
として示した図である。
グシステムを示す図である。
グシステムを示す図である。
ステムを示す図である。
能部、 4 バス/メモリブリッジ、 5 プロセッ
サ、 6 ROM、 7 RAM、 8 操作パネル、
9 外部記憶装置、 10 通信装置
Claims (9)
- 【請求項1】 実行するスレッドの切り替えを行うコン
テキストスイッチが生じたときに、当該コンテキストス
イッチの履歴を記録しておき、 スレッドの実行順序を制御するスケジューラが呼び出さ
れたときに、当該スケジューラが管理する待ち行列を上
記履歴を辿って更新することを特徴とするデータ処理方
法。 - 【請求項2】 上記更新を行うときに、上記待ち行列の
順序を設定し直す必要があるコンテキストスイッチを生
じさせるスレッドに対して所定のフラグを設定してお
き、 コンテキストスイッチが生じたときに、当該コンテキス
トスイッチを生じさせたスレッドに上記フラグが設定さ
れている場合には、スケジューラを呼び出して待ち行列
の順序を設定し直すことを特徴とする請求項1記載のデ
ータ処理方法。 - 【請求項3】 上記スケジューラの呼び出され方によっ
て、上記フラグが設定されるスレッドが異なることを特
徴とする請求項2記載のデータ処理方法。 - 【請求項4】 スレッドの実行順序を制御するスケジュ
ーラを有するオペレーティングシステムが記録されたコ
ンピュータ読み取り可能な記録媒体であって、上記オペ
レーティングシステムは、実行するスレッドの切り替え
を行うコンテキストスイッチが生じたときに、当該コン
テキストスイッチの履歴を記録しておき、スケジューラ
が呼び出されたときに、当該スケジューラが管理する待
ち行列を上記履歴を辿って更新することを特徴とする記
録媒体。 - 【請求項5】 上記オペレーティングシステムは、上記
更新を行うときに、上記待ち行列の順序を設定し直す必
要があるコンテキストスイッチを生じさせるスレッドに
対して所定のフラグを設定しておき、コンテキストスイ
ッチが生じたときに、当該コンテキストスイッチを生じ
させたスレッドに上記フラグが設定されている場合に
は、スケジューラを呼び出して待ち行列の順序を設定し
直すことを特徴とする請求項4記載の記録媒体。 - 【請求項6】 上記スケジューラの呼び出され方によっ
て、上記フラグが設定されるスレッドが異なることを特
徴とする請求項5記載の記録媒体。 - 【請求項7】 スレッドの実行順序を制御するスケジュ
ーラを有するオペレーティングシステムが記録されたコ
ンピュータ読み取り可能な記録媒体を備えたデータ処理
装置であって、 上記オペレーティングシステムは、実行するスレッドの
切り替えを行うコンテキストスイッチが生じたときに、
当該コンテキストスイッチの履歴を記録しておき、スケ
ジューラが呼び出されたときに、当該スケジューラが管
理する待ち行列を上記履歴を辿って更新することを特徴
とするデータ処理装置。 - 【請求項8】 上記オペレーティングシステムは、上記
更新を行うときに、上記待ち行列の順序を設定し直す必
要があるコンテキストスイッチを生じさせるスレッドに
対して所定のフラグを設定しておき、コンテキストスイ
ッチが生じたときに、当該コンテキストスイッチを生じ
させたスレッドに上記フラグが設定されている場合に
は、スケジューラを呼び出して待ち行列の順序を設定し
直すことを特徴とする請求項7記載のデータ処理装置。 - 【請求項9】 上記スケジューラの呼び出され方によっ
て、上記フラグが設定されるスレッドが異なることを特
徴とする請求項7記載のデータ処理装置。
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 true JPH1196025A (ja) | 1999-04-09 |
JP3823475B2 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 EP EP98307130A patent/EP0905620B1/en not_active Expired - Lifetime
- 1998-09-04 DE DE69834885T patent/DE69834885T2/de 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 |
---|---|
JP3823475B2 (ja) | 2006-09-20 |
DE69834885T2 (de) | 2007-05-24 |
EP0905620B1 (en) | 2006-06-14 |
DE69834885D1 (de) | 2006-07-27 |
CN1211766A (zh) | 1999-03-24 |
EP0905620A2 (en) | 1999-03-31 |
CN1119746C (zh) | 2003-08-27 |
EP0905620A3 (en) | 2002-11-20 |
US6829766B1 (en) | 2004-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5381347A (en) | Method and system for displaying images on a display device using an offscreen video memory | |
CA2988269C (en) | Opportunistic multitasking | |
US7849463B2 (en) | Dynamically variable idle time thread scheduling | |
US20070101325A1 (en) | System and method for utilizing a remote memory to perform an interface save/restore procedure | |
EP3627319B1 (en) | Display resource scheduling method and device for embedded system | |
US7937499B1 (en) | Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card | |
JP2000330806A (ja) | 計算機システム | |
JP3794119B2 (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
JP2010287205A (ja) | 電子装置、コンピュータ実行システム及びその応用プログラムの表示制御方法 | |
US20080082803A1 (en) | Saving/Restoring Task State Data From/To Device Controller Host Interface Upon Command From Host Processor To Handle Task Interruptions | |
CN115640149A (zh) | Rdma事件管理方法、设备及存储介质 | |
JPH1196025A (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
WO2024160154A1 (zh) | Cpu调度方法、装置、电子设备及可读存储介质 | |
WO2025039822A1 (zh) | 一种计算装置及相关任务执行调度方法 | |
JP4048638B2 (ja) | スケジューリング装置及び方法並びに記録媒体 | |
JP3823468B2 (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
JP2003067199A (ja) | アプリケーションプログラム | |
US20240126600A1 (en) | Service process invoking method and related apparatus | |
JP2001306339A (ja) | 情報処理装置 | |
US20090037918A1 (en) | Thread sequencing for multi-threaded processor with instruction cache | |
WO2024055708A1 (zh) | 任务调度方法、装置、设备及介质 | |
CN118409839B (zh) | 应用程序启动方法与电子设备 | |
JPH06187171A (ja) | 割込みにおけるスケジューリング方式 | |
JP2001142725A (ja) | 情報処理装置 | |
JP2000029850A (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 |