JPH0916531A - データ伝送方法 - Google Patents

データ伝送方法

Info

Publication number
JPH0916531A
JPH0916531A JP8029970A JP2997096A JPH0916531A JP H0916531 A JPH0916531 A JP H0916531A JP 8029970 A JP8029970 A JP 8029970A JP 2997096 A JP2997096 A JP 2997096A JP H0916531 A JPH0916531 A JP H0916531A
Authority
JP
Japan
Prior art keywords
data
input queue
device driver
processor
pointer
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.)
Pending
Application number
JP8029970A
Other languages
English (en)
Inventor
Leonard R Fishler
レオナード・アール・フィシラー
Thomas M Clark
トーマス・エム・クラーク
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH0916531A publication Critical patent/JPH0916531A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operations
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 実行する処理よりもデータの複写に多くの時
間がかかり、データ複写が故障許容性の確保に重要でな
い場合に、一定の条件の下で複数プロセス間においてデ
ータを効率的に送受信する新たなシステムを提供する。 【解決手段】 並列処理、フォールトトレラント型のコ
ンピュータシステムであって、データは2つの方法によ
り単一CPU内の複数のプロセス間を伝送される。第1
の方法において、データは伝送の度に複写される。第2
の方法において、データは複写されず、共用メモリ待ち
行列システムを介して伝送される。第1の方法は故障許
容性及び線形拡張性を確保するのに用いられる。第2の
方法はプロセス間通信に要する時間を最短化する。共用
メモリ待ち行列システムの使用により、同一CPUで実
行するプロセスの垂直及び水平モジュール性が増大す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オペレーティング
システムに関し、特に、データ処理システムの信頼性や
効率を実質的に低下させることなく該オペレーティング
システムのモジュール性を高める方法に関する。
【0002】
【従来の技術】従来の多重プロセッサコンピュータ及び
大量並列処理(MPP)コンピュータは、同一の命令を
実行する、或は異なる命令を実行する多数のCPUを含
む。一定の状況下で、複数のプロセッサ間を伝送される
データは、1個のプロセッサから他のプロセッサに伝送
される際に複写される。例えば従来のフォールトトレラ
ント(Fault Tlerant:故障許容)型コンピュータにお
いて、データは、故障許容性、線形拡張性及び大量並列
処理能力を達成するためCPU間でバックアップされ、
チェックポイントされる。従って、フォールトトレラン
ト型コンピュータにおいて、データはCPU間で複写さ
れ、1個のCPUが故障した際、最小のデータ損で、或
はデータ損なしで、別のCPUで継続処理される。プロ
セッサレベルでのこのようなデータ複写は、システムの
頑強性を確保するのに用いる場合は極めて望ましい。し
かし、データ複写はシステムの動作を遅くする。
【0003】いくつかの従来システムにおいて、データ
は、データを1のプロセスから物理的に複写して他のプ
ロセスに送るメッセージシステムによってソフトウエア
プロセス間を伝送される。該他のプロセスは同一のCP
U或は異なるCPUで実行される。該メッセージングシ
ステムは、各メッセージを物理的に複写して受信側プロ
セスに1つずつ送信する。
【0004】複写したデータを例えばプロセッサ間のチ
ェックポイントどりに用いる場合、データを物理的に複
写することが望ましい。しかし、他の場合にあっては、
データは、複数のプロセス間を伝送されてそれらのプロ
セスを相互に通信可能にするだけである。この場合にお
いて、それらのプロセスが同一CPU内に存するとき
は、データを物理的に複写する必要はない。その時、受
信側プロセスがデータを実際に処理するよりも、プロセ
ス間でデータを複写して伝送するのに多くの時間がかか
る。同一CPUで実行するプロセス間でデータ伝送する
際、プロセス間を伝送されるデータを複写することは効
率的でない。
【0005】伝統的に、フォールトトレラント型コンピ
ュータは、いかなる条件下においてもプロセス若しくは
CPUによるメモリの共用を許容しない。複数のCPU
が共用するメモリは、1個のCPUがメモリへのアクセ
スを終了するまで他のCPUは待たなければならないた
め、障害となりやすい。さらに、メモリを複数ののCP
Uで共用していて1個のCPUが故障した場合、他のC
PUに対して非破壊メモリスペースを確保することがで
きない。従って、プロセスレベルでのデータの保全性を
確保するため、プロセス間でメッセージを複写すること
が従来から行われている。
【0006】一方、データを複写することによってその
データを複数のプロセスに伝送するに時間がかかる。実
行時間を短縮するため、プログラマは、いくつかの機能
を小さなプロセスに分割する代りに、これらの機能を包
含する大きなプロセスを書く傾向がある。より少ない数
の大きいプロセスを書くことにより、プログラマはプロ
セス間のデータ複写による時間遅延を避けようとする。
しかし、大プロセスは、小プロセスよりも書くこと並び
にメンテナンスが難しい。
【0007】
【発明が解決しようとする課題】本発明は、実行する処
理よりもデータの複写に多くの時間がかかり、データ複
写が故障許容性の確保に決定的でない場合に、一定の条
件の下で複数プロセス間でデータを効率的に送受信する
新たなシステムを提供することを目的とする。
【0008】
【課題を解決するための手段】上記目的を達成するた
め、この発明は、少なくとも第1及び第2のプロセッサ
を有するデータ処理システムにおいてプロセス間でデー
タを伝送する方法であって、前記第1プロセッサによっ
て実行される第1プロセスと第2プロセスの間で実行さ
れる機能を分割するステップと、共用メモリ部内に前記
第2プロセスのための入力待ち行列を作成するステップ
と、伝送するデータを指示するポインタを前記第2プロ
セスの前記入力待ち行列内に前記第1プロセスによって
格納するステップと、前記第2プロセスの前記入力待ち
行列に格納された前記ポインタが指示するデータを前記
第2プロセスによって消費するステップと、前記データ
処理システム内の故障許容性を確保するために前記第1
プロセッサから前記第2プロセッサへのデータをチェッ
クポイントするステップであって、チェックポイントす
る際に該データを複写するものとを具備し、これらのス
テップが前記データ処理システムによって実行されるも
のである。
【0009】また、この発明は、少なくとも第1及び第
2のプロセッサを有するデータ処理システムにおいて第
1プロセスとデバイスドライバとの間でデータを伝送す
る方法であって、共用メモリ部内に前記デバイスドライ
バのための入力待ち行列を作成するステップと、伝送さ
れるデータを指示するポインタを前記デバイスドライバ
の前記入力待ち行列内に前記第1プロセスによって格納
するステップと、前記デバイスドライバの前記入力待ち
行列に格納された前記ポインタが指示するデータを前記
デバイスドライバによって消費するステップと、前記デ
ータ処理システム内の故障許容性を確保するために前記
第1プロセッサから前記第2プロセッサへのデータをチ
ェックポイントするステップであって、チェックポイン
トする際に該データを複写するものとを具備し、これら
のステップが前記データ処理システムによって実行され
るものである。
【0010】さらに、この発明は、少なくとも第1及び
第2のプロセッサを有するデータ処理システムにおいて
プロセス間でデータを伝送する方法であって、前記第1
プロセッサによって実行される第1及び第2のプロセス
に、同レベルの2つの機能を割当てるステップと、前記
第1プロセッサによって実行されるとともに、前記第1
及び第2プロセスの機能よりも低いレベルの機能を実行
する前記第3プロセスのための入力待ち行列を共用メモ
リ部に作成するステップと、伝送されるデータを指示す
るポインタを前記第3プロセスの前記入力待ち行列内に
前記第1プロセスによって格納するステップと、前記第
3プロセスの前記入力待ち行列に格納された前記ポイン
タが指示するデータを前記第3プロセスによって消費す
るステップと、前記データ処理システムの故障許容性を
確保するために前記第1プロセッサから前記第2プロセ
ッサへのデータをチェックポイントするステップであっ
て、チェックポイントする際に該データを複写するもの
とを具備し、これらのステップが前記データ処理システ
ムによって実行されるものである。
【0011】さらに、この発明は、少なくとも第1及び
第2のプロセッサを有するデータ処理システムにおいて
プロセスとデバイスドライバとの間でデータを伝送する
方法であって、前記第1プロセッサによって実行される
第1及び第2のプロセスに、同レベルの2つの機能を割
当てるステップと、前記第1プロセッサによって実行さ
れるとともに、前記第1及び第2プロセスの機能よりも
低いレベルの機能を実行する前記デバイスドライバのた
めの入力待ち行列を共用メモリ部に作成するステップ
と、伝送されるデータを指示するポインタを前記デバイ
スドライバの前記入力待ち行列内に前記第1プロセスに
よって格納するステップと、前記デバイスドライバの前
記入力待ち行列に格納された前記ポインタが指示するデ
ータを前記デバイスドライバによって消費するステップ
と、前記データ処理システムの故障許容性を確保するた
め前記第1プロセッサから前記第2プロセッサへのデー
タをチェックポイントするステップであつて、チェック
ポイントする際に該データを複写するものとを具備し、
これらのステップが前記データ処理システムによって実
行されるものである。
【0012】さらに、この発明は、チャンネルハードウ
ェア要素に接続されたデータ処理システムにおいてOS
I−7層モデルに基づくプロトコルを用いてLANを通
じてデータを伝送する方法であって、クライアントアプ
リケーションプロセス及びネットワークプロトコルプロ
セスが前記データ処理システムの同一プロセッサによっ
て実行される場合に、伝送すべきデータを前記クライア
ントアプリケーションプロセスから前記ネットワークプ
ロトコルプロセスへ送信するステップと、ネットワーク
デバイスドライバが前記プロセッサで実行され、前記ネ
ットワークプロトコルプロセスの一部である場合に、共
用メモリ部に前記ネットワークデバイスドライバのため
の入力待ち行列を作成するステップと、伝送されるデー
タを指示するポインタを前記デバイスドライバの前記入
力待ち行列内に前記ネットワークプロトコルプロセスに
よって格納するステップと、前記ネットワークデバイス
ドライバの前記入力待ち行列に格納された前記ポインタ
が指示するデータを前記ネットワークデバイスドライバ
によって消費するステップと、前記ネットワークデバイ
スドライバを介して前記データを前記チャンネルハード
ウェア要素に送信するステップとを具備し、これらのス
テップが前記データ処理システムによって実行されるも
のである。
【0013】本発明は、故障許容性メッセージベースの
オペレーティングシステムにおけるオペレーティングシ
ステムのモジュール性を、その効率及び信頼性に実質的
な影響を与えることなく、向上する方法を提供する。本
発明において、複数のプロセスは異なる2つの方法によ
って相互に通信可能になる。第1の方法において、それ
らのプロセスは、データがプロセス間を伝送される度に
複写されるとき、従来のメッセージシステムを用いて互
いに通信できる。この第1の方法は、伝送されるデータ
の複写が望ましいか、または、少なくとも受入れ可能な
場合、故障許容性、線形拡張性及び並列処理能力に関連
する機能に主に用いられる。第2の方法において、プロ
セスは、メモリ待ち行列システム(しばしば“共用メモ
リ”、“待機I/O”或は“QIO”と略称される)を
用いることにより相互に通信することができる。この方
法は、主に、サーバ処理、LANプロトコル処理及び同
一プロセッサ上で実行するプロセス間のデータ伝送に用
いられる。
【0014】共用メモリ待ち行列システムは、同一プロ
セッサ上で実行するプロセスに、データ伝送の度にこれ
を複写することなくそのデータを伝送することを許容す
る。このプロセス間速度の増大は、プロセスの小機能モ
ジュールへの分割を可能とする。プロセスモジュール性
を“垂直方向”とすることができる。例えば、単一の大
プロセスをデータのプロセス間の伝送によって失われる
時間損失を最少としながらいくつかの小プロセスに分割
することができる。また、プロセスモジュール性を“水
平方向”にすることもできる。例えば、各種のクライア
ントプロセスは、共用メモリ待ち行列システムを介して
1個のサーバプロセスにアクセスすることができる。
【0015】
【発明の実施の形態】図1は、共用メモリ待ち行列シス
テムを包含するフォールトトレラント型、並列データ処
理システム100のブロック図である。図1は、ローカ
ルエリアネットワーク(LAN)105によって接続さ
れたノード102及びワークステーション104を含
む。ノード102は、プロセス間バス(IPB)109
を介して接続されたプロセッサ106及びプロセッサ1
08を含む。プロセス間バス109は、当業者に知られ
るタイプの冗長バスである。図1には示されていない
が、システム100は、フォールトトレラント型、並列
コンピュータシステムであり、そこで少なくとも1つの
プロセッサによってシステム内の他のプロセッサからの
データをチェックポイントする。このようなフォールト
トレラント型システムは、例えばKazmanらに付与された
米国特許No.4,817,091に記載されている。本発明は、そ
の発明思想の範囲から逸脱することなしに広範囲のハー
ドウエアに組込むことができる。
【0016】図1及び本明細書を通して示される“プロ
セス”は、メモリに記憶されてCPUで実行されるソフ
トウエアプログラム命令として実現するのが好ましい。
同様に、“ドライバ”も、メモリに記憶され、CPUに
よって実行されるソフトウエアプログラム命令として実
現するのが好ましい。プロセスがプロセッサ或はCPU
“内”という表現は、プロセスがCPUのメモリに記憶
されていてCPUで実行されることを意味する。
【0017】プロセッサ106は、CPU110及びメ
モリ112を含んでおり、ディスクコントローラ114
及びディスクドライバ116に接続されている。メモリ
112は、ソフトウエアプロセス120と、ソフトウエ
アディスクプロセス122と、以下で説明するキュー
(queue:待ち行列)125を含む共用メモリ部124と
を含む。プロセス120及び122は、QIOライブラ
リルーチン126を介して共用メモリ部124にアクセ
スする。共用メモリ部及びQIOライブラリ126を用
いて送られるメッセージは、データ複写されずに送信さ
れる。
【0018】プロセス120は、メッセージシステム
(MS)128及びファイルシステム(FS)130を
使用してプロセス間バス109と通信可能となってい
る。このメッセージシステム128は、例えばTandem P
art No.024507の第6章の“Introduction to Guardian
90 Internal Design”に記載されている。ファイルシス
テム128は、例えばTandem Part No.096042の“Guard
ian Programmer'S Guide”、Tandem Part No.026148お
よび026149の第1巻及び第2巻の“System Procedure C
alls Definition Manual”に記載されている。
【0019】ディスクプロセス122は、ソフトウエア
ディスクドライバ132及びディスクコントローラ11
4を介してデータをディスク116に送る。ノード10
2は、LANコントローラ140を介してLAN105
に接続されている。ノード102のプロセッサ108
は、CPU142及びメモリ144を含む。メモリ14
4は、QIOライブラリルーチン152を使用し共用メ
モリ部を介して通信するTCP/IPプロセス146及
びNFSディストリビュータプロセス148を含む。後
述するが、共用メモリ部150は、複数の待ち行列15
1を含む。
【0020】TCP/IPプロセス146は、上述のご
とく、メッセージシステム154及びファイルシステム
156を介してプロセス間バス109に接続されてい
る。TCP/IPプロセス146は、QIOライブラリ
152を経由しソフトウエアLANドライバ158を介
してLANコントローラ140と通信する。共用メモリ
部150を用いる通信においてデータ複写は行われない
が、メッセージシステム154及びファイルシステム1
56を使用する通信ではデータ複写が行われる。図1に
示されていないが、本発明は、単一プロセッサ内の複数
プロセス間の通信を実現するためメッセージシステム1
54及びファイルシステム156を使うように設計して
もよい。例えば、プロセス120は、ファイル及びメッ
セージシステムを用いてディスクプロセス122と通信
できるようにしてもよい。
【0021】このように、図1は、プロセス120、1
22間及びプロセス146、148間の通信に使用する
共用メモリ待ち行列システムを示す。また、図1は、共
用メモリ待ち行列システムを用いた、プロセス146と
LANドライバ158との間の通信をも示している。
【0022】図2は、図1のプロセッサ106のブロッ
ク図である。図2は、4種類のプロセス、即ち、複数の
ODBCサーバプロセス214、複数のディスクプロセ
ス122、複数のオブジェクトサーバプロセス218及
びDOMSディストリビュータプロセス220を示す。
“ODBC”は、“オープンデータベース連結性(Open
Database Connectivity)”を意味する。ODBCは、
マイクロソフト社(Microsoft Corp.)によって提供さ
れる遠隔SQLデータベースアクセスのための基準に適
合するデータベースクライアント/サーバ法である。
“DOMS”は、“分散オブジェクト管理システム(Di
stributed Object Management System)”を表し、CO
RBAを受容する分散オブジェクトマネジメントサーバ
である。プロセス214、122、218及び220
は、それぞれ対応するメッセージシステム230、ファ
イルシステム232、QIOソケットライブラリ234
及びQIOライブラリ236を有する(ライブラリ23
4及び236は図1のライブラリ126のサブセットで
ある)。ライブラリ234及び236の内容例が本発明
の理解に必要となる場合は、出願人は1994年7月2
0日発行の“QIQ Library Interface Specification”
(以下、参考文献Aという)及び1994年8月22日
発行の“ES for NonStop IPX/SPX”(以下、参考文献B
という)を提出する用意がある。
【0023】図2は、メッセージデータの複写を伴う、
プロセス間でメッセージを伝送する第1の方法を示す。
図2のメッセージ260は、ディスクプロセス122を
介しメッセージシステム230を経由してプロセッサ1
08のプロセスからプロセス間バス109に受信され
る。この種のメッセージは、単一プロセッサ内のいずれ
のプロセス間にも送信することができる。例えば、プロ
セスはいずれのプロセッサ上にも存在できるようにする
ことが望ましい。その場合、プロセスは、他のプロセッ
サ内のプロセス及び同一プロセッサ内のプロセスの両方
からメッセージを受信できなければならず、また、メッ
セージシステム230を介してメッセージを送受信しな
ければならない。
【0024】また、図2は、プロセス間でメッセージを
送信する第2の方法を示し、この方法においてメッセー
ジは共用メモリ待ち行列システムを介して送信される。
図2において、プロセス214は、他のプロセス(例え
ばプロセス122)からのメッセージ270を保持する
対応の待ち行列240を有する。このような待ち行列の
詳細は、後段で図9乃至図11に関連して説明する。プ
ロセス214、218及び220の各々は、対応の入力
待ち行列を有する。プロセス122は、他のプロセスか
ら送信されるメッセージ272を保持する対応のコマン
ド待ち行列250を有する。
【0025】図3は、図1のプロセッサ108を示すブ
ロック図である。図3は、5個のプロセス、即ち、OD
BCディストリビュータプロセス314、NFSディス
トリビュータプロセス316、FTPサーバプロセス3
18、DOMSディストリビュータプロセス320及び
TCP/IPプロトコルプロセス146を示す。“NF
S”は、サン・マイクロシステムズ社(Sun Microsyste
ms, Inc.)の遠隔ファイルサーバ基準である“ネットワ
ークファイルシステム(Netwprk File System)”を表
わす。FTPは、コンピュータシステム間のデータ伝送
に使用する通信プロトコルである“ファイル伝送プロト
コル”を指す。“TCP/IP”は、ノード間の通信に
用いる通信プロトコルである“伝送制御プロトコル/イ
ンターネットプロトコル”を表わす。
【0026】プロセス314、316、318及び32
0の各々は、対応するメッセージシステム330、ファ
イルシステム332、QIOソケットライブラリ334
及びQIOライブラリ336を有する(ライブラリ33
4及び336は図1のQIOライブラリ152のサブセ
ットである)。共用メモリ150にアクセスするのに使
用するライブラリ336の中味の例は上記参考文献Aに
示されており、また、ライブラリ334の内容例は上記
参考文献Bに示されており、本発明の理解に必要な場合
は、これらの文献の提出が可能である。
【0027】TCP/IPプロトコルプロセス146
は、共用メモリ150にアクセスするための対応QIO
ライブラリ336及び3個のI/Oドライバ338を有
する。ドライバ338は、図4及び図5に示される態様
で共用メモリ待ち行列システムを用いてTCP/IPプ
ロセス146とも通信する。
【0028】図3は、メッセージシステム330及びフ
ァイルシステム332を介して別のプロセッサ内のプロ
セスに送られるメッセージ260を示す。具体的に、図
3は、プロセス318からプロセス間バス109を通っ
て図2に示されるディスクプロセス122に送られるメ
ッセージ260を示す。このように、メッセージはメッ
セージングシステムを用いてプロセッサ106及び10
8のプロセス間を送信される。メッセージは、メッセー
ジングシステムを用いてプロセッサ108内のプロセス
間を送信することもできる。上述したように、メッセー
ジシステム330はメッセージを送る際にデータを複写
する。
【0029】また、図3は、単一プロセッサ内のプロセ
ス間及び単一プロセッサ内のプロセスとドライバとの間
でメッセージを送信する第2の方法を示す。この第2の
方法において、メッセージは共用メモリ待ち行列システ
ムを介して送信される。図3において、プロセス314
は、他のプロセス(例えばプロセス146)からのメッ
セージ370を保持する対応待ち行列340を有する。
待ち行列の詳細は、図9乃至図11に関連して後述す
る。プロセス314、316、318及び320の各々
は、対応の入力待ち行列を有する。プロセス146は、
たのプロセスによって送信されたメッセージ372を保
持する対応コマンド待ち行列350を有する。
【0030】図2及び図3は、共用メモリ待ち行列シス
テムの使用がプロセスの“水平モジュール性”及び“垂
直モジュール性”をどのように高めるかを示す。共用メ
モリ待ち行列システムを使用してプロセッサ又はドライ
バから、或はこれらに、データ送信する際にオーバヘッ
ドが殆どないので、プログラマは、図3及び図4に示さ
れるようなプロセスなどの個別プロセスに機能を簡単に
分解することができる。垂直モジュール性は、プロセス
122などの低レベルプロセスと連絡するプロセス21
4などの高レベルプロセスを包含する。水平モジュール
性は、プロセス146などの低レベルプロセスと連絡す
るプロセス314、316、318及び320などの複
数のプロセスを包含する。
【0031】図4及び図5は、共用メモリ待ち行列シス
テムにアクセスするドライバを介してLAN105を通
してメッセージを受信する2つのプロセスの例をそれぞ
れ示している。図4及び図5の各例において、一定のセ
ットアップ機能が予め実行されているものと仮定する。
例えば、各プロセスは、共用メモリ待ち行列システムに
自己“登録”し、モジュールID(詳しい内容は前出の
上記参考文献A中のQIOライブラリルーチンの“SM
_MODULE_ID_CREATE”に記載されてい
る)を受けている。これらのプロセスは、共用メモリ待
ち行列システムとの全ての対話に独自のモジュールID
を使用する。登録時、各プロセスは、共用メモリの何パ
ーセントを消費してよいかを定義するオプションを有す
る。好適実施例において、プロセスは、デフォルトとし
て共用メモリを100%まで消費できる。また、各プロ
セスは、共用メモリ待ち行列システムに“プールスペー
ス”を要求する。プールスペースは、制御バッファなど
のデータ構造を割当てるプロセスの“専用”スペースと
して使用する。
【0032】各プロセスは、例えば上記参考文献Aに示
されたようなSM_DR_REGISTERルーチン呼
出しによってLANドライバ158にも自己登録する。
このルーチンは、プロセスを指定LAN及び指定ポート
に登録する。また、このルーチンは、共用メモリ内にプ
ロセスのための入力待ち行列及び出力待ち行列を作成す
ると共に、作成された各待ち行列の待ち行列IDをプロ
セスに戻す。従って、図4において、TCP/IPプロ
セス402は、入力及び出力ARP待ち行列と、入力及
び出力IP待ち行列を得るため2回登録する。入力待ち
行列は、LAN105からメッセージを受信するのに用
いられる。図2及び図3に関連して前述したように、プ
ロセスは、例えば他のプロセス及び/又は他のドライバ
と通信するため他の入力及び出力待ち行列を有していて
もよい。これらの待ち行列は、上記参考文献AのSM_
Q_CREATEを用いて作成される。出力待ち行列
は、LAN105に送られるデータメッセージ記述子を
保持するのに用いられる。ドライバ/割り込み処理ルー
チン(割り込みハンドラ)158は、入力メッセージを
正しい入力待ち行列への経路にセットするのに用いるメ
モリに格納されたテーブルを維持する。ここでクライア
ントプロセスによるその入力待ち行列からのメッセージ
取り出しが可能となる。
【0033】図4は、TCP/IPプロセス402及び
TLAM IOP(Tandem LAN Access Method I/O Pro
cess)404の各々が、共用メッセージ待ち行列システ
ムを介してどのようにLAN105からメッセージを受
け取るかを示す。TCP/IPプロセス402は、周知
のTCP/IPプロトコルを使用するとともに、IP及
びARPの両メッセージを受信する。従って、TCP/
IPプロセス402は、2つの入力待ち行列及び2つの
出力待ち行列を有する。TLAM IOP 404は、
工業規格インターフェイスを用いてLANにアクセスす
る。TLAMIOP 404は、IEEE 802.2論
理リンク制御基準に準拠しており、タイプ1コネクショ
ンレスサービス及びMULTILAN NETBIOS
プロトコルをサポートする。“MULTILAN”は、
タンデム・コンピュータ社(Tandem Computers, Inc.)
の商標である。従って、TLAM IOP404は、各
種のLANに接続可能である。
【0034】ドライバ158は、LAN105からメッ
セージを受取る際、正しいプロセスのためそのメッセー
ジを入力待ち行列にセットし、その待ち行列のクリエー
タモジュールIDフィールド(図9参照)内で識別され
たプロセスを呼出す。従って、例えば、図4において、
入って来るメッセージは、TLAM入力待ち行列40
8、入力IP待ち行列414、或は、入力ARP待ち行
列416のいずれかにセットすればよい。ドライバ/イ
ンタラプトハンドラ158はメモリに格納されたテーブ
ルを参照し、入ってくるメッセージがの内容に応じてそ
のメッセージをどの待ち行列にセットするか、また、ど
のプロセスを呼出すかを決定する。
【0035】プロセスは、“QIOイベント”で呼出さ
れる。QIOイベントは、コンピュータのオペレーティ
ングシステムを用いて図12の(a)に示されるような
イベントマスクのQIOビットと、プロセスの待ち行列
が非空き状態であることを示すQIO補助マスク(図1
2の(b)参照)のビットを設定する。事象、即ち、イ
ベントが発生すると、オペレーティングシステムは受信
プロセスを呼出す。つまり、プロセスは待ち状態からレ
ディ(準備完了)状態に移行する。イベントマスク12
00がセットされたQIOビット1202を有する場
合、プロセスはQIO補助マスク1204をチェックす
る。“QUEU_NOT_EMPTY”ビット1206
がセットされるとき、プロセスは対応の待ち行列からの
データを消費する。(QIOイベントの例は、1994
年7月20日発行のQIQ Library Interface Specificat
ion中のQIQ Library External Specification(以下、
参考文献Cという)に掲載されており、この参考文献C
は本発明の理解に必要となる場合は提出可能である。)
【0036】プロセスは、例えば上記参考文献AのSM
_Q_GET_MSGを呼出すことによって入力待ち行
列からメッセージを消費する。このルーチンは、待ち行
列の最上端部からメッセージを得る。ドライバ158
は、リターン待ち行列ポインタ1022(図10参照)
がドライバのリターン待ち行列410を指示するように
入力待ち行列を設定する。従って、プロセスは、バッフ
ァを再使用すべくドライバ158に戻すため、例えば参
考文献AのSM_MD_RETURNを単に呼出すだけ
である。
【0037】図5は、TCP/IPプロセス402及び
TLAM IOP404が共用メッセージ待ち行列シス
テムを介してLAN105にメッセージをどのように送
信するかを示す。メッセージを送信するため、プロセス
は、例えば指定の出力待ち行列のPUTルーチンを呼出
す、参考文献AのSM_Q_PUT_MSGを呼出す。
こうして、メッセージが、ドライバによって定義された
出力待ち行列にセットされる。プロセスは、ドライバ1
58が送信されたメッセージを戻すようにリターン待ち
行列を表示するようにしてもよいが、必ずしもそうする
必要はない。このように、TLAM IOP404がS
M_Q_PUT_MSGを呼出すとき、送信されるメッ
セージはTLAM出力待ち行列406の“PUT”ルー
チンを呼出す。同様に、TCP/IP402がARPメ
ッセージのためのSM_Q_PUT_MSGを呼出すと
き、送信されるメッセージは出力ARP待ち行列418
の“PUT”ルーチンを呼出す。TCP/IP402が
IPメッセージのためのSM_Q_PUT_MSGを呼
出すとき、送信されるメッセージは出力IP待ち行列4
12の“PUT”ルーチンを呼出す。
【0038】好適な実施の形態において、ドライバ15
8は、メッセージを待ち行列にセットしないが、メッセ
ージをLAN105に送ってよいかどうかを調べる。そ
うである場合、ドライバ158はメッセージを送信す
る。そうでない場合、ドライバ158はメッセージをド
ライバの内部待ち行列にセットする。割り込みが発生す
ると、ドライバ158は、待ち行列を作っている出力メ
ッセージがあるかどうかをチェックする。そうである場
合、ドライバはその内部待ち行列からメッセージを取り
出して送信する。メッセージバッファは、待ち行列構造
中にリターン待ち行列が指定されなかった場合、バッフ
ァフリーリストにリターンする。
【0039】プロセスは、LAN105から断続したい
ときは、例えば上記参考文献AのSM_DR_DERE
GISTERを呼出す。このルーチンは、プロセスのた
めの入力及び出力待ち行列を取り出し、そのプロセスを
ドライバの内部ルーチンテーブルから削除する。
【0040】本発明の共用メモリ待ち行列システムは、
システム内のプロセスの内容及び構成を向上させ、ま
た、システム内をデータが移動するデータ伝送の効率を
高める。例えば、本発明は、TCP/IPを使いLAN
を通じてデータを送受信するのに使用するOSI−7層
通信プロトコルの効率的実行を許容する。以下の図6乃
至図8の説明は、共用メモリ待ち行列システムの使用が
フォールトトレラント型コンピュータシステムにおける
OSIの実行速度及び効率をどのように高めるかを示
す。
【0041】図6は、共用メモリ待ち行列を含まないシ
ステム内でイーサネット(Ethernet/Ene
t)LAN639とアプリケーションプロセス602と
の間のデータ伝送に用いるデータパスを示す。クライア
ントアプリケーションプロセス602は、ソケットライ
ブラリ604、ファイルシステム606及びメッセージ
システム608を含む。メッセージシステム608は、
同一プロセッサ内にあっても、別のプロセッサ内にあっ
てもよいTCP/IPプロトコルプロセス612にデー
タを送信する。同一プロセッサへの送信は、データを複
写してTCP/IPプロセス612のメッセージシステ
ム614に送信することによって実現される。別のプロ
セッサへの送信は、データを複写し、TCP/IPプロ
セス612に送られる前に再びデータが複写されるプロ
セス間バス109(図1参照)を通じて送信することに
よって実現される。
【0042】TCP/IPプロセス612は、メッセー
ジシステム614、ファイルシステム616及びTCP
/IPプロトコル手続き618を含む。メッセージシス
テム614及びファイルシステム616は、これらがプ
ロセス612への入力とプロセス626からの出力の両
方に使用されることを示すため2回図示されている。メ
ッセージシステム626は、同一プロセッサ内にあって
も、別のプロセッサ内にあってもよいTLAM I/O
プロセス626にデータを送信する。同一プロセッサへ
の伝送は、データを複写し、TLAM I/Oプロセス
626のメッセージシステム628に伝送することによ
って実現される。別のプロセッサへの伝送は、データを
複写し、TLAM I/Oプロセス626に送られる前
に再びデータの複写が行なわれるプロセス間バス109
を通じて伝送される。
【0043】TLAM I/Oプロセス626は、メッ
セージシステム628、TLAM手続き630、361
3ドライバ632及びカーネルI/Oドライバ634を
含む。ドライバ634は、イーサネットコントローラ6
38にデータを伝送するチャンネルハードウエア636
にデータを送る。イーサネットコントローラ638は、
データをLAN639に送信する。図6のデータパスの
欠点は、メッセージシステムを介して、例えば640、
650で、データを伝送の度に少なくとも1回は複写し
なければならないことである。
【0044】図7は、メッセージシステム及び共用メモ
リ待ち行列システムの両方を含む本発明の第1実施例に
おけるLAN639とアプリケーションプロセス702
との間のデータ伝送用データパスを示す。クライアント
アプリケーションプロセス702は、ソケットライブラ
リ704、ファイルシステム706及びメッセージシス
テム708を含む。メッセージシステム708は、同一
プロセッサ内にあっても、別のプロセッサ内にあっても
かまわないTCP/IPプロトコルプロセス712へ、
或はこれから、データを送信或は受信する。同一プロセ
ッサへの送信は、データを複写してTCP/IPプロセ
ス712のメッセージシステム714に伝送することに
よって実現する。別のプロセッサへの送信は、データを
複写し、プロセス間バス109を通じて伝送することに
よって達成され、データは後者においてプロセスに送ら
れる前に再度複写される。
【0045】TCP/IPプロセス712は、メッセー
ジシステム714及びTCP/IPプロトコル手続き7
18を含む。メッセージシステム714は、プロセス7
02からのデータの送受信に用いられる。図7におい
て、データ図5及び図6に示される要領でTCP/IP
プロセス712からドライバ742へ送受信される。従
って、本発明において、データがメッセージシステムを
通る回数は少なくなり、伝送時にデータが(750で示
す地点で)複写される回数は少なくなり、この結果、L
ANからのデータ送受信時の処理が効率的となり、時間
の節約となる。
【0046】図8は、本発明の第2実施例におけるLA
N639とアプリケーションプロセス802との間のデ
ータ伝送のためのデータパスを示す。クライアントアプ
リケーションプロセス802は、特殊ソケットライブラ
リ850及びQIOライブラリ840を含む。プロセス
802は、ソケットライブラリ及びQIOライブラリを
介してデータの待ち行列を作成する。共用メモリ待ち行
列システムを介してデータを受信するため、TCP/I
Pプロセス812は、プロセス802と同じプロセッサ
内になければならない。別のプロセッサへの、或は、こ
れからの伝送は、データを複写し、図1(図8には示さ
ず)のメッセージシステムを介しプロセス間バス109
を通じて伝送することによって実現する。同一プロセッ
サ内のプロセス間の伝送は、一般に、共用メモリ待ち行
列システムを介して実現する。
【0047】TCP/IPプロセス812は、そのQI
Oライブラリ840のルーチンを介して待ち行列システ
ムからメッセージを取り出す。従って、第2実施例にお
いて、データは、(チェックポイント及びバックアップ
目的などのために)これを複写するのが望ましい時及び
/又はデータがプロセス間バス109に送られる時だけ
メッセージシステムを通過する。この減少されたデータ
複写は、(例えば、LANを通じて大量のデータを送受
信するネットワークマルチメディアアプリケーションな
どの)メッセージ送受信する単一プロセッサ内のプロセ
ス間通信の実行効率を上げ、多大の時間節約をもたら
す。
【0048】図9は、共用メモリ部124、150内の
待ち行列のフォーマット900を示す。例えば図2の待
ち行列240は、図9のフォーマットを有する。待ち行
列は、記述子タイプ901、人間が読取り可能な待ち行
列名902、最初のメッセージ記述子(MD)ポインタ
904、最終のメッセージ記述子ポインタ906、メッ
セージ記述子カウント908、待ち行列属性910、ク
リエータモジュールID912、ユーザ定義“GET_
Q”機能940を指示するポインタ914、ユーザ定義
された“PUT_Q”機能950を指示するポインタ9
16及びユーザ定義された制御ブロック960を指示す
るポインタ918を含む。
【0049】記述子タイプ901は、このデータ構造が
待ち行列であることを表わす。待ち行列名902は、
“ODBC DIST IN Q”などの待ち行列名であ
る。第1メッセージ記述子(MD)ポインタ904は、
二重にリンクされたメッセージリスト920内の第1メ
ッセージの第1メッセージ記述子922を指示する。最
終メッセージ記述子ポインタ906は、二重リンクリス
ト920の最終のメッセージの最初のメッセージ記述子
924を指示する。メッセージのフォーマットは、図1
0及び図11に関連して以下で説明する。
【0050】メッセージ記述子カウント908は、二重
リンクリスト920のメッセージの数を保持する。待ち
行列属性910は、例えばデータが入力待ち行列にセッ
トされた(PUT)時にプロセスを呼出すべきかどうか
などの待ち行列の属性を含む。クリエータモジュールI
D912は、待ち行列を作成したモジュール(又はプロ
セス)のIDである。共用メモリシステムは、通常、待
ち行列が非空き状態になったときはいつでもこのプロセ
スを呼出す(図4及び図5参照)。ポインタ914は、
ユーザ定義“GET_Q”機能を指示する。GET_Q
機能は、待ち行列から情報を得るためGET機能が実行
されたときに常に実行される機能である。これは、QI
Oライブラリの標準“GET”機能に加えて、或はその
代りに、ユーザ定義機能の実行を許容する。例えば、待
ち行列がI/Oドライバのための入力待ち行列である場
合、ユーザ定義GET機能がドライバを介してI/O動
作を開始させてもよい。ドライバは、いくつかの未決定
のI/Oを追跡してもよく、GET(又はPUT)が実
行される際に常にその数を調節してもよい。別の例とし
て、GETは、待ち行列を作成したプロセスを介してハ
ウスキーピングルーチンを実行するようにしてもよい。
【0051】ポインタ916は、情報を待ち行列にセッ
トするためにPUT機能が実行されるとき常に実行され
るユーザ定義“PUT_Q”機能を指示する。標準“P
UT”機能に加えて、或はその代りに、ユーザ定義機能
の実行を許容する。例えば、LANドライバに関連する
待ち行列において、PUT_Q機能は、トランスポート
層ルーチンをしてLAN105に情報を出力せしめるよ
うにしてもよい。ポインタ918は、ユーザ定義制御ブ
ロック960を指示する。このブロックは、しばしばP
UT_Q及びGET_Q機能の一方又は両方が必要とす
る制御ブロックである。例えば、この制御ブロックは、
待ち行列システムに情報が送られる際に情報を出力する
ドライバのための制御ブロックであってもよい。
【0052】図10は、図9の二重リンクリスト920
に格納されたメッセージのフォーマットを示す。メッセ
ージは、リンクされたメッセージ記述子で構成されてい
る。(1つ又はそれ以上のリンクされたメッセージ記述
子で構成された)メッセージは、次いで、図9のリスト
920に示されるように一体にリンクされる。図10
は、メッセージ記述子922及び922’を示し、これ
らはリンクされたリスト中でポインタ1014及び10
14’によって合体されてメッセージを形成する。メッ
セージ記述子は、記述子タイプ1004、次メッセージ
記述子ポインタ1010、前メッセージ記述子ポインタ
1012、継続メッセージ記述子ポインタ1014、バ
ッファ記述子(BD)ポインタ1016、ユーザデータ
読出しポインタ1018、ユーザデータ書込みポインタ
1020及びリターン待ち行列ポインタ1022を含
む。
【0053】図10において、メッセージ記述子922
及び922’は単一メッセージを形成する。記述子タイ
プ1004は記述子がメッセージ記述子であることを示
す。次メッセージ記述子ポインタ1010は、二重リン
クされたリスト920に格納された次メッセージの最初
のメッセージ記述子を指示する。前メッセージ記述子ポ
インタ1012は、二重リンクされたリスト920に格
納された前メッセージの最初のメッセージ記述子を指示
する。継続メッセージ記述子ポインタ1014は、現行
メッセージの次メッセージ記述子を指示する。分散デー
タは、複数メッセージ記述子を必要とし、単一メッセー
ジは、異なるバッファロケーションのデータを指示する
複数メッセージ記述子で構成すればよい。バッファ記述
子(BD)ポインタ1016は、以下で図11に関連し
て詳細に説明するバッファ記述子1030を指示する。
バッファ記述子1030はデータバッファ1040を指
示する。
【0054】ユーザデータ読み出しポインタ1018
は、読み出しが開始される(又は停止した)データバッ
ファ1040内の位置1044を表示するバッファ10
40に対するポインタである。ユーザデータ書込みポイ
ンタ1020は、書込みが開始される(又は停止した)
データバッファ1040内の位置1046を表示するバ
ッファ1040を指示するポインタである。リターン待
ち行列ポインタ1022は、リターン待ち行列を指示す
る。メッセージが共用メモリ待ち行列システムを介して
戻された際(つまり、メッセージの処理が完了した
際)、戻されたメッセージは、リターン待ち行列が特定
されるとリターン待ち行列にセットされる。例えば、現
在のプロセスは送信されたメッセージの数をカウントす
る必要がある。メッセージは、待ち行列から取り出され
る際に“フリーメモリプール”に入れる代りに、現行プ
ロセスによる更なる処理のためリターン待ち行列にセッ
トされる。メッセージ中の他のメッセージ記述子は、第
2のリターン待ち行列ポインタ1022’を有していて
も、全く有していなくてもよい。これらの第2のリター
ン待ち行列ポインタは、主リターン待ち行列と関連する
個別のプロセスで処理される。
【0055】図11は、図10のメッセージの一部であ
るバッファ記述子1030のフォーマットを示す。バッ
ファ記述子1030は、記述子タイプ1102、データ
バッファベースポインタ1108、データバッファリミ
ットポインタ1110及びデータバッファ長1112を
含む。記述子タイプ1102は、記述子がバッファ記述
子であることを示す。データバッファベースポインタ1
108は、メモリ中のデータバッファ1140のベース
を指示する。データバッファリミットポインタ1110
は、データバッファ1140の端部を指示する。データ
バッファ長1108は、データバッファ1040の長さ
である。
【0056】前述したように、本発明は、プロセスの垂
直及び水平モジュール性の向上を実現する。図13の
(a)及び(b)は、本発明によって達成される垂直モ
ジュール性の例を示す。図13の(a)は、共用メモリ
待ち行列システム(QIO)を用いてTCP/IPプロ
セス146と通信する図3のNFSディストリビュータ
プロセス316の1例を示す。TCP/IPプロセス1
46は、共用メモリ待ち行列システムを用いてドライバ
/割込みハンドラ338(例えば図1のLANドライバ
158)の1つと通信する。上述のように、QIOを介
する通信は、これらのプロセスの各々を別々のプロセス
として実行すること及びデータ複写によって時間を失う
ことなく他のプロセスと通信することを許容する。この
ようなプロセスの垂直方向の分割は、モジュール性を改
善し、プロセスのメンテナンスを容易にする。図13の
(b)は、図2のディスクプロセス122とODBCサ
ーバプロセス214との間の垂直モジュール性を示す。
同じように、共用メモリ待ち行列システムの使用は、プ
ロセス間を通るデータを複写することで時間をロスする
ことなくそれらのプロセスを別個に実行することを許容
する。垂直モジュール性のその他の例が図示されてお
り、これら以外にも上記の説明から当業者が想到できる
ものがある。
【0058】図14の(a)、(b)及び(c)は、本
発明によって達成される水平モジュール性の例を示す。
図14の(a)は、図1のTCP/IPプロトコルプロ
セス146、IPX/SPXプロセス1302及びTL
AMプロセス404を示す。これらのプロセスの各々
は、異なる通信プロトコルを実行し、共用メモリ待ち行
列システムを使用してLANドライバ158と通信する
(図4及び図5参照)。本発明の好適実施例において、
LANドライバ158は、それ自体は別個のプロセスで
はないが、QIOライブラリ152にアクセスでき、従
って共用メモリ待ち行列システムにアクセス可能であ
る。
【0059】図14の(b)は、共用メモリ待ち行列シ
ステムを用いてIPX/SPXプロセス1302又はT
CP/IPプロセス146にアクセス可能なODBCデ
ィストリビュータプロセス314の例を示す。QIOの
使用は、プロセスの別個の書込み及び維持を容易にす
る。更に、プロセス間を伝送されるデータを複写するこ
とにより時間を無駄にすることがない。
【0060】図14の(c)は、FTPサーバプロセス
318、NFSディストリビュータプロセス316及び
ODBCディストリビュータプロセス314を示し、こ
れらの各々は、共用メモリ待ち行列システムを介してT
CP/IPプロセス146にアクセスできる。共用メモ
リ待ち行列システムの使用は、モジュール性を高め、プ
ロセスの維持を容易にするとともに、データを複写する
ことなくプロセス間を廻すことを可能とし、従ってシス
テムの実行速度が高まる。水平モジュール性の他の例が
図示されており、これら以外にも上記の説明から当業者
が想到できるものがある。以上説明した実施例において
は、本発明の様々な観点に従う実施例を実施するために
使用した数多くの特殊な技術が、発明を記述した、より
多くの一般的用語に関連づけられ、特定されている。し
かし、請求された発明の範囲は、そのような特殊なもの
にのみ限定されるものではないことは勿論である。
【0061】
【発明の効果】以上のように、この発明は、共用メモリ
待ち行列システムの使用により、単一プロセッサ内の複
数プロセス間の通信速度を高め、システム全体の処理速
度を高める、という優れた効果を奏する。また、共用メ
モリ待ち行列システムの使用により、プロセスを定義す
る際にプログラマが垂直モジュール性及び水平モジュー
ル性の実行から解放される。このように垂直及び水平モ
ジュール性が高められる結果、プロセス間及びプロセス
とドライバとの間のデータ伝送が効率的となる一方、プ
ロセスのメンテナンスが容易になる。更に、説明した実
施例は、伝送の間にデータが複写されるメッセージシス
テムを含む。このような複写作用は、例えば故障許容性
を確実とするため望ましいものである。プロセッサ間で
メッセージを複写することによって遅くなる実行速度
は、プロセッサ間伝送にチェックポイントすることによ
って得られる追加の信頼性が故、受入れ可能なものであ
る。
【図面の簡単な説明】
【図1】共用メモリ待ち行列システムを包含するフォー
ルトトレラント型、並列データ処理システムを示すブロ
ック図である。
【図2】図1の第1のプロセッサを示すブロック図であ
る。
【図3】図1の第2のプロセッサを示すブロック図であ
る。
【図4】TCP/IPプロセス及びTLAM IOP
(タンデムLANアクセス法I/Oプロセス)がそれぞ
れどのようにしてLANから共用メッセージ待ち行列シ
ステムを介してメッセージを受信するかを示す概略図で
ある。
【図5】TCP/IPプロセス及びTLAM IOPが
それぞれどのようにしてメッセージを共用メッセージ待
ち行列システムを介してLANに送信するかを示す概略
図である。
【図6】共用メモリ待ち行列システムを含まないシステ
ムのLANへの、アプリケーションプロセスから出力さ
れたデータのデータパスを示すブロック図である。
【図7】本発明の第1実施例のLANまでの、アプリケ
ーションプロセスから出力されたデータのデータパスを
示すブロック図である。
【図8】本発明の第2実施例のLANまでの、アプリケ
ーションプロセスから出力されたデータのデータパスを
示すブロック図ある。
【図9】共用メモリ待ち行列システムの待ち行列のフォ
ーマットを示すブロック図である。
【図10】図9の待ち行列に格納されたメッセージのフ
ォーマットを示すブロック図である。
【図11】図10のメッセージの一部であるバッファ記
述子のフォーマットを示すブロック図である。
【図12】QIOイベントの間に共用メモリ待ち行列シ
ステムが使用するマスクの概略図である。
【図13】本発明によって達成される垂直モジュール性
の例を示すブロック図である。
【図14】本発明によって達成される水平モジュール性
の例を示すブロック図である。
【符号の説明】
100 データ処理システム 102 ノード 104 ワークステーション 105 ローカルエリアネットワーク(LAN) 106 第1のプロセッサ 108 第2のプロセッサ 109 プロセス間バス(IPB) 110 CPU 112 メモリ 114 ディスクコントローラ 116 ディスクドライブ 120 ソフトウエアプロセス 122 ディスクプロセス 124 共用メモリ部 125 待ち行列 126 QIOライブラリルーチン 128 メッセージシステム(MS) 130 ファイルシステム(FS)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トーマス・エム・クラーク アメリカ合衆国 95065 カリフォルニア, サンタクルズ,グラナイト・クリード・ロ ード 1333

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも第1及び第2のプロセッサを
    有するデータ処理システムにおいてプロセス間でデータ
    を伝送する方法であって、 前記第1プロセッサによって実行される第1プロセスと
    第2プロセスの間で実行される機能を分割するステップ
    と、 共用メモリ部内に前記第2プロセスのための入力待ち行
    列を作成するステップと、 伝送するデータを指示するポインタを前記第2プロセス
    の前記入力待ち行列内に前記第1プロセスによって格納
    するステップと、 前記第2プロセスの前記入力待ち行列に格納された前記
    ポインタが指示するデータを前記第2プロセスによって
    消費するステップと、 前記データ処理システム内の故障許容性を確保するため
    に前記第1プロセッサから前記第2プロセッサへのデー
    タをチェックポイントするステップであって、チェック
    ポイントする際に該データを複写するものとを具備し、
    これらのステップが前記データ処理システムによって実
    行されるデータ伝送方法。
  2. 【請求項2】 前記チェックポイントするステップは、
    プロセッサ間バスを通じて前記第2プロセッサに送られ
    るデータをチェックポイントするステップを含む請求項
    1に記載のデータ伝送方法。
  3. 【請求項3】 第3のプロセスと第4のプロセスとの間
    で実行される第2の機能を分割するステップと、 前記第3プロセスと前記第4プロセスとの間でデータを
    伝送するステップであって、この伝送の際に該データの
    複写を行なうものとを更に含む請求項1に記載のデータ
    伝送方法。
  4. 【請求項4】 前記第3プロセスは前記第1プロセッサ
    で実行され、前記第4プロセスは前記第2プロセッサで
    実行される請求項3に記載のデータ伝送方法。
  5. 【請求項5】 前記第3プロセス及び前記第4プロセス
    は、両方とも前記第1プロセッサで実行される請求項3
    に記載のデータ伝送方法。
  6. 【請求項6】 前記機能を分割するステップは、前記第
    1プロセスと前記第2プロセスとの間で1個の機能を分
    割するステップを含み、前記第1プロセスは、前記第2
    プロセスよりも高位の前記機能の一部を実行し、もって
    垂直モジュール性を促進する請求項1に記載のデータ伝
    送方法。
  7. 【請求項7】 前記機能を分割するステップは、前記第
    1プロセスと前記第2プロセスとの間の1個の機能を分
    割するステップを含み、前記第1プロセスは、前記第2
    プロセスが実行するのと同レベルの前記機能の一部を実
    行し、もって水平モジュール性を促進する請求項1に記
    載のデータ伝送方法。
  8. 【請求項8】 前記共用メモリ部内の前記第1プロセス
    のための入力待ち行列を作成するステップと、 前記第2プロセスを介して前記第1プロセスの前記入力
    待ち行列に、伝送されるデータを指示するポインタを格
    納するステップと、 前記第1プロセスの前記入力待ち行列に格納された前記
    ポインタが指示するデータを前記第1プロセスを介して
    消費するステップとを更に含む請求項1に記載のデータ
    伝送方法。
  9. 【請求項9】 前記共用メモリ部内のデバイスドライバ
    のための入力待ち行列を作成するステップと、 前記第2プロセスを介して前記デバイスドライバの前記
    入力待ち行列に、伝送されるデータを指示するポインタ
    を格納するステップと、 前記デバイスドライバの前記入力待ち行列に格納された
    前記ポインタが指示するデータを前記デバイスドライバ
    を介して消費するステップとを更に含む請求項1に記載
    のデータ伝送方法。
  10. 【請求項10】 少なくとも第1及び第2のプロセッサ
    を有するデータ処理システムにおいて第1プロセスとデ
    バイスドライバとの間でデータを伝送する方法であっ
    て、 共用メモリ部内に前記デバイスドライバのための入力待
    ち行列を作成するステップと、 伝送されるデータを指示するポインタを前記デバイスド
    ライバの前記入力待ち行列内に前記第1プロセスによっ
    て格納するステップと、 前記デバイスドライバの前記入力待ち行列に格納された
    前記ポインタが指示するデータを前記デバイスドライバ
    によって消費するステップと、 前記データ処理システム内の故障許容性を確保するため
    に前記第1プロセッサから前記第2プロセッサへのデー
    タをチェックポイントするステップであって、チェック
    ポイントする際に該データを複写するものとを具備し、
    これらのステップが前記データ処理システムによって実
    行されるデータ伝送方法。
  11. 【請求項11】 前記共用メモリ部に前記第1プロセス
    のための入力待ち行列を作成するステップと、 伝送されるデータに指示されるポインタを前記デバイス
    ドライバを介して前記第1プロセスの前記入力待ち行列
    に格納するステップと、 前記第1プロセスの前記入力待ち行列に格納された前記
    ポインタが指示するデータを前記第1プロセスを介して
    消費するステップとを更に含む請求項10に記載のデー
    タ伝送方法。
  12. 【請求項12】 前記第1プロセスと前記デバイスドラ
    イバとの間の1個の機能を分割する最初のステップを含
    み、前記第1プロセスは、前記デバイスドライバが実行
    するものよりも高位の前記機能の一部を実行し、もって
    垂直モジュール性を促進する請求項10に記載のデータ
    伝送方法。
  13. 【請求項13】 前記共用メモリ部に前記デバイスドラ
    イバのための入力待ち行列を作成するステップと、 伝送されるデータを指示するポインタを第2プロセスを
    介して前記デバイスドライバの前記入力待ち行列内に格
    納するステップと、 前記デバイスドライバの前記入力待ち行列に格納された
    前記ポインタが指示するデータを前記デバイスドライバ
    によって消費するステップとを更に含む請求項10に記
    載のデータ伝送方法。
  14. 【請求項14】 前記共用メモリ部に第2プロセスのた
    めの入力待ち行列を作成するステップと、 伝送されるデータを指示するポインタを前記第2プロセ
    スの前記入力待ち行列内に前記第1プロセスによって格
    納するステップと、 前記第2プロセスの前記入力待ち行列に格納された前記
    ポインタが指示するデータを前記第2プロセスを介して
    消費するステップとを更に含む請求項10に記載のデー
    タ伝送方法。
  15. 【請求項15】 少なくとも第1及び第2のプロセッサ
    を有するデータ処理システムにおいてプロセス間でデー
    タを伝送する方法であって、 前記第1プロセッサによって実行される第1及び第2の
    プロセスに、同レベルの2つの機能を割当てるステップ
    と、 前記第1プロセッサによって実行されるとともに、前記
    第1及び第2プロセスの機能よりも低いレベルの機能を
    実行する前記第3プロセスのための入力待ち行列を共用
    メモリ部に作成するステップと、 伝送されるデータを指示するポインタを前記第3プロセ
    スの前記入力待ち行列内に前記第1プロセスによって格
    納するステップと、 前記第3プロセスの前記入力待ち行列に格納された前記
    ポインタが指示するデータを前記第3プロセスによって
    消費するステップと、 前記データ処理システムの故障許容性を確保するために
    前記第1プロセッサから前記第2プロセッサへのデータ
    をチェックポイントするステップであって、チェックポ
    イントする際に該データを複写するものとを具備し、こ
    れらのステップが前記データ処理システムによって実行
    されるデータ伝送方法。
  16. 【請求項16】 少なくとも第1及び第2のプロセッサ
    を有するデータ処理システムにおいてプロセスとデバイ
    スドライバとの間でデータを伝送する方法であって、 前記第1プロセッサによって実行される第1及び第2の
    プロセスに、同レベルの2つの機能を割当てるステップ
    と、 前記第1プロセッサによって実行されるとともに、前記
    第1及び第2プロセスの機能よりも低いレベルの機能を
    実行する前記デバイスドライバのための入力待ち行列を
    共用メモリ部に作成するステップと、 伝送されるデータを指示するポインタを前記デバイスド
    ライバの前記入力待ち行列内に前記第1プロセスによっ
    て格納するステップと、 前記デバイスドライバの前記入力待ち行列に格納された
    前記ポインタが指示するデータを前記デバイスドライバ
    によって消費するステップと、 前記データ処理システムの故障許容性を確保するため前
    記第1プロセッサから前記第2プロセッサへのデータを
    チェックポイントするステップであつて、チェックポイ
    ントする際に該データを複写するものとを具備し、これ
    らのステップが前記データ処理システムによって実行さ
    れるデータ伝送方法。
  17. 【請求項17】 チャンネルハードウェア要素に接続さ
    れたデータ処理システムにおいてOSI−7層モデルに
    基づくプロトコルを用いてLANを通じてデータを伝送
    する方法であって、 クライアントアプリケーションプロセス及びネットワー
    クプロトコルプロセスが前記データ処理システムの同一
    プロセッサによって実行される場合に、伝送すべきデー
    タを前記クライアントアプリケーションプロセスから前
    記ネットワークプロトコルプロセスへ送信するステップ
    と、 ネットワークデバイスドライバが前記プロセッサで実行
    され、前記ネットワークプロトコルプロセスの一部であ
    る場合に、共用メモリ部に前記ネットワークデバイスド
    ライバのための入力待ち行列を作成するステップと、 伝送されるデータを指示するポインタを前記デバイスド
    ライバの前記入力待ち行列内に前記ネットワークプロト
    コルプロセスによって格納するステップと、 前記ネットワークデバイスドライバの前記入力待ち行列
    に格納された前記ポインタが指示するデータを前記ネッ
    トワークデバイスドライバによって消費するステップ
    と、 前記ネットワークデバイスドライバを介して前記データ
    を前記チャンネルハードウェア要素に送信するステップ
    とを具備し、これらのステップが前記データ処理システ
    ムによって実行されるデータ伝送方法。
  18. 【請求項18】 前記クライアントアプリケーションプ
    ロセスから前記ネットワークプロトコルプロセスに前記
    データを送信するステップは、 前記共用メモリ部に前記ネットワークプロトコルプロセ
    スのための入力待ち行列を作成するステップと、 伝送されるデータを指示するポインタを前記ネットワー
    クプロトコルプロセスの前記入力待ち行列内に前記クラ
    イアントアプリケーションプロセスによって格納するス
    テップと、 前記ネットワークプロトコルプロセスの前記入力待ち行
    列に格納された前記ポインタが指示するデータを前記ネ
    ットワークプロトコルプロセスによって消費するステッ
    プとを含む請求項17に記載のデータ伝送方法。
