JPWO2009113381A1 - マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 - Google Patents

マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 Download PDF

Info

Publication number
JPWO2009113381A1
JPWO2009113381A1 JP2010502756A JP2010502756A JPWO2009113381A1 JP WO2009113381 A1 JPWO2009113381 A1 JP WO2009113381A1 JP 2010502756 A JP2010502756 A JP 2010502756A JP 2010502756 A JP2010502756 A JP 2010502756A JP WO2009113381 A1 JPWO2009113381 A1 JP WO2009113381A1
Authority
JP
Japan
Prior art keywords
interface unit
processing
task
request
driver
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
JP2010502756A
Other languages
English (en)
Other versions
JP5516398B2 (ja
Inventor
淳嗣 酒井
淳嗣 酒井
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2010502756A priority Critical patent/JP5516398B2/ja
Publication of JPWO2009113381A1 publication Critical patent/JPWO2009113381A1/ja
Application granted granted Critical
Publication of JP5516398B2 publication Critical patent/JP5516398B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

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)
  • Multi Processors (AREA)

Abstract

マルチコアプロセッサ上で複数OSを搭載するシステムにおいて、デバイスを複数のOS上のタスクからアクセスする場合、1つのOSがデバイスアクセスを代行するクライアント−サーバ方式では、プロキシサーバを置くために性能低下と設計製造コスト上昇という課題があった。複数のOS40、50が動作するマルチプロセッサシステムにおいて、複数のOSが、OS間で共有するデバイスにアクセスするデバイスドライバ41、51を有し、デバイスドライバが、OSカーネル層でのOS間通信を行う、デバイスインタフェース部45と、タスクインタフェース部44、54の少なくとも一方を有し、デバイスインタフェース部45が、デバイスドライバの操作対象のデバイス14とのアクセスを行い、タスクインタフェース部が、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果のタスクへの返却を行う。

Description

