[go: up one dir, main page]

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
Application number
JP9253889A
Other languages
English (en)
Other versions
JP3823475B2 (ja
Inventor
Seiji Murata
誠二 村田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP25388997A priority Critical patent/JP3823475B2/ja
Priority to EP98307130A priority patent/EP0905620B1/en
Priority to DE69834885T priority patent/DE69834885T2/de
Priority to US09/154,105 priority patent/US6829766B1/en
Priority to CN98119611A priority patent/CN1119746C/zh
Publication of JPH1196025A publication Critical patent/JPH1196025A/ja
Application granted granted Critical
Publication of JP3823475B2 publication Critical patent/JP3823475B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving 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

(57)【要約】 【課題】 ナノカーネルを採用しつつ、スケジューラの
呼び出しを最小限に押さえて、且つ、システム全体を正
しく動作させることが可能なオペレーティングシステム
を実現する。 【解決手段】 実行するスレッドの切り替えを行うコン
テキストスイッチが生じたときに、当該コンテキストス
イッチの履歴を記録しておく。そして、スレッドの実行
順序を制御するスケジューラが呼び出されたときに、当
該スケジューラが管理する待ち行列を、上記履歴を辿っ
て更新する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ処理方法に
関し、特に、オペレーティングシステムによるスケジュ
ール管理機構に関する。また、本発明は、スケジュール
管理機構を備えたオペレーティングシステムが記録され
た記録媒体、並びにそのような記録媒体を備えたデータ
処理装置に関する。
【0002】
【従来の技術】オペレーティングシステムには、いわゆ
るファットカーネル(Fat Kernel)を採用したオペレー
ティングシステムと、いわゆるマイクロカーネル(Micr
o Kernel)を採用したオペレーティングシステムと、い
わゆるナノカーネル(Nano Kernel)を採用したオペレ
ーティングシステムとがある。
【0003】ファットカーネルを採用したオペレーティ
ングシステムでは、オペレーティングシステムの機能が
全てカーネル内に実装される。したがって、例えば、ア
プリケーションプログラムが、スレッドの状態変化を伴
うオペレーティングシステムのサービスを要求する場合
には、図12に示すように、先ず、ファットカーネル内
の対応したモジュール(例えば図12における「Maile
r」や「Syncronization」)がシステムコール(system
call)によって呼び出される。その後、各モジュールか
らスレッドの状態を遷移させるために、スレッドの実行
順序を制御してそれらのスケジュール管理を行うスケジ
ューラ(Scheduler)が、いわゆる関数呼び出し(funct
ion call)によって呼び出され、これにより、スレッド
の状態変化を伴う処理が行われる。
【0004】このように、ファットカーネルを採用した
オペレーティングシステムでは、オペレーティングシス
テムの機能が全てカーネル内に実装される。このため、
様々な機能をオペレーティングシステムに実装させるに
は、カーネル内の知識が必要であり、また、それらの変
更も容易ではない。すなわち、ファットカーネルを採用
したオペレーティングシステムは、柔軟性に欠けるとい
う問題点を持つ。
【0005】一方、マイクロカーネルを採用したオペレ
ーティングシステムでは、カーネル内に実装する機能を
ハードウェア制御等のような基本的な機能だけとする。
すなわち、マイクロカーネルを採用したオペレーティン
グシステムでは、ハードウェア制御等のような基本的な
機能がマイクロカーネルに実装され、その他のオペレー
ティングシステムとしての機能については、マイクロカ
ーネル外で実現される。
【0006】このようなマイクロカーネルを採用したオ
ペレーティングシステムでは、カーネルに実装される機
能を限定することにより、柔軟性が欠けるというファッ
トカーネルにおける問題を解決することができる。
【0007】マイクロカーネルを採用したオペレーティ
ングシステムでは、図13に示すように、アプリケーシ
ョンプログラムのみならず、オペレーティングシステム
としての機能を提供するモジュール(例えば図13にお
ける「Syncronization」,「Mailer」,「Schedule
r」)も、マイクロカーネル上で動作する。したがっ
て、オペレーティングシステムの機能を提供するモジュ
ール自身も、マイクロカーネル内に実装されたスケジュ
ーラ(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 Me
mory)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に示すように、コンテキストスイッチを司
るナノカーネルに相当する部分としてメタコア(MetaCo
re)を備えている。
【0043】また、このオペレーティングシステムは、
オブジェクト指向を採用している。換言すれば、このオ
ペレーティングシステムにおいて、ナノカーネルに相当
するメタコア上で動作する実行実体はオブジェクトであ
り、オブジェクト間のやり取りはメッセージ通信によっ
てなされる。
【0044】また、このオペレーティングシステムは、
複数のプログラム実行環境を同時に提供することが可能
となっている。以下の説明では、このオペレーティング
システムによって提供されるプログラム実行環境のこと
をメタスペースと呼ぶ。具体的には、このオペレーティ
ングシステムは、メタスペースとして、図2に示すよう
に、mCOOPメタスペースと、mDriveメタスペースと、mCo
reメタスペースとを提供する。これらのメタスペース
は、複数のオブジェクトで構成される。なお、以下の説
明では、メタスペースを構成するオブジェクトのことを
メタオブジェクトと称する。
【0045】mCOOPメタスペースは、オブジェクト指向
型のアプリケーションプログラム(例えば、操作パネル
8を制御するためのグラフィカル・ユーザ・インターフ
ェースを実現するアプリケーションプログラム)を動作
させるためのメタスペースである。なお、mCOOPメタス
ペースの「m」はメタスペースである旨を示しており、
「COOP」は、Concurrent Object Oriented Program
mingの略である。
【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メタスペースやmDr
iveメタスペースだけを例に挙げ、他のメタスペースに
ついては説明を省略する。
【0050】2−2 メタオブジェクト mCOOPメタスペースを構成するメタオブジェクトには、
図2に示すように、オブジェクト「mCOOPScheduler」
と、オブジェクト「mCOOPMailer」と、オブジェクト「m
COOPFaultHandler」とがある。ここで、オブジェクト
「mCOOPScheduler」は、いわゆるスケジューラであり、
mCOOPメタスペース上で動作するアプリケーションプロ
グラムのスケジュール管理等を担うメタオブジェクトで
ある。オブジェクト「mCOOPMailer」は、mCOOPメタスペ
ース上で動作するアプリケーションプログラム間のメッ
セージ通信等を担うメタオブジェクトである。オブジェ
クト「mCOOPFaultHandler」は、例外処理を担うメタオ
ブジェクトである。なお、mCOOPメタスペースは、実際
にはこれらのメタオブジェクトの他、様々なメタオブジ
ェクトによって構成される。
【0051】mDriveメタスペースを構成するメタオブジ
ェクトには、図2に示すように、オブジェクト「mDrive
Scheduler」と、オブジェクト「mDriveMailer」と、オ
ブジェクト「mDriveFaultHandler」とがある。ここで、
オブジェクト「mDriveScheduler」は、いわゆるスケジ
ューラであり、mDriveメタスペース上で動作するデバイ
スドライバのスケジュール管理等を担うメタオブジェク
トである。オブジェクト「mDriveMailer」は、mDriveメ
タスペース上で動作するデバイスドライバ間のメッセー
ジ通信等を担うメタオブジェクトである。オブジェクト
「mDriveFaultHandler」は、例外処理を担うメタオブジ
ェクトである。なお、mDriveメタスペースも、実際には
これらのメタオブジェクトの他、様々なメタオブジェク
トによって構成される。
【0052】mCoreメタスペースを構成するメタオブジ
ェクトには、図2に示すように、オブジェクト「mCoreS
cheduler」と、オブジェクト「mCoreMailer」とがあ
る。ここで、オブジェクト「mCoreScheduler」は、いわ
ゆるスケジューラであり、mCoreメタスペース上で動作
するオブジェクトのスケジュール管理等を担うメタオブ
ジェクトである。オブジェクト「mCoreMailer」は、mCo
reメタスペース上で動作するメタオブジェクト間のメッ
セージ通信等を担うメタオブジェクトである。なお、mC
oreメタスペースも、実際にはこれらのメタオブジェク
トの他、様々なメタオブジェクトによって構成される。
【0053】なお、本例では、スケジュール管理を担う
メタオブジェクトを、それぞれのメタスペース毎に別々
のメタオブジェクトとしたが、スケジュール管理を担う
メタオブジェクトを全メタスペースで共有するようにし
てもよい。すなわち、スケジュール管理を担うメタオブ
ジェクトを、mCOOPメタスペースで使用するときにはmCO
OPメタスペースのメタオブジェクトとして振る舞い、mD
riveメタスペースで使用するときにはmDriveメタスペー
スのメタオブジェクトとして振る舞い、mCoreメタスペ
ースで使用するときにはmCoreメタスペースのメタオブ
ジェクトとして振る舞うようにすることにより、全メタ
スペースで共有することも可能である。
【0054】なお、以下の説明では、メタスペース上で
動くオブジェクトのことをベースオブジェクトと称し、
ベースオブジェクトがメタオブジェクトによって提供さ
れるサービスを受けるために行うメタオブジェクト呼び
出しのことをメタコール(meta-call)と称する。な
お、メタコールは、ファットカーネルにおけるシステム
コールに相当する。そして、ベースオブジェクトとメタ
オブジェクトとの間のコンテキストスイッチは、ナノカ
ーネルに相当するメタコアによって行われる。
【0055】また、以下の説明において、「スケジュー
ラ」とは、スケジュール管理を担うメタオブジェクトで
あるオブジェクト「mCOOPScheduler」、オブジェクト
「mDriveScheduler」及びオブジェクト「mCoreSchedule
r」のことをまとめて指すものとする。
【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」によって、mC
oreメタスペース上で動作するオブジェクトのスケジュ
ール管理を行った上で、矢印A2に示すように、mCOOP
メタスペースのオブジェクト「mCOOPMailer」を呼び出
す。
【0061】(2)send to mCOOPScheduler 次に、オブジェクト「mCOOPMailer」は、オブジェクト
Bを起こすために、mCOOPメタスペースのオブジェクト
「mCOOPScheduler」にメッセージを送信する。すなわ
ち、オブジェクトBを起こすためには、mCOOPメタスペ
ース上で動作するオブジェクトのスケジュール管理を行
う必要があり、そのために、mCOOPメタスペース上で動
作するオブジェクトのスケジュール管理を担うメタオブ
ジェクトであるオブジェクト「mCOOPScheduler」に、オ
ブジェクトBを起こすのに必要なメッセージを送信す
る。
【0062】このときは、具体的には、先ず、オブジェ
クト「mCOOPMailer」からオブジェクト「mCOOPSchedule
r」へのメッセージ送信を行うために、矢印A3に示す
ように、mCoreメタスペース上で動作するオブジェクト
間のメッセージ通信を担うメタオブジェクトであるオブ
ジェクト「mCoreMailer」を呼び出す。次に、メッセー
ジの送り先であるオブジェクト「mCOOPScheduler」がmC
oreメタスペース上で動作するため、矢印A4に示すよ
うに、mCoreメタスペース上で動作するオブジェクトの
スケジュール管理を担うメタオブジェクトであるオブジ
ェクト「mCoreScheduler」を呼び出す。そして、このオ
ブジェクト「mCoreScheduler」によって、mCoreメタス
ペース上で動作するオブジェクトのスケジュール管理を
行った上で、矢印A5に示すようにオブジェクト「mCOO
PScheduler」を起こし、このオブジェクト「mCOOPSched
uler」へオブジェクトBを起こすのに必要なメッセージ
を送信する。
【0063】(3)reply to mCOOPMailer 次に、オブジェクト「mCOOPScheduler」は、上述のよう
に受け取ったメッセージに基づいてオブジェクトBの状
態を変更し、その後、当該メッセージに対する返答をオ
ブジェクト「mCOOPMailer」へ送信する。
【0064】このときは、具体的には、先ず、オブジェ
クト「mCOOPScheduler」からオブジェクト「mCOOPMaile
r」へ返答を送信するために、矢印A6に示すように、m
Coreメタスペース上で動作するオブジェクト間のメッセ
ージ通信を担うメタオブジェクトであるオブジェクト
「mCoreMailer」を呼び出す。次に、返答の送り先であ
るオブジェクト「mCOOPMailer」がmCoreメタスペース上
で動作するため、矢印A7に示すように、mCoreメタス
ペース上で動作するオブジェクトのスケジュール管理を
担うメタオブジェクトであるオブジェクト「mCoreSched
uler」を呼び出す。そして、このオブジェクト「mCoreS
cheduler」によって、mCoreメタスペース上で動作する
オブジェクトのスケジュール管理を行った上で、矢印A
8に示すようにオブジェクト「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からオブジェクト「mC
OOPMailer」への実行遷移には逐次性があるので、オブ
ジェクト「mCoreScheduler」を呼び出してスケジュール
管理を行わせるようなことなく、オブジェクト「mCOOPM
ailer」を直接呼び出す。
【0074】(2)send to mCOOPScheduler 次に、オブジェクト「mCOOPMailer」は、オブジェクト
Bを起こすために、mCOOPメタスペースのオブジェクト
「mCOOPScheduler」にメッセージを送信する。すなわ
ち、オブジェクトBを起こすためには、mCOOPメタスペ
ース上で動作するオブジェクトのスケジュール管理を行
う必要があり、そのために、mCOOPメタスペース上で動
作するオブジェクトのスケジュール管理を担うメタオブ
ジェクトであるオブジェクト「mCOOPScheduler」に、オ
ブジェクトBを起こすのに必要なメッセージを送信す
る。
【0075】このときは、具体的には、先ず、オブジェ
クト「mCOOPMailer」からオブジェクト「mCOOPSchedule
r」へのメッセージ送信を行うために、矢印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」からオブジェクト「mCOOPMaile
r」へ返答を送信するために、矢印B4に示すように、m
Coreメタスペース上で動作するオブジェクト間のメッセ
ージ通信を担うメタオブジェクトであるオブジェクト
「mCoreMailer」を呼び出す。次に、矢印B5に示すよ
うにオブジェクト「mCOOPMailer」を直接呼び出して、
このオブジェクト「mCOOPMailer」へオブジェクト「mCO
OPScheduler」からの返答を送信する。ここで、オブジ
ェクト「mCOOPScheduler」からオブジェクト「mCOOPMai
ler」への実行遷移には逐次性があるので、オブジェク
ト「mCoreScheduler」を呼び出してスケジュール管理を
行わせるようなことなく、オブジェクト「mCOOPMaile
r」への返答を直ぐに行う。
【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 Qu
euing機構と称している。
【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)か
ら、スケジューラが前回に起こしたスレッド(activeThr
ead)までである。なお、スケジューラが前回に起こした
スレッド(activeThread)とは、換言すれば、スケジュー
ラの側が、現在動いているスレッドであると認識してい
るスレッドということになる。
【0090】このようなDelayed Queuing機構では、ス
ケジューラの側で管理しているスレッドの状態について
の情報を、表1に示す規則に従って変更する。
【0091】
【表1】
【0092】すなわち、メタコールによりコンテキスト
スイッチが生じてターゲットスレッドが起こされていた
場合には、当該コンテキストスイッチ後のソーススレッ
ドの状態をWAITINGとし、ターゲットスレッドの状態をR
UNNINGとする。また、FastSendによりコンテキストスイ
ッチが生じてターゲットスレッドが起こされていた場合
には、当該コンテキストスイッチ後のソーススレッドの
状態をRUNNINGとし、ターゲットスレッドの状態をRUNNI
NGとする。なお、メタコールによりコンテキストスイッ
チが生じた場合も、FastSendによりコンテキストスイッ
チが生じた場合も、当該コンテキストスイッチ前のソー
ススレッドの状態は必ずRUNNINGであり、当該コンテキ
ストスイッチ前のターゲットスレッドの状態は必ずDORM
ANTである。
【0093】つぎに、以上のようなDelayed Queuing機
構のアルゴリズムについて、図8に示すフローチャート
を参照して詳細に説明する。なお、図8のフローチャー
ト、並びに後掲する図9のフローチャートでは、オブジ
ェクト指向型のプログラミング言語C++に準じた表記
にて各ステップでの処理を記載している。
【0094】Delayed Queuing機構は、スケジューラ内
に記述されたメソッド「Scheduler::DelayedQueuin
g()」によって実現される。換言すれば、スケジューラ
が呼び出されたときには、先ず、このメソッド「Schedu
ler::DelayedQueuing()」を実行して、Delayed Queuing
機構を動作させる。
【0095】そして、このメソッド「Scheduler::Delay
edQueuing()」では、先ず、ステップS1に示すよう
に、pThreadにcurrentThreadを代入する。ここで、pThr
eadは、Delayed Queuing機構で使用される変数である。
また、currentThreadは、スケジューラが呼び出される
直前に動いていたスレッドを示している。したがって、
ステップS1により、pThreadは、スケジューラが呼び
出される直前に動いていたスレッドを示すこととなる。
【0096】次に、ステップS2に示すように、pThrea
dとactiveThreadとを比較する。ここで、activeThread
は、スケジューラが前回に起こしたスレッド、換言すれ
ば、現在動いているスレッドであるとスケジューラが認
識しているスレッドを示している。そして、pThreadとa
ctiveThreadとが等しくなければ、すなわち、pThread
が、スケジューラが前回に起こしたスレッドを示してい
ないならば、ステップS3へ進む。一方、pThreadとact
iveThreadとが等しければ、すなわち、pThreadが、スケ
ジューラが前回に起こしたスレッドを示しているなら
ば、ステップS10へ進む。
【0097】ステップS3では、pThreadが示すスレッ
ドが、メタコールによって呼び出されたものであるか否
かを判別する。そして、メタコールによって呼び出され
たものである場合にはステップS4へ進み、メタコール
によって呼び出されたものではない場合にはステップS
7へ進む。なお、本例において、ステップS7へ進むの
は、pThreadが示すスレッドが、FastSendによって呼び
出された場合である。
【0098】ステップS4では、pThreadが示すスレッ
ドが、ベースオブジェクトからメタオブジェクトへのコ
ンテキストスイッチを生じさせたソーススレッド(つま
り、後にベースオブジェクトからメタオブジェクトへの
コンテキストスイッチを引き起こすソーススレッド)で
あるため、当該スレッドに対して待ち行列変更フラグを
設定する。なお、図8では、待ち行列変更フラグのこと
を「Hook flag」として表記している。この待ち行列変
更フラグは、後述する非同期スケジューラ機構で使用さ
れる。そして、ステップS4での処理の後、ステップS
5へ進む。
【0099】ステップS5では、pThreadが示すスレッ
ドの一つ前に実行されていたスレッドの状態をWAITING
とする。すなわち、ステップS5へ進むのは、pThread
が示すスレッドがメタコールで呼び出されたものである
ので、表1に示した規則に従って、ステップS5では、
pThreadが示すスレッドの一つ前に実行されていたスレ
ッドの状態をWAITINGとする。そして、ステップS5で
の処理の後、ステップS6へ進む。
【0100】ステップS6では、コンテキストスイッチ
の履歴を辿っていくために、pThreadを、それまでpThre
adが示していたスレッドの一つ前に実行されていたスレ
ッドを示すように変更する。その後、ステップS2へ戻
って処理を繰り返す。
【0101】一方、ステップS7では、ステップS4と
同様に、pThreadが示すスレッドに対して待ち行列変更
フラグを設定する。そして、ステップS7での処理の
後、ステップS8へ進む。
【0102】ステップS8では、pThreadが示すスレッ
ドの一つ前に実行されていたスレッドの状態をRUNNING
とする。すなわち、ステップS8へ進むのは、pThread
が示すスレッドがFastSendで呼び出されたものであるの
で、表1に示した規則に従って、ステップS8では、pT
hreadが示すスレッドの一つ前に実行されていたスレッ
ドの状態をRUNNINGとする。そして、ステップS8での
処理の後、ステップS9へ進む。
【0103】ステップS9では、pThreadが示すスレッ
ドの一つ前に実行されていたスレッド、すなわち、ステ
ップS8で状態がRUNNINGとされたスレッドを、スケジ
ューラが管理しているスレッドの待ち行列に加える。そ
して、ステップS9での処理の後、ステップS6へ進
む。
【0104】ステップS6では、上述したように、コン
テキストスイッチの履歴を辿っていくために、pThread
を、それまでpThreadが示していたスレッドの一つ前に
実行されていたスレッドを示すように変更し、その後、
ステップS2へ戻って処理を繰り返す。
【0105】そして、上述したように、ステップS2に
おいて、スケジューラが前回に起こしたスレッドをpThr
eadが示していると判断されたならば、ステップS10
へ進む。このステップS10では、activeThreadにcurr
entThreadを代入する。ここで、activeThreadは、現在
動いているスレッドであるとスケジューラの側が認識し
ているスレッドを示しており、currentThreadは、スケ
ジューラが呼び出される直前に動いていたスレッドを示
している。したがって、このステップS10での処理に
より、現在動いているスレッドであるとスケジューラの
側が認識しているスレッドと、スケジューラが呼び出さ
れる直前に動いていたスレッドとが同じものとなる。
【0106】なお、ステップS3乃至ステップS9の処
理を行うことなく、ステップS1及びステップ2の処理
の後に直ぐにステップS10に進むのは、currentThrea
dとactiveThreadとが最初から等しい場合、すなわち、
スケジューラを今回呼び起こしたスレッドと、スケジュ
ーラが前回呼び起こしたスレッドとが最初から同じ場合
である。
【0107】そして、スケジューラの呼び出しを省略し
て行ったコンテキストスイッチがない場合には、スケジ
ューラを今回呼び起こしたスレッドと、スケジューラが
前回呼び起こしたスレッドとが同じものとなり、一方、
スケジューラの呼び出しを省略して行ったコンテキスト
スイッチがある場合には、スケジューラを今回呼び起こ
したスレッドと、スケジューラが前回呼び起こしたスレ
ッドとが異なるものとなる。
【0108】したがって、スケジューラの呼び出しを省
略して行ったコンテキストスイッチがない場合には、cu
rrentThreadとactiveThreadとが最初から等しくなり、
この場合は、ステップS3〜ステップS9の処理を行う
ことなく、ステップS1及びステップ2の処理の後に直
ぐにステップS10に進むこととなる。この場合には、
activeThreadとcurrentThreadとがもともと等しいの
で、ステップS10では実質的には何も行わない。一
方、スケジューラの呼び出しを省略して行ったコンテキ
ストスイッチがある場合には、currentThreadとactiveT
hreadとが異なるため、ステップS3以降の処理へと進
み、スケジューラの呼び出しを省略して行われたコンテ
キストスイッチの履歴を辿ることとなる。
【0109】以上の処理により、コンテキストスイッチ
時に省略されていた、スレッドの状態変更や待ち行列の
更新は全て完了し、実際のオブジェクトの状態と、スケ
ジューラの側の状態との整合性が取られることとなる。
【0110】なお、以上のようなDelayed Queuing機構
は、メッセージ送信時にスケジューラの呼び出しを省略
したようなときだけでなく、割り込み処理のように即応
答性を要求される処理を行う際にスケジューラの呼び出
しを省略したようなときにも、同様に適用可能であるこ
とは言うまでもない。
【0111】ところで、Delayed Queuing機構によるオ
ブジェクトの状態変更が、スケジューラと同一のメタス
ペースを構成するメタオブジェクト間のコンテキストス
イッチの逐次性に対して影響を与えないときには、メソ
ッド「Scheduler::DelayedQueuing()」による処理を行
う前に、図9に示すようなフローチャートに従って処理
を行うメソッド「Scheduler::CheckInvoke()」によっ
て、currentThreadを設定するようにしてもよい。
【0112】このメソッド「Scheduler::CheckInvok
e()」では、先ず、ステップS21において、pThreadに
schedulerThreadを代入する。ここで、schedulerThread
は、スケジューラのスレッドを示している。したがっ
て、ステップS21により、pThreadは、スケジューラ
のスレッドを示すこととなる。
【0113】次に、ステップS22において、pThread
が示すスレッドがFastSendによって呼び出されたもので
あるか否かを判別する。そして、pThreadが示すスレッ
ドがFastSendによって呼び出されたものであるときには
ステップS23へ進む。
【0114】ここで、pThreadが示すスレッドがFastSen
dによって呼び出されるのは、当該スレッド及びそのス
レッドの直前のスレッドが、スケジューラと同一のメタ
スペースのメタオブジェクトのスレッドのときである。
すなわち、ステップS23へ進むのは、pThreadが示す
スレッド及びそのスレッドの直前のスレッドが、スケジ
ューラと同一のメタスペースのメタオブジェクトのスレ
ッドのときである。したがって、このときには、Delaye
d Queuing機構を動作させる元となるcurrentThreadが示
すスレッドを、更に前のスレッドにまで遡ることができ
る。そこで、ステップS23では、pThreadを、それま
でpThreadが示していたスレッドの一つ前に実行されて
いたスレッドを示すように変更し、その後、ステップS
22へ戻って処理を繰り返す。
【0115】一方、ステップS22において、pThread
が示すスレッドがFastSendによって呼び出されたもので
ないと判別されたときには、ステップS25へ進む。こ
のときは、pThreadが示すスレッドの直前のスレッド
が、スケジューラと同一のメタスペースのメタオブジェ
クトのスレッドではないときである。
【0116】そこで、ステップS25では、currentThr
eadにpThreadを代入して、このときのpThreadが示すス
レッドを、currentThreadが示すスレッドに設定する。
このステップS25により、currentThreadが示すスレ
ッドは、当該スレッドの直前のスレッドがスケジューラ
と同一のメタスペースのメタオブジェクトのスレッドで
はないようなスレッドとされる。
【0117】そして、ステップS25により、currentT
hreadの設定が完了したら、メソッド「Scheduler::Chec
kInvoke()」の処理を終了して、上記メソッド「Schedul
er::DelayedQueuing()」へ処理を移行する。
【0118】以上のように、currentThreadの設定を行
った上で、メソッド「Scheduler::CheckInvoke()」の処
理を行うようにすれば、コンテキストスイッチの履歴を
辿ってスケジューラの持つ状態を変更する処理を削減で
き、処理の効率化を図ることができる。
【0119】2−4−3 非同期スケジューラ呼び出し
機構 Delayed Queuing機構により待ち行列を変更するときに
待ち行列変更フラグを設定しておき、この待ち行列変更
フラグに基づいて、非同期にスケジューラを呼び出して
再スケジューリングを行う。すなわち、Delayed Queuin
g機構を動作させたときに、再スケジューリングが必要
なコンテキストスイッチを起こすソーススレッドに対し
て待ち行列変更フラグを設定しておき、そのコンテキス
トスイッチが起きたときに、スケジューラを呼び出して
再スケジューリングを行う。この機構のことを非同期ス
ケジューラ呼び出し機構と称する。
【0120】非同期スケジューラ呼び出し機構の手順は
以下の通りである。
【0121】(1)Delayed Queuing機構により待ち行
列を変更したときに、メタオブジェクトからベースオブ
ジェクトへのコンテキストスイッチを起こすソーススレ
ッドに、待ち行列変更フラグを設定する。なお、この待
ち行列フラグの設定は、上述したステップS4,S7で
行われる。
【0122】(2)メタオブジェクトからベースオブジ
ェクトへのコンテキストスイッチが生じたときに、ター
ゲットスレッド(ベースオブジェクトのスレッド)を起
こす前に、ソーススレッド(メタオブジェクトのスレッ
ド)に待ち行列変更フラグが設定されているか否かを調
べる。そして、ソーススレッドに待ち行列変更フラグが
設定されている場合には、ターゲットスレッドを起こす
代わりにスケジューラを呼び出す。そして、メタオブジ
ェクトからベースオブジェクトへのコンテキストスイッ
チを行う前に、再スケジューリングを行う。
【0123】なお、待ち行列変更フラグは、スケジュー
ラが待ち行列を変更した状況に応じて、具体的には下記
のように設定される。
【0124】(1)オブジェクト「mCoreScheduler」に
よってDelayed Queuing機構が実行されたとき(或い
は、スケジューラを全メタスペースで共有するようにし
ている場合には、当該スケジューラがmCoreメタスペー
スのメタオブジェクトとして動作して、Delayed Queuin
g機構が実行されたとき)には、mCoreメタスペースを構
成するメタオブジェクトからmCoreメタスペース上で動
作するオブジェクトへのコンテキストスイッチを生じさ
せるスレッドに、待ち行列変更フラグを設定する。
【0125】(2)mCoreメタスペースのメタオブジェ
クトによって呼び出されたオブジェクト「mCOOPSchedul
er」によって、Delayed Queuing機構が実行されたとき
(或いは、スケジューラを全メタスペースで共有するよ
うにしている場合には、当該スケジューラがmCOOPメタ
スペースのメタオブジェクトとして動作して、DelayedQ
ueuing機構が実行されたとき)には、mCOOPメタスペー
スを構成するメタオブジェクトからmCOOPメタスペース
上で動作するオブジェクトへのコンテキストスイッチを
生じさせるスレッドに、待ち行列変更フラグを設定す
る。これは、具体的には、図9に示したメソッド「Sche
duler::CheckInvoke()」を用いて、Delayed Queuing機
構を開始するスレッドを変更することで行う。
【0126】このような待ち行列変更フラグを用いて行
われる非同期スケジューラ呼び出し機構について、mCOO
Pメタスペース上で動作するオブジェクト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」からオブジェクト「mDriveMaile
r」へのメッセージ送信を行うために、矢印C2に示す
ように、mCoreメタスペース上で動作するオブジェクト
間のメッセージ通信を担うメタオブジェクトであるオブ
ジェクト「mCoreMailer」を呼び出す。次に、矢印C3
に示すようにオブジェクト「mDriveScheduler」を直接
呼び出して、このオブジェクト「mDriveScheduler」へ
メッセージを送る。ここで、オブジェクト「mCOOPMaile
r」からオブジェクト「mDriveScheduler」への実行遷移
には逐次性があるので、オブジェクト「Scheduler」を
呼び出してスケジュール管理を行わせるようなことな
く、オブジェクト「mDriveScheduler」を直接呼び出
す。すなわち、ここでのオブジェクト「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」からオブジェクト「Schedul
er」への実行遷移には逐次性があるので、スケジューリ
ングを行うことなく、オブジェクト「Scheduler」を直
接呼び出す。すなわち、ここでのオブジェクト「mDrive
Mailer」からオブジェクト「Scheduler」へのメッセー
ジ送信は、FastSendによって行われる。
【0135】(4)update scheduling queue 次に、オブジェクト「Scheduler」は、上述のように受
け取ったメッセージに基づいてオブジェクトCの状態を
変更するとともに、Delayed Queuing機構によって待ち
行列を変更する。
【0136】ここで、オブジェクト「Scheduler」は、
オブジェクトCの状態を変更するために呼び起こされた
ものであり、mDriveメタスペースのメタオブジェクトと
して動作している。そこで、このとき、オブジェクト
「Scheduler」は、mDriveメタスペース上で動作するオ
ブジェクトの実行を再開するコンテキストスイッチ、又
は、mDriveメタスペースと同一階層のメタスペースであ
るmCOOPメタスペース上で動作するオブジェクトの実行
を再開するコンテキストスイッチを起こすスレッドに対
して、待ち行列変更フラグを設定する。具体的には、オ
ブジェクト「Scheduler」は、オブジェクト「mCOOPMail
er」のスレッドに対して、待ち行列変更フラグを設定す
る。
【0137】これは、具体的には、メソッド「Schedule
r::CheckInvoke()」のアルゴリズムを用い、オブジェク
ト「Scheduler」→オブジェクト「mCoreMailer(1)」→
オブジェクト「mDriveMailer」→オブジェクト「mCoreM
ailer(2)」→オブジェクト「mCOOPMailer」→オブジェ
クトAというように、オブジェクト間の遷移を辿ってか
ら、オブジェクト「mCoreMailer(2)」を起点にしてDela
yed Queuing機構を実行することで実現される。なお、
オブジェクト「mCoreMailer(1)」及びオブジェクト「mC
oreMailer(2)」は、同じオブジェクト「mCoreMailer」
であるが、呼び出されたタイミングの違いを示すため
に、(1)(2)を付記している。
【0138】(5)reply to mDriveMailer 次に、オブジェクト「Scheduler」は、FastSendによっ
てオブジェクト「mDriveMailer」から受け取ったメッセ
ージに対する返答をオブジェクト「mDriveMailer」へ送
信する。このときは、具体的には、先ず、オブジェクト
「Scheduler」からオブジェクト「mDriveMailer」へ返
答を送信するために、矢印C6に示すように、mCoreメ
タスペース上で動作するオブジェクト間のメッセージ通
信を担うメタオブジェクトであるオブジェクト「mCoreM
ailer」を呼び出す。次に、矢印C7に示すようにオブ
ジェクト「mDriveMailer」を直接呼び出して、このオブ
ジェクト「mDriveMailer」へオブジェクト「Schedule
r」からの返答を送信する。ここで、オブジェクト「Sch
eduler」からオブジェクト「mDriveMailer」への実行遷
移には逐次性があるので、スケジューリングを行うこと
なく、オブジェクト「mDriveMailer」への返答を送信す
る。そして、これにより、オブジェクト「mDriveMaile
r」の実行が再開される。
【0139】(6)reply to mCOOPMailer 次に、オブジェクト「mDriveMailer」は、FastSendによ
ってオブジェクト「mCOOPMailer」から受け取ったメッ
セージに対する返答をオブジェクト「mCOOPMailer」へ
送信する。このときは、具体的には、先ず、オブジェク
ト「mDriveMailer」からオブジェクト「m
COOPMailer」へ返答を送信するために、矢印
C8に示すように、mCoreメタスペース上で動作するオ
ブジェクト間のメッセージ通信を担うメタオブジェクト
であるオブジェクト「mCoreMailer」を呼び出す。次
に、矢印C9に示すようにオブジェクト「mCOOPMaile
r」を直接呼び出して、このオブジェクト「mCOOPMaile
r」へオブジェクト「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メタスペースやmDr
iveメタスペース上で動作するオブジェクトに関して変
更しているだけで、この変更は、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. 【請求項1】 実行するスレッドの切り替えを行うコン
    テキストスイッチが生じたときに、当該コンテキストス
    イッチの履歴を記録しておき、 スレッドの実行順序を制御するスケジューラが呼び出さ
    れたときに、当該スケジューラが管理する待ち行列を上
    記履歴を辿って更新することを特徴とするデータ処理方
    法。
  2. 【請求項2】 上記更新を行うときに、上記待ち行列の
    順序を設定し直す必要があるコンテキストスイッチを生
    じさせるスレッドに対して所定のフラグを設定してお
    き、 コンテキストスイッチが生じたときに、当該コンテキス
    トスイッチを生じさせたスレッドに上記フラグが設定さ
    れている場合には、スケジューラを呼び出して待ち行列
    の順序を設定し直すことを特徴とする請求項1記載のデ
    ータ処理方法。
  3. 【請求項3】 上記スケジューラの呼び出され方によっ
    て、上記フラグが設定されるスレッドが異なることを特
    徴とする請求項2記載のデータ処理方法。
  4. 【請求項4】 スレッドの実行順序を制御するスケジュ
    ーラを有するオペレーティングシステムが記録されたコ
    ンピュータ読み取り可能な記録媒体であって、上記オペ
    レーティングシステムは、実行するスレッドの切り替え
    を行うコンテキストスイッチが生じたときに、当該コン
    テキストスイッチの履歴を記録しておき、スケジューラ
    が呼び出されたときに、当該スケジューラが管理する待
    ち行列を上記履歴を辿って更新することを特徴とする記
    録媒体。
  5. 【請求項5】 上記オペレーティングシステムは、上記
    更新を行うときに、上記待ち行列の順序を設定し直す必
    要があるコンテキストスイッチを生じさせるスレッドに
    対して所定のフラグを設定しておき、コンテキストスイ
    ッチが生じたときに、当該コンテキストスイッチを生じ
    させたスレッドに上記フラグが設定されている場合に
    は、スケジューラを呼び出して待ち行列の順序を設定し
    直すことを特徴とする請求項4記載の記録媒体。
  6. 【請求項6】 上記スケジューラの呼び出され方によっ
    て、上記フラグが設定されるスレッドが異なることを特
    徴とする請求項5記載の記録媒体。
  7. 【請求項7】 スレッドの実行順序を制御するスケジュ
    ーラを有するオペレーティングシステムが記録されたコ
    ンピュータ読み取り可能な記録媒体を備えたデータ処理
    装置であって、 上記オペレーティングシステムは、実行するスレッドの
    切り替えを行うコンテキストスイッチが生じたときに、
    当該コンテキストスイッチの履歴を記録しておき、スケ
    ジューラが呼び出されたときに、当該スケジューラが管
    理する待ち行列を上記履歴を辿って更新することを特徴
    とするデータ処理装置。
  8. 【請求項8】 上記オペレーティングシステムは、上記
    更新を行うときに、上記待ち行列の順序を設定し直す必
    要があるコンテキストスイッチを生じさせるスレッドに
    対して所定のフラグを設定しておき、コンテキストスイ
    ッチが生じたときに、当該コンテキストスイッチを生じ
    させたスレッドに上記フラグが設定されている場合に
    は、スケジューラを呼び出して待ち行列の順序を設定し
    直すことを特徴とする請求項7記載のデータ処理装置。
  9. 【請求項9】 上記スケジューラの呼び出され方によっ
    て、上記フラグが設定されるスレッドが異なることを特
    徴とする請求項7記載のデータ処理装置。
JP25388997A 1997-09-18 1997-09-18 データ処理方法、記録媒体及びデータ処理装置 Expired - Fee Related JP3823475B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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