JP8029970A 1995-01-23 1996-01-23 データ伝送方法 Pending JPH0916531A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US37730295A 1995-01-23 1995-01-23
US08/377,302 1995-01-23

Publications (1)

Publication Number Publication Date
JPH0916531A true JPH0916531A (ja) 1997-01-17

Family

ID=23488557

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8029970A Pending JPH0916531A (ja) 1995-01-23 1996-01-23 データ伝送方法

Country Status (4)

Country Link
US (1) US6032267A (ja)
EP (1) EP0725346A1 (ja)
JP (1) JPH0916531A (ja)
CA (1) CA2167633A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999056208A1 (fr) * 1998-04-27 1999-11-04 Fujitsu Limited Procede de controle de programme, machine de traitement des donnees et support d'enregistrement
CN1107647C (zh) * 1997-06-23 2003-05-07 户田工业株式会社 铁黄氢氧化物颗粒、其制备方法及其用途

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625641B1 (en) * 1996-06-03 2003-09-23 Sun Microsystems, Inc. Method and apparatus for providing client support without installation of server software
US6289023B1 (en) * 1997-09-25 2001-09-11 Hewlett-Packard Company Hardware checksum assist for network protocol stacks
US6289474B1 (en) * 1998-06-24 2001-09-11 Torrent Systems, Inc. Computer system and process for checkpointing operations on data in a computer system by partitioning the data
US6466993B1 (en) * 1998-11-05 2002-10-15 Compaq Information Technologies Group, L.P. Method and apparatus for performing transactions rendering between host processors and I/O devices using concurrent non-blocking queuing techniques and I/O bus write operations
US6801938B1 (en) * 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
US6944863B1 (en) * 2000-12-21 2005-09-13 Unisys Corporation Queue bank repository and method for sharing limited queue banks in memory
CN1312577C (zh) * 2003-05-07 2007-04-25 中兴通讯股份有限公司 一种实现通信过程零拷贝消息队列的方法
US7644050B2 (en) * 2004-12-02 2010-01-05 International Business Machines Corporation Method and apparatus for annotation-based behavior extensions
EP1724971B1 (en) * 2005-03-10 2008-07-09 Hewlett-Packard Development Company, L.P. Server system, server device, and method therefor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
DE3035705A1 (de) * 1980-09-22 1982-05-06 Henkel KGaA, 4000 Düsseldorf Spender
US4649473A (en) * 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols
US5093920A (en) * 1987-06-25 1992-03-03 At&T Bell Laboratories Programmable processing elements interconnected by a communication network including field operation unit for performing field operations
US5257374A (en) * 1987-11-18 1993-10-26 International Business Machines Corporation Bus flow control mechanism
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
EP0441087B1 (en) * 1990-02-08 1995-08-16 International Business Machines Corporation Checkpointing mechanism for fault-tolerant systems
EP0444376B1 (en) * 1990-02-27 1996-11-06 International Business Machines Corporation Mechanism for passing messages between several processors coupled through a shared intelligent memory
US5245704A (en) * 1990-03-22 1993-09-14 Square D Company System for sharing data between microprocessor based devices
US5271013A (en) * 1990-05-09 1993-12-14 Unisys Corporation Fault tolerant computer system
US5224215A (en) * 1990-07-13 1993-06-29 International Business Machines Corporation Message queue processing among cooperative processors having significant speed differences
US5327570A (en) * 1991-07-22 1994-07-05 International Business Machines Corporation Multiprocessor system having local write cache within each data processor node
EP0537401A1 (en) * 1991-10-16 1993-04-21 International Business Machines Corporation Method for exchanging messages between a shared memory and communication adapters using an efficient logical protocol
US5408649A (en) * 1993-04-30 1995-04-18 Quotron Systems, Inc. Distributed data access system including a plurality of database access processors with one-for-N redundancy
US5649092A (en) * 1994-04-21 1997-07-15 Unisys Corporation Fault tolerant apparatus and method for maintaining one or more queues that are shared by multiple processors

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1107647C (zh) * 1997-06-23 2003-05-07 户田工业株式会社 铁黄氢氧化物颗粒、其制备方法及其用途
WO1999056208A1 (fr) * 1998-04-27 1999-11-04 Fujitsu Limited Procede de controle de programme, machine de traitement des donnees et support d'enregistrement