本発明は、複数のOSが動作するマルチプロセッサシステムに関し、特に、デバイスを複数OS間で共有して利用するマルチプロセッサシステム、OS間デバイス共有方法に関する。
マルチコアプロセッサの利用形態として、同種ないし異種のOSを複数稼動させることは、システム全体の信頼性、応答性を改善する手段として有用である。
他方、マルチコアプロセッサ上の複数OS間で、DMAコントローラ、グラフィックアクセラレータ、マルチメディア専用エンジン、HDD(ハードディスク)コントローラ等の周辺デバイス(以下単に、デバイスと称する)を共有して利用することは容易ではない。その理由は、通常、デバイス管理はOSの役割としてそのOS内で閉じており、あるOSの管理下にあるデバイスに対し、他のOSからアクセスされることは想定されていないためである。
複数OS間でデバイスを共有して利用する手法としては、非特許文献1及び非特許文献2に記載されるようなクライアント-サーバ方式がある。このクライアント−サーバ方式は、デバイスにアクセスするOSを1つに限定したうえで、そのOS上でアクセスサーバと呼ばれるサーバタスクを稼動させ、それ以外のOS上のタスクは、OS間通信によってアクセスサーバと通信し、アクセスサーバにデバイスのアクセスを代行させる方式である。このアクセスサーバは、デバイスアクセスを代行する役割を果たすことから、プロキシと呼ばれることもある。
日経エレクトロニクス, 2005年3月28日号, pp134-135 酒井 淳嗣 他, 情報処理 47巻1号, 情報処理学会, 2006年1月, pp 29-33
しかし、非特許文献1及び非特許文献2に記載のクライアント-サーバ方式には、次のような問題がある。
第1の問題は、サーバへのデバイスアクセス要求のたびにプロキシつまりアクセスサーバへのタスク切り替えが必要なため、サーバを介したデバイスアクセスの性能が低下することである。これは特に、グラフィックアクセラレータやHDDのように高速性が重視されるデバイスにおいて重大な問題となる。
第2の問題は、デバイスアクセスの種類ごとにプロキシとなる機能をアクセスサーバに実装する必要があり、その開発コストが大きいことである。
例えば、グラフィックアクセラレータやHDDのような多機能デバイスに対しては、アプリケーション開発者向けに数十から数百のAPI(アプリケーションプログラムインタフェース)が用意されることも稀ではなく、これらに対するプロキシ及びそれを経由するようなスタブルーチンの開発には看過できないコストを必要とする。
[発明の目的]
本発明の目的は、デバイスアクセス性能低下を抑えたOS間デバイス共有を可能とするマルチプロセッサシステム、マルチプロセッサシステムのOS間デバイス共有方法を提供することにある。
本発明の他の目的は、OS間デバイス共有に要する開発コストを低く抑えることのできるマルチプロセッサシステム、マルチプロセッサシステムのOS間デバイス共有方法を提供することにある。
本発明によるマルチプロセッサシステムは、複数のOSが動作するマルチプロセッサシステムにおいて、複数のOSが、OS間で共有するデバイスにアクセスするデバイスドライバを有し、デバイスドライバが、OSカーネル層でのOS間通信を行う、デバイスインタフェース部と、タスクインタフェース部の少なくとも一方を有し、デバイスインタフェース部が、デバイスドライバの操作対象のデバイスとのアクセスを行い、タスクインタフェース部が、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果のタスクへの返却を行う。
本発明によるデバイスドライバは、複数のOSが動作するマルチプロセッサシステムのOS間で共有するデバイスにアクセスするOSが備えるデバイスドライバであって、デバイスドライバの操作対象のデバイスとのアクセスを行うデバイスインタフェース部と、デバイスインタフェース部とOSカーネル層でのOS間通信を行い、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果のタスクへの返却を行うタスクインタフェース部の少なくとも一方を含む。
本発明によるOS間デバイス共有方法は、OS間で共有するデバイスにアクセスするデバイスドライバを有する複数のOSが動作するマルチプロセッサシステムのOS間デバイス共有方法であって、デバイスドライバが、デバイスインタフェース部と、タスクインタフェース部の少なくとも一方を有し、タスクインタフェース部とデバイスインタフェース部とがOSカーネル層でのOS間通信を行い、デバイスインタフェース部が、デバイスドライバの操作対象のデバイスとのアクセスを行い、タスクインタフェース部が、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果のタスクへの返却を行う。
本発明の第1の効果は、クライアント-サーバ方式によるクライアント側タスクからのデバイスアクセス性能を向上させることである。
本発明の第2の効果は、デバイス共有のためのソフトウェア開発コストを抑えることができることである。
本発明の第1の実施の形態によるシステム全体構成を示すブロック図である。 本発明の第1の実施の形態におけるOS−A及びOS−B上のデバイスドライバの内部構成を示す図である。 本発明の第1の実施の形態における処理要求構造体の内部構成を示す図である。 本発明の第1の実施の形態におけるOS−A及びOS−B上のデバイスドライバ間通信部の内部構成を示すブロック図である。 本発明の第1の実施の形態における呼出要求構造体の内部構成を示す図である。 本発明の第1の実施の形態における呼出要求リストの内部構成を示す図である。 本発明の第1の実施の形態におけるOS−A用デバイスドライバの初期設定手順を示すフローチャートである。 本発明の第1の実施の形態におけるOS−B用デバイスドライバの初期設定手順を示すフローチャートである。 本発明の第1の実施の形態におけるOS−A用デバイスドライバの要求解釈部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−A用デバイスドライバの待機タスク再開部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−B用デバイスドライバの要求解釈部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−B用デバイスドライバの待機タスク再開部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−A用デバイスドライバのデバイス設定部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−A用デバイスドライバのデバイス割り込み処理部の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−Aでのデバイスドライバ間通信部の初期設定手順を示すフローチャートである。 本発明の第1の実施の形態におけるデバイスドライバ間通信部が通信相手OSを呼び出す動作を説明するフローチャートである。 本発明の第1の実施の形態におけるデバイスドライバ間通信部にて、相手OSから呼び出された際の被呼出処理の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOS−A上のユーザタスクがデバイスアクセスを行う際の処理フロー全体を示す図である。 本発明の第1の実施の形態におけるOS−B上のユーザタスクがデバイスアクセスを行う際の処理フロー全体を示す図である。 本発明の第2の実施の形態におけるデバイスドライバ及びその内部の判定部の位置づけを示す図である。 本発明の第3の実施の形態におけるデバイスドライバ及びその内部の要求待ちリストの構成を示す図である。 本発明の第4の実施の形態によるOS−A及びOS−B上のデバイスドライバの内部構成を示す図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施の形態)
[構成の説明]
図1を参照すると、本発明の第1の実施の形態による複数のOSを搭載する共有メモリ型のマルチプロセッサシステムは、マルチコアプロセッサ10と、2種類のOSである、OS−A40とOS−B50、各OS上のユーザタスク43、53、マルチコアプロセッサ10の外部バス30に接続されたメモリ31を含む構成である。
マルチコアプロセッサ10は、2つのCPUコアすなわちCPUコア(0)20とCPUコア(1)21、割り込み制御部12、割り込みのうち特にCPUコア間の割り込みを発生させるコア間割り込み発生部13、OS間で共有する内部デバイス14を備えて構成され、これらがプロセッサ内部バス11で接続されている。
CPUコア上のソフトウェアに目を向けると、CPUコア(0)20上ではOS−A40が稼動している。このOS−A40には、内部デバイス14をアクセスするためのデバイスドライバ41が組み込まれ、そのOS上には、内部デバイス14をアクセスするユーザタスク(A0)43が存在する。
また、OS−A40は、隣接する他のOSと通信するためのデバイスドライバ間通信部(A)42を有している。
同様に、CPUコア(1)21上ではOS−B50が稼動している。このOS−B50には、内部デバイス14をアクセスするためのデバイスドライバ51が組み込まれ、そのOS上には、内部デバイス14をアクセスするユーザタスク(B0)53が存在する。
OS−B50は、隣接する他OSと通信するためのデバイスドライバ間通信部(B)52を有している。
ここでは説明のために、マルチコアプロセッサ10としてCPUコアを2つ含み、その上で2種類のOSが動作している構成を図示しているが、本発明は2コア構成のマルチコアプロセッサに限定されず、複数のCPUコアを含む構成であれば適用することが可能であり、また3種類以上のOSが動作する構成にも適用可能である。
また、図1では、マルチコアプロセッサ10の内部バス11上と、外部バス30上に、各々内部デバイス14及び外部デバイス32が接続されているが、そのデバイスの数や接続先の内部/外部の区別は、本発明を適用を妨げるものではない。更には、割り込み制御部12やコア間割り込み発生部13がマルチコアプロセッサ10の外部バス30に接続されていても、本発明をそのまま適用できる。
以降もっとも典型的な例として、2コア構成のマルチコアプロセッサで、その内部バス上に接続された内部デバイス14を2つのOS間で共有する場合を取り上げて具体的に説明する。
次に、本発明の主要な構成要素であるデバイスドライバの構造について説明する。
図2を参照すると、OS−A40に組み込まれるOS−A用デバイスドライバ41は、ユーザタスク(A)43からの要求を受け付け、処理結果をユーザタスク(A)43に返却するための、タスクインタフェース部(A)44と、内部デバイス14の動作を制御しあるいはその状態を観察し、デバイスからの結果を受け取るデバイスインタフェース部(A)45と、タスクインタフェース部(A)44がユーザタスクから受け付けたものの、まだ対象デバイスである内部デバイスが処理を開始していない処理要求を格納しておく領域である要求待ちリスト46と、対象デバイスが現在実行中の処理情報を格納しておく領域である処理中リスト47とを備える。
タスクインタフェース部(A)44は、その内部に、ユーザタスク(A)43からの処理要求を受け付ける要求解釈部(A)441と、ユーザタスクの動作を制御しユーザタスク(A)43に処理結果を返すための待機タスク再開部(A)442とを備える。
デバイスインタフェース部(A)45は、その内部に、内部デバイス14のレジスタ等に値を設定し、また他のOS上のデバイスドライバからの通信割り込みを取り扱うデバイス設定部451と、内部デバイス14からの割り込みを取り扱うデバイス割り込み処理部452とを備える。
OS−A40は、その内部に、OS−A用デバイスドライバ41のほか、他のOS上のデバイスドライバとの間で通信を行うデバイスドライバ間通信部(A)42を備える。また、OS−A40上では、内部デバイス14へのアクセス要求を発行するユーザタスク(A0)43が動作している。
内部デバイス14は、与えられた処理が完了した等の状態変化をOS側に伝えるため、CPUコアに対して割り込みを発生させる割り込み制御部12に接続されている。
OS−B50は、デバイスインタフェース部(A)45及びそれに付随するデータ構造(要求待ちリスト46、処理中リスト47)を有していない点を除けば、OS−A40内部の構造と類似している。以下、同じく図2を参照してOS−B内部の構成を説明する。
OS−B50に組み込まれたOS−B用デバイスドライバ51は、ユーザタスク(B)53からの要求を受け付け、処理結果をユーザタスク(B)53に返却するための、タスクインタフェース部(B)54を備える。また、OS−B50は、OS−B用デバイスドライバ51とOS−A用デバイスドライバ41との間の通信を行うためのデバイスドライバ間通信部(B)52を備える。
タスクインタフェース部(B)54は、その内部に、ユーザタスク(B)53からの処理要求を受け付ける要求解釈部(B)541と、ユーザタスクの動作を制御し、ユーザタスクに処理結果を返すための待機タスク再開部(B)542とを備える。
上記で述べた構造すなわち、デバイスドライバをタスクインタフェース部とデバイスインタフェース部で構成し、デバイスを直接アクセスするOS(OS−A40)にはその両者を搭載し、それ以外のOS(OS−B50)にはタスクインタフェース部のみのデバイスドライバを搭載し、デバイスを直接アクセスしないOSのタスクインタフェース部とデバイスを直接アクセスするOSのデバイスインタフェース部とをデバイスドライバ間通信で接続する方式が、本発明の中枢をなす特徴的な構成である。
要求待ちリスト46と、処理中リスト47は、図3に示す処理要求構造体70をデータ要素とし、これらがリストでつながったものとして構成される。処理要求構造体70のインスタンスは、各OS上のデバイスドライバのタスクインタフェース部の要求解釈部にて作成され、要求待ちリスト46につなげられる。
対象の内部デバイスでの処理が開始されるときに、当該処理要求構造体70のインスタンスは、要求待ちリスト46から取り除かれ、処理中リスト47に移される。
最後に、各OS上のデバイスドライバのタスクインタフェース部の待機タスク再開部が、処理中リスト47中の処理要求構造体のインスタンスを取り除き、呼び出し元のユーザタスクに処理結果を返す。
最も基本的な構成では、デバイスに対する処理がユーザタスクからの要求順に実行されるように設計する。その場合、要求待ちリスト46と処理中リスト47は先入れ先出しすなわちFIFOとして実装することが考えられる。
再び図3を参照すると、処理要求構造体70は内部に次のようなフィールドを有する。
処理要求識別子71は、処理要求構造体70のインスタンスを一意に区別するための識別子である。要求元OS識別子72は、この処理を要求したユーザタスクが実行されていたOSを特定するための識別子であり、図2の例で言えば、OS−A40あるいはOS−B50を指す識別子となる。要求元タスク識別子73は、この処理を要求したユーザタスクを、当該ユーザタスクを稼動させていたOS内において、一意に特定するための識別子であり、例えば各OSが管理するタスクIDそのものが用いられる。
デバイス設定情報74は、ユーザタスクからの要求に沿ってデバイスドライバが対象の内部デバイスに対して設定すべき値に関する情報を保持する。このデバイス設定情報74は、例えば、デバイスドライバがDMAコントローラであれば、転送元アドレスと転送先アドレスと転送サイズであり、デバイスドライバがグラフィックアクセラレータであれば、3D描画コマンド列である。
従って、このデバイス設定情報74が保持する内容はデバイスによって大きく異なるが、ある特定のデバイスに対する処理要求識別子71では、そのデバイス設定情報74は常に同一サイズとする。これにより処理要求構造体70のインスタンスのメモリ管理が容易になる。デバイス設定情報74の領域は、デバイス設定情報として現実的に想定される最大サイズのデータが保持できるサイズとし、もし必要であれば、処理要求内容を複数の処理要求識別子に分割して表現する。この分割はタスクインタフェース部44、54が行う。
デバイス状態75は、ユーザ要求を内部デバイスが処理した結果を格納するためのフィールドである。このデバイス状態75に格納される内容は、例えば、DMAコントローラやグラフィックアクセラレータの場合には、要求処理が成功したか否かを示す単純な整数値であるが、HDDコントローラの場合、HDDから読み出したデータ列のように、大きなサイズのデータである場合もある。
デバイス状態75には、後続のデバイス処理によって上書きされ、あるいは後続のデバイス処理の開始が妨げられる等の理由により、デバイスからの完了割り込みがOS側に伝達された後、速やかにデバイス内から取り出さなければならないデータのみを保持するように設計する。また、このデバイス状態75のサイズは、ある特定のデバイスに対しては常に同一サイズとなるように設計する。これはデバイス設定情報74の場合と同じく、メモリ管理を容易にするためである。
次に、本実施の形態におけるデバイスアクセス性能改善に重要な役割を果たす、デバイスドライバ間通信部の構成について、図4を参照して説明する。なお、デバイスドライバ間通信部は各OSに1つずつ存在するが、いずれも同じ構成である。以下では、OS−A40側のデバイスドライバ間通信部(A)42について説明するが、OS−B50側のデバイスドライバ間通信部(B)52も同様の構成である。
本実施の形態におけるデバイスドライバ間通信は、事前にあるOS側にて登録しておいたルーチンを他のOS側から呼び出す、という点において、リモートプロシージャコール(RPC)と類似の概念で通信を行う。しかし、本実施の形態におけるデバイスドラバ間通信は、ほとんどの部分が割り込みハンドラ内で実行されることが特徴であり、これにより通信オーバヘッドを低減する効果をもたらす。
OS−A40側のデバイスドライバ間通信部(A)42は、事前のルーチン登録に関連して、OS−A40側の登録済みルーチンを保持する被呼出ルーチン登録表(A)422と、その表に対して事前にルーチンを登録するための被呼出ルーチン登録部(A)421を備える。
デバイスドライバ間通信部(A)42はまた、他OS側から呼び出された状況の管理に関連して、OS−A側の登録済みルーチンに対する未実行の呼出要求をリストで管理する呼出要求リスト(A)423と、デバイスドライバ間通信部(A)42が現在、登録済みルーチンのいずれかを呼び出しているか否かを示す被呼出状態記憶部(A)424を備える。
デバイスドライバ間通信部(A)42は、また、相手を呼び出すあるいは相手から呼び出される、という動作に関連して、次の2つの処理部を備える。
すなわち、OS−A用デバイスドライバ41からの要求に応じ、コア間割り込みを発生させて他のOS上のデバイスドライバ間通信部を呼び出す処理を行う呼出処理部(A)426と、コア間割り込みを経て他のOSから要求されたことを受け、登録済みルーチン呼出し処理を行う、被呼出処理部(A)425である。
被呼出処理部(A)425は、通信高速化のため、割り込みハンドラ内の処理として、OS−A40の割り込み受け付け部48から直接呼び出されることが望ましい。
しかし、割り込み禁止時間をできるだけ減らし、割り込みハンドラをできるだけ軽量にするためには、被呼出処理部(A)425の処理の多くをカーネルタスクすなわちOSカーネル内で動作するタスクないしスレッドとして実装し、OS−A40の割り込み受付部48は前記カーネルタスクの起動だけを行う構成も可能である。
呼出要求リスト(A)423には、図5に示される呼出要求構造体80のインスタンスが格納される。この呼出要求構造体80は、要求元OS識別子81と、呼出ルーチン識別子82と、呼出パラメータ83の3つのフィールドを備える。
要求元OS識別子81は、この処理を要求したデバイスドライバが実行されていたOSを特定するための識別子であり、図2の例で言えば、OS−B50を指す識別子となる。本実施の形態ではOS−A40以外のOSはOS−B50ただ一つであるため、要求元OS識別子81は、OS−B50以外の値になり得ないが、3つ以上のOSが動作する場合には、要求元OS識別子81は複数の値をとりうる。
次に、呼出ルーチン識別子82は、被呼出ルーチン登録表422に登録済みのルーチンのなかの1つを指定するものである。
呼出パラメータ83は、被呼出ルーチンを実行する際のパラメータ(引数)群を格納する領域である。パラメータ群は一般には呼出ルーチン毎に異なるが、できるだけ少数かつ小さいサイズのパラメータで済むよう呼出ルーチンを設計することで、呼出パラメータ83のフィールドを小さい固定サイズとすることが望ましい。これはデバイス設定情報74の場合と同じく、メモリ管理を容易にするためである。
呼出要求リスト(A)423は、図6に示されるように、呼出要求構造体80のインスタンスがFIFO状に格納されるリスト構造である。図6の例では、呼出要求構造体80が呼出要求構造体(1)80−1、呼出要求構造体(2)80−2、呼出要求構造体(3)80−3・・・の順番に格納されており、呼出要求構造体(1)80−1、呼出要求構造体(2)80−2、呼出要求構造体(3)80−3の順に取り出される。
[動作の説明]
上述した第1の実施の形態の動作について、まず初期設定から説明する。初期設定は、デバイスドライバ間通信部(A)42および(B)52、OS−A用デバイスドライバ41、OS−B用デバイスドライバ51の各々について行う。
デバイスドライバ間通信部(A)42および(B)52の初期設定について、図15を参照して説明する。
図15を参照すると、デバイスドライバ間通信部(A)42の初期設定は、OSのコマ間割込みハンドラとして被呼出処理部(A)425を登録するステップ206と、被呼出状態記憶部(A)424の処理中フラグをオフ(クリア)するステップ207から成る。デバイスドライバ間通信部(B)52も上記と同様に、OSのコマ間割込みハンドラとして被呼出処理部(B)525を登録するステップと、被呼出状態(B)524をクリアするステップから成る。
OS−A用デバイスドライバ41の初期設定について、図7を参照して説明する。
図7を参照すると、OS−A用デバイスドライバ41の初期設定は、次の3つのステップで実行される。
まず、ステップ201で、内部デバイス14からの割込みハンドラとして、図2のデバイス割り込み処理部452内のデバイス完了割込処理ルーチンを登録する。この処理はOS−A40の機能を利用して実行する。
次に、ステップ202で、OS−A40におけるデバイスドライバ間通信の被呼出ルーチンの一つとして、後述のデバイス設定ルーチンを登録する。この登録は、デバイスドライバ間通信部(A)42の被呼出ルーチン登録部(A)421(図4)を呼び出すことにより実行する。
最後に、ステップ203で、OS−A用デバイスドライバ41内の要求待ちリスト46と処理中リスト47を共に空にする。
OS−B用デバイスドライバ51の初期設定について、図8を参照して説明する。
図8を参照すると、OS−B用デバイスドライバ51の初期設定は、次のステップからなる。すなわち、ステップ211にて、OS−B50におけるデバイスドライバ間通信の被呼出ルーチンの一つとして、後述のタスク再開Bルーチンを登録する。この登録は、デバイスドライバ間通信部(B)52の被呼出ルーチン登録部(B)521(図4)を呼び出すことによって実行する。
以上が初期設定の動作の説明である。次に各デバイスドライバのタスクインタフェース部の動作を説明する。
まず、OS−A40側のタスクインタフェース部(A)44について説明する。前述のように、タスクインタフェース部(A)44は、要求解釈部(A)441と待機タスク再開部(A)442から成る。
ユーザタスク43からのデバイスアクセス要求があると、まず要求解釈部(A)441が呼び出される。その要求解釈部(A)441での処理の流れを図9に示す。
要求解釈部(A)441は、まず、ステップ221にて処理要求構造体70の新しいインスタンスを作成する。処理要求構造体70の構造は図3に示した通りである。
ステップ221で作成された処理要求構造体70のインスタンスでは、処理要求識別子フィールド71は、このデバイスドライバ内でユニークな整数値に設定され、要求元OS識別子フィールド72は、OS−Aを意味する値に設定され、要求元タスク識別子フィールド73は、今回のデバイスアクセス要求を行ったユーザタスク43のタスクIDが設定される。
また、デバイス設定情報フィールド74には、今回のデバイスアクセス要求の種類、パラメータ等、デバイスドライバのデバイスインタフェース部(A)45が内部デバイス14に対して行う操作を特定するための情報が格納される。デバイス状態フィールド75にはこの時点では何も設定されない。
要求解釈部(A)441は、次に、上で作成した処理要求構造体インスタンスを、OS−A用デバイスドライバ内の要求待ちリスト46に登録する。この要求待ちリスト46は、OS−Aのタスクインタフェース部(A)44、OS−Bのタスクインタフェース部(B)54、更にOS−Aのデバイス割り込み処理部452からアクセスされるため、図9のステップ222からステップ225にあるように、割り込みを禁止した上で、排他制御すなわちロック−アンロック操作で保護した区間内で実際の登録操作(ステップ224)を行う。
ここで、ロック−アンロック操作は例えば、OSが提供する排他制御サービス関数ないしCPUが有する排他制御命令を組み合わせた命令列を用いて行なう。このときのロック操作はビジーウェイト型すなわち、既にロック中の場合はロックが確保できるまで繰り返しロックを試みる形式で行う。ビジーウェイト型でロックを行うのは、本実施の形態では排他制御区間が短いため、もし他者が排他制御区間内を実行中であってもすぐに排他制御区間を抜けることが期待されるからである。ただし、システムの特性により、ロック獲得試行を一定時間試みた上で獲得に成功しなければステップ223をタイムアウトし、図9の処理要求全体をエラーで終了させる、という実装の形態をとることも可能である。
次に、要求解釈部(A)441は、ステップ226にて、同じデバイスドライバ内のデバイス設定部451に格納された処理である、デバイス設定ルーチンを呼び出す。このデバイス設定ルーチンの動作は後述するが、その概要は、要求待ちリスト46から次の処理要求構造体を取り出して内部デバイス14を適切に設定する、という処理である。
その後、要求解釈部(A)441は、ステップ227で割り込みを許可し、ステップ228でOS−Aのサービス関数を用いてユーザタスク(A0)43を待ち状態(スリープ状態)に遷移させる。
これによりOS−Aは呼び出し元ユーザタスク(A0)43の実行を中断し、別の実行可能ユーザタスクがあれば、そのタスクにタスク切り替えすることになる。以上が要求解釈部(A)441の動作の流れである。
デバイスでの処理が終わると、デバイス割り込み処理部452が、その処理結果を処理要求構造体70のデバイス状態フィールド75に格納して、タスクインタフェース部(A)44の待機タスク再開部(A)442を呼び出す。この一連の処理は後述するが、ここでは、図10を用いてその待機タスク再開部(A)442の動作の流れを説明する。
まず、ステップ231で、処理要求構造体70のデバイス状態フィールド75からデバイス処理結果を読み出し、呼び出し元ユーザタスク(A0)43内の所定のメモリ領域にデバイス処理結果をコピーする。UNIXなどOSカーネルとユーザタスクが別の論理メモリ空間で動作するOSの場合、このコピーは、カーネル空間からユーザタスク空間へのコピーを実行する、OS提供のサービス関数を呼び出すことで行う。
次に、ステップ232で、前述のステップ221で確保した処理要求構造体70のメモリを解放し、最後にステップ233で、OS−A40のサービス関数を用いてユーザタスク(A0)43を実行可能状態に遷移させる。
これにより、OS−A40は、デバイス処理待ちで中断していたユーザタスク(A0)43の実行を再開することになる。以上が待機タスク再開部(A)442の動作の流れである。
次に、OS−B50側のタスクインタフェース部(B)54を説明する。前述のように、タスクインタフェース部(B)54は、要求解釈部(B)541と待機タスク再開部(B)542から成る。これらはOS−A40側の対応する部分と類似する動作を行うが、要求待ちリスト、処理中リスト、及びデバイスインタフェース部とのやりとりに関しOS−A側に対して働きかける点が異なっている。
OS−B50上のユーザタスク(B0)53からデバイスアクセス要求があると、まず要求解釈部(B)541が呼び出される。その要求解釈部(B)541での処理の流れを図11に示す。
要求解釈部(B)541は、まずステップ241にて処理要求構造体70の新しいインスタンスを作成する。このステップはOS−A40側での対応する処理であるステップ221と同様であるが、要求元OS識別子フィールド72にはOS−B50を識別する値が設定される。
次に、要求解釈部(B)541は、上で作成した処理要求構造体70のインスタンスを、OS−A用デバイスドライバ41内の要求待ちリスト46に登録する。OS間排他制御のため、図11のステップ242、ステップ244にあるように、ロック−アンロック操作で保護した区間内で実際の登録操作(ステップ243)を行う。
ロック−アンロック操作の実装については、図9に示したOS−A側の処理(ステップ223、ステップ225)と同様である。すなわち、OSが提供する排他制御サービス関数ないしCPUが有する排他制御命令を組み合わせた命令列を用いてロック及びアンロック操作を行なう。
要求解釈部(B)541は、次にステップ245にて、以下のパラメータを指定してデバイスドライバ間通信部(B)52を呼び出すことで、OS−A側のデバイスインタフェース部(A)のデバイス設定ルーチンを遠隔呼び出しする。
呼出先OS=OS−A、呼出ルーチン識別子=デバイス設定ルーチンの識別子(ステップ202で登録したもの)、呼出パラメータ=なし
デバイスドライバ間通信部の動作については後述する。
その後、要求解釈部(B)541は、ステップ246でOS−B50のサービス関数を用いてユーザタスク(B0)53を待ち状態(スリープ状態)に遷移させる。
これにより、OS−B50は呼び出し元ユーザタスク(B0)53の実行を中断し、別の実行可能ユーザタスクがあれば、そのタスクにタスク切り替えすることになる。以上が要求解釈部(B)541の動作の流れである。
デバイスでの処理が終わるとOS−A40側に割り込みが入り、デバイス割り込み処理部452がデバイス処理結果を処理要求構造体70のデバイス状態フィールド75に格納して、その処理要求構造体インスタンスを引数としてタスクインタフェース部(B)54の待機タスク再開部(B)542を呼び出す。この一連の処理は後述するが、ここでは図12を用いてその待機タスク再開部(B)542の動作の流れを説明する。
まずステップ251で、引数として与えられた処理要求構造体70のデバイス状態フィールド75からデバイス処理結果を読み出し、呼び出し元ユーザタスク(B0)53内の所定のメモリ領域にデバイス処理結果をコピーする。UNIXなどOSカーネルとユーザタスクが別の論理メモリ空間で動作するOSの場合、このコピーは、カーネル空間からユーザタスク空間へのコピーを実行する、OS提供のサービス関数を呼び出すことにより行う。
次にステップ252で、前述のステップ241で確保した処理要求構造体70のメモリを解放し、最後にステップ253で、OS−B50のサービス関数を用いてユーザタスク(B0)53を実行可能状態に遷移させる。
これにより、OS−B50は、デバイス処理待ちで中断していたユーザタスク(B0)53の実行を再開することになる。以上が各デバイスドライバのタスクインタフェース部の動作の説明である。
次に、OS−A側デバイスドライバ41に固有のデバイスインタフェース部(A)45の動作を説明する。前述のように、デバイスインタフェース部(A)45は、デバイス設定部451とデバイス割り込み処理部452から成る。
図13を参照して、デバイス設定部451の動作の流れを説明する。デバイス設定部451は割り込み禁止状態で呼び出されることが想定されている。
ステップ261〜ステップ263にて、デバイス設定のループ処理の継続条件を判断する。要求待ちリスト46に処理要求構造体が全く存在しない場合、あるいは、ループ継続の繰り返し回数が所定の上限値を越えている場合、あるいは、内部デバイス14が既に処理中で、新たな処理が受け付けられない状態の場合は、ループを抜け、デバイス設定処理を終了する。
ここで、ループ継続の上限値は、デバイス設定を繰り返すことで割り込み禁止区間が長引き、他の処理(例えばOSのタスク切り替えやリアルタイム処理)に悪影響を及ぼすことを防ぐために設定されるものである。
内部デバイスがn種類の処理要求を同時に受け付けられるのであれば、ループ継続上限値はnないしそれ未満の値に設定する。他方、内部デバイスがせいぜい1つの処理要求しか受け付けられないなら、ループ継続上限値は1固定となる。
また、前記趣旨から、ループ継続上限値に代えて、本デバイス設定処理に費やした時間の上限値を用いる実施形態も考えられる。この場合、デバイス設定処理の開始時にタイマ等により現在時刻を取得し、ステップ262にて再度タイマ等により現在時刻を取得して開始時刻からの経過時刻を算出し、その値が上限値を越えていたらデバイス設定を終了する、という動作の流れになる。
ステップ264〜ステップ266にて、要求待ちリストから1つの処理要求構造体インスタンスを取り出す。取り出すインスタンスは、要求待ちリスト内に蓄積されている全インスタンスの中から、一定ルールで選び出す。例えば、時間的に先に到着したものを先に取り出す(FIFO)というルールを用いる。
また、要求待ちリストは本デバイス設定部以外にOS−A40及びOS−B50のタスクインタフェース部からもアクセスされるため、排他制御のためのロック−アンロック操作を前後にはさむ。このロック−アンロックは、OSによる排他制御サービス関数呼び出しあるいはCPUが有する排他制御命令の組み合わせで実現される。このロック操作はビジーウェイト型すなわち、既にロック中の場合はロックが確保できるまで繰り返す形式で行う。OSのサービス関数を使う場合は、割り込みハンドラから安全に呼び出せるものに限る。
ステップ267にて、処理要求構造体70のデバイス設定情報フィールド74を参照して、内部デバイス14に対して設定値を書き込み、内部デバイス14を目的の動作状態に遷移させる。
このステップ267は対象となるデバイスごとに異なる実装になるが、例えばDMAコントローラであれば、転送元アドレスレジスタ、転送先アドレスレジスタ、転送サイズレジスタに設定値を書き込み、制御レジスタの所定ビットを設定してDMA転送を開始させる、といった処理を行う。また他の例としてグラフィックアクセラレータをとりあげると、デバイス設定情報フィールド74の内容に従ってワークメモリ上に描画コマンド列を作成し、制御レジスタの所定ビットを設定することで、グラフィックアクセラレータの描画処理を起動する、といった処理を行う。これらの処理は、関連技術のデバイスドライバ、例えば一般的なDMAデバイスドライバ、グラフィックアクセラレータデバイスドライバがそれぞれの内部デバイスに対して行っている処理と同様である。
内部デバイス14が複数の処理要求を受け付けるタイプのデバイスである場合、ステップ267では上記に加え、デバイスに投入した複数の処理を識別するための識別子の値を、処理要求構造体70の処理要求識別子フィールド71に設定する。この識別子はデバイスによって異なるが、例えばトランザクションIDやコマンドキューイングIDなどである。
最後にステップ268にて、前述のステップ265で取り出した処理要求構造体70のインスタンスを、処理中リスト47に登録する。処理中リスト47はOS−Aのタスクインタフェース部(A)44からもアクセスされるが、タスクインタフェース部(A)44とデバイスインタフェース部45とは、割り込み禁止/許可操作によって既に排他制御が行われているため、ステップ268前後には特段の排他制御処理は不要である。
以上が、デバイス設定部451の動作の流れの説明である。
次に、図14を参照して、デバイス割り込み処理部452の動作の流れを説明する。デバイス割り込み処理部452は、内部デバイスからOS−A40への割り込みに対するハンドラとして呼び出されるため、その処理全体が割り込み禁止状態で実行される。
まずステップ271にて、すみやかに内部デバイス14からデバイス状態を読み出す。これは、デバイスに対する次の外部イベント、例えば後続のグラフィック描画処理の完了や後続のディスク読み出し処理の完了等が起きてデバイス状態が変化してしまうことを回避すること、あるいはシリアルポート等、デバイスによってはデバイス状態を読み出さない限り次のデバイス処理が進まないことがあり、その事態を回避すること、などの理由による。
ステップ272にて、処理中リスト47から、今回の完了割り込みに対応する処理要求構造体70のインスタンスを取り出す。内部デバイス14が複数の処理要求を受け付けるタイプのデバイスである場合、前述のステップ267で設定した処理要求識別子フィールド71の値を内部デバイス側と照合することで、対応する処理要求構造体70のインスタンスを一意に特定する。
ステップ273にて、ステップ271で読み出したデバイス状態の値を、ステップ272で取り出した処理要求構造体70のデバイス状態フィールド75に格納する。これにより、内部デバイスの処理完了後の状態が処理要求構造体70のインスタンス内に退避できたことになる。
ステップ274にて、処理要求構造体インスタンスの要求元OS識別子72を参照して要求元OSを判断する。
もし要求元OSがOS−A40であった場合、ステップ275にて、前記処理要求構造体70のインスタンスを引数として、待機タスク再開部(A)442を呼び出す。待機タスク再開部Aでの処理の流れは、図10のステップ231からステップ233で説明した通りである。この操作により、デバイス処理完了を待っていたOS−A40上の呼び出し元ユーザタスク(A0)43の動作が再開される。
もし要求元OSがOS−A以外であった場合、ステップ277にて、以下のパラメータを指定してデバイスドライバ間通信部(A)42を呼び出すことで、要求元OSのデバイスインタフェース部の待機タスク再開部を遠隔呼び出しする。
呼出先OS=要求元OS、呼出ルーチン識別子=要求元OSのタスク再開ルーチンの識別子(ステップ211で登録したもの)、呼出パラメータ=前記処理要求構造体インスタンス
この操作により、要求元OS上でデバイス処理完了を待っていた呼び出し元ユーザタスク(この説明の例ではユーザタスク(B0)53)の動作が再開される。
最後にステップ276にて、デバイス設定部451にあるデバイス設定ルーチンを呼び出し、次の処理を内部デバイス14に設定する。この部分の動作は、図13のステップ261からステップ268にて説明した通りである。
以上がOS−A側にあるデバイスインタフェース部45の動作の説明である。
次に、異なるOS上のデバイスドライバ間で直接通信を行う、デバイスドライバ間通信部(A)42、(B)52の動作の流れについて説明する。1組の通信は片方のデバイスドライバからもう片方のデバイスドライバへの単方向通信であり、同種のものを2組用いることで双方向通信を実現することができる。そこで以下では1組の単方向通信の動作について説明する。
デバイスドライバ間通信部(A)42、(B)52は、遠隔呼び出しのためのパラメータ、すなわち、通信相手のOSと、そのOS上で呼び出したい呼出ルーチン識別子、及びそのルーチンに渡す呼出パラメータ、の3つを指定して各OSのデバイスドライバから呼び出される。
図16を参照すると、デバイスドライバ間通信部(A)42、(B)52はまずステップ281にて、与えられたパラメータのうち、呼出ルーチン識別子と呼出パラメータの2つを用いて図5に示す呼出要求構造体80のインスタンスを作成する。要求元OS識別子フィールド81には、呼び出し元のOSを識別する値を設定する。
ステップ283では上記呼出要求構造体80のインスタンスを、呼び出す相手OSの呼出要求リスト(A)423又は(B)523に追加する。この呼出要求リストは相手OSからもアクセスされるため、排他制御のために直前のステップ282にてロックを獲得する。このロックはCPU自身が備える排他制御命令あるいはそれ相当のOSサービス関数で行う。
ステップ284にて、相手OSのデバイスドライバ間通信部が処理中か否かを判断する。これは相手側のデバイスドライバ通信部内の被呼出状態記憶部(図4の424ないし524)の処理中フラグを直接参照することで判断する。
もし相手のデバイスドライバ間通信部が処理中でなければ、ステップ285にて、相手OSへのコア間割り込みを発生させる。これはCPU自身のハードウェア操作命令ないしそれに相当するOSサービス関数により、コア間割り込み発生部13に対して相手OSが動作するCPUコアへのCPUコア間割り込みを要求することで行う。これにより相手のデバイスドライバ間通信部が呼出要求リスト523、523内に蓄積されている新規要求を処理し始める。これはすぐ後で説明する。
もし相手のデバイスドライバ間通信部が処理中であれば、ステップ283で呼出要求リスト423、523に追加した要求がやがて処理されるので、ステップ285は単純にスキップして次へ進む。
ステップ286にて、ステップ282で獲得したロックをアンロックし、排他制御区間を抜ける。
ステップ285で相手OSへのコア間割り込みを起こすと、相手OS側では、図15のステップ206で設定した被呼出処理部が呼び出される。この被呼出処理部の動作の流れを図17を参照して説明する。以下の被呼出処理部の説明においては、この相手OSすなわち被呼出側OSのことを「自OS」と呼ぶ。
被呼出処理部425、525は、ステップ292にて自OSの呼出要求リスト423、523を調べ、それが空であれば、ステップ297にて被呼出状態記憶部(図4の424ないし524)の処理中フラグをオフ(処理中でない)にして、被呼出処理部425、525全体の処理を終える。
もし呼出要求リスト423、523が空でなければ、ステップ293にて呼出要求リスト423、523の先頭から呼出要求構造体80のインスタンスを1つ取り出し、ステップ294にて被呼出状態記憶部(図4の424ないし524)の処理中フラグをオン(処理中)にしてから、ステップ296にて事前登録済みルーチンを呼び出す。
ここで呼出要求リスト(図4の423ないし523)は呼出元のデバイスドライバ間通信部でもアクセスする可能性があるため、ステップ292からステップ294およびステップ297をロック−アンロックによる排他制御によって保護する。このロックはCPU自身が備える排他制御命令あるいはそれ相当のOSサービス関数で行う。
再度ステップ296の説明に戻ると、ここでは、呼出要求構造体80の呼出ルーチン識別子フィールド82をキーとして自OS内の被呼出ルーチン登録表(図4の422ないし522)を検索することで、呼び出すべきルーチンを特定する。そして、呼出要求構造体80の呼出パラメータフィールド83に格納された値を前記ルーチンの引数として被呼出ルーチンの呼び出しを行う。
以上が、デバイスドライバ間通信部による処理の流れの説明である。
さらに理解を助けるために、各部の流れを通して示した図面を参照して、OS−A40上のタスクからのデバイスアクセス、OS−B50上のタスクからのデバイスアクセスの様子について説明する。
図18は、OS−A40上で実行されている2つのタスクすなわちユーザタスク(A0)とユーザタスク(A1)が、あるデバイスを共有アクセスしている様子を示している。図18において、上から下方向に時間が流れており、縦方向の細長い矩形はそのタスクや構成部分が動作している部分を示し、縦方向の細長い斜線ハッチング付きの矩形はその構成部分にデータ(インスタンス)が存在していることを示している。また、横方向の実線矢印はルーチンの呼出しや割り込みを示し、点線矢印はそれらの処理からの戻りを示している。
図18右上で、ユーザタスク(A0)がデバイスに対して処理「XXX」を要求している。この処理要求はOS−A40のタスクインタフェース部(A)44から直接デバイス設定部451に到達し、デバイス設定部451が内部デバイス14を設定して「XXX」の処理が開始される。その「XXX」処理が完了する前に、他のユーザタスク(A1)から処理「YYY」が要求されると、その要求はデバイス設定部451まで到達するが、内部デバイス14は「XXX」処理中のため、処理要求構造体70が要求待ちリスト46に入ったままになる。いずれの場合も、呼出元であるユーザタスク(A0)、ユーザタスク(A1)はOS−A40上で待ち状態にされる。
内部デバイス14が「XXX」処理を終えるとOS−A40に対し割り込みが入り、OS−A40の割り込みハンドラからデバイス割り込み処理部452が呼び出される。
デバイス割り込み処理部452は、内部デバイス14の「XXX」処理結果を処理中リスト47に格納してからOS−Aタスクインタフェース部(A)44の待機タスク再開部(A)442を呼び出す。
待機タスク再開部(A)442は、処理中リスト47を読み出して処理結果を取得し、待ち状態になっていたユーザタスクA0を再開させる。デバイス割り込み処理部452は、更に、デバイス設定部451を呼び出して、要求待ちリスト46で待機していた次の処理「YYY」を取り出し、内部デバイス14に設定する。
その後、内部デバイス14が「YYY」処理も終えると、上と同様にOS−A40に完了割り込みが入り、デバイス割り込み処理部452が処理結果を一旦処理中リスト47に格納してから、タスクインタフェース部(A)44の待機タスク再開部(A)442がユーザタスク(A1)を再開させる。
次に、図19を参照して、デバイス操作を行うOSとは別のOSからデバイスアクセス要求を出す場合を説明する。ここではOS−B50上の2つのタスクすなわちユーザタスク(B0)とユーザタスク(B1)が、OS−A40側を介してデバイスにアクセスする場合を例にとって説明する。
図19右上にて、ユーザタスク(B0)とユーザタスク(B1)が相次いでデバイスアクセス要求「XXX」及び「YYY」をそれぞれ発行している。これらの要求はOS−B50側のタスクインタフェース部(B)54で受理された後、デバイスドライバ間通信部(B)52及び(A)42を介してOS−A40側のデバイス設定部451に送り込まれる。
このとき、デバイスドライバ間通信部(B)52及び(A)42の内部で、コア間割り込み発生部13によるCPUコア間割り込みが使用され、OS−A40側の割り込みハンドラからデバイス設定部451が呼び出されている。デバイス設定部451が内部デバイス14に対して設定を行う部分は、図18の場合と同様である。
内部デバイス14が処理「XXX」を終えると、図18の場合と同様にOS−A40に割り込みが入り、デバイス割り込み処理部452がデバイス完了割込処理を行うが、デバイス割り込み処理部452は処理要求構造体の要求元OS識別子を見て呼出元タスクがOS−B50であることを知り、デバイスドライバ間通信部(A)42及び(B)52を用いてOS−B50側のタスクインタフェース部(B)54を呼び出す。
このとき、デバイスドライバ間通信(A)42及び(B)52の内部で、コア間割り込み発生部13によるCPUコア間割り込みが使用され、OS−B50側の割り込みハンドラから待機タスク再開部(B)542が呼び出されている。
タスクインタフェース部Bの待機タスク再開部(B)542がユーザタスクを再開する部分は、図18の場合と同様である。
(第1の実施の形態による効果)
第1の実施の形態によれば、クライアント側であるOS−B50上のタスクからのデバイスアクセス性能を向上させることができる。その理由は、OS間の通信においてデバイスドライバ間での高速な通信手段を用いること、及びデバイスドライバ内のデータ構造を両デバイスドライバ間で直接アクセスすることで、通信を介したデータのやりとりを減少させたためである。
また、デバイス共有のためのソフトウェア開発コストを低く抑えることができる。その理由は、ソフトウェア階層において最も低い階層にあり、少数の基本的な機能のみを実現するデバイスドライバの間で通信させる方式を用いたことで、OS間(クライアント-サーバ)通信に対応させるために改造を要する機能が最小限となるためである。
本実施の形態では、サーバ-クライアント(OS−A40とOS−B50)間のやりとりにおいて、別途プロキシタスクを介することなく、デバイスドライバ間通信を使ったカーネルレベルの通信を用いる。また、OS−B50(クライアント側)のデバイスドライバ51は、OS−A40(サーバ側)のデバイスドライバ41内の要求待ちリスト46および処理中リスト47に直接アクセスする。
一般に、ソフトウェア階層においては、より低い階層の機能を組み合わせたり、あるいはそのバリエーションを増やして使いやすくした形で、より高い階層の機能を構成するため、より高い階層になるほど多くの種類のAPIを備える傾向にある。逆に、最も低い層にあるデバイスドライバが備える機能は、一般に、オープン、クローズ、読み取り、書き込み、など少数の種類にとどまる。本実施の形態では、デバイスドライバという最も低い階層における通信を用いることで、デバイスドライバ間で通信させるための改造箇所を最小限にとどめることを可能にしている。
(第2の実施の形態)
次に、本発明の第2の実施の形態について説明する。
図20を参照すると、第2の実施の形態は、デバイスインタフェース部(A)45に新たに判定部453を備えることを特徴としている。それ以外の部分は上述した第1の実施の形態と同様である。
判定部453は、要求待ちリスト46に蓄積されている1つ以上の処理要求構造体70のインスタンスに対し、一定の規則に従って受理/却下の判定を下す機能、あるいは、一定の規則に従って次に処理すべきインスタンスを選定する機能を有する。
デバイス設定部451には、判定部453が受理と判定した処理要求構造体70のインスタンス、あるいは次に処理すべきと選定した処理要求構造体70のインスタンスが渡される。
具体的には、判定部453は、例えば、要求待ちリスト46中の処理要求構造体70のインスタンスのうち、あらかじめ指定されているOS(例えばOS−A40)以外のOSから要求されたインスタンスを破棄し、あるいは、あらかじめ指定されているOS−タスクの組(例えばOS−B50上のタスク#2とOS−B50上のタスク#4等)から要求されたインスタンスを破棄するようにすることが可能である。
このような判定部453を導入することにより、内部デバイスに対するOS−タスクレベルでのアクセス制御を行うことができるという、新たな効果が得られる。
また、他の具体例では、判定部453は、要求待ちリスト46中の処理要求構造体70のインスタンスを選択する際、直前の判定時に選択したインスタンスの要求元OSとは異なる要求元OS値をもつインスタンスを優先して選択する、あるいは、あらかじめ指定されたOS−タスクの組(例えばOS−B上のタスク#3)を要求元とするインスタンスが存在すれば必ずそれを選択するようにすることが可能である。
このような判定部453を導入することにより、内部デバイスへアクセス要求を出す各OSに対して公平なスケジューリングが可能になるという新たな効果が得られる。また、特定のOS−タスクに対して優先的なデバイスアクセス権を与えることができるという、デバイスリソーススケジューリングに関する新たな効果が得られる。
(第3の実施の形態)
次に、本発明の第3の実施の形態について説明する。
図21を参照すると、第3の実施の形態は、OS−A40内の要求待ちリスト46が異なる目的の複数のリストから構成されていることを特徴とする。それ以外の部分は第1の実施の形態と同様である。
この第3の実施の形態では、上記要求待ちリスト46の内部の各リストは、各OSに対応づけられることを特徴とする。
すなわち、リスト461はOS−A40に、リスト462はOS−B50に対応している。この例ではOSは2種類のみ示されているためリスト463は使用されない。
そして、各OSの要求解釈部(図21の441、541)は、それぞれのOSに対応したリストに処理要求構造体70のインスタンスを投入する。デバイス設定部451は、一定の規則、例えば各リストを順番に見て、処理要求構造体70のインスタンスを取り出し、処理していく。タスクインタフェース部とデバイスインタフェース部は要求待ちリスト46内の各リスト461〜463毎に排他制御用のロック−アンロック操作を行う。
上記第3の実施の形態によれば、要求待ちリストのロック−アンロックがOS毎に実施されるため、本発明の第1の実施の形態に比べ、ロック獲得時に衝突が発生して待たされる可能性が低くなる。つまり、デバイスアクセスを行う際の性能オーバヘッドを低減する効果が得られる。この効果は、内部デバイスに対して細かなアクセス要求を高頻度に行う場合に特に顕著である。
また、第3の実施の形態における変形例として、上記要求待ちリスト46の内部の各リストが、異なる処理優先度で対応付けられるように構成することも可能である。
すなわち、要求待ちリスト46のリスト461を最高優先度、リスト462を普通の優先度、リスト463を最低優先度に対応付ける。これにより、例えば、デバイス設定部451は、リスト461を2回参照した後、リスト462を1回参照し、最初に見つかった処理要求構造体70のインスタンスを取り出して処理するといった制御が可能となる。デバイス設定部451は、リスト461、462がいずれも空だった場合に限りリスト463を参照する。
上記実施の形態の変形例によれば、デバイス設定部451は参照回数ベースの簡単な規則に従ってリスト461〜463を参照することで内部デバイスへのアクセス優先度制御が行える。すなわち、内部デバイスに対するアクセス優先度制御を容易かつ低いCPUオーバヘッドで実現できるという効果が得られる。
なお、上記第2、第3の実施の形態を組み合わせて構成することも可能である。例えば、要求待ちリスト46内に、OS毎に専用のリストを設けた上で、判定部453にて要求元タスクを調べて要求受理/却下判定を行う、といった構成により、性能オーバヘッドを抑えつつOS−タスク毎のアクセス制御機能を搭載したOS間デバイス共有機構を構築することができる。
(第4の実施の形態)
次に、本発明の第4の実施の形態について説明する。
図22を参照すると、第4の実施の形態は、OS−A40にはタスクインタフェース部を備えず、デバイスインタフェース部のみを具備することを特徴とする。それ以外の部分は第1の実施の形態と同様である。
上記実施の形態によれば、OS−A40では内部デバイスをアクセスするユーザタスクは一切稼動せず、OS−A40は内部デバイスの制御や管理に専念することになる。
そのため本実施の形態は、内部デバイスのリアルタイム制御が行いやすいという効果をもたらす。この効果はOS−A40としてリアルタイム処理(実時間処理)に適したOS、例えばT−Kernel等のリアルタイムOSを使用する場合に特に顕著である。
更には、OS−A40としてリアルタイムOSを使用することに加え、OS−B50としてUNIXやWindowsのようなアプリケーション向けの高度な機能を有するOSを使用すれば、デバイス制御のためのリアルタイム性能とアプリケーション向けの豊富な機能を両立したシステムを、1つのマルチコアプロセッサ上で実現することができる、という効果も実現できる。
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
この出願は、2008年3月11日に出願された日本出願特願2008−060804を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、マルチコアプロセッサ上で複数OSを稼動させることで多様な動作要求を同時に満たす必要がある製品分野に適用可能である。例えば、無線ネットワーク処理とユーザ向けアプリケーション処理を行う携帯端末機器、放送受信と映像メディア処理とユーザインタフェース処理を行う情報家電機器、パワートレイン系とボデー系と情報メディア系の処理をあわせもつ車載機器、メカトロニクス制御と知能処理と対人インタフェース処理とを行うロボット搭載機器、などへの適用が想定される。

Claims (27)

  1. 複数のOSが動作するマルチプロセッサシステムにおいて、
    前記複数のOSが、OS間で共有するデバイスにアクセスするデバイスドライバを有し、
    前記デバイスドライバが、
    前記デバイスドライバの操作対象のデバイスとのアクセスを行うデバイスインタフェース部と、前記デバイスインタフェース部とOSカーネル層でのOS間通信を行い、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果の前記タスクへの返却を行うタスクインタフェース部の少なくとも一方を有する
    ことを特徴とするマルチプロセッサシステム。
  2. 前記デバイスドライバが、前記デバイスインタフェース部と前記タスクインタフェース部を備える第1のデバイスドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記デバイスドライバが、前記デバイスインタフェース部を備える第1のドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項1に記載のマルチプロセッサシステム。
  4. 前記第2のデバイスドライバのタスクインタフェース部が、前記第1のデバイスドライバのデバイスインタフェース部に前記第2のデバイスドライバの識別情報を含むデバイスアクセス要求を送り、
    前記第1のデバイスドライバのデバイスインタフェース部は、前記識別情報に基づいて、前記第2のデバイスドライバによる操作対象のデバイスアクセスを制御することを特徴とする請求項2に記載のマルチプロセッサシステム。
  5. 前記デバイスドライバが、前記タスクインタフェース部と前記デバイスインタフェース部の双方からアクセス可能な要求待ちリストと処理中リストを備え、
    前記要求待ちリストは、前記タスクインタフェース部から前記デバイスインタフェース部へのデバイスアクセス要求に関する情報を含む処理要求データを保持し、
    前記処理中リストは、前記デバイスインタフェース部が操作対象のデバイスを用いて実行中のデバイスアクセス要求に対する前記処理要求データを保持し、
    前記タスクインタフェース部は、OS上の要求元タスクからのデバイスアクセス要求に従って前記処理要求データを作成して前記要求待ちリストに追加したうえで、OS間通信によって前記デバイスインタフェース部に通知し、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データの1つを取り出して前記処理中リストに登録し、当該処理要求データの内容に従って操作対象のデバイスを設定して動作させ、
    前記デバイスの動作完了後に、前記デバイスインタフェース部は、前記デバイスの処理結果を前記処理中リスト内の処理要求データに格納したうえで、OS間通信によって当該処理の要求元の前記タスクインタフェース部に通知し、
    前記デバイスインタフェース部からの通知を受けた前記タスクインタフェース部は、前記処理中リストから前記処理要求データを取り出してその内容を参照し、要求元タスクに前記デバイスの処理結果を返却する
    ことを特徴とする請求項1から請求項4の何れかに記載のマルチプロセッサシステム。
  6. 前記OSが、前記OS間通信を行うデバイスドライバ間通信部を備え、
    前記デバイスドライバ間通信部は、被呼出ルーチンの登録部と、自OSの登録済み被呼出ルーチンを呼び出す被呼出処理部と、通信先OSの被呼出ルーチンに通知する呼出処理部とを有し、
    前記呼出処理部は、被呼出ルーチンの識別子と、被呼出ルーチンに渡す引数とを、OS間共有メモリ領域とプロセッサ間割り込み機構を用いて通信先OSの被呼出処理部に通知し、
    通信先OSは、プロセッサ間割り込みのハンドラの中で前記被呼出処理部を呼び出し、
    前記被呼出処理部は、前記呼出処理部から通知された前記被呼出ルーチン識別子とその引数に基づいて、登録済み被呼出ルーチンのうちの1つを呼び出すことを特徴とする請求項1から請求項5の何れかに記載のマルチプロセッサシステム。
  7. 前記デバイスインタフェース部は、前記タスクインタフェース部からのデバイスアクセス要求の優先度に基づいて、操作対象のデバイスへの複数のデバイスアクセス要求の順序を決定することを特徴とする請求項1から請求項6の何れかに記載のマルチプロセッサシステム。
  8. 前記デバイスインタフェース部は、前記第2のデバイスドライバが動作するOSの識別情報と、各デバイスアクセスの要求元タスクの識別情報のいずれかあるいは両方に基づいて、当該操作対象のデバイスへのアクセス許可を判断する判定部を有することを特徴とする請求項4に記載のマルチプロセッサシステム。
  9. 前記要求待ちリストが、前記複数のOSの各OS毎に対応付けられた複数のリストから構成されることを特徴とする請求項5に記載のマルチプロセッサシステム。
  10. 前記要求待ちリストが、異なる優先度を設定した複数のリストから構成され、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データを取り出す際、前記リストの優先度に基づいて前記処理要求データの取り出しを行うことを特徴とする請求項5に記載のマルチプロセッサシステム。
  11. 複数のOSが動作するマルチプロセッサシステムのOS間で共有するデバイスにアクセスする前記OSが備えるデバイスドライバであって、
    前記デバイスドライバの操作対象のデバイスとのアクセスを行うデバイスインタフェース部と、前記デバイスインタフェース部とOSカーネル層でのOS間通信を行い、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果の前記タスクへの返却を行うタスクインタフェース部の少なくとも一方を有することを特徴とするデバイスドライバ。
  12. 前記デバイスドライバが、前記デバイスインタフェース部と前記タスクインタフェース部を備える第1のデバイスドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項11に記載のデバイスドライバ。
  13. 前記デバイスドライバが、前記デバイスインタフェース部を備える第1のドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項11に記載のデバイスドライバ。
  14. 前記第2のデバイスドライバのタスクインタフェース部が、前記第1のデバイスドライバのデバイスインタフェース部に前記第2のデバイスドライバの識別情報を含むデバイスアクセス要求を送り、
    前記第1のデバイスドライバのデバイスインタフェース部は、前記識別情報に基づいて、前記第2のデバイスドライバによる操作対象のデバイスアクセスを制御することを特徴とする請求項12に記載のデバイスドライバ。
  15. 前記タスクインタフェース部と前記デバイスインタフェース部の双方からアクセス可能な要求待ちリストと処理中リストを備え、
    前記要求待ちリストは、前記タスクインタフェース部から前記デバイスインタフェース部へのデバイスアクセス要求に関する情報を含む処理要求データを保持し、
    前記処理中リストは、前記デバイスインタフェース部が操作対象のデバイスを用いて実行中のデバイスアクセス要求に対する前記処理要求データを保持し、
    前記タスクインタフェース部は、OS上の要求元タスクからのデバイスアクセス要求に従って前記処理要求データを作成して前記要求待ちリストに追加したうえで、OS間通信によって前記デバイスインタフェース部に通知し、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データの1つを取り出して前記処理中リストに登録し、当該処理要求データの内容に従って操作対象のデバイスを設定して動作させ、
    前記デバイスの動作完了後に、前記デバイスインタフェース部は、前記デバイスの処理結果を前記処理中リスト内の処理要求データに格納したうえで、OS間通信によって当該処理の要求元の前記タスクインタフェース部に通知し、
    前記デバイスインタフェース部からの通知を受けた前記タスクインタフェース部は、前記処理中リストから前記処理要求データを取り出してその内容を参照し、要求元タスクに前記デバイスの処理結果を返却する
    ことを特徴とする請求項11から請求項14の何れかに記載のデバイスドライバ。
  16. 前記デバイスインタフェース部は、前記タスクインタフェース部からのデバイスアクセス要求の優先度に基づいて、操作対象のデバイスへの複数のデバイスアクセス要求の順序を決定することを特徴とする請求項11から請求項15の何れかに記載のデバイスドライバ。
  17. 前記デバイスインタフェース部は、前記第2のデバイスドライバが動作するOSの識別情報と、各デバイスアクセスの要求元タスクの識別情報のいずれかあるいは両方に基づいて、当該操作対象のデバイスへのアクセス許可を判断する判定部を有することを特徴とする請求項14に記載のデバイスドライバ。
  18. 前記要求待ちリストが、前記複数のOSの各OS毎に対応付けられた複数のリストから構成されることを特徴とする請求項15に記載のデバイスドライバ。
  19. 前記要求待ちリストが、異なる優先度を設定した複数のリストから構成され、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データを取り出す際、前記リストの優先度に基づいて前記処理要求データの取り出しを行うことを特徴とする請求項15に記載のデバイスドライバ。
  20. OS間で共有するデバイスにアクセスするデバイスドライバを有する複数のOSが動作するマルチプロセッサシステムのOS間デバイス共有方法であって、
    前記デバイスドライバが、デバイスインタフェース部と、タスクインタフェース部の少なくとも一方を有し、
    前記タスクインタフェース部と前記デバイスインタフェース部とがOSカーネル層でのOS間通信を行い、
    前記デバイスインタフェース部が、前記デバイスドライバの操作対象のデバイスとのアクセスを行い、
    前記タスクインタフェース部が、各OS上のタスクからのデバイスアクセス要求の受理とデバイスアクセス結果の前記タスクへの返却を行う
    ことを特徴とするOS間デバイス共有方法。
  21. 前記デバイスドライバが、前記デバイスインタフェース部と前記タスクインタフェース部を備える第1のデバイスドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項20に記載のOS間デバイス共有方法。
  22. 前記デバイスドライバが、前記デバイスインタフェース部を備える第1のドライバと、前記タスクインタフェース部を備える第2のデバイスドライバの何れかであることを特徴とする請求項20に記載のOS間デバイス共有方法。
  23. 前記第2のデバイスドライバのタスクインタフェース部が、前記第1のデバイスドライバのデバイスインタフェース部に前記第2のデバイスドライバの識別情報を含むデバイスアクセス要求を送り、
    前記第1のデバイスドライバのデバイスインタフェース部は、前記識別情報に基づいて、前記第2のデバイスドライバによる操作対象のデバイスアクセスを制御することを特徴とする請求項21に記載のOS間デバイス共有方法。
  24. 前記デバイスドライバが、前記タスクインタフェース部と前記デバイスインタフェース部の双方からアクセス可能な要求待ちリストと処理中リストを備え、
    前記要求待ちリストは、前記タスクインタフェース部から前記デバイスインタフェース部へのデバイスアクセス要求に関する情報を含む処理要求データを保持し、
    前記処理中リストは、前記デバイスインタフェース部が操作対象のデバイスを用いて実行中のデバイスアクセス要求に対する前記処理要求データを保持し、
    前記タスクインタフェース部は、OS上の要求元タスクからのデバイスアクセス要求に従って前記処理要求データを作成して前記要求待ちリストに追加したうえで、OS間通信によって前記デバイスインタフェース部に通知し、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データの1つを取り出して前記処理中リストに登録し、当該処理要求データの内容に従って操作対象のデバイスを設定して動作させ、
    前記デバイスの動作完了後に、前記デバイスインタフェース部は、前記デバイスの処理結果を前記処理中リスト内の処理要求データに格納したうえで、OS間通信によって当該処理の要求元の前記タスクインタフェース部に通知し、
    前記デバイスインタフェース部からの通知を受けた前記タスクインタフェース部は、前記処理中リストから前記処理要求データを取り出してその内容を参照し、要求元タスクに前記デバイスの処理結果を返却する
    ことを特徴とする請求項20から請求項23の何れかに記載のOS間デバイス共有方法。
  25. 前記タスクインタフェースと前記デバイスインタフェースの間のOS間通信が、あらかじめ被呼出ルーチンを登録しておき、
    OS間通信時に、前記被呼出ルーチンの識別子と、被呼出ルーチンに渡す引数とをOS間共有メモリ領域に格納した上で、マルチプロセッサシステムのプロセッサ間割り込み機構を用いて通信先OSに通知し、
    前記通信先OSの割り込みハンドラは、前記プロセッサ間割り込みを受けて、OS間共有メモリ領域から被呼出ルーチンの識別子と被呼出ルーチンに渡す引数とを読み出し、それに基づいて登録済み被呼出ルーチンのうちの1つを呼び出すことを特徴とする請求項20から請求項24の何れかに記載のOS間デバイス共有方法。
  26. 前記デバイスインタフェース部は、前記第2のデバイスドライバが動作するOSの識別情報と、各デバイスアクセスの要求元タスクの識別情報のいずれかあるいは両方に基づいて、当該操作対象のデバイスへのアクセス許可を判断する判定部を有することを特徴とする請求項23に記載のOS間デバイス共有方法。
  27. 前記要求待ちリストが、異なる優先度を設定した複数のリストから構成され、
    前記デバイスインタフェース部は、前記要求待ちリストから前記処理要求データを取り出す際、前記リストの優先度に基づいて前記処理要求データの取り出しを行うことを特徴とする請求項24に記載のOS間デバイス共有方法。
JP2010502756A 2008-03-11 2009-02-24 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法 Active JP5516398B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010502756A JP5516398B2 (ja) 2008-03-11 2009-02-24 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008060804 2008-03-11
JP2008060804 2008-03-11
JP2010502756A JP5516398B2 (ja) 2008-03-11 2009-02-24 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
PCT/JP2009/053236 WO2009113381A1 (ja) 2008-03-11 2009-02-24 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法

Publications (2)

Publication Number Publication Date
JPWO2009113381A1 true JPWO2009113381A1 (ja) 2011-07-21
JP5516398B2 JP5516398B2 (ja) 2014-06-11

Family

ID=41065053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010502756A Active JP5516398B2 (ja) 2008-03-11 2009-02-24 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法

Country Status (3)

Country Link
US (1) US8661458B2 (ja)
JP (1) JP5516398B2 (ja)
WO (1) WO2009113381A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2587382A4 (en) 2010-06-22 2014-11-26 Fujitsu Ltd MULTIKERNPROCESSORSYSTEM, CONTROL PROGRAM AND CONTROL PROCEDURES
WO2012015431A1 (en) * 2010-07-30 2012-02-02 Hewlett-Packard Development Company, L.P. Computer system and method for sharing computer memory
US9582462B2 (en) * 2010-07-30 2017-02-28 Hewlett Packard Enterprise Development Lp Computer system and method for sharing computer memory
JP5652648B2 (ja) * 2010-10-06 2015-01-14 横河電機株式会社 外部デバイスアクセス装置およびコンピュータプログラム
US8504780B2 (en) 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
JP5842206B2 (ja) * 2012-01-27 2016-01-13 株式会社トプスシステムズ プロセッサ・コア、およびマルチコア・プロセッサ・システム
KR101956574B1 (ko) * 2012-02-24 2019-03-11 삼성전자주식회사 휴대용 단말기에서 호스트 디바이스의 운영 체제를 확인하기 위한 장치 및 방법
JP2017161954A (ja) * 2014-07-31 2017-09-14 三菱電機株式会社 データ処理システム及びデータ処理方法及びプログラム
WO2016043041A1 (ja) * 2014-09-19 2016-03-24 株式会社aLab デバイスプロキシ装置及びその制御方法
US20160139806A1 (en) * 2014-11-13 2016-05-19 Cavium, Inc. Independent Ordering Of Independent Transactions
US9569362B2 (en) 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
JP6615726B2 (ja) * 2016-09-16 2019-12-04 株式会社東芝 情報処理装置、情報処理方法及びプログラム
JP6876235B2 (ja) * 2016-09-27 2021-05-26 富士フイルムビジネスイノベーション株式会社 電子装置及び画像処理装置
CN113778705A (zh) * 2021-08-18 2021-12-10 北京自动化控制设备研究所 一种基于amp架构的多核通信方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0272461A (ja) 1988-09-07 1990-03-12 Hitachi Ltd 計算機システム
US5220653A (en) 1990-10-26 1993-06-15 International Business Machines Corporation Scheduling input/output operations in multitasking systems
JPH1021203A (ja) 1996-07-05 1998-01-23 Hitachi Ltd I/o装置のアクセス方法およびそのためのマルチプロセッサシステム
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
JP4705489B2 (ja) 2006-03-07 2011-06-22 富士通株式会社 デバイスドライバプログラムを記録したコンピュータ読取可能なポータブル記録媒体、記憶装置アクセス方法および記憶装置アクセスシステム
US7647446B2 (en) * 2006-10-03 2010-01-12 Silex Technology, Inc. Networked isochronous USB communication

Also Published As

Publication number Publication date
WO2009113381A1 (ja) 2009-09-17
US8661458B2 (en) 2014-02-25
JP5516398B2 (ja) 2014-06-11
US20100325329A1 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
EP2893444B1 (en) Quota-based resource management
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US7526673B2 (en) Parallel processing system by OS for single processors and parallel processing program
CN108595282A (zh) 一种高并发消息队列的实现方法
US20050229184A1 (en) Inter-processor communication system in parallel processing system by OS for single processors and program thereof
Pyarali et al. Evaluating and optimizing thread pool strategies for real-time CORBA
CN107797848B (zh) 进程调度方法、装置和主机设备
CN107562685B (zh) 一种基于延时补偿的多核处理器核心间数据交互的方法
US20140068165A1 (en) Splitting a real-time thread between the user and kernel space
US20140245313A1 (en) System and method for using a sequencer in a concurrent priority queue
EP1693743A2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
CN111506438A (zh) 一种共享资源访问方法及装置
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
JP2002024195A (ja) 並列処理装置、及び、並列処理方法
US9081630B2 (en) Hardware-implemented semaphore for resource access based on presence of a memory buffer in a memory pool
JPH0855092A (ja) プロセッサシステムとその制御方法
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
CN112749020A (zh) 一种物联网操作系统的微内核优化方法
KR101635295B1 (ko) 휴대용 컴퓨팅 디바이스에서의 자원 요청들의 트랜잭션으로의 배칭 및 이러한 트랜잭션의 포킹
US7013463B2 (en) Latch mechanism for concurrent computing environments
US20130042247A1 (en) Starvationless Kernel-Aware Distributed Scheduling of Software Licenses
CN117370042A (zh) 用于核间远程调用的方法、嵌入式多核系统和存储介质
KR19990053525A (ko) 실시간 시스템의 자원 공유 방법
CN116302583A (zh) 半导体设备及其控制方法和程序

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130807

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20131010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140317

R150 Certificate of patent or registration of utility model

Ref document number: 5516398

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350