JPH1173334A - データ処理方法、記録媒体及びデータ処理装置 - Google Patents

データ処理方法、記録媒体及びデータ処理装置

Info

Publication number
JPH1173334A
JPH1173334A JP9234977A JP23497797A JPH1173334A JP H1173334 A JPH1173334 A JP H1173334A JP 9234977 A JP9234977 A JP 9234977A JP 23497797 A JP23497797 A JP 23497797A JP H1173334 A JPH1173334 A JP H1173334A
Authority
JP
Japan
Prior art keywords
interrupt
processing
thread
device driver
message
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
JP9234977A
Other languages
English (en)
Other versions
JP3794119B2 (ja
JPH1173334A5 (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 JP23497797A priority Critical patent/JP3794119B2/ja
Priority to US09/140,043 priority patent/US6378006B1/en
Priority to EP98306916A priority patent/EP0899660A1/en
Publication of JPH1173334A publication Critical patent/JPH1173334A/ja
Publication of JPH1173334A5 publication Critical patent/JPH1173334A5/ja
Application granted granted Critical
Publication of JP3794119B2 publication Critical patent/JP3794119B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46—Multiprogramming arrangements
    • G06F9/48—Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806—Task transfer initiation or dispatching
    • G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10—Program control for peripheral devices
    • G06F13/102—Program control for peripheral devices where the program performs an interfacing function, e.g. device driver

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)

Abstract

(57)【要約】 【課題】 オブジェクト指向を適用したデバイスドライ
バをベースにし、その利点を失うことなく、割り込み遅
延時間の短縮を実現する。 【解決手段】 デバイスドライバを、一つのメッセージ
処理用スレッドと、一つ以上の割り込み処理用スレッド
とを割り当てることが可能なマルチスレッドオブジェク
トとして記述する。そして、デバイスドライバが他のオ
ブジェクトから入力されたメッセージに基づく処理を行
う場合には、当該処理をメッセージ処理用スレッドにて
実行する。また、デバイスドライバに対して割り込みを
要求する事象が発生したときに、全ての割り込み処理用
スレッドが他の割り込み処理を実行している場合には、
上記事象に対応する割り込み処理を実行せずに、いずれ
かの割り込み処理用スレッドにて他の割り込み処理が終
了してから、当該割り込み処理用スレッドにて上記事象
に対応する割り込み処理を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
オペレーティングシステムにおけるデバイス制御を実現
するデータ処理方法に関する。また、そのようなデータ
処理方法を実現するプログラムが記録された記録媒体、
並びにそのような記録媒体を備えたデータ処理装置に関
する。
【0002】
【従来の技術】従来、各種ハードウェアの制御を行うプ
ログラムであるデバイスドライバは、図8に示すよう
に、オペレーティングシステムの一部として実現され
る。すなわち、オペレーティングシステムは、デバイス
ドライバを利用するクライアントからの要求(reques
t)があった場合、又は、ハードウェアからの割り込み
(hardware interrupt)が生じた場合、予め登録されて
いるデバイスドライバテーブルを検索して、それらの要
求や割り込みに適応するデバイスドライバを探し出し、
当該デバイスドライバをファンクションコール(functi
on call)により呼び出して実行する。
【0003】なお、クライアントからの要求は、システ
ムコール(system call)によってなされる。また、ハ
ードウェアからの割り込みは、オペレーティングシステ
ムのカーネルのスレッドを呼び出すことによりなされる
(invoke kernel thread)。
【0004】このような方式には以下のような問題点が
存在する。
【0005】(1)デバイスドライバがオペレーティン
グシステムのカーネルの一部として実現されるため、汎
用性が低くデバイスドライバの取り替えが困難である。
【0006】(2)デバイスドライバがオペレーティン
グシステムのカーネルと同様の権限を持って実行される
ため、デバイスドライバのエラーがオペレーティングシ
ステム全体に影響を与える。
【0007】(3)各デバイスドライバにおいて割り込
み制御等を行うため、デバイスドライバを作成するプロ
グラマは、システム全体を知っておく必要や、デバイス
ドライバが他に与える影響を考える必要がある。
【0008】(4)デバイスドライバがオペレーティン
グシステムのカーネルの一部として実現されるため、デ
バイスドライバのプログラミングスタイルは、アプリケ
ーションプログラム等のプログラミングスタイルとは、
大幅に異なるものとなる。このため、デバイスドライバ
は、デバイスドライバの記述に使用されるプログラミン
グスタイルについて熟練したプログラマでなければ、作
成が困難である。
【0009】以上のような従来のデバイスドライバの実
現方式の問題点を解決する方法として、オブジェクト指
向を適用してデバイスドライバを記述する方法が知られ
ている。オブジェクト指向を適用してデバイスドライバ
を記述する際は、例えば、図9に示すように、デバイス
ドライバをオペレーティングシステムの外で、アプリケ
ーションプログラムと同様に、並行オブジェクトとして
記述する。
【0010】ここで、並行オブジェクトとは、プログラ
ムの各機能をオブジェクトとしてモジュール化し、オペ
レーティングシステムが扱う実行実体としたもののこと
である。すなわち、並行オブジェクトは、オペレーティ
ングシステムによってスケジューリングされたり、或い
は相互に通信する際の単位となる。換言すれば、各オブ
ジェクトは、資源管理や排他実行の単位となる。これに
より、プログラマは、他のオブジェクト内の実装を知る
ことなくオブジェクトを作成することが可能となり、各
オブジェクト内部の実装は排他制御などを考慮しなくて
も良くなる。
【0011】この方式は以下のような特徴を持つ。
【0012】(1)図中「request」として示すよう
に、クライアントからデバイスドライバへの要求を、ク
ライアントから、並行オブジェクトとして記述されたデ
バイスドライバへ、オブジェクトに対するメッセージと
して配送する。また、図中「interrupt」として示すよ
うに、割り込み要求も、オペレーティングシステムか
ら、並行オブジェクトとして記述されたデバイスドライ
バへ、オブジェクトに対するメッセージとして配送す
る。
【0013】(2)各デバイスドライバが単一スレッド
で動作するようにしておき、割り込みマスクの制御はデ
バイスドライバ単位で行う。すなわち、デバイスドライ
バが動作中は、そのデバイスドライバが扱う割り込みは
受け付けない。したがって、プログラマは、割り込み発
生時の排他制御等を考慮してデバイスドライバを記述す
るような必要がない。
【0014】並行オブジェクトとして記述されたデバイ
スドライバは、上述のような2つの特徴を備えているこ
とから、アプリケーションプログラムと同様に作成する
ことが可能となる。また、デバイスドライバがオペレー
ティングシステムの外側で実現されるので、デバイスド
ライバの取り替えが容易となる。また、インタフェース
の変更も容易に可能となる。また、デバイスドライバの
エラーがオペレーティングシステム全体に影響を与える
ようなことがなくなり、オペレーティングシステムをよ
り安定に動作させることが可能となる。
【0015】このように、デバイスドライバをアプリケ
ーションプログラムと同様な並行オブジェクトとして記
述することにより、図8に示したようにデバイスドライ
バをオペレーティングシステムの一部として実現したと
きに生じる問題点を解決することができる。
【0016】
【発明が解決しようとする課題】図9に示したように、
デバイスドライバを並行オブジェクトとして記述した方
式では、デバイスドライバが動いている間は、デバイス
ドライバが割り込みを受け付けない状態となる。なお、
以下の説明では、デバイスドライバの状態を表すとき
に、割り込みマスクという表現を使う。すなわち、デバ
イスドライバが割り込みを受け付けない状態のことを
「割り込みマスクが閉じている」と表現し、デバイスド
ライバが割り込みを受け付ける状態のことを「割り込み
マスクが開いている」と表現する。
【0017】そして、図9の例では、デバイスドライバ
が動いている間は割り込みマスクが閉じた状態となるた
め、デバイスドライバによる処理に時間がかかる処理
(例えばデータのコピー等)が含まれる場合、割り込み
遅延が大きくなってしまうという問題点がある。
【0018】すなわち、各デバイスドライバは単一スレ
ッドで動作し、デバイスドライバの動作中は割り込みは
受け付けない。このため、従来、割り込み遅延を短縮す
るには、各デバイスドライバのメソッドを短くするしか
なかった。したがって、従来、デバイスドライバを並行
オブジェクトとして記述するにあたって、厳しい遅延制
約を持つデバイスドライバを記述することは困難であっ
た。
【0019】本発明は、以上のような従来の実情に鑑み
て提案されたものであり、オブジェクト指向を適用した
デバイスドライバをベースにし、その利点を失う事な
く、割り込み遅延を短縮することが可能なデータ処理方
法を提供することを目的としている。また、そのような
データ処理方法を実現するプログラムが記録された記録
媒体、並びにそのような記録媒体を備えたデータ処理装
置を提供することも目的としている。
【0020】
【課題を解決するための手段】本発明に係るデータ処理
方法では、ハードウェア制御を行うデバイスドライバ
を、一つのメッセージ処理用スレッドと、一つ以上の割
り込み処理用スレッドとを割り当てることが可能なマル
チスレッドオブジェクトとして記述する。そして、デバ
イスドライバが他のオブジェクトから入力されたメッセ
ージに基づく処理を行う場合には、当該処理をメッセー
ジ処理用スレッドに割り当てて実行する。また、デバイ
スドライバに対して割り込みを要求する事象が発生した
ときに、全ての割り込み処理用スレッドが他の割り込み
に応じた割り込み処理を実行している場合には、メッセ
ージ処理用スレッドの状態に関わらず、上記事象に対応
する割り込み処理を実行せずに、いずれかの割り込み処
理用スレッドにて他の割り込みに応じた割り込み処理が
終了してから、当該割り込み処理用スレッドにて上記事
象に対応する割り込み処理を実行する。
【0021】なお、上記データ処理方法では、メッセー
ジ処理用スレッドでの処理と、割り込み処理用スレッド
での割り込み処理との優先順位を設定できるようにして
おくことが好ましい。このときは、デバイスドライバが
割り込みを受け付けたときに、割り込み処理よりも優先
して実行するように設定されている処理がメッセージ処
理用スレッドで行われている場合には、メッセージ処理
用スレッドでの処理が終了するまで、或いは、メッセー
ジ処理用スレッドでの処理よりも割り込み処理を優先す
るように設定が変更されるまで、割り込み処理の実行を
待たせておく。また、デバイスドライバが割り込みを受
け付けたときに、割り込み処理よりも優先して実行する
ように設定されている処理がメッセージ処理用スレッド
で行われていない場合には、直ぐに割り込み処理用スレ
ッドで割り込み処理を実行する。
【0022】また、上記データ処理方法では、割り込み
処理を優先順位の異なる複数の処理に分けて、優先順位
が高い処理を割り込み処理用スレッドに割り当てて実行
し、優先順位が低い処理をメッセージ処理用スレッドに
割り当てて実行するようにしてもよい。
【0023】以上のような本発明に係るデータ処理方法
では、デバイスドライバをマルチスレッドオブジェクト
として記述しているので、デバイスドライバが何らかの
処理を行っていても、当該処理がメッセージ処理用スレ
ッドに割り当てられて実行されている場合には、割り込
み処理用スレッドによって割り込みを受け付けることが
できる。
【0024】また、本発明に係る記録媒体は、ハードウ
ェア制御を行うプログラムであるデバイスドライバが記
録されたコンピュータ読み取り可能な記録媒体である。
そして、上記デバイスドライバは、一つのメッセージ処
理用スレッドと、一つ以上の割り込み処理用スレッドと
を割り当てることが可能なマルチスレッドオブジェクト
として記述される。また、このデバイスドライバは、当
該デバイスドライバが他のオブジェクトから入力された
メッセージに基づく処理を行う場合には、当該処理をメ
ッセージ処理用スレッドに割り当てて実行する。また、
このデバイスドライバは、当該デバイスドライバに対し
て割り込みを要求する事象が発生したときに、全ての割
り込み処理用スレッドが他の割り込みに応じた割り込み
処理を実行している場合には、メッセージ処理用スレッ
ドの状態に関わらず、上記事象に対応する割り込み処理
を実行せずに、いずれかの割り込み処理用スレッドにて
他の割り込みに応じた割り込み処理が終了してから、当
該割り込み処理用スレッドにて上記事象に対応する割り
込み処理を実行する。
【0025】なお、上記デバイスドライバは、メッセー
ジ処理用スレッドでの処理と、割り込み処理用スレッド
での割り込み処理との優先順位を設定できるようになさ
れていることが好ましい。ここで、デバイスドライバ
は、割り込みを受け付けたときに、割り込み処理よりも
優先して実行するように設定されている処理がメッセー
ジ処理用スレッドで行われている場合には、メッセージ
処理用スレッドでの処理が終了するまで、或いは、メッ
セージ処理用スレッドでの処理よりも割り込み処理を優
先するように設定が変更されるまで、割り込み処理の実
行を待たせておく。また、割り込みを受け付けたとき
に、割り込み処理よりも優先して実行するように設定さ
れている処理がメッセージ処理用スレッドで行われてい
ない場合には、直ぐに割り込み処理用スレッドで割り込
み処理を実行する。
【0026】また、上記デバイスドライバは、割り込み
処理を優先順位の異なる複数の処理に分けて、優先順位
が高い処理を割り込み処理用スレッドに割り当てて実行
し、優先順位が低い処理をメッセージ処理用スレッドに
割り当てて実行するものであってもよい。
【0027】以上のような本発明に係る記録媒体におい
て、当該記録媒体に記録されたデバイスドライバは、マ
ルチスレッドオブジェクトとして記述されているので、
デバイスドライバが何らかの処理を行っていても、当該
処理がメッセージ処理用スレッドに割り当てられて実行
されている場合には、割り込み処理用スレッドによって
割り込みを受け付けることができる。
【0028】また、本発明に係るデータ処理装置は、ハ
ードウェア制御を行うプログラムであるデバイスドライ
バが記録された記録媒体を備え、当該記録媒体から上記
デバイスドライバを読み取ることが可能なデータ処理装
置である。そして、上記デバイスドライバは、一つのメ
ッセージ処理用スレッドと、一つ以上の割り込み処理用
スレッドとを割り当てることが可能なマルチスレッドオ
ブジェクトとして記述される。また、このデバイスドラ
イバは、当該デバイスドライバが他のオブジェクトから
入力されたメッセージに基づく処理を行う場合には、当
該処理をメッセージ処理用スレッドに割り当てて実行す
る。また、このデバイスドライバは、当該デバイスドラ
イバに対して割り込みを要求する事象が発生したとき
に、全ての割り込み処理用スレッドが他の割り込みに応
じた割り込み処理を実行している場合には、メッセージ
処理用スレッドの状態に関わらず、上記事象に対応する
割り込み処理を実行せずに、いずれかの割り込み処理用
スレッドにて他の割り込みに応じた割り込み処理が終了
してから、当該割り込み処理用スレッドにて上記事象に
対応する割り込み処理を実行する。
【0029】なお、上記デバイスドライバは、メッセー
ジ処理用スレッドでの処理と、割り込み処理用スレッド
での割り込み処理との優先順位を設定できるようになさ
れていることが好ましい。ここで、デバイスドライバ
は、割り込みを受け付けたときに、割り込み処理よりも
優先して実行するように設定されている処理がメッセー
ジ処理用スレッドで行われている場合には、メッセージ
処理用スレッドでの処理が終了するまで、或いは、メッ
セージ処理用スレッドでの処理よりも割り込み処理を優
先するように設定が変更されるまで、割り込み処理の実
行を待たせておく。また、割り込みを受け付けたとき
に、割り込み処理よりも優先して実行するように設定さ
れている処理がメッセージ処理用スレッドで行われてい
ない場合には、直ぐに割り込み処理用スレッドで割り込
み処理を実行する。
【0030】また、上記デバイスドライバは、割り込み
処理を優先順位の異なる複数の処理に分けて、優先順位
が高い処理を割り込み処理用スレッドに割り当てて実行
し、優先順位が低い処理をメッセージ処理用スレッドに
割り当てて実行するものであってもよい。
【0031】以上のような本発明に係るデータ処理装置
において、記録媒体に記録されたデバイスドライバは、
マルチスレッドオブジェクトとして記述されているの
で、デバイスドライバが何らかの処理を行っていても、
当該処理がメッセージ処理用スレッドに割り当てられて
実行されている場合には、割り込み処理用スレッドによ
って割り込みを受け付けることができる。
【0032】
【発明の実施の形態】以下、本発明の一実施形態につい
て、図面を参照しながら詳細に説明する。
【0033】1.ハードウェア環境 まず、本発明が適用されるハードウェア構成の一例につ
いて、図1を参照して説明する。なお、ここでは、本発
明の実施の形態の一例として、テレビ装置に本発明を適
用した例を挙げるが、当然の事ながら、本発明は、その
他のデータ処理装置にも適用可能である。すなわち、本
発明は、各種ハードウェアの制御をデバイスドライバに
よって行うデータ処理装置に広く適用可能であり、例え
ば、テレビ装置以外のオーディオ・ビジュアル機器(い
わゆるAV機器)や、各種の事務機器や、一般のコンピ
ュータ装置等にも適用可能である。
【0034】本発明が適用されたデータ処理装置である
図1に示すテレビ装置は、アンテナ又はケーブル等によ
って放送局からの信号を受信し、当該信号に基づいて、
ブラウン管又は液晶等の画像表示装置に映像を表示する
と共にスピーカから音声を出力する。
【0035】このテレビ装置は、通常のテレビ機能を備
えているだけでなく、外部からプログラムやデータを受
けとることが可能となっており、図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とを備えている。
【0036】テレビ機能部3は、アンテナ又はケーブル
等によって受信した信号に基づいて、映像や音声を再生
する機能を備えている。このテレビ機能部3は、バス/
IOブリッジ1を介してバス2に接続されており、これ
により、他の部分との信号のやり取りが可能となってい
る。
【0037】プロセッサ5は、このテレビ装置の各部の
制御を行うものであり、バス/メモリブリッジ4を介し
てバス2に接続されている。また、プロセッサ5には、
バス/メモリブリッジ4を介してROM6及びRAM7
が接続されている。
【0038】ROM6は、プロセッサ5による制御を行
うためのオペレーティングシステムやデバイスドライバ
やアプリケーションプログラム等を記憶している。ここ
で、オペレーティングシステムは、オブジェクト指向が
適用されてなるオブジェクト指向型オペレーティングシ
ステムであり、デバイスドライバやアプリケーションプ
ログラムは、並行オブジェクトとして動作する。
【0039】RAM7は、プロセッサ5のワークエリア
として使われる。すなわち、プロセッサ5は、ROM6
に記憶されているオペレーティングシステムやデバイス
ドライバやアプリケーションプログラム等を、RAM7
をワークエリアとして使用して実行することにより、こ
のテレビ装置を構成する各部を制御する。
【0040】操作パネル8は、ユーザからの操作入力を
受け付けるための入力装置であり、この操作パネル8か
ら、例えば、テレビのチャンネルやボリューム等の切り
換えを指示する信号が入力される。この操作パネル8
は、具体的には、各種信号を入力するための複数のボタ
ンを備えた入力装置や、いわゆるマウスと称されるよう
なポインティングデバイス等からなる。この操作パネル
8によって入力された信号は、バス2及びバス/メモリ
ブリッジ4を介してプロセッサ5に入力される。そし
て、プロセッサ5は、操作パネル8によって入力された
信号に基づいて、所定の演算処理を行って各部を制御す
る。
【0041】外部記憶装置9は、例えばハードディスク
装置からなり、画像データ、制御データ、又は外部から
通信装置10を介してダウンロードされたアプリケーシ
ョンプログラム等を記録するのに使われる。また、通信
装置10は、外部との間でデータ通信を行うための入出
力部であり、例えばモデムやターミナルアダプター等か
らなる。
【0042】このテレビ装置は、テレビ機能部3によっ
て提供される通常のテレビ機能を備えているだけでな
く、通信装置10を介して、外部からプログラムやデー
タを受け取ることが可能となっている。例えば、このテ
レビ装置では、オペレーティングシステムやデバイスド
ライバのバージョンアップを行う際に、外部のネットワ
ークから通信装置10を介して新規ソフトウェアモジュ
ールを受け取り、これにより、オペレーティングシステ
ムやデバイスドライバのバージョンアップを行うことが
可能となっている。
【0043】また、このテレビ装置では、プロセッサ5
によって、ROM6に記憶されているオペレーティング
システムやデバイスドライバを実行するとともに、オペ
レーティングシステム上で、ROM6や外部記憶装置9
に記憶されているアプリケーションプログラムを実行す
ることにより、各部の制御を行う。すなわち、このテレ
ビ装置は、オペレーティングシステムやデバイスドライ
バが記録されたコンピュータ読み取り可能な記録媒体と
して、ROM6を備えている。なお、オペレーティング
システムやデバイスドライバは、RAM7や外部記憶装
置9に記録しておくようにしてもよい。特に、オペレー
ティングシステムやデバイスドライバの書き換えを行え
るようにしたい場合には、RAM7や外部記憶装置9に
記録しておいたほうが好ましい。
【0044】2.ソフトウェア環境 つぎに、上記テレビ装置におけるソフトウェア環境につ
いて説明する。
【0045】2−1 オペレーティングシステム 上記テレビ装置で使用されるオペレーティングシステム
は、オブジェクト指向型オペレーティングシステムであ
る。そして、このオペレーティングシステム上で、例え
ば、テレビ機能部3に動画像を表示するためのアプリケ
ーションプログラムや、操作パネル8を制御するための
グラフィカル・ユーザ・インターフェース(GUI)を
実現するアプリケーションプログラムが実行される。
【0046】また、このオペレーティングシステムは、
複数のプログラム実行環境を同時に提供することが可能
となっている。以下の説明では、これらのプログラム実
行環境のことをメタスペースと呼ぶ。具体的には、この
オペレーティングシステムによって提供されるメタスペ
ースには、例えば、デバイスドライバが実行されるメタ
スペース(以下、mDriveメタスペースと称する。)と、
手続き型のアプリケーションプログラム(例えば、テレ
ビ機能部3に動画像を表示するためのアプリケーション
プログラム)が実行されるメタスペースと、オブジェク
ト指向型のアプリケーションプログラム(例えば、操作
パネル8を制御するためのグラフィカル・ユーザ・イン
ターフェースを実現するアプリケーションプログラム)
が実行されるメタスペースとがある。
【0047】ここで、mDriveメタスペースは、割り込み
を扱うために、割り込みについての処理を扱うオブジェ
クトである割り込みハンドラを登録する機構や、割り込
みが発生したときに割り込みハンドラを呼び出す機構
や、割り込みマスクを制御する機構などを実現する機能
を提供する。また、mDriveメタスペースは、デバイスド
ライバが並行オブジェクトとして動作するための基本的
なメッセージ通信機能やメモリ管理機能も提供する。
【0048】そして、デバイスドライバは、mDriveメタ
スペースのAPI(Application Program Interface)を
通して、mDriveメタスペースで提供される機能を用いる
ことで動作する。すなわち、デバイスドライバは、他の
デバイスドライバの動作に影響を与えるようなこと(例
えば、割り込みマスクの制御等)を行う場合にも、デバ
イスドライバ間で直接に制御し合うのではなく、必ずオ
ペレーティングシステムのAPIを通して行うようにす
る。これにより、デバイスドライバ間で直接に制御し合
うことに起因してデバイスドライバが誤動作してしまう
ようなことが無くなり、より安定にデバイスドライバを
動作させることが可能となる。
【0049】なお、このようにデバイスドライバの制御
を必ずオペレーティングシステムのAPIを通して行う
ようにすれば、各デバイスドライバがそれぞれ独立した
モジュールとなるため、個々のデバイスドライバを動的
に変更するようなことも、比較的に容易に実現可能とな
る。したがって、例えば、ネットワークを介してプログ
ラムモジュールをダウンロードすることにより、デバイ
スドライバを動的に変更可能とするようなことも、容易
に実現可能となる。
【0050】2−2 デバイスドライバの基本的な実行
モデル 以上のようなオペレーティングシステム上で実行される
デバイスドライバについて、その基本的な実行モデルに
ついて説明する。
【0051】図2にデバイスドライバの基本的な実行モ
デルの一例を示す。図2に示すように、デバイスドライ
バは、クライアントからのメッセージによって起こさ
れ、当該メッセージに基づいてハードウェア制御を行
い、当該ハードウェア制御が完了したら終了する。ここ
で、クライアントとなるのは、デバイスドライバを利用
するアプリケーションプログラム等である。なお、以下
の説明では、デバイスドライバがクライアントからのメ
ッセージに基づいて行う処理のことを「メッセージ処
理」と称する。
【0052】また、デバイスドライバは、デバイスドラ
イバに対して割り込みを要求する事象が発生したとき、
すなわちハードウェアからの割り込み要求があったとき
に、当該割り込み要求に基づいて割り込み処理を行う。
【0053】具体的には、先ず、デバイスドライバに対
して割り込みを要求する事象が発生したときに、他のア
プリケーションプログラム等で実行中のスレッドがある
場合には、当該スレッドが中断される。そして、割り込
みハンドラが起こされて、割り込みハンドラによって割
り込み処理が行われる。このとき、割り込みハンドラ
は、必要ならばクライアントとの間でメッセージのやり
取りを行う。そして、割り込みハンドラによる割り込み
処理が終了したら、中断されていたアプリケーションプ
ログラムのスレッドを再開する。このとき、実行した割
り込み処理によっては、中断されていたスレッドを再開
するのではなく、クライアントのメソッドを起こすよう
にしてもよい。
【0054】なお、割り込みハンドラは、各デバイスド
ライバの初期化メソッドを実行するときに、各デバイス
ドライバに対して動的に登録される。また、デバイスド
ライバに対して割り込みを要求する事象が発生したとき
に、割り込みハンドラに対して、特別な非同期メッセー
ジとして、割り込みを要求するメッセージが送られる。
これにより、上述のように割り込みハンドラが起こされ
て、割り込み処理が行われる。また、割り込みハンドラ
のメソッドは、他のオブジェクトのメソッドと同様に、
メッセージ送信によって起こされるメソッドとして記述
される。また、割り込みハンドラのメソッドに対してど
のようなメッセージが渡されるかについては、各デバイ
スドライバの初期化メソッドを実行して割り込みハンド
ラを各デバイスドライバに対して動的に登録する際に、
mDriveメタスペースに登録しておく。
【0055】2−3 デバイスドライバの割り込みマス
ク デバイスドライバの割り込みマスクがどのように制御さ
れるかについて説明する。なお、以下の説明では、具体
例として下記に示すようなシナリオを挙げる。
【0056】(1)先ず、デバイスドライバに対するク
ライアントとなるオブジェクト(以下、クライアントオ
ブジェクトAと称する。)から、デバイスドライバへ、
メッセージ「RequestA」が入力される。そして、メッ
セージ「RequestA」を受け取ったデバイスドライバ
は、当該メッセージ「RequestA」に基づいて、ハード
ウェア制御を伴う所定のメッセージ処理(以下、メッセ
ージ処理Aと称する。)を実行する。
【0057】(2)デバイスドライバは、デバイスドラ
イバ側での処理が完了したら、ハードウェア側での処理
状況に関わらず、メッセージ処理Aを行っていたスレッ
ドを開放する。このとき、デバイスドライバは、ハード
ウェア側での処理が完了したことを示す割り込みがハー
ドウェアから入ってくるまで、メッセージ「Request
A」に対する返答を保留したままとしておく。
【0058】(3)次に、当該デバイスドライバに対す
るクライアントとなる他のオブジェクト(以下、クライ
アントオブジェクトBと称する。)から、デバイスドラ
イバへ、メッセージ「RequestB」が入力される。そし
て、メッセージ「RequestB」を受け取ったデバイスド
ライバは、当該メッセージ「RequestB」に基づいて、
ハードウェア制御を伴う所定のメッセージ処理(以下、
メッセージ処理Bと称する。)を実行する。
【0059】(4)そして、メッセージ処理Bを行って
いる最中に、メッセージ「RequestA」に基づいて行わ
れていたハードウェア側の処理が完了したとする。これ
は、デバイスドライバに対して割り込みを要求する事象
であり、ハードウェア側の処理の完了に伴う所定の割り
込み処理を行うように要求するメッセージ(以下、割り
込みメッセージと称する。)が、ハードウェアからオペ
レーティングシステムを介して、デバイスドライバに入
力される。
【0060】(5)割り込みメッセージを受け取ったデ
バイスドライバは、割り込みハンドラによって、当該割
り込みメッセージに応じた所定の割り込み処理を行い、
当該割り込み処理が終了したら、クライアントオブジェ
クトAへメッセージ「RequestA」に対する返答を送
る。
【0061】なお、割り込み遅延(interrupt latenc
y)とは、割り込みが起きてから、その割り込みに対す
る割り込みハンドラが起こされるまでの時間を指す。そ
して、本発明では、この割り込み遅延の短縮を図ってい
る。なお、デバイスドライバが割り込みを受け付けない
ようになされているとき、すなわち割り込みマスクが閉
じているときは、割り込み処理を実行できない。したが
って、一般に、最大割り込み遅延は、割り込みマスクが
連続的に閉じている時間の最長時間に一致する。
【0062】2−3−1 従来技術での割り込みマスク 本発明の実施の形態の説明に先立って、従来のデバイス
ドライバで割り込みマスクがどのように制御されるかに
ついて説明する。
【0063】図3に、従来技術によりデバイスドライバ
を並行オブジェクトとして記述した場合の割り込みマス
クの制御例を示す。このデバイスドライバは、単一スレ
ッドオブジェクトとして記述される。そして、割り込み
マスクは、オペレーティングシステムによるスレッドの
切り換え、すなわちコンテキストスイッチによって制御
される。
【0064】すなわち、デバイスドライバが起動されて
おらず、当該デバイスドライバのスレッドがあいている
場合には、割り込みマスクが開いていることとなり、ま
た、デバイスドライバが起動されており、当該デバイス
ドライバのスレッドで何らかの処理が行われている場合
には、割り込みマスクが閉じていることとなる。
【0065】換言すれば、従来のデバイスドライバで
は、ハードウェアからの割り込みに基づく割り込み処理
を行っているときだけでなく、他のオブジェクトからの
メッセージに基づくメッセージ処理(例えば、上述のシ
ナリオにおけるメッセージ処理Aやメッセージ処理B)
を行っているときにも、割り込みマスクが閉じた状態と
なる。
【0066】したがって、図3に示すように、メッセー
ジ処理Bを行っている最中に起きた割り込みは、当該メ
ッセージ処理Bが終了するまで待たされる。そして、メ
ッセージ処理Bが終了してから、割り込みハンドラが起
動されて、割り込みメッセージに応じた所定の割り込み
処理が実行されることとなる。
【0067】このように、従来のデバイスドライバで
は、他のオブジェクトからのメッセージに基づくメッセ
ージ処理を行っているときも割り込みマスクが閉じるこ
ととなるため、一般に割り込み遅延が長くなってしま
う。特に、メッセージ処理に長い時間を要するような場
合には、割り込み遅延が特に長くなってしまい、割り込
み遅延の制約が厳しいハードウェアの制御を正しく行う
ことができず、割り込み処理に失敗する可能性もある。
すなわち、従来のデバイスドライバでは、割り込み遅延
時間が長くなってしまい、ハードウェア制御を正しく行
うことはできないようなケースもあり得た。
【0068】そして、従来のデバイスドライバでは、割
り込み遅延時間を短縮するためには、デバイスドライバ
に含まれる各メソッドをできる限りを小さく記述する
か、或いは、ハードウェア制御に必須ではない部分をで
きるだけデバイスドライバ本体から切り離すようにする
しかなかった。このため、従来のデバイスドライバで
は、割り込み遅延時間の短縮には限界があった。
【0069】なお、以下の説明において、本例のよう
に、デバイスドライバを単一スレッドオブジェクトとし
て記述するプログラミングスタイルのことを「タイプ
1」と称する。
【0070】2−3−2 本発明を適用したときの割り
込みマスク(その1) つぎに、本発明を適応した場合について説明する。本例
では、デバイスドライバをマルチスレッドオブジェクト
として記述する。なお、以下の説明において、本例のよ
うなプログラミングスタイルのことを「タイプ2」と称
する。
【0071】図4に、本例における割り込みマスクの制
御例を示す。なお、図4は上述のシナリオのときの実行
モデルを示している。図4に示すように、本例では、デ
バイスドライバを、マルチスレッドオブジェクトとして
記述し、デバイスドライバに対して、メッセージ処理用
スレッドと、割り込み処理用スレッドとを割り当てる。
【0072】割り込み処理用スレッドは、割り込み処理
を行うスレッドであり、割り込みハンドラを登録したと
きに、新たに登録した割り込みハンドラ専用のスレッド
として割り当てられる。一方、メッセージ処理用スレッ
ドは、メッセージ処理を行うスレッドであり、各デバイ
スドライバに対して一つだけ割り当てられる。このよう
に、本例では、割り込み処理に割り当てられるスレッド
と、メッセージ処理に割り当てられるスレッドとが、異
なるスレッドとされる。
【0073】そして、割り込みマスクは、割り込みハン
ドラが動いているときのみ閉じるようにする。すなわ
ち、デバイスドライバに対して割り込みを要求する事象
が発生したときに、当該デバイスドライバの割り込み処
理用スレッドが他の割り込みに応じた割り込み処理を実
行している場合には、割り込み処理用スレッドにあきが
できるまで割り込みを待たせておく。一方、デバイスド
ライバに対して割り込みを要求する事象が発生したとき
に、割り込み処理用スレッドが他の割り込みに応じた割
り込み処理を行っていない場合には、割り込みを受け付
けるようにする。
【0074】これにより、メッセージ処理用スレッドで
メッセージ処理が行われていても、割り込みを受けるこ
とが可能となり、割り込み遅延時間が短縮される。すな
わち、本例では、並行オブジェクトとしてデバイスドラ
イバを記述したときの利点を生かしつつ、割り込み遅延
時間の短縮を図ることができる。
【0075】ところで、メッセージ処理の最中に割り込
みが発生してハードウェア制御を行わなくてはならない
ような場合、メッセージ処理を行っている最中に割り込
みハンドラが同時に動くことは許されないので、メッセ
ージ処理と割り込み処理との間で同期を取る必要があ
る。換言すれば、メッセージ処理を行っているときに割
り込みが生じたときにも、割り込みハンドラによる割り
込み処理が正常に行われるように、排他制御を行う必要
がある。
【0076】そこで、本例では、スレッドの切り換え
(いわゆるコンテキストスイッチ)を行うとき、すなわ
ち、実行中のスレッドを割り込み処理用スレッドからメ
ッセージ処理用スレッドに切り換えたり、或いは、実行
中のスレッドをメッセージ処理用スレッドから割り込み
処理用スレッドに切り換えたりするようなときに、その
コンテキストスイッチの前後において、所定のAPIに
基づくメッセージによって割り込みマスクの開閉を制御
して、割り込みハンドラによる割り込み処理が正常に行
われるように排他制御を行う。
【0077】なお、このような排他制御を実現するAP
Iを用いて制御される割り込みマスクは、各デバイスド
ライバが扱う割り込みのみとする。このため、あるデバ
イスドライバの割り込みマスクを制御することにより、
他のデバイスドライバの動作が乱されるようなことはな
い。
【0078】つぎに、以上のようなタイプ2のプログラ
ミングスタイルでの実行モデルについて、図4を参照し
て具体的に説明する。
【0079】図4において、メソッド「BlockInterrupt
()」及びメソッド「AllowInterrupt()」は、所定のAP
Iとして予めmDriveメタスペースで提供されているメソ
ッドである。そして、メソッド「BlockInterrupt()」
は、割り込みが発生したとしても、割り込み処理よりも
メッセージ処理を優先して実行するように設定するメソ
ッドである。また、メソッド「AllowInterrupt()」は、
割り込みが発生したときに、メッセージ処理よりも割り
込み処理を優先して実行するように設定するメソッドで
ある。
【0080】そして、図4の例では、先ず、デバイスド
ライバに対してメッセージ「RequestA」が入力され、
当該メッセージ「RequestA」に基づくメッセージ処理
Aが起動される(invoked by message passing)。ここ
で、メッセージ処理Aは、メッセージ処理用スレッドで
実行される。このメッセージ処理Aにおいて、メソッド
「BlockInterrupt()」が呼び出され、その後、メソッド
「AllowInterrupt()」が呼び出されるまでの期間(図中
の斜線部分)は、割り込み処理よりもメッセージ処理を
優先して実行するように設定された期間である。したが
って、この期間中にデバイスドライバが割り込みを受け
付けたとしても、その割り込みに応じた割り込み処理の
実行は待たされることとなる。
【0081】そして、デバイスドライバは、デバイスド
ライバ側での処理が完了したら、ハードウェア側での処
理状況に関わらず、メソッド「Exit()」を実行し、メッ
セージ処理用スレッドを開放する。このとき、デバイス
ドライバは、ハードウェアでの処理が完了したことを示
す割り込みがハードウェアから入ってくるまで、メッセ
ージ「RequestA」に対する返答を保留したままとして
おく。
【0082】次に、デバイスドライバに対してメッセー
ジ「RequestB」が入力され、当該メッセージ「Request
B」に基づくメッセージ処理Bが起動される(invoked
bymessage passing)。ここで、メッセージ処理Bは、
メッセージ処理用スレッドで実行される。このメッセー
ジ処理Bにおいても、メソッド「BlockInterrupt()」が
呼び出され、その後、メソッド「AllowInterrupt()」が
呼び出されるまでの期間(図中の斜線部分)は、割り込
み処理よりもメッセージ処理を優先して実行するように
設定された期間である。したがって、この期間中にデバ
イスドライバが割り込みを受け付けたとしても、その割
り込みに応じた割り込み処理の実行は待たされることと
なる。
【0083】そして、メッセージ処理Bを行っている最
中に、メッセージ「RequestA」に基づいて行われてい
たハードウェア側の処理が完了したとする。これは、デ
バイスドライバに対して割り込みを要求する事象であ
り、ハードウェア側の処理の完了に伴う所定の割り込み
処理を行うように要求する割り込みメッセージ「Interr
upt」が、ハードウェアからオペレーティングシステム
を介して、デバイスドライバに入力される。
【0084】しかしながら、図4の例において、割り込
みが発生した時点は、メッセージ処理Bにおいて、メソ
ッド「BlockInterrupt()」が呼び出された後であって、
メソッド「AllowInterrupt()」が呼び出される前であ
る。したがって、割り込みメッセージ「Interrupt」に
応じた割り込み処理の実行は待たされることとなる。す
なわち、デバイスドライバが割り込みを受け付けたとき
に、メッセージ処理用スレッドで、割り込み処理よりも
優先して実行するように設定されている処理が行われて
いるので、割り込み処理の実行は待たされることとな
る。
【0085】その後、メッセージ処理Bで、メソッド
「AllowInterrupt()」が呼び出されると、メッセージ処
理Bが中断されて(suspended)、メッセージ処理用ス
レッドから割り込み処理用スレッドにコンテキストスイ
ッチし、割り込みメッセージ「Interrupt」に対応した
割り込み処理が起動される(invoked for interrupt ha
ndling)。ここで、割り込み処理は、割り込み処理用ス
レッドで実行される。このように、本例では、割り込み
遅延(interrupt latency)は、割り込みが発生したと
きから、メッセージ処理Bでメソッド「AllowInterrupt
()」が呼び出されて割り込みが可能となって割り込み処
理が起動されるまでとなる。
【0086】そして、デバイスドライバは、割り込みハ
ンドラによって、割り込みメッセージ「Interrupt」に
応じた所定の割り込み処理を行い、当該割り込み処理の
結果として、メッセージ「RequestA」に対する返答を
送出する(Reply for RequestA)。
【0087】その後、割り込み処理が終了したら、メソ
ッド「ExitFromInterrupt()」を実
行し、割り込み処理用スレッドを開放する。そして、こ
れに伴って割り込み処理用スレッドからメッセージ処理
用スレッドにコンテキストスイッチし、中断されていた
メッセージ処理Bが再開される(resumed)。そして、
メッセージ処理Bが終了したら、メソッド「Exit()」を
実行し、メッセージ処理用スレッドを開放する。
【0088】以上のように、図4に示した例では、メッ
セージ処理Bの最中に割り込みマスクが開いている期間
が存在するため、割り込みマスクが開いたときに、メッ
セージ処理Bが中断されて、割り込み処理が実行され
る。すなわち、本例では、メソッド「BlockInterrup
t()」やメソッド「AllowInterrupt()」によって、各メ
ッセージ処理において、割り込み処理に対するマスクを
設定することが可能となっており、メッセージ処理が行
われていたとしても、メソッド「AllowInterrupt()」に
よって割り込みが可能となった瞬間に割り込みハンドラ
が動き出すこととなる。
【0089】したがって、本例では、割り込みがあった
ときに、メッセージ処理の終了を待つことなく、割り込
み処理を実行するようにすることが可能であり、これに
より、割り込み遅延を短くすることができる。しかも、
本例では、メッセージ処理に関しては単一スレッドで実
行されるため、メッセージ処理に関しては、割り込み処
理以外の処理との同期を考慮する必要がない。したがっ
て、プログラミングが非常に容易となる。
【0090】以上、詳細に説明したように、タイプ2で
は、割り込みハンドラを登録したときに、当該割り込み
ハンドラ専用のスレッドとして割り込み処理用スレッド
を割り当てる。そして、割り込み処理用スレッドが動い
ている期間を、割り込みマスクが閉じている期間とす
る。換言すれば、タイプ2では、メッセージ処理用スレ
ッドが動いていたとしても、割り込み処理用スレッドが
動いていなければ、割り込みを受け付けることができ、
これにより、割り込み遅延時間を短縮することができ
る。
【0091】しかも、単なるマルチスレッドプログラミ
ングとは異なり、本例では、メッセージ処理について
は、単一スレッドであるメッセージ処理用スレッドだけ
で動作するため、デバイスドライバを並行オブジェクト
として記述したときの利点が失われるようなことはな
い。
【0092】また、タイプ2において、メッセージ処理
における排他制御は、割り込みハンドラによる割り込み
処理スレッドでの割り込み処理に対する排他制御だけを
行えばよい。したがって、本例では、排他制御を行う部
分が各デバイスドライバ内で閉じることとなり、各デバ
イスドライバにおけるメッセージ処理と割り込み処理と
の同期を図るための排他制御が、他のデバイスドライバ
の動作に影響を与えるようなことがなくなる。そして、
各デバイスドライバにおける排他制御が他のデバイスド
ライバの動作に影響を与えないので、例えば、デバイス
ドライバの動的な変更を容易に実現することも可能とな
る。すなわち、例えば、ネットワークを介してプログラ
ムモジュールをダウンロードすることにより、デバイス
ドライバを動的に変更可能とするようなことも実現可能
となる。
【0093】2−3−3 本発明を適用したときの割り
込みマスク(その2) つぎに、本発明を適応した場合の他の例について説明す
る。本例では、デバイスドライバをマルチスレッドオブ
ジェクトとして記述するとともに、メッセージ処理用ス
レッドでも割り込み処理の実行を可能とする。なお、以
下の説明において、本例のようなプログラミングスタイ
ルのことを「タイプ3」と称する。
【0094】本発明において、一つの割り込み用スレッ
ドの中では排他的に割り込み処理を行う。このため、タ
イプ2では、図5に示すように、割り込みが連続して生
じたときに、先の割り込みメッセージ「InterruptA」
に応じた割り込み処理Aの実行に要する時間だけ、後の
割り込みメッセージ「InterruptB」に応じた割り込み
処理Bは待たされることとなる。タイプ3では、このよ
うなケースをも想定して、更に割り込み遅延時間の短縮
を図るようにしている。
【0095】具体的には、タイプ3では、割り込み処理
を優先順位の異なる複数の処理に分けて、割り込み処理
のうち、優先順位が高い処理だけを割り込み処理用スレ
ッドに割り当てて実行し、優先順位が低い処理に関して
はメッセージ処理用スレッドに割り当てて実行するよう
にする。ここで、割り込み処理用スレッドに割り当てら
れる優先順位が高い処理は、ハードウェアの制御のため
に即座に行わなければならない処理である。また、メッ
セージ処理用スレッドに割り当てられる優先順位が低い
処理は、例えば、共有メモリへのデータのコピーやクラ
イアントへの返答等にように、直接ハードウェアの制御
とは関係がなく、即座に行う必要がない処理である。
【0096】このタイプ3のプログラミングスタイルで
の実行モデルについて、図6を参照して具体的に説明す
る。なお、図6は上述のシナリオのときの実行モデルを
示している。
【0097】図6の例では、先ず、デバイスドライバに
対してメッセージ「RequestA」が入力され、当該メッ
セージ「RequestA」に基づくメッセージ処理Aが起動
される(invoked by message passing)。ここで、メッ
セージ処理Aは、メッセージ処理用スレッドで実行され
る。このメッセージ処理Aにおいて、メソッド「BlockI
nterrupt()」が呼び出され、その後、メソッド「AllowI
nterrupt()」が呼び出されるまでの期間(図中の斜線部
分)は、割り込み処理よりもメッセージ処理を優先して
実行するように設定された期間である。したがって、こ
の期間には、割り込みがあったとしても、割り込み処理
の実行は待たされることとなる。
【0098】そして、デバイスドライバは、デバイスド
ライバ側での処理が完了したら、ハードウェア側での処
理状況に関わらず、メソッド「Exit()」を実行し、メッ
セージ処理用スレッドを開放する。このとき、デバイス
ドライバは、ハードウェアでの処理が完了したことを示
す割り込みがハードウェアから入ってくるまで、メッセ
ージ「RequestA」に対する返答を保留したままとして
おく。
【0099】次に、デバイスドライバに対してメッセー
ジ「RequestB」が入力され、当該メッセージ「Request
B」に基づくメッセージ処理Bが起動される(invoked
bymessage passing)。ここで、メッセージ処理Bは、
メッセージ処理用スレッドで実行される。このメッセー
ジ処理Bにおいても、メソッド「BlockInterrupt()」が
呼び出され、その後、メソッド「AllowInterrupt()」が
呼び出されるまでの期間(図中の斜線部分)は、割り込
み処理よりもメッセージ処理を優先して実行するように
設定された期間である。したがって、この期間には、割
り込みがあったとしても、割り込み処理の実行は待たさ
れることとなる。
【0100】そして、メッセージ処理Bを行っている最
中に、メッセージ「RequestA」に基づいて行われてい
たハードウェア側の処理が完了したとする。これは、デ
バイスドライバに対して割り込みを要求する事象であ
り、ハードウェア側の処理の完了に伴う所定の割り込み
処理を行うように要求する割り込みメッセージ「Interr
upt」が、ハードウェアからオペレーティングシステム
を介して、デバイスドライバに入力される。
【0101】しかしながら、図6の例において、割り込
みが発生した時点は、メッセージ処理Bにおいて、メソ
ッド「BlockInterrupt()」が呼び出された後であって、
メソッド「AllowInterrupt()」が呼び出される前であ
る。したがって、割り込みメッセージ「Interrupt」に
応じた割り込み処理の実行は待たされることとなる。
【0102】その後、メッセージ処理Bで、メソッド
「AllowInterrupt()」が呼び出されると、メッセージ処
理Bが中断されて(suspended)、メッセージ処理用ス
レッドから割り込み処理用スレッドにコンテキストスイ
ッチし、割り込みメッセージ「Interrupt」に対応した
割り込み処理が起動される(invoked for interrupt ha
ndling)。ここで、割り込み処理は、割り込み処理用ス
レッドで実行される。このように、本例では、割り込み
遅延(interrupt latency)は、割り込みが発生したと
きから、メッセージ処理Bでメソッド「AllowInterrupt
()」が呼び出されて割り込みが可能となって割り込み処
理が起こされるまでとなる。
【0103】そして、デバイスドライバは、割り込みハ
ンドラによって、割り込みメッセージ「Interrupt」に
応じた所定の割り込み処理を行うが、このとき、割り込
みハンドラは、割り込み処理を、即座に実行しなければ
ならない部分と、即座に実行する必要がない部分とに分
ける。そして、即座に実行しなければならない処理だけ
を割り込み処理用スレッドで即座に実行する。一方、割
り込み処理のうち、即座に実行する必要がない処理につ
いては、メッセージ処理用スレッドに割り当てられ、後
述するように、メッセージ処理Bが終了した後に実行さ
れることとなる。
【0104】そして、割り込み処理用スレッドでの、即
座に実行しなければならない処理が終了したら、割り込
み処理用スレッドからメッセージ処理用スレッドにコン
テキストスイッチし、中断されていたメッセージ処理B
が再開される(resumed)。そして、メッセージ処理B
が終了したら、メソッド「Exit()」を実行し、メッセー
ジ処理用スレッドを開放する。
【0105】そして、メッセージ処理Bが終了したら、
上述の割り込み処理のうち、即座に実行する必要がない
とされていた処理が、メッセージ処理用スレッドで実行
され、この処理の結果として、メッセージ「Request
A」に対する返答が送出される(Reply for Request
A)。そして、割り込み処理が終了したら、メソッド
「ExitFromInterrupt()」を実行し、メッセージ処理用
スレッドを開放する。
【0106】以上のように、タイプ3では、割り込み処
理を、即座に実行する必要がある部分と、即座に実行す
る必要がない部分とに分ける。そして、即座に実行する
必要がある処理についてだけ、割り込み処理用スレッド
で実行し、即座に実行する必要がない処理については、
メッセージ処理用スレッドで実行する。そして、これに
より、割り込みマスクが連続して閉じている期間を、更
に減少することが可能となる。
【0107】なお、図6の例では、割り込み処理用スレ
ッドで割り込み処理を実行することによって割り込みマ
スクが閉じている時間は減少しているが、割り込みが1
回だけの例であるので、図6の例における割り込み遅延
は、図4に示した例の場合と同様となっている。
【0108】そこで、タイプ3を適用することによっ
て、実際に割り込み遅延時間が短縮される具体的な実行
モデルについて、図7を参照して説明する。
【0109】図7の例では、先ず、デバイスドライバに
対してメッセージ「RequestA」が入力され、当該メッ
セージ「RequestA」に基づくメッセージ処理Aが起動
される(invoked by message passing)。ここで、メッ
セージ処理Aは、メッセージ処理用スレッドで実行され
る。そして、デバイスドライバは、デバイスドライバ側
での処理が完了したら、ハードウェア側での処理状況に
関わらず、メッセージ処理Aを終了し、メッセージ処理
用スレッドを開放する。このとき、デバイスドライバ
は、メッセージ「RequestA」に基づく処理が完了した
ことを示す割り込みがハードウェアから入ってくるま
で、メッセージ「RequestA」に対する返答を保留した
ままとしておく。
【0110】次に、デバイスドライバに対してメッセー
ジ「RequestB」が入力され、当該メッセージ「Request
B」に基づくメッセージ処理Bが起動される(invoked
bymessage passing)。ここで、メッセージ処理Bは、
メッセージ処理用スレッドで実行される。そして、デバ
イスドライバは、デバイスドライバ側での処理が完了し
たら、ハードウェア側での処理状況に関わらず、メッセ
ージ処理Bを終了し、メッセージ処理用スレッドを開放
する。このとき、デバイスドライバは、メッセージ「Re
questB」に基づく処理が完了したことを示す割り込み
がハードウェアから入ってくるまで、メッセージ「Requ
estB」に対する返答を保留したままとしておく。
【0111】その後、メッセージ「RequestA」に基づ
いて行われていたハードウェア側の処理が完了し、ハー
ドウェア側の処理の完了に伴う所定の割り込み処理を行
うように要求する割り込みメッセージ「InterruptA」
が、ハードウェアからオペレーティングシステムを介し
てデバイスドライバに入力され、当該割り込みメッセー
ジ「InterruptA」に対応した割り込み処理Aが起動さ
れる(invoked for handling interruptA)。このと
き、割り込みハンドラは、割り込み処理を、即座に実行
しなければならない部分と、即座に実行する必要がない
部分とに分ける。そして、即座に実行しなければならな
い処理だけを割り込み処理用スレッドで即座に実行し、
即座に実行する必要がない処理については、メッセージ
処理用スレッドに割り当てる。
【0112】そして、割り込み処理のうち、即座に実行
しなければならない処理を割り込み処理用スレッドで実
行しているときに、メッセージ「RequestB」に基づい
て行われていたハードウェア側の処理が完了し、割り込
み処理を行うように要求する割り込みメッセージ「Inte
rruptB」が、ハードウェアからオペレーティングシス
テムを介してデバイスドライバに入力されたとする。し
かしながら、このときには割り込み処理用スレッドが動
いているので、割り込みは受け付けられず、割り込み処
理用スレッドがあくまで、割り込みメッセージ「Interr
uptB」に対応した割り込み処理Bは待たされることと
なる。
【0113】そして、割り込み処理用スレッドがあいた
ら、すなわち、割り込みメッセージ「InterruptA」に
対応した割り込み処理Aのうち、即座に実行しなければ
ならない処理が終了したら、割り込みメッセージ「Inte
rruptB」に対応した割り込み処理Bが起動される(inv
oked for handling interruptB)。
【0114】ここで、割り込みメッセージ「Interrupt
B」に対応した割り込み処理Bが起動されるのは、割り
込みメッセージ「InterruptA」に対応した割り込み処
理Aの全てが終了してからではなく、割り込みメッセー
ジ「InterruptA」に対応した割り込み処理Aのうち、
即座に実行しなければならない処理が終了した段階であ
る。したがって、割り込みメッセージ「InterruptB」
に対応した割り込み処理Bについて、その割り込み遅延
(interrupt latency)は、タイプ2の場合よりも短く
て済む。
【0115】そして、割り込みメッセージ「Interrupt
B」に対応した割り込み処理Bを行う際も、割り込みハ
ンドラは、当該割り込み処理Bを、即座に実行しなけれ
ばならない部分と、即座に実行する必要がない部分とに
分ける。そして、即座に実行しなければならない処理だ
けを割り込み処理用スレッドで即座に実行し、即座に実
行する必要がない処理については、メッセージ処理用ス
レッドに割り当てる。
【0116】その後、割り込み処理用スレッドでの処理
が終了したら、すなわち、割り込みメッセージ「Interr
uptB」に対応した割り込み処理Bのうち、即座に実行
しなけらばならない処理が終了したら、割り込み処理用
スレッドからメッセージ処理用スレッドにコンテキスト
スイッチする。そして、割り込みメッセージ「Interrup
tA」に対応した割り込み処理Aのうち、即座に実行す
る必要がないとされていた処理が、メッセージ処理用ス
レッドで実行され、この処理の結果として、メッセージ
「RequestA」に対する返答が送出される(Reply for R
equestA)。その後、割り込みメッセージ「Interrupt
B」に対応した割り込み処理Bのうち、即座に実行する
必要がないとされていた処理が、メッセージ処理用スレ
ッドで実行され、この処理の結果として、メッセージ
「RequestB」に対する返答が送出される(Reply for R
equestB)。
【0117】以上詳細に説明したように、タイプ3で
は、割り込みマスクが連続して閉じる時間を、タイプ2
よりも更に短縮することが可能となり、割り込み遅延時
間を更に短縮することが可能となる。
【0118】2−4 デバイスドライバの動作環境 以上、従来技術で実現されるタイプ1と、本発明を適用
して実現されるタイプ2及びタイプ3とについて詳細に
説明したが、これらの動作環境には、上位互換性を持た
せることが好ましい。すなわち、タイプ2の環境では、
タイプ1のデバイスドライバも動作できるようにし、タ
イプ3の環境では、タイプ1やタイプ2のデバイスドラ
イバも動作できるようにすることが好ましい。
【0119】これにより、全デバイスドライバのうちで
もっとも多くの機能を要求するデバイスドライバに対応
した環境を提供すれば、異なるタイプのデバイスドライ
バが混在していたとしても、全てのデバイスドライバを
正常に動作させることが可能となる。
【0120】ところで、タイプ2は、マルチスレッドを
実現するために、タイプ1よりも、オペレーティングシ
ステムに対してより多くの機能を要求する。また、タイ
プ3は、割り込み処理を割り込み処理用スレッドとメッ
セージ処理用スレッドとに振り分ける処理を実現するた
めに、タイプ2よりも、オペレーティングシステムに対
してより多くの機能を要求することとなる。
【0121】このため、オペレーティングシステムのサ
イズは、タイプ1の環境を提供するオペレーティングシ
ステムよりも、タイプ2の環境を提供するオペレーティ
ングシステムのほうが大きくなり、また、タイプ1やタ
イプ2の環境を提供するオペレーティングシステムより
も、タイプ3の環境を提供するオペレーティングシステ
ムのほうが大きくなる。
【0122】したがって、割り込み遅延時間がより短く
て済むタイプ3の環境を提供するオペレーティングシス
テムを使用するのが常に好ましいとは限らない。すなわ
ち、割り込み遅延時間に対する要求等を考慮して、必要
な機能を満たす最適なオペレーティングシステムを選択
するようにしても良く、これにより、オペレーティング
システムのサイズを抑えることができる。
【0123】
【発明の効果】以上、詳細に説明したように、本発明に
よれば、オブジェクト指向を適用したデバイスドライバ
をベースにして、その利点を失う事なく、割り込み遅延
時間の短縮を図ることができる。
【図面の簡単な説明】
【図1】本発明を適用したテレビ装置に一例について、
その概略構成を示す図である。
【図2】デバイスドライバの実行モデルを示す図であ
る。
【図3】従来技術によるデバイスドライバの割り込みマ
スクの制御例として、タイプ1での割り込みマスクの制
御例を示す図である。
【図4】本発明を適用したデバイスドライバの割り込み
マスクの制御例のうち、タイプ2での割り込みマスクの
制御例を示す図である。
【図5】本発明を適用したデバイスドライバの割り込み
マスクの制御例のうち、タイプ2での割り込みマスクの
制御例を示す図である。
【図6】本発明を適用したデバイスドライバの割り込み
マスクの制御例のうち、タイプ3での割り込みマスクの
制御例を示す図である。
【図7】本発明を適用したデバイスドライバの割り込み
マスクの制御例のうち、タイプ3での割り込みマスクの
制御例を示す図である。
【図8】デバイスドライバをオペレーティングシステム
の一部として実現した、従来のデバイスドライバプログ
ラミングを示す図である。
【図9】デバイスドライバを並行オブジェクトとして実
現した、オブジェクト指向デバイスドライバプログラミ
ングを示す図である。
【符号の説明】 1 バス/IOブリッジ、 2 バス、 3 テレビ機
能部、 4 バス/メモリブリッジ、 5 プロセッ
サ、 6 ROM、 7 RAM、 8 操作パネル、
9 外部記憶装置、 10 通信装置

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 ハードウェア制御を行うデバイスドライ
    バを、一つのメッセージ処理用スレッドと、一つ以上の
    割り込み処理用スレッドとを割り当てることが可能なマ
    ルチスレッドオブジェクトとして記述し、 デバイスドライバが他のオブジェクトから入力されたメ
    ッセージに基づく処理を行う場合には、当該処理をメッ
    セージ処理用スレッドに割り当てて実行し、 デバイスドライバに対して割り込みを要求する事象が発
    生したときに、全ての割り込み処理用スレッドが他の割
    り込みに応じた割り込み処理を実行している場合には、
    メッセージ処理用スレッドの状態に関わらず、上記事象
    に対応する割り込み処理を実行せずに、いずれかの割り
    込み処理用スレッドにて他の割り込みに応じた割り込み
    処理が終了してから、当該割り込み処理用スレッドにて
    上記事象に対応する割り込み処理を実行することを特徴
    とするデータ処理方法。
  2. 【請求項2】 メッセージ処理用スレッドでの処理と、
    割り込み処理用スレッドでの割り込み処理との優先順位
    を設定できるようにしておき、 デバイスドライバが割り込みを受け付けたときに、割り
    込み処理よりも優先して実行するように設定されている
    処理がメッセージ処理用スレッドで行われている場合に
    は、メッセージ処理用スレッドでの処理が終了するま
    で、或いは、メッセージ処理用スレッドでの処理よりも
    割り込み処理を優先するように設定が変更されるまで、
    割り込み処理の実行を待たせておき、 デバイスドライバが割り込みを受け付けたときに、割り
    込み処理よりも優先して実行するように設定されている
    処理がメッセージ処理用スレッドで行われていない場合
    には、直ぐに割り込み処理用スレッドで割り込み処理を
    実行することを特徴とする請求項1記載のデータ処理方
    法。
  3. 【請求項3】 割り込み処理を優先順位の異なる複数の
    処理に分けて、優先順位が高い処理を割り込み処理用ス
    レッドに割り当てて実行し、優先順位が低い処理をメッ
    セージ処理用スレッドに割り当てて実行することを特徴
    とする請求項1記載のデータ処理方法。
  4. 【請求項4】 上記デバイスドライバは、オペレーティ
    ングシステム上で複数のデバイスドライバが並行して動
    作することが可能な並行オブジェクトとして記述されて
    いることを特徴とする請求項1記載のデータ処理方法。
  5. 【請求項5】 ハードウェア制御を行うプログラムであ
    るデバイスドライバが記録されたコンピュータ読み取り
    可能な記録媒体であって、 上記デバイスドライバは、 一つのメッセージ処理用スレッドと、一つ以上の割り込
    み処理用スレッドとを割り当てることが可能なマルチス
    レッドオブジェクトとして記述され、 当該デバイスドライバが他のオブジェクトから入力され
    たメッセージに基づく処理を行う場合には、当該処理を
    メッセージ処理用スレッドに割り当てて実行し、 当該デバイスドライバに対して割り込みを要求する事象
    が発生したときに、全ての割り込み処理用スレッドが他
    の割り込みに応じた割り込み処理を実行している場合に
    は、メッセージ処理用スレッドの状態に関わらず、上記
    事象に対応する割り込み処理を実行せずに、いずれかの
    割り込み処理用スレッドにて他の割り込みに応じた割り
    込み処理が終了してから、当該割り込み処理用スレッド
    にて上記事象に対応する割り込み処理を実行することを
    特徴とする記録媒体。
  6. 【請求項6】 上記デバイスドライバは、 メッセージ処理用スレッドでの処理と、割り込み処理用
    スレッドでの割り込み処理との優先順位を設定できるよ
    うになされており、 割り込みを受け付けたときに、割り込み処理よりも優先
    して実行するように設定されている処理がメッセージ処
    理用スレッドで行われている場合には、メッセージ処理
    用スレッドでの処理が終了するまで、或いは、メッセー
    ジ処理用スレッドでの処理よりも割り込み処理を優先す
    るように設定が変更されるまで、割り込み処理の実行を
    待たせておき、 割り込みを受け付けたときに、割り込み処理よりも優先
    して実行するように設定されている処理がメッセージ処
    理用スレッドで行われていない場合には、直ぐに割り込
    み処理用スレッドで割り込み処理を実行することを特徴
    とする請求項5記載の記録媒体。
  7. 【請求項7】 上記デバイスドライバは、割り込み処理
    を優先順位の異なる複数の処理に分けて、優先順位が高
    い処理を割り込み処理用スレッドに割り当てて実行し、
    優先順位が低い処理をメッセージ処理用スレッドに割り
    当てて実行することを特徴とする請求項5記載の記録媒
    体。
  8. 【請求項8】 上記デバイスドライバは、オペレーティ
    ングシステム上で複数のデバイスドライバが並行して動
    作することが可能な並行オブジェクトとして記述されて
    いることを特徴とする請求項5記載の記録媒体。
  9. 【請求項9】 ハードウェア制御を行うプログラムであ
    るデバイスドライバが記録された記録媒体を備え、当該
    記録媒体から上記デバイスドライバを読み取ることが可
    能なデータ処理装置であって、 上記デバイスドライバは、 一つのメッセージ処理用スレッドと、一つ以上の割り込
    み処理用スレッドとを割り当てることが可能なマルチス
    レッドオブジェクトとして記述され、 当該デバイスドライバが他のオブジェクトから入力され
    たメッセージに基づく処理を行う場合には、当該処理を
    メッセージ処理用スレッドに割り当てて実行し、 当該デバイスドライバに対して割り込みを要求する事象
    が発生したときに、全ての割り込み処理用スレッドが他
    の割り込みに応じた割り込み処理を実行している場合に
    は、メッセージ処理用スレッドの状態に関わらず、上記
    事象に対応する割り込み処理を実行せずに、いずれかの
    割り込み処理用スレッドにて他の割り込みに応じた割り
    込み処理が終了してから、当該割り込み処理用スレッド
    にて上記事象に対応する割り込み処理を実行することを
    特徴とするデータ処理装置。
  10. 【請求項10】 上記デバイスドライバは、 メッセージ処理用スレッドでの処理と、割り込み処理用
    スレッドでの割り込み処理との優先順位を設定できるよ
    うになされており、 割り込みを受け付けたときに、割り込み処理よりも優先
    して実行するように設定されている処理がメッセージ処
    理用スレッドで行われている場合には、メッセージ処理
    用スレッドでの処理が終了するまで、或いは、メッセー
    ジ処理用スレッドでの処理よりも割り込み処理を優先す
    るように設定が変更されるまで、割り込み処理の実行を
    待たせておき、 割り込みを受け付けたときに、割り込み処理よりも優先
    して実行するように設定されている処理がメッセージ処
    理用スレッドで行われていない場合には、直ぐに割り込
    み処理用スレッドで割り込み処理を実行することを特徴
    とする請求項9記載のデータ処理装置。
  11. 【請求項11】 上記デバイスドライバは、割り込み処
    理を優先順位の異なる複数の処理に分けて、優先順位が
    高い処理を割り込み処理用スレッドに割り当てて実行
    し、優先順位が低い処理をメッセージ処理用スレッドに
    割り当てて実行することを特徴とする請求項9記載のデ
    ータ処理装置。
  12. 【請求項12】 上記デバイスドライバは、オペレーテ
    ィングシステム上で複数のデバイスドライバが並行して
    動作することが可能な並行オブジェクトとして記述され
    ていることを特徴とする請求項9記載のデータ処理装
    置。
JP23497797A 1997-08-29 1997-08-29 データ処理方法、記録媒体及びデータ処理装置 Expired - Fee Related JP3794119B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP23497797A JP3794119B2 (ja) 1997-08-29 1997-08-29 データ処理方法、記録媒体及びデータ処理装置
US09/140,043 US6378006B1 (en) 1997-08-29 1998-08-26 Data processing method, recording medium and data processing apparatus
EP98306916A EP0899660A1 (en) 1997-08-29 1998-08-28 Data processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23497797A JP3794119B2 (ja) 1997-08-29 1997-08-29 データ処理方法、記録媒体及びデータ処理装置

Publications (3)

Publication Number Publication Date
JPH1173334A true JPH1173334A (ja) 1999-03-16
JPH1173334A5 JPH1173334A5 (ja) 2005-03-10
JP3794119B2 JP3794119B2 (ja) 2006-07-05

Family

ID=16979223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23497797A Expired - Fee Related JP3794119B2 (ja) 1997-08-29 1997-08-29 データ処理方法、記録媒体及びデータ処理装置

Country Status (3)

Country Link
US (1) US6378006B1 (ja)
EP (1) EP0899660A1 (ja)
JP (1) JP3794119B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100411113B1 (ko) * 2001-08-31 2003-12-18 현대자동차주식회사 멀티 스레드 처리방법
KR100763200B1 (ko) * 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR101319120B1 (ko) * 2007-02-27 2013-10-17 소니 일렉트로닉스 인코포레이티드 Tv-중심 시스템 및 tv 하드웨어 컴포넌트 추상화 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684401B1 (en) * 1999-03-26 2004-01-27 Sony Corporation Method and system for independent incoming and outgoing message dispatching in a home audio/video network
US6496873B1 (en) * 1999-05-21 2002-12-17 International Business Machines Corporation Real time device driver interface apparatus and method therefor
US6681384B1 (en) * 1999-12-23 2004-01-20 International Business Machines Corporation Multi-threaded break-point
US6658489B1 (en) * 2000-03-29 2003-12-02 International Business Machines Corporation Method for replacing a device driver during system operation
US6766520B1 (en) * 2000-06-08 2004-07-20 Unisys Corporation Tape drive emulation software objects, and emulation of other peripheral systems for computers
US7140018B1 (en) 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6507903B1 (en) 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
US6832378B1 (en) 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
US7043582B2 (en) 2002-09-06 2006-05-09 Intel Corporation Self-nesting interrupts
US7823158B2 (en) 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US8024731B1 (en) * 2007-04-25 2011-09-20 Apple Inc. Assigning priorities to threads of execution
CN101661405B (zh) * 2008-08-28 2012-08-29 国际商业机器公司 一种基于多处理器系统的多库函数调用方法和系统
CN103870326B (zh) * 2012-12-11 2018-07-13 厦门雅迅网络股份有限公司 一种将中断处理程序底半部搬移到应用层的方法及应用

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680624A (en) 1993-12-21 1997-10-21 Object Licensing Corporation Object oriented interrupt system
US5787246A (en) * 1994-05-27 1998-07-28 Microsoft Corporation System for configuring devices for a computer system
US5724503A (en) * 1995-03-31 1998-03-03 Sun Microsystems, Inc. Method and apparatus for interpreting exceptions in a distributed object system
US6134627A (en) * 1996-11-04 2000-10-17 Sun Microsystems, Inc. Thread synchronization in a computer controlled by an object-based program
US5978857A (en) * 1997-07-22 1999-11-02 Winnov, Inc. Multimedia driver having reduced system dependence using polling process to signal helper thread for input/output

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100411113B1 (ko) * 2001-08-31 2003-12-18 현대자동차주식회사 멀티 스레드 처리방법
KR100763200B1 (ko) * 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR101319120B1 (ko) * 2007-02-27 2013-10-17 소니 일렉트로닉스 인코포레이티드 Tv-중심 시스템 및 tv 하드웨어 컴포넌트 추상화 방법

Also Published As

Publication number Publication date
US6378006B1 (en) 2002-04-23
JP3794119B2 (ja) 2006-07-05
EP0899660A1 (en) 1999-03-03

Similar Documents

Publication Publication Date Title
JP3794119B2 (ja) データ処理方法、記録媒体及びデータ処理装置
US5381347A (en) Method and system for displaying images on a display device using an offscreen video memory
US4695945A (en) Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
EP1054322B1 (en) Computer system with multiple operating system operation
US6725457B1 (en) Semaphore enhancement to improve system performance
KR100472908B1 (ko) 버스구조를통한데이터전송및버스관리를위한애플리케이션프로그래밍인터페이스
US7080386B2 (en) Architecture with digital signal processor plug-ins for general purpose processor media frameworks
US9135059B2 (en) Opportunistic multitasking
US5828881A (en) System and method for stack-based processing of multiple real-time audio tasks
US4553202A (en) User controlled dialog resource switching in a multi-tasking word processor
US7523157B2 (en) Managing a plurality of processors as devices
US5313581A (en) System and method for communication between windowing environments
CN1318968C (zh) 执行实时操作的方法和系统
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
US5892968A (en) Multimedia data transferring method
US20060277400A1 (en) System for executing code during operating system initialization
JPH03121555A (ja) 周辺装置支援システム
US20050097226A1 (en) Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
EP0715732B1 (en) Method and system for protecting shared code and data in a multitasking operating system
US20080065838A1 (en) Data processing system with memory access
US6829766B1 (en) Data processing method and apparatus and recording medium, for implementing a schedule managing mechanism when a context switch has occurred
CN116166572A (zh) 系统配置与内存同步方法及装置、系统、设备和介质
JP3823468B2 (ja) データ処理方法、記録媒体及びデータ処理装置
JP3349547B2 (ja) スケジューリングシステム
US6012082A (en) CPU-cycle stealing for multi-tasking operating system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040406

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040406

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: 20060322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060404

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090421

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100421

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100421

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: 20100421

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: 20100421

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110421

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110421

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120421

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120421

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130421

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130421

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140421

Year of fee payment: 8

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