Also Published As

Publication number Publication date
EP0725346A1 (en) 1996-08-07
CA2167633A1 (en) 1996-07-24
US6032267A (en) 2000-02-29

Similar Documents

Publication Publication Date Title
US7644413B2 (en) User mode device driver interface
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
US7233984B2 (en) Light weight file I/O over system area networks
EP0790562B1 (en) Computer system data I/O by reference among CPUs and I/O devices
US9996401B2 (en) Task processing method and virtual machine
US6874144B1 (en) System, method, and program for implementing priority inheritance in an operating system
EP1099164B1 (en) Method and program for processing administrative requests of a distributed network application executing in a clustered computing environment
US5652885A (en) Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control
US5991790A (en) Generation and delivery of signals in a two-level, multithreaded system
US5748959A (en) Method of conducting asynchronous distributed collective operations
US6163812A (en) Adaptive fast path architecture for commercial operating systems and information server applications
US6457064B1 (en) Method and apparatus for detecting input directed to a thread in a multi-threaded process
JPH09325944A (ja) I/oデバイス及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
US7140015B1 (en) Microkernel for real time applications
US6393503B2 (en) Efficient transfer of data and events between processes and between processes and drivers in a parallel, fault tolerant message based operating system
JPH103441A (ja) Cpu及び多重メモリ装置間のリファレンスによるコンピュータシステムデータi/o
JPH0916531A (ja) データ伝送方法
JPH09288654A (ja) 多重データソース及びシンク間のリファレンスによるコンピュータシステムデータi/o
EP0614139A2 (en) External procedure call for distributed processing environment
Roush The freeze free algorithm for process migration
US5062046A (en) Multiple processor system having a correspondence table for transferring processing control between instruction processors
JPH09288653A (ja) Cpu間のリファレンスによるコンピュータシステムデータi/o
CN100432944C (zh) 计算机系统
Whitcroft TimWilkinson NickWilliams PeterOsmon Systems Architecture Research Centre City University London England {trs| andy| tim| njw| p. osmon}@ cs. city. ac. uk
KR100253198B1 (ko) 유닉스 디바이스 드라이버 이식 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050621

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060110