JP3229237B2 - 通信プロセス・プール内の実行ユニットを動的に管理するための方法 - Google Patents

通信プロセス・プール内の実行ユニットを動的に管理するための方法

Info

Publication number
JP3229237B2
JP3229237B2 JP04071397A JP4071397A JP3229237B2 JP 3229237 B2 JP3229237 B2 JP 3229237B2 JP 04071397 A JP04071397 A JP 04071397A JP 4071397 A JP4071397 A JP 4071397A JP 3229237 B2 JP3229237 B2 JP 3229237B2
Authority
JP
Japan
Prior art keywords
client
execution units
request
server
pool
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.)
Expired - Fee Related
Application number
JP04071397A
Other languages
English (en)
Other versions
JPH09265409A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH09265409A publication Critical patent/JPH09265409A/ja
Application granted granted Critical
Publication of JP3229237B2 publication Critical patent/JP3229237B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータ・ネットワーク上の通信、ならびにこのような通信
を容易にするコンピュータ・プロトコルに関する。より
具体的には、本発明は、ネットワーク・プロトコル・ア
クセスのためのオブジェクト指向通信インタフェースに
関する。
【0002】
【従来の技術】非常に初期のコンピュータ・システム
は、ディスプレイやプリンタなどの周辺装置と入力装置
が接続された、スタンドアロン・プロセッサであった。
各コンピュータ・システムは独立しており、コンピュー
タ・システム間の通信はほとんど行われていなかった。
現在、ローカル・エリア・ネットワークや広域ネットワ
ークなどのコンピュータ・ネットワークでは、複数のコ
ンピュータ・システムを相互接続し、ネットワークに結
合された各種コンピュータ・システムから得られるデー
タ、サービス、資源の共有を含む様々な利益を達成する
ことが周知になっている。
【0003】ネットワークにより各種コンピュータ・シ
ステム間で通信するために、多くの通信プロトコルが開
発された。周知のネットワーク・プロトコルの例として
は、システム・ネットワーク体系(SNA)、伝送制御
プロトコル/インターネット・プロトコル(TCP/I
P)、ネットワーク基本入出力システム(NetBIO
S)、インターネット・パケット交換/順次パケット交
換(IPX/SPX)などがある。その他の通信プロト
コルも既知であり、広く使用され、ISO、IEEE、
その他の組織の様々な規格に記載されている。コンピュ
ータ・ネットワークの理解を容易にするため、ネットワ
ークの諸機能および関連ソフトウェアは一連の層として
記述されることが多い。ネットワークにより配布された
アプリケーションの1つのコピーとその配布されたアプ
リケーションの別のコピーとの間のデータ転送は、基礎
となる一連の通信層のサービスを使用することによって
行われる。一般に、1つのコンピュータ・システム内の
各層は、それぞれの層がそれぞれの対等層とやりとりす
るように、受信側コンピュータ・システム内に対応層を
備えている。
【0004】7層の開放型システム間相互接続(OS
I)モデルは、ネットワーク通信の説明のうち、最もよ
く知られたものの1つであるが、多くの通信実施態様で
は、1つまたは複数のOSI層を結合するかまたは省略
している。OSIの物理層は、ネットワークと直接やり
とりする最下層である。これは、物理的接続部を越えて
実際にビット・ストリームをネットワークに伝送するこ
とを含む。第2の層は、物理層ストリームの多重化とフ
レーム化を行ってメッセージにするデータリンク層であ
る。これは、エラー検出、同期情報、物理チャネル管理
ももたらす。第3の層は、ネットワークによる情報の経
路指定を制御するネットワーク層である。アドレス指
定、ネットワークの初期設定、切替え、セグメント化、
フォーマット化などのサービスはこの層に用意される。
データ送達の肯定応答は、この層で行われる場合もあれ
ば、データリンク層で行われる場合もある。
【0005】第4の層は、透過データの送達、多重化、
マッピングを制御するトランスポート層である。これよ
り下の諸層で行われる最善の努力とは対照的に、アプリ
ケーションが必要とすれば、信頼性の高い送達がこの層
で行われる。欠落データの再伝送、順不同で送達された
データの再配列、伝送エラーの訂正などのサービスは、
通常、この層で行われる。第5の層は、トランスポート
層からの情報を使用して、セッションと呼ばれるネット
ワーク内の2つのノード間の共通活動として個々のデー
タをグループ化するセッション層である。第6の層は、
セッション層と第7の層であるアプリケーション層との
インタフェースを含むプレゼンテーション層である。プ
レゼンテーション層は、セッション層の整合性を損なわ
ずに、アプリケーション層で使用するための情報を提供
する。また、プレゼンテーション層はデータの解釈とフ
ォーマットおよびコードの変換を行うのに対し、アプリ
ケーション層はユーザ・アプリケーション・インタフェ
ースと管理機能を提供する。
【0006】もう1つの周知のネットワーク規格はIE
EE規格である。IEEEモデルとOSIとの主な相違
点は、OSIの第2の層であるデータリンク層が媒体ア
クセス制御(MAC)副層と論理リンク制御(LCC)
副層という2つの副層に分割されることである。媒体ア
クセス制御は、その制御アクセスにおける通信媒体への
媒体アクセス接続を管理する。論理リンク制御は、関連
するデータ・リンク制御が指定するプロトコルをサポー
トするための状態マシンを提供する。
【0007】もう1つの周知の技術は、オブジェクトと
いうプログラミング・エンティティにデータとメソッド
をカプセル化するオブジェクト指向プログラミングであ
る。公用インタフェースにより所与のメソッドとデータ
を保護することにより、オブジェクト指向プログラム
は、各コンポーネントを他のコンポーネントに対する変
更から隔離しながら、最小限の再プログラミングによっ
て必要な諸機能を提供することができる。オブジェクト
指向の技術、概念、規則に関する詳細な背景情報につい
ては、グレイディー(Grady Booch)によるObject Orie
nted Design WithApplications (The Benjamin/Cummins
Publishing Company, 1990)およびB. マイヤー(Meye
r)によるObject Oriented Software Construction (Pr
entice Hall, 1988)などの参考文献を参照されたい。
【0008】マルチプロセッサ・ネットワークにおける
通信プロトコルの一般領域に対してオブジェクト指向技
術を応用しようという試みは、すでにいくつか行われて
きた。以下に示すように、それは依然として本発明の実
り多い分野である。
【0009】
【発明が解決しようとする課題】サーバ・システム内の
実行ユニットのプールを動的に管理するための方法、シ
ステム、製品であって、そのプールは、クライアント・
プロセスとサーバ・プロセスとの間の通信プロセス専用
である。通信プロセス・プール内に最小数および最大数
の実行ユニットが確立される。最小数の実行ユニット
は、典型的なクライアント・ロードをサポートするのに
必要な数である。最大数の実行ユニットは、サーバ・シ
ステムにとって過負荷にならずにピーク・クライアント
・ロードをサポートするための上限である。クライアン
トによるサービス要求がサーバ・システムによって受信
されると、いくつかの判定が行われる。まず、その要求
に実行ユニットを割り当てると、通信プロセス・プール
内の現行数の実行ユニットが最大数の実行ユニットを上
回ることになるかどうかが判定される。上回る場合、ク
ライアント要求は拒否される。次に、その要求に実行ユ
ニットを割り当てると、その要求を行うクライアント・
タスクに割り当てられた実行ユニットの数がクライアン
ト・タスク用の割り当てられた実行ユニットの数を上回
ることになるかどうかが判定される。上回る場合、クラ
イアント要求は拒否される。判定結果が否定であればク
ライアント要求が許可され、それにより、通信プロセス
・プール内の実行ユニットがクライアント要求に割り当
てられる。
【0010】
【課題を解決するための手段】システム・パフォーマン
スを改善するために通信プール内の未使用の実行ユニッ
トの数を増減する必要があるかどうかを判定するため、
未使用の実行ユニットの数を定期的に検討する。
【0011】上記の目的、特徴、および利点は、添付図
面と以下の説明を参照すれば、さらに容易に理解される
だろう。
【0012】
【発明の実施の形態】本発明は、複数通りのオペレーテ
ィング・システム下で様々なコンピュータまたは複数の
コンピュータの集合で動作することができる。このコン
ピュータは、たとえば、パーソナル・コンピュータ、ミ
ニ・コンピュータ、メインフレーム・コンピュータ、他
のコンピュータからなる分散ネットワークで動作するコ
ンピュータなどにすることができる。コンピュータの具
体的な選択はディスクやディスク記憶装置の要件によっ
てのみ制限されるが、IBMのPCシリーズのコンピュ
ータであれば、本発明に使用できるはずである。IBM
のPCシリーズのコンピュータの詳細については、IBM
PC 300/700 Series Hardware Maintenance, Publicatio
n No. S83G-7789-03およびUser's Handbook IBM PC Ser
ies 300 and 700,Publication No. S83G-9822-00等を参
照されたい。IBMのパーソナル・コンピュータが動作
可能なオペレーティング・システムの1つは、IBMの
OS/2 Warp 3.0である。IBMのOS/2 Warp 3.0オペレー
ティング・システムの詳細については、OS/2 Warp V3 T
echnical Library, Publication No. GB0F-7116-00等を
参照されたい。
【0013】代替実施例のコンピュータ・システムは、
AIX(TM)オペレーティング・システム上で動作す
るIBMのRISCシステム/6000(TM)系列の
コンピュータにすることもできる。RISCシステム/
6000の様々なモデルについては、RISC System/600
0, 7073 and 7016 POWERstation and POWERserver Hard
ware Technicalという参考文献(資料番号SA23-2644-0
0)など、IBMの多くの資料に記載されている。AI
Xオペレーティング・システムについては、General Co
ncepts and Procedure -- AIX for RISC System/6000
(資料番号SC23-2202-02)ならびにIBMのその他の資
料に記載されている。
【0014】図1には、システム・ユニット11と、キ
ーボード12と、マウス13と、ディスプレイ14とを
含むコンピュータ10がブロック図形式で示されてい
る。システム・ユニット11は、1つのシステム・バス
または複数のシステム・バス21を含み、このシステム
・バスには様々な構成要素が結合され、このシステム・
バスにより様々な構成要素間の通信が行われる。マイク
ロプロセッサ22は、システム・バス21に接続され、
同じくシステム・バス21に接続された読取り専用メモ
リ(ROM)23とランダム・アクセス・メモリ(RA
M)24によってサポートされている。IBMのPS/
2シリーズのコンピュータに搭載されているマイクロプ
ロセッサは、386または486マイクロプロセッサを
含む、インテルのマイクロプロセッサ・ファミリーの1
つである。しかし、68000、68020、6803
0マイクロプロセッサなどのモトローラのマイクロプロ
セッサ・ファミリーや、IBM製のPowerPCチッ
プまたはヒューレット・パッカード、サン、モトローラ
などが製造するものなどの様々な縮小命令セット・コン
ピュータ(RISC)マイクロプロセッサを含み、かつ
これらに限定されないマイクロプロセッサも、特定のコ
ンピュータで使用することができる。
【0015】ROM23は、数あるコードのうち、やり
とりや、ディスク・ドライブおよびキーボードなどの基
本的なハードウェア操作を制御する、基本入出力システ
ム(BIOS)を含んでいる。RAM24は、オペレー
ティング・システムとアプリケーション・プログラムの
ロード先になるメイン・メモリである。メモリ管理チッ
プ25は、システム・バス21に接続され、RAM24
とハード・ディスク・ドライブ26およびフロッピー・
ディスク・ドライブ27とのデータの受渡しを含む直接
メモリ・アクセス操作を制御する。同じくシステム・バ
ス21に結合されたCD−ROM32は、マルチメディ
ア・プログラムまたはプレゼンテーションなどの大量の
データを格納するために使用する。
【0016】このシステム・バス21には、様々な入出
力制御装置、すなわち、キーボード制御装置28、マウ
ス制御装置29、ビデオ制御装置30、オーディオ制御
装置31も接続されている。予想通り、キーボード制御
装置28はキーボード12用のハードウェア・インタフ
ェースになり、マウス制御装置29はマウス13用のハ
ードウェア・インタフェースになり、ビデオ制御装置3
0はディスプレイ14用のハードウェア・インタフェー
スであり、オーディオ制御装置31はスピーカ15用の
ハードウェア・インタフェースである。トークン・リン
グ・アダプタなどの入出力制御装置40により、ネット
ワーク46を介して同様に構成された他のデータ処理シ
ステムへの通信が可能になる。
【0017】本発明の好ましい実施態様の1つは、上記
のように一般的に構成された1つまたは複数のコンピュ
ータ・システムのランダム・アクセス・メモリ24に常
駐する複数の命令セット48〜52である。コンピュー
タ・システムが要求するまで、命令セットは、ハード・
ディスク・ドライブ26などの他のコンピュータ・メモ
リ、最終的にCD−ROM32で使用するための光ディ
スクなどの取外し可能メモリ、最終的にフロッピー・デ
ィスク・ドライブ27で使用するためのフロッピー・デ
ィスクに格納することができる。当業者であれば、この
命令セットを物理的に格納すると、それが電気的、磁気
的、または化学的に格納されている媒体が物理的に変化
し、その媒体上にコンピュータが読取り可能な情報が乗
ることを理解できるはずである。命令、記号、文字など
によって本発明を記述すると便利であるが、これらの表
現および同様の表現はいずれも適切な物理要素に関連付
けられている必要があることに留意されたい。さらに、
本発明は、比較や妥当性検査、あるいは人間の操作員に
関連しうる他の表現によって記述されることも多い。こ
こに記載するいずれの操作でも、本発明の一部を形成す
るような人間の操作員によるアクションは一切不要であ
り、この操作は電気信号を処理して他の電気信号を生成
するためのマシン操作である。
【0018】このワークステーションが統合されている
ネットワークは、ローカル・エリア・ネットワーク(L
AN)または広域ネットワーク(WAN)であり、後者
は他のノードまたは既知のコンピュータ・アーキテクチ
ャに基づいて動作するシステムのネットワークへのテレ
プロセシング接続を含む。いずれのノードでも、1つま
たは複数の処理システムが存在可能であり、それぞれの
処理システムはだいたい上記のように構成された単一ユ
ーザ・システムまたは複数ユーザ・システムにすること
ができる。これらの処理システムは、サービスを要求す
るか供給するかに応じて、クライアント・ワークステー
ションまたはサーバ・ワークステーションとして動作す
る。特定の実施態様では、本発明は、様々な通信プロト
コルのうちの1つまたは複数によって通信するネットワ
ークによって相互接続された複数のIBM互換ワークス
テーション上で動作する。ソフトウェア・アプリケーシ
ョンは、まとめてパッケージ化するか、個別のアプリケ
ーションとして販売することができる。ローカル・エリ
ア・ネットワークの簡単な説明は、ラリーE.ジョーダ
ン(Larry E. Jordan)およびブルース・チャーチル(B
ruce Churchill)著Communications and Networking Fo
r The IBM PC(Robert J. Brady発行、A Prentice Hall
Company 1983)等に記載されている。
【0019】好ましい実施例では、本発明は、オブジェ
クト指向プログラミング技法を使用してC++プログラ
ミング言語で実現される。C++はコンパイル済みの言
語である。プログラムは人間が読取り可能なスクリプト
で作成され、このスクリプトがコンパイラという他のプ
ログラムに供給され、マシンが読取り可能な数字コード
が生成されるが、このコードはコンピュータにロードし
てコンピュータが直接実行できるものである。C++言
語は、ソフトウェア開発者が他の開発者によって作成さ
れたプログラムを容易に使用できるようにするような所
与の特性を処理しながら、その破壊や不適正使用を防止
するためにプログラムの再使用を大幅に制御する。C+
+言語は周知のものなので、この言語について詳細に記
載した論文やテキストは数多く存在する。
【0020】当業者には既知のように、オブジェクト指
向プログラミング技法は、「オブジェクト」の定義、作
成、使用、破棄を含む。これらのオブジェクトは、デー
タ要素とルーチン、すなわちデータ要素を操作するメソ
ッドとを含む、ソフトウェア・エンティティである。デ
ータと関連メソッドは、ソフトウェアによってエンティ
ティとして扱われ、そのように作成し、使用し、削除す
ることができる。データと関数により、オブジェクト
は、データ要素により提示可能なその属性と、そのメソ
ッドにより表現可能なその挙動によって、実世界のエン
ティティをモデル化することができる。
【0021】オブジェクトの定義は、オブジェクトその
ものではないが、実際のオブジェクトを構築する方法を
コンパイラに指示するテンプレートとして機能する「ク
ラス」を作成することによって行う。たとえば、クラス
は、データを操作する関数に含まれるデータ変数とステ
ップの数とタイプを指定することができる。実際にはオ
ブジェクトは、対応するクラス定義と、オブジェクト作
成中に供給される引数などの追加情報とを使用してオブ
ジェクトを構築する、コンストラクタという特殊な関数
を使ってプログラム内に作成される。オブジェクトの破
棄は、デストラクタという特殊な関数によって行われ
る。
【0022】多くの利点は、オブジェクト指向プログラ
ミング技法の3つの基本的特性、すなわち、カプセル
化、多様性、継承から発生している。オブジェクトは、
内部データ構造および内部関数の全部または一部を隠
す、すなわち、カプセル化するために設計することがで
きる。より具体的には、プログラム設計時にプログラム
開発者は、データ変数の全部または一部と関連メソッド
の全部または一部を「私用」すなわちそのオブジェクト
のみが使用するものと見なしてオブジェクトを定義する
ことができる。他のデータまたはメソッドは、「公用」
すなわち他のプログラムが使用可能なものであると宣言
することができる。他のプログラムによる私用変数およ
びメソッドへのアクセスは、そのオブジェクトの私用デ
ータにアクセスする公用メソッドを定義することによっ
て制御することができる。この公用メソッドは、私用デ
ータと外部プログラムとのインタフェースを形成する。
私用変数に直接アクセスするプログラム・コードを作成
しようと試みると、コンパイラは、プログラムのコンパ
イル時にエラーを発生する。このエラーによって、コン
パイル・プロセスが停止し、プログラムが実行できなく
なる。
【0023】多様性とは、全体的なフォーマットが同じ
であるが別々のデータで機能する複数のオブジェクトお
よび関数が、別々に機能して一定の結果を生み出せるよ
うにするものである。たとえば、加算メソッドを変数A
プラス変数B(A+B)として定義することができる。
AとBが数字、文字、またはドルとセントであっても、
これと同じフォーマットを使用することができる。しか
し、この加算を実行する実際のプログラム・コードは、
AとBを構成する変数のタイプに応じて、大幅に異なっ
てくる可能性がある。したがって、変数のタイプ(数
字、文字、ドル)ごとに1つずつ、3通りのメソッド定
義を作成することができる。メソッドの定義後、プログ
ラムはその共通フォーマット(A+B)によってその加
算メソッドをあとで参照することができ、コンパイル時
にC++コンパイラは、その変数タイプを検査すること
によって3つのメソッドのいずれを使用すべきかを判定
する。その後、コンパイラは適切な関数コードを代入す
る。
【0024】オブジェクト指向プログラミングの第3の
特性は、プログラム開発者が既存のプログラムを再使用
できるようにする継承である。継承により、ソフトウェ
ア開発者は、クラスと、クラス階層によって関連付けら
れるようにそのクラスからあとで作成されるオブジェク
トとを定義することができる。具体的には、クラスは、
他の基本クラスのサブクラスと呼ぶこともできる。サブ
クラスは、その基本クラスの公用関数がサブクラスに含
まれている場合のように、その公用関数のすべてを「継
承」し、そのすべてにアクセスすることができる。ま
た、サブクラスは、同じ形式の新しい関数を定義するこ
とによって、継承した関数の一部または全部を指定変更
したり、修正することもできる。
【0025】他のクラスの機能性を借用する新しいサブ
クラスを作成すると、ソフトウェア開発者は、その特定
のニーズに合うように既存のコードを容易にカストマイ
ズすることができる。
【0026】オブジェクト指向プログラミングにより、
他のプログラミングの概念が大幅に改善されるが、特に
修正に使用可能な既存のソフトウェア・プログラムがま
ったくない場合には、依然としてプログラム開発には相
当な時間と労力が必要になる。その結果、いずれも特定
の環境で一般に検出されるタスクの実行向けの1組のオ
ブジェクトと追加の雑ルーチンを作成するために、1組
の事前定義相互接続済みクラスが用意されていることが
ある。このような事前定義クラスとライブラリは、通
常、「フレームワーク」と呼ばれ、本質的に作業アプリ
ケーション用の事前製作構造を提供する。
【0027】たとえば、ユーザ・インタフェース用のフ
レームワークは、ウィンドウ、スクロール・バー、メニ
ューなどを作成する1組の事前定義グラフィック・イン
タフェース・オブジェクトを提供し、これらのグラフィ
ック・インタフェース・オブジェクト用のサポートと
「デフォルト」挙動を提供する可能性がある。多くのフ
レームワークはオブジェクト指向技法に基づいているの
で、事前定義クラスを基本クラスとして使用することが
でき、組込みデフォルト挙動を開発者定義サブクラスが
継承し、開発者がそのフレームワークを拡張し、特定の
専門分野でカストマイズ済みの解決策を作成できるよう
に修正または指定変更することができる。プログラマは
元のプログラムを変更せず、むしろ元のプログラムの諸
機能を拡張するので、このオブジェクト指向手法は従来
のプログラミングより大幅に優れている。さらに、この
フレームワークは体系的なガイダンスとモデル化を提供
し、同時に、開発者は問題定義域に固有の特定のアクシ
ョンを自由に供給できるようになる。
【0028】以下に記載する本発明では、コンピュータ
・ネットワーク内の様々なコンピュータ・システムのア
プリケーション用のネットワーク・サービスを提供する
ためにネットワーキング・フレームワークを提供する。
【0029】プロトコル・インタフェース・モデル ここでは、オブジェクト指向のプロトコル・インタフェ
ース・モデルおよび機構について説明する。このインタ
フェースの一般的な特徴により、OSIネットワーク・
モデルのすべての層の開発が可能になる。したがって、
すべてのネットワーク層は同様の構文になり、その意味
は特定の層の仕様によって定義される。すなわち、OS
Iネットワーク・モデル内の各種の層を実現するオブジ
ェクトは構文上は同様であるが、そのインプリメンテー
ションは特定の層の責任に応じて異なる可能性がある。
さらに、TCP/IPなどの特定のプロトコル用のそれ
ぞれの層を実現するオブジェクトは、NetBIOSな
どの別のプロトコルの同様の層とは、機能およびインプ
リメンテーションの点で異なる可能性がある。というの
は、2つのプロトコルではそれぞれの層の責任が異なる
からである。このモデルは、通信端点を定義し、端点を
再使用し、ネットワーク事象を監視するための機構も提
供する。これは、オブジェクト指向モデルなので、コー
ドの再使用性、保守容易性、クライアント・アプリケー
ションに影響せずにインプリメンテーションを更新する
能力など、オブジェクト指向インプリメンテーションの
特徴をすべて継承している。
【0030】1.通信端点の作成:通信端点の作成は、
ネットワーク定義オブジェクトにより容易になってい
る。各ネットワーク定義オブジェクトは、クライアント
・インタフェースの定義を含む。これは、クライアント
・プログラムがアクセスを必要とすると思われる各種タ
イプのオブジェクトの抽象概念である。通信端点は、ネ
ットワーク定義クラスから派生したTAccessDefinition
オブジェクトである。
【0031】図2は、ネットワーク定義オブジェクトの
クラス階層を示している。TNetworkDefinitionクラス1
00は、端点をインスタンス化するためのメソッドInst
antiateDefinitionと、通信端点を破棄するためのメソ
ッドDeinstantiationDefinitionをそれぞれ含んでい
る。TNetworkDefinitionの新しいインスタンスを構築す
るためのメソッドまたは特定のクラス・オブジェクトを
破棄するためのメソッドも用意されているが、これらの
メソッドはすべてのクラスに共通なので、以下の説明で
は繰り返さないことにする。
【0032】TAccessDefinitionオブジェクト101
は、特定のプロトコル・タイプとその諸層を定義するプ
ロトコル・インタフェース・オブジェクトを含んでい
る。TAccessDefinitionオブジェクト101は、通信端
点のハンドルとして機能する。さらに、TAccessDefinit
ionオブジェクト101は、その親であるTNetworkDefin
itionから継承したメソッドに加え、すでに追加されて
いるものの上にアクセス定義へのインタフェース層を加
えるためのメソッドAddToTopと、一番下にすでに追加さ
れているものにAccessDefinitionへのインタフェース層
を加えるためのメソッドAddToBottomと、最も高いプロ
トコル層インタフェースを獲得するためのメソッドGetT
opOfStackも含んでいる。TEventDefinitionクラス10
3は、ネットワーク事象を監視するために使用する。TE
ventDefinitionクラス103については、以下のNetwor
kEventの項でより詳細に説明する。
【0033】2.ネットワーク・アドレス・クラス TNetworkAddressクラス111は、すべてのプロトコル
・アドレス・クラスとハードウェア・アドレス・クラス
を定義するために使用する基本クラスである。図3は、
プロトコル・アドレス・クラスのクラス階層を示してい
る。TNetworkAddressクラス111は、アドレスのタイ
プをテストするためのメソッドIsOfAddressTypeと、グ
ループ・アドレスかどうかをテストするためのメソッド
IsGroupと、同報アドレスかどうかをテストするための
メソッドIsBroadCastと、マルチキャスト・アドレスか
どうかをテストするためのメソッドIsMulticastと、ヌ
ル・アドレスかどうかをテストするためのメソッドIsNu
llAddressとを含んでいる。このクラスは、アドレスの
ワイヤ長を獲得するためのメソッドGetWireLengthと、
アドレスをヘッダにフォーマット化するためのメソッド
AddressToWireと、ヘッダからアドレスを獲得するため
のメソッドWireToAddressも含んでいる。ストリームが
端点に着信するのか、それともストリームが端点から発
信するのかを判定するための演算子も、このクラスの一
部である。各クラスに固有のポインタを獲得するための
メソッドGetClassIdentifierは、このクラスによって提
供される。
【0034】TProtocolAddressクラス・オブジェクトの
インスタンスは、プロトコル・アドレスを渡すことがで
きるように、通信端点として機能する。TProtocolAddre
ssオブジェクト113は、同報アドレスを獲得するため
のメソッドBroadCastAddressと、ヌル・アドレスを獲得
するためのメソッドNullAddressとを加える。THardware
Addressオブジェクト115のインスタンスは、必要に
応じてアプリケーションにハードウェア・アドレスを渡
すものである。同様に、THardwareAddressオブジェクト
115は、同報アドレスを獲得するためのメソッドBroa
dCastAddressと、ヌル・アドレスを獲得するためのメソ
ッドNullAddressとを加える。また、機能アドレスかど
うかをテストするためのメソッドIsFunctionalも加え
る。TIEEE8023Addressクラスは、IEEEE802.3
というアドレス指定規則に応じてハードウェア・クラス
・アドレスを変更したものである。さらに、これは、グ
ループ・アドレスかどうかをテストするためのメソッド
IsGroupと、グループ・アドレスに設定するためのメソ
ッドSetGroupと、グループ・アドレスをリセットするた
めのメソッドClearGroupとを加える。他のメソッドとし
ては、同報アドレスを獲得するBroadCastAddress、マル
チキャスト・アドレスかどうかをテストするIsMulticas
t、ヌル・アドレスを獲得するNullAddress、標準入力か
らアドレスを獲得するCanonicalAddressなどがある。
【0035】TTCPAddr117とTNBAddr119は、それ
ぞれTCP/IPおよびNetBIOSのアドレス指定
の詳細を表す具象アドレス・クラスの例である。同様
に、TIEEE8023Addr121とTIEEE8025Addr123は、I
EEE802.3およびIEEE802.5のアドレス
指定用の具象ハードウェア・アドレスを表している。
【0036】3.プロトコル・インタフェース・クラス 本発明は、接続指向のトランザクションと無接続のトラ
ンザクションの両方をサポートする。また、本発明で
は、プロトコルとは無関係のアプリケーションが従う状
態マシンについても説明する。プロトコル・インタフェ
ース・クラスのオブジェクト階層を図4に示す。プロト
コル・インタフェース・クラスは、プロトコルが備えて
いなければならないすべての共通関数用のメソッドを含
む、MProtocolServe133という基本クラスから派生し
たものである。TProtocolInterfaceクラス135は、ネ
ットワーク機能用の追加メソッドを含んでいる。これら
のメソッドについては、以下の表1と表2に詳しく示
す。TCP/IPなどのネットワーク・プロトコルは、
そのTCPIPInterfaceクラスをTProtocolInterfaceから派
生させて、デフォルト・インプリメンテーションを指定
変更し、送信または受信要求上に有効フラグがあるかど
うかという検査などのそれ専用の特定の特徴を追加す
る。TProtocolInterfaceクラスから派生する個別のクラ
スとしては、セッション層用のTSessionInterface13
7、トランスポート層用のTTransportInterface13
8、ネットワーク層用のTNetworkInterface141、フ
ァミリー層用のTFamilyInterface143、データ・リン
ク層用のTDLCInterface145が用意されている。オブ
ジェクト階層は図示の通りである。この実施例では、O
SIネットワーク層が、ネットワーク層と、プロトコル
・ファミリー層という下位層とに分割される。ファミリ
ー層は、経路指定情報など、OSIネットワーク層の非
複製部分を含んでいる。ネットワーク層は、対等アドレ
スおよびローカルSAPなど、特定の端点に関連する情
報を含んでいる。これは、FamilyLayerオブジェクトな
ど、1つのオブジェクトだけがシステム内に常駐するよ
うにして、すべてのグローバル情報とプロトコルとの関
連を維持するために行われるものである。クライアント
・アプリケーションによって各端点が作成され破棄され
ると、セッション層などの他のプロトコル層オブジェク
トと、トランスポート層オブジェクトと、ネットワーク
層オブジェクトは作成され破棄されるが、ファミリー層
オブジェクトとデータリンク層オブジェクトは常駐した
ままになる。
【0037】具象クラスは、個々のインタフェース・ク
ラスから派生する。たとえば、以下に説明するように、
プロトコル・スタックを構築するためにTCP/IPな
どの特定のプロトコル用のトランスポート、ネットワー
ク、ファミリー・インタフェース・クラスのために、具
象クラスが用意されている。
【0038】表1 前述のように、MProtocolServiceオブジェクトは、プロ
トコル層定義用の基本クラスとして機能する。MProtoco
lServiceオブジェクトに設けられているメソッドのリス
トを以下に示す。これらのメソッドの大部分は、純粋仮
想関数である。
【0039】 Bind −ローカル・アドレスを初期設定しバインド する Unbind −ローカル・アドレスをアンバインドする SendRelease −正常解放開始 ReceiveRelease −正常解放開始の肯定応答受信 GetLocalAddress −ローカル・アドレスを獲得する SetLocalAddress −ローカル・アドレスを設定する GetPeerAddress −対等アドレスを獲得する SetPeerAddress −対等アドレスを設定する GetProtocolInfo −プロトコル情報を獲得する SetProtocolInfo −プロトコル情報を設定する GetProtocolOptions −プロトコル・オプションを設定する GetRequestMode −要求モードを獲得する SetRequestMode −要求モードを設定する GetRetry −プロトコル層再試行パラメータを獲得する SetRetry −プロトコル層再試行パラメータを設定する GetTimeout −プロトコル層タイムアウト・パラメータを 獲得する SetTimeout −プロトコル層タイムアウト・パラメータを 設定する GetStatistics −プロトコル層統計情報を獲得する SetStatistics −プロトコル層統計情報を設定する IsSession −プロトコル層がセッション層である場合に 真を返す IsTransport −プロトコル層がトランスポート層である場 合に真を返す IsNetwork −プロトコル層がネットワーク層である場合 に真を返す IsFamily −プロトコル層がファミリー層である場合に 真を返す 演算子<<= −オブジェクトをデータ・ストリームに受信 するための演算子 演算子>>= −オブジェクトをデータ・ストリームに送信 するための演算子
【0040】表2 TProtocolInterfaceクラスに設けられた関数のリストを
以下に示す。
【0041】 GetLayerIndex −プロトコル層のインデックスを獲得する CancelRequests −現行未解決要求をすべて取り消す ReceiveEvent −このスタック上の受信事象 GetConnectionInfo −接続情報およびメモりの制約を入手する BorrowMemory −ネットワーク・データ用にシステム・メモ リを借用する ReturnMemory −ネットワーク・データ用のシステム・メモ リを返す GetAccessDefinition −TAccessDefinitionへのポインタを獲得する GetLocalAddress −層のローカル・アドレスを獲得する SetLocalAddress −層のローカル・アドレスを設定する GetPeerAddress −層の対等アドレスを獲得する SetPeerAddress −層の対等アドレスを設定する GetProtocolInfo −層のプロトコル情報を獲得する SetProtocolInfo −層のプロトコル情報を設定する GetProtocolOptions −層のプロトコル・オプションを獲得する SetProtocolOptions −層のプロトコル・オプションを設定する GetRequestMode −層の要求モードを獲得する SetRequestMode −層の要求モードを設定する GetRetry −プロトコル層再試行パラメータを獲得する SetRetry −プロトコル層再試行パラメータを設定する GetStatistics −プロトコル層統計情報を獲得する GetTimeout −プロトコル層タイムアウト・パラメータを 獲得する SetTimeout −プロトコル層タイムアウト・パラメータを 設定する Bind −プロトコル・スタックをバインドする Unbind −プロトコル・スタックをアンバインドする Receive −ネットワーク・データを受信する Send −ネットワーク・データを送信する Connect −接続を確立しようという試みを開始する ReceiveConnection −接続を確立しようという試みを待つ Disconnect −接続を終了する ReceiveDisconnect −切断を待つ AcceptConnection −接続を確立しようという試みを受け入れる RejectConnection −接続を確立しようという試みを拒否する Listen −接続を確立しようという試みを聴取する ListenForConnection −接続を確立しようという試みを聴取する SendRelease −正常解放開始=>送信すべきデータはこれ 以上ない ReceiveRelease −正常解放開始の肯定応答受信 演算子<<= −オブジェクトをデータ・ストリームにスト リーム・インするための演算子 演算子>>= −オブジェクトをデータ・ストリームにスト リーム・アウトするための演算子
【0042】4.プロトコル層インプリメンテーション
・クラス 前述のように、プロトコル・インタフェース・モデル
は、プロトコル層にアクセスするためのオブジェクト・
ベースのAPIとして機能する。TCP/IPなどのプ
ロトコル・スタックのインプリメンテーションを階層化
した1組のリンク済みオブジェクトとして実現するに
は、TProtocolLayerクラスを使用する。図5は、プロト
コル層クラスのクラス階層を示している。TProtocolLay
erクラス151は、1つのプロトコル・インプリメンテ
ーションのすべての層の基本クラスとして機能する。
【0043】TProtocolLayerクラス151は、各層で実
施されるTransmit、Connect、Receive、Disconnectなど
の関数用のメソッドを含んでいる。これらのメソッドに
ついては、以下の表3に詳しく示す。
【0044】TCP/IPなどのプロトコル用の具象ク
ラスは、これらの層オブジェクトから派生し、その具体
的なプロトコル層の意味を取り入れている。
【0045】それぞれの子オブジェクト153〜161
は、これらのメソッドを継承し、特定のプロトコル層に
該当する場合にはそのメソッドを指定変更する。
【0046】表3 TProtocolLayerクラスの主な関数を以下に示す。
【0047】 Dispatch −インバウンド・パケットを上位層にディス パッチする Transmit −アウトバウンド・パケットを下位層に伝送 する DispatchEvent −事象を上位層にディスパッチする TransmitEvent −事象を下位層に伝送する ReceiveEvent −事象の報告を可能にする CancelReceiveEvent −事象の報告を取り消す InstantiateInterface −層オブジェクトからインタフェース・オブ ジェクトを作成する GetUpperProtocol −次の上位層へのポインタを獲得する GetLowerProtocol −次の下位層へのポインタを獲得する Bind −プロトコル・スタックをバインドする Unbind −プロトコル・スタックをアンバインドする Connect −接続を確立しようという試みを開始する ReceiveConnection −接続を確立しようという試みを待つ Disconnect −接続を終了する GetPacketQueue −インバウンド・データ・パケットが得られ るパケット待ち行列へのポインタを返す ReceiveDisconnect −切断を待つ AcceptConnection −接続開始を受け入れる RejectConnection −接続を確立しようという試みを拒否する Listen −接続を確立しようという試みを聴取する ListenForConnection −接続を確立しようという試みを聴取する SendRelease −正常解放開始=>送信すべきデータはこれ 以上ない ReceiveRelease −正常解放開始の肯定応答受信 演算子<<= −TProtocolLayerオブジェクトをデータ・ス トリームにマーシャルするための演算子 演算子>>= −TProtocolLayerオブジェクトをデータ・ス トリームにアンマーシャルするための演算 子
【0048】5.プロトコル状態マシン ここでは、接続指向操作と無接続操作の両方について可
能なプロトコル・インタフェース・オブジェクトの状態
について説明する。プロトコル状態マシンを図6および
図7に示す。これらの状態マシンは、プロトコルで典型
的な状態遷移を示しているが、プロトコルのインプリメ
ンテーションによっては異なる選択も可能である。しか
し、この状態マシンは、アプリケーションの可搬性を確
実にし、プロトコルの独立性を可能にする。プロトコル
の独立性を必要とするアプリケーションでは以下に説明
する状態マシンを使用し、プロトコルの独立性をサポー
トするプロトコルによって状態マシンが実現されるはず
である。
【0049】特定のプロトコル・インタフェース層オブ
ジェクト用のプロトコル端点は、以下に記載する状態の
いずれかになるはずである。これらの状態は通常、アプ
リケーション状態である。層オブジェクトは、特定のプ
ロトコルによって定義される状態マシンに従う。通常、
これらの状態は、ユーザが各種の「端点」状態で行うこ
とができる有効な呼出しと、アプリケーションの作成方
法を示すためのものである。層状態は、層の意味と状態
によって制御される。
【0050】未初期設定状態201は、端点の最終状態
でもある端点の開始状態を定義するものである。これ
は、アクセス定義が作成される前の状態である。
【0051】TAccessDefinitionオブジェクトが作成さ
れると(202)、端点は初期設定済みと呼ばれる。初
期設定済み状態203では、Set操作を使用してインタ
フェース・オブジェクトを構築し初期設定できるはずで
ある。Set操作はインタフェース・オブジェクトでロー
カルにキャッシュされるので、設定値の妥当性検査を行
う余地はほとんどない。すなわち、InstantiateDefinit
ionメソッドによりプロトコル層オブジェクトが作成さ
れる前に、インタフェース・オブジェクト上で送信/受
信容量を設定することができる。このような容量への制
限に関する情報は層オブジェクトだけが把握しているの
で、このような値をインタフェース上で妥当性検査する
ことは不可能である。というのは、AccessDefinitionオ
ブジェクト上でInstantiateDefinitionメソッドが呼び
出されるまで、層オブジェクトが存在しないからであ
る。TAccessDefinitionオブジェクト204を破棄する
よう要求すると、端点が初期設定済み状態203から未
初期設定状態201に移行する。
【0052】TAccessDefinitionオブジェクト上でイン
スタンス化要求206を行うと、端点が未結合状態20
7に移行する。未結合状態207は、層オブジェクトが
インスタンス化された直後に発生する状態を定義する。
値を修正するためにGet/Set操作を出すことができる。
このような要求はもはやインタフェース・オブジェクト
にキャッシュされないが、対応する層オブジェクトに送
られて、処理され格納される。TAccessDefinitionオブ
ジェクト上でインスタンス解除要求208を行うと、端
点が初期設定済み状態203に移行する。
【0053】ローカル・アドレスをバインドするために
Bind操作210が出されると、端点が未結合状態207
から結合状態209に移行する。無接続モードのデータ
転送の端点は、「結合」状態になるとデータの送受信を
開始することができる。結合状態209でスタックに対
してアンバインド要求212が出されると、端点が未結
合状態207に戻る。
【0054】Listen要求214が出されると、端点が結
合状態209から聴取状態213に移行する。プロトコ
ル・スタックは、ユーザ指定の待ち行列サイズを使い尽
くすまでそのローカル名に関する着信接続要求を受け入
れる。着信接続216により、新しい活動プロトコル・
スタックが作成される。
【0055】活動端点でConnect要求220が出される
と、端点が結合状態209から接続(クライアント)状
態219に移行する。図7に示すように、無接続モード
のサービスを使用する端点は、接続要求が正常に行われ
た後で「データ転送」状態225に入る。受動端点の場
合、着信接続要求を受信すると、プロトコル・スタック
は、層とインタフェース・オブジェクトのコピーと、受
信した接続要求用の新しいTAccessDefinitionを作成す
る。新たに作成された端点は、その後、接続(サーバ)
状態221になる。矢印は、聴取状態から接続(サー
バ)状態まで点線上にある。アプリケーションは、接続
を受け入れるか、または接続を拒否するかを選択するこ
とができる。AcceptConnectionでは、端点がデータ転送
状態225になるはずである。接続要求226が拒否さ
れた場合、端点は非活動状態229に移行する。
【0056】新たに作成したスタックが接続要求222
を完了後、端点はデータ転送状態225に入る。ローカ
ル・アプリケーションからDisconnect要求228を受信
するか、または接続パートナーによって接続が終了され
た後に、接続端点が結合状態209に移行する。ただ
し、このような場合、アプリケーションはReceiveDisco
nnect要求を出して終了データを受信できることに留意
されたい。
【0057】着信接続要求がアプリケーションによって
拒否されると、端点は非活動状態229に移行する。次
に、TAccessDefinition破棄操作230を出すことによ
って、端点が破棄される。
【0058】6.例 ここでは、TCP/IPなどのネットワーク・プロトコ
ルに本発明のオブジェクト指向モデルを使用する方法の
例を示す。TCP/IPインプリメンテーションは、ト
ランスポート層と、ネットワーク層と、TCP/IPフ
ァミリー層とを含む。さらに、ネットワーキング・サブ
システムは、システム内に常駐するTDatalink層オブジ
ェクトを含み、TCP/IPのFamilyLayerオブジェク
トはTDatalink層にアクセスする手段を備えている。た
だし、この実施例では、TDataLink層オブジェクトはT
CP/IP、SNA、NetBIOSなど、すべてのネ
ットワーク・プロトコル・スタックに共通し、TDatalin
k層オブジェクトはTProtocolLayerクラス・オブジェク
トから派生することに留意されたい。
【0059】TCP/IPインタフェース(API)ク
ラスは、TProtocolInterfaceクラスから派生している。
図8は、TCP/IPインプリメンテーションの一部の
オブジェクトのクラス階層を示している。前述のよう
に、TProtocolInterfaceとTProtocolLayerは、APIお
よびプロトコル・インプリメンテーション機能を提供す
るMProtocolServiceクラスの子クラスである。TTCPTINF
251と、TTCPNINF253と、TTCPFINF255の各オブ
ジェクト(まとめてTTCPXINFと呼ぶ)は、TCP/IP
プロトコル用のTTransportInterfaceクラス、TNetworkI
nterfaceクラス、TFamilyInterfaceクラスを表すTProto
colInterfaceの具象クラスの例である。ただし、TCP
/IPプロトコルには「セッション」という概念がない
ので、TSessionLayerクラスのインスタンスがないこと
に留意されたい。同様に、TTCPTIMP257と、TTCPNIMP
259と、TTCPFIMP261の各オブジェクト(まとめて
TTCPXIMPと呼ぶ)は、TCP/IPプロトコル用のTTra
nsportInterfaceクラス、TNetworkInterfaceクラス、TF
amilyInterfaceクラスのインスタンスである。
【0060】前述のように、TDatalinkLayer161は、
この実施例のすべてのネットワーク・プロトコル用のイ
ンプリメンテーション・オブジェクトであり、TProtoco
lLayerクラス151のサブクラスである。
【0061】また、IPアドレスを渡すことができるよ
うに、アプリケーションにはTTCPProtocolAddressクラ
スが用意されている。TTCPProtocolAddressは、4バイ
トのIPアドレスと、2バイトのポート・アドレスとを
含むことになる。
【0062】TCP/IPプロトコルにアクセスするた
めにアプリケーションが必要とするプロセスについて
は、図9を参照して以下に説明する。ほとんど場合、
「アプリケーション」は、ユーザ・レベル・アプリケー
ションがAPI呼出しを行うBSDソケット・インタフ
ェースなどの通信API層になる可能性が最も高い。ソ
ケット・インタフェースにより、アプリケーション開発
者は、ネットワーク・プロトコル・オブジェクトの特定
の構文を把握する必要がなくなるはずである。しかし、
「アプリケーション」は、本発明のオブジェクト・モデ
ルの名前に精通したオペレーティング・システム・サー
ビスにもなりうる。以下の例では、アプリケーションが
トランスポート層にアクセスする。アプリケーションは
どの層にもアクセスすることができる。ネットワーク層
に直接送話することも可能である。現在、ユーザ・アプ
リケーションがまったくないことが一般的である。これ
らのステップは、TCP/IPプロトコルの手続き上の
インプリメンテーションのものと高レベルで非常によく
似ている。しかし、それは、本発明のプロトコル・イン
タフェース・モデルを使用して、オブジェクト指向のや
り方で実現されている。
【0063】ステップ301では、TCP/IPプロト
コルにアクセスするために通信端点が作成される。これ
は、まずTAccessDefinitionオブジェクトを作成するこ
とによって行われる。たとえば、C++を使用して「新
しいTAccessDefinition」が構築される。次に、TAccess
Definition内のメソッドを使用して、TTCPxINFインタフ
ェース・オブジェクトが作成され、AccessDefinitionに
追加される。その後、TAccessDefinitionオブジェクト
上でInstantiateProtocolメソッドが呼び出され、次に
それによりTTCPxIMP層オブジェクトが作成される。
【0064】ステップ303では、ステップ301で作
成された通信端点にアドレスが結合される。これは、用
意されたTTCPProtocolAddressクラス・オブジェクトか
ら必要なIPアドレスを備えたTTCPProtocolAddressオ
ブジェクトを作成することによって行われる。次に、そ
のアドレスをバインドするためにTTCPTINF->Bind()メソ
ッドが呼び出される。このステップは、バインドの意味
を含むプロトコル・インプリメンテーション層上でTTCP
IMP->Bind()メソッドを起動することになる。
【0065】次に、ステップ305では、(TTCPTINFオ
ブジェクトで)TTCPTINF->Connect()メソッドを呼び出
して接続要求を開始することによって、アプリケーショ
ンが聴取対等機能に接続する。これにより、(TTCPTIMP
オブジェクトで)TTCPTIMP->Connect()メソッドが起動
され、次にこのメソッドは、下位層、すなわち、TTCPNI
MP->Connect()メソッドとTTCPFIMP->Connectメソッド用
のTTCPNIMPオブジェクトとTTCPFIMPオブジェクトをそれ
ぞれ呼び出すことにより、TCP/IP接続をセットア
ップするための必要なステップを実行する。
【0066】正常接続後、ステップ307では、結果の
プロトコル・スタックによりデータを送受信することが
できる。アプリケーションは、TTCPTINF->Send()メソッ
ドとTTCPTINF->Receive()メソッドを呼び出して、ネッ
トワーク・データを送受信する。TTCPTINF->Send()は次
にTTCPTIMP->Xmit()メソッドを呼び出して、TCPプロ
トコルのデータ伝送を開始する。データは、各プロトコ
ル層のXmit()関数を使用してプロトコル層オブジェクト
からプロトコル層オブジェクトに渡され、通信アダプタ
によりTDataLinkLayerオブジェクトに送達される。同様
に、受信機能の場合は、TDataLinkLayerが物理層からデ
ータを受信し、それを適切なプロトコル・ファミリー層
に渡し、次にその層が適切なスタックに渡す。しかし、
一実施態様では、クライアントからのデータ受信要求が
行われるまでデータが待ち行列化され、データはデータ
待ち行列からクライアントにコピーされる。
【0067】ステップ309では、所望の通信の完了後
に接続が閉じられる。アプリケーションは、TTCPTINF->
Disconnect()メソッドを呼び出して、接続終了を開始す
る。これにより次にTTCPTIMP->Disconnect()が呼び出さ
れ、このメソッドは特定のインプリメンテーションの場
合にファミリー層までそのメソッドを送信する可能性の
あるTTCPTIMPのTCP/IP切断状態マシンを処理す
る。
【0068】最後に、ステップ311では、TAccessDef
initionオブジェクトを削除することによって、端点が
閉じられる。
【0069】図10を参照すると、様々なオブジェクト
とネットワーク層との関係を理解するのに役立つだろ
う。同図の左側には、図8および図9に関連して前述し
たTCP/IP実施例が示されている。TCP/IPア
プリケーション313、315は、いずれもアプリケー
ション層にあるソケットAPI317を介して、以下の
層のオブジェクト指向プロトコル・スタックに連絡す
る。通信端点を作成するためにソケットAPIが使用す
るTProtocolAddressオブジェクトは図示していない。そ
れぞれのTCP/IPアプリケーション313、315
ごとに個別の通信端点、すなわち、個別のTProtocolAdd
ressオブジェクトが必要である。
【0070】前述のように、TCP/IPにはセッショ
ン層という概念がないので、ソケットAPI317はト
ランスポート層内のTTCPTINFオブジェクト251によっ
てやりとりする。前述のように、TAccessDefinitionオ
ブジェクト318は、トランスポート層、ネットワーク
層、ファミリー層のTTCPxINFオブジェクト251、25
3、255を含む。ユーザ・レベル・プロセスがファミ
リー層のネットワークによりプロトコル・スタックに連
絡することは比較的まれなことであるが、主にオペレー
ティング・システム・サービスにより、これらの層に連
絡するためにTTCPNINFオブジェクト253とTTCPFINFオ
ブジェクト255が提供される。
【0071】TTCPTINFオブジェクト251は、TTCPTINF
-->Connect()メソッドによりTTCPTIMPオブジェクト25
7に接続する。これにより、TTCPNIMPオブジェクト25
9に接続するためのTTCPTIMP-->Connect()メソッドと、
TTCPFIMPオブジェクト261に接続するためのTTCPNIMP
-->Connect()メソッドが起動される。また、TDataLinkL
ayerオブジェクト161に接続するTTCPFIMP-->Connect
()メソッドが起動される。同図に示す通り、TTCPTIMP2
57、TTCPNIMP259、TTCPFIMP261、TDatalinkLay
er161の各オブジェクトは、それぞれトランスポート
層、ネットワーク層、ファミリー層、データリンク層に
ある。前述のように、送受信メソッドにより、物理層内
の物理アダプタ319を介してプロトコル・スタック上
でネットワーク・データを送信することができる。
【0072】好ましい実施例では、通信端点が作成され
削除されたときに、TDataLinkLayerオブジェクト161
とTTCPFIMPオブジェクト261は不変であり、単独であ
る。それぞれの活動端点ごとに、残りのオブジェクト
(251、253、255、257、259、318)
のそれぞれの個別のスレッドとインスタンスが必要にな
る。当業者であれば容易に分かるように、何千ものクラ
イアント接続が行われる可能性のあるネットワーク・プ
ロトコル・サーバの場合、このような配置に関連するオ
ーバヘッドによってパフォーマンス上の問題が発生する
可能性がある。以下の動的実行ユニット管理の項で説明
するように、本発明は、パフォーマンスを最大にするた
めに実行スレッドを動的に管理するための手段を提供す
る。
【0073】同図の右側には、NetBIOSのインプ
リメンテーションが示されている。したがって、本発明
は、システムが複数のネットワーク・プロトコルを実行
する複数のアプリケーションをサポートするマルチプロ
トコル環境を企図するものである。図10に示すよう
に、NetBIOSアプリケーション331、333
は、ソケットAPI317または特殊NetBIOS
API層335のいずれかを介して下位層とやりとりす
ることができる。したがって、本発明は、本発明のオブ
ジェクト指向プロトコル・スタックにアクセス可能な複
数のアプリケーションも企図するものである。このよう
なアプリケーションは、オブジェクト・ベースまたは手
続きベースのユーザ・レベル・アプリケーションまたは
オペレーティング・システム・レベル・プロセスにする
ことができる。
【0074】前述のように、同様のプロセスを使用して
NetBIOSスタックが確立される。ただし、Net
BIOSにはセッション層という意味がないので、AP
I層317、335はセッション層のTNSINFオブジェク
ト337に接続することに留意されたい。NetBIO
Sインタフェース・オブジェクトであるTNSINF337、
TNTINF339、TNNINF341、TNFINF343と、Net
BIOSプロトコル層オブジェクトであるTNSIMP34
7、TNTIMP349、TNNIMP351、TNFIMP353が作成
された後、TNSINFオブジェクト337によりプロトコル
層オブジェクトを介してTDataLinkLayerオブジェクト1
61まで通信経路が確立される。TCP/IP実施例の
ように、TDataLinkLayerオブジェクト161とTNFIMPオ
ブジェクト353は不変かつ単独であり、それぞれの活
動通信端点ごとに残りのオブジェクトのそれぞれの個別
のインスタンスが作成され削除される。
【0075】本発明では、TDataLinkLayer161に結合
された複数のアダプタ319、321に対処することが
できる。上位層は通信端点までの適切な経路指定を行う
ので、異なるネットワーク・プロトコルに対して同時に
これらのアダプタを使用することができる。さらに、こ
れらのアダプタは、イーサネットとトークン・リングな
ど、異なるタイプのものにすることができるので、サー
バは各種のネットワークからの要求に対応することがで
きる。
【0076】7.プロトコル・ユーティリティ・クラス このクラスは、TProtocolInterfaceクラスとTProtocolL
ayerクラスが使用するものである。このクラスのほとん
どは、インタフェース・クラスとインプリメンテーショ
ン・クラスの様々なメソッドのパラメータとして機能す
る。このクラスは、提案したモデルの一般的な特徴を強
調するものである。
【0077】ここでは、プロトコル・インタフェースが
使用する重要なクラスの一部について説明する。
【0078】a.TProtocolInfoクラス このクラスは、サービス・タイプ、最大メッセージ・サ
イズ、優先データ長など、そのプロトコルの様々な特性
を識別するものである。このクラスが提供する重要なメ
ソッドの一部を以下に示す。
【0079】これらは、端点の作成時に端点の特性を指
定するために使用する。
【0080】 GetPSDUSize −プロトコル・サービス・データ・ユニット の最大サイズを獲得する SetPSDUSize −プロトコル・サービス・データ・ユニット の最大サイズを設定する GetEPSDUSize −優先プロトコル・サービス・データ・ユニ ットの最大サイズを獲得する PSDUSize −優先プロトコル・サービス・データ・ユニ ットの最大サイズを設定する GetConnectionDataSize −接続データの最大サイズを獲得する SetConnectDataSize −接続データの最大サイズを設定する GetDisconnectDataSize −切断データの最大サイズを獲得する SetDisconnectDataSize −切断データの最大サイズを設定する GetDisconnectDataSize −切断データの最大サイズを獲得する SetDisconnectDataSize −切断データの最大サイズを設定する GetServiceType −接続/無接続などのサービス・タイプを獲 得する SetServiceType −サービス・タイプを設定する SetServiceType −サービス・タイプを設定する SetServiceFlags −サービス・フラグを設定する
【0081】b.TProtocolOptionsクラス このクラスは、サービス品質を含む、プロトコル固有の
オプションを定義するために使用する。しかし、この基
本クラスは、特定のサービス品質を含んでいない。具象
クラスがTProtocolOptionsから派生し、その固有のオプ
ションを含むものと思われる。
【0082】 GetLingerTime −プロトコル・リンガ時間を獲得する SetLingerTime −プロトコル・リンガ時間を設定する GetSendbufSize −プロトコル送信バッファ・サイズを獲得する SetSendbufSize −プロトコル送信バッファ・サイズを設定する GetRcvbufSize −プロトコル受信バッファ・サイズを獲得する SetRcvbufSize −プロトコル受信バッファ・サイズを設定する
【0083】c.TSendModifiersクラス TSendModifiersクラスは、TProtocolInterface::Sendメ
ソッドとTProtocolLayer::Xmit()メソッドにおけるネッ
トワーク送信機能に関連するフラグを修飾するものであ
る。送信タイムアウトのサポートの他に、送信機能を左
右しうる指示は以下の通りである。
【0084】 kPush −即時処理を要求する kEdnOfMessage −メッセージの終わりをマークする kExpeditedData −データを優先データとして扱う kNotify −クライアント・バッファが使用可能なとき に送信側に通知する kSendAll −「n」バイトがすべてバッファされるまで ブロックする kNoFragmentation −データを断片化しない
【0085】このクラスでサポートされる重要な関数の
一部を以下に示す。
【0086】 GetSendModifier −SendModifier用の値を獲得する SetSendModifier −SendModifierをONに設定する ClearSendModifier −SendModifierをOFFに設定する GetTimeout −送信タイムアウトを獲得する SetTimeout −送信タイムアウトを設定する
【0087】d.TReceiveModifiersクラス このクラスは、TProtocolInterface::Receive()関数内
の受信フラグを定義するために使用する。
【0088】このクラスは、ネットワーク・データを受
信しながら、フラグとタイムアウトを設定するためのメ
ソッドと定義を含む。以下の通りである。
【0089】 kPeek −ピーク・ユーザ・データ kExpeditedData −優先データを受信する kReceiveAll −「n」バイトが受信されるまでブロックす る kBroadcastData −同報データグラムを受信する kDiscardBufferOverflow −受信バッファからオーバフローするメッセ ージの一部を破棄する kDatagramAny −通常データグラムまたは同報データグラム のいずれかを受信する
【0090】このクラスの重要な関数の一部を以下に示
す。
【0091】 GetReceiveModifier −ReceiveModifier用の値を獲得する SetReceiveModifier −ReceiveModifierをONに設定する ClearReceiveModifier −ReceiveModifierをOFFに設定する GetTimeout −受信タイムアウトを獲得する SetTimeout −受信タイムアウトを設定する
【0092】e.SendCompletionクラス ネットワーク・データ送信操作に応答してSendCompleti
onオブジェクトが返される。これは、送信機能の状況を
示し、送信バイトの総数も示す。状況指示は以下の通り
である。
【0093】 kNormal −正常完了 kTimeout −送信タイムアウト kCancelled −アプリケーションが送信要求を取り消した
【0094】このクラスの重要なメソッドの一部を以下
に示す。
【0095】 GetSTatus −SendCompletion状況を獲得する SetStatus −SendCompletion状況を設定する GetBytesTransferred −送信するクライアント・データのバイト数 を獲得する SetBytesTransferred −送信するクライアント・データのバイト数 を設定する
【0096】f.TReceiveCompletionクラス ネットワーク・データ受信要求に応答してReceiveCompl
etionオブジェクトが返される。これは、受信機能の状
況と、データ受信バイトの総数を示す。状況指示は以下
の通りである。
【0097】 kNormal −正常完了 kPushed −送信側がデータを「プッシュした」 kNoMoreData −ストリームが終了するかまたは受信パイプ が閉じられた kEndOfMessage −メッセージの終わりが検出された kExpeditedData −優先データを受信した kTimeout −受信タイムアウト kMessageTruncated −部分メッセージであり、残りは破棄される kCancelled −取消し要求が処理された kMore −追加データの受信準備ができている
【0098】このクラスの重要な関数の一部を以下に示
す。
【0099】 GetStatus −ReceiveCompletion状況を獲得する SetStatus −ReceiveCompletion状況を設定する GetBytesTransferred −受信するクライアント・データのバイト数 を獲得する SetBytesTransferred −受信するクライアント・データのバイト数 を設定する
【0100】ネットワーク事象管理 ここでは、複数のネットワーク・プロトコル・スタック
上で複数のネットワーク事象にアクセスし、それを様々
なプロトコル層で格納するという問題に対するオブジェ
クト指向の解決策を開示する。本発明では、OSIネッ
トワーク・プロトコル層モデルに基づくすべてのネット
ワーク事象の単一かつ一貫した1組のクラス定義を提供
する。各総称OSI層ごとに事象が定義されているの
で、これらの層の各インプリメンテーションは追加のサ
ブクラスを定義することによって、追加の層固有の事象
を加えることを選択できるはずである。この解決策は、
オブジェクト指向モデルなので、OO技術で多様性と継
承を完全に利用する。
【0101】OSI層に基づく事象の分類により、プロ
トコル層で格納され報告される事象が明確にカテゴリー
化される。このカテゴリー化により、アプリケーション
にとって重要であれば、特定の層について事象を取り出
すことができる。このような事象は、データが受信済み
で受信に使用可能である、接続が打ち切られたなど、確
立されているクライアントの通信セッションの条件を記
述することができる。クライアントは、単一の呼出しを
使用して、複数のプロトコル・スタックのいずれのプロ
トコル層上でもこれらの非同期事象を監視することがで
きる。本発明は、アプリケーションが個々の端点事象を
探す必要がなくなるように、TCP/IPやNetBI
OSなどの複数のプロトコルによる事象報告に及ぶ。さ
らに、ネットワーク事象機構により、層オブジェクト間
でネットワーク事象を送受信するためにネットワーク・
プロトコル層間でのやりとりが容易になる。
【0102】1.事象の説明 事象は、TProtocolEventという基本クラスを使用して定
義される。図11は、様々な事象オブジェクト間のクラ
ス階層を示している。図11は図2に似ているが、TEve
ntDefinitionクラス103のサブクラスであるTProtoco
lEventクラス401も示している。TProtocolEventクラ
ス401は、列挙されたクラスの事象と、すべてのOS
I層で一般に使用される1組の事象と、個々のプロトコ
ル層事象用の値の予約範囲を含む。TProtocolEventクラ
スは、事象とメンバーシップの質問を設定し獲得するた
めのメソッドを有する。一実施例のネットワーク事象は
ビット・ベクトルとして設定されている。このクラスで
は、GetCntメソッドがこのオブジェクト内に現在ある事
象の数を返す。これは、この場合のオプション事象のリ
ストを指定する典型的な方法であり、一般に使用するも
う1つの方法は、ビット・マスクを使用する方法であ
る。オブジェクト内にすべてのデータを隠すというオブ
ジェクト指向技術の能力のために、単一オブジェクトだ
けが必要であり、そのオブジェクトがそれらを獲得する
ためのメソッドを提供する。
【0103】特定のネットワーク・プロトコルによって
は、TProtocolEventクラスで事象値を再定義することに
よって、プロトコル事象を定義することができる。TPro
tocolEventの重要なメソッドの一部は、識別されたイン
デックスの事象を返すGetEventと、リスト内の特定の事
象(メンバーシップ)を探索するHasAと、オブジェクト
内の事象の数を返すGetCntと、端点を示すアクセス定義
を返すGetAccessDefinitionと、端点用のアクセス定義
を設定するSetAccessDefinitionと、TProtocolEventオ
ブジェクト内の単一事象を設定するSetEventである。
【0104】2.OSI層インプリメンテーションへの
事象インタフェース 上記のプロトコル・インタフェース・モデルの項で述べ
たように、好ましい実施例ではネットワーク・プロトコ
ル層が一連のTProtocolLayerオブジェクトとして実現さ
れ、それぞれが特定のOSI層を表している。これらの
オブジェクトは互いに連鎖され、プロトコル・スタック
を完成させている。たとえば、TCP/IPスタック
は、トランスポート層、ネットワーク層、データリンク
層用のオブジェクトを備えることができる。各プロトコ
ル層オブジェクトは2つの事象インタフェース、すなわ
ち、TProtocolLayerオブジェクトに定義されたReceiveE
ventインタフェースとCancelEventインタフェースとを
有する。これらの層では、上位層のオブジェクトに事象
を渡すためにDispatchEventメソッドを使用し、下位プ
ロトコル層に事象を送信するためにTransmitEventメソ
ッドを使用する。適切な層に事象を格納することは、プ
ロトコル・スタックのインプリメンテーションの責任で
ある。
【0105】TProtocolLayerクラスの事象関連メソッド
は、上位層に事象をディスパッチするDispatchEvent
と、下位層に事象要求待ち行列を伝送するTransmitEven
tと、EventRequestQueueにTProtocolEventオブジェクト
を追加することにより事象(複数も可)を報告するRece
iveEventと、EventRequestQueueを無視するCancelRecei
veEventである。
【0106】3.アプリケーションによる事象監視 それぞれのネットワーク・プロトコル層にオブジェクト
・ベースのAPI用の基本クラスを提供するTProtocolI
nterfaceクラス・オブジェクトは、ネットワーク事象を
受信するために端点が使用できる機能を含んでいる。TP
rotocolInterfaceクラスの事象関連機能は、特定の通信
端点用にTProtocolEventオブジェクトに設定された事象
(複数も可)を受信するReceiveEventメソッドである。
【0107】アプリケーションが複数の通信端点での事
象の監視を必要とするときは、TEventDefinitionオブジ
ェクトを使用する。TEventDefinitionオブジェクトは、
事象を監視するためのオブジェクト端点として機能す
る。このオブジェクトのインスタンスは、アプリケーシ
ョンの要求に応じて作成され削除される。TEventDefini
tionオブジェクトの主なメソッドは、TEventDefinition
オブジェクトのインスタンスをインスタンス化するInst
antiateDefinitionと、TEventDefinitionオブジェクト
のインスタンスを破棄するDeInstantiateDefinition
と、TProtocolEventオブジェクトのアレイまたは待ち行
列で複数のスタックからの事象を受信するReceiveEvent
Anyと、保留事象要求を取り消すCancelRequestである。
【0108】a.1つの通信端点での事象の受信 アプリケーションは、特定のネットワーク層用のTProto
colInterfaceクラスのインスタンスでReceiveEventメソ
ッドを使用して、特定の端点で事象を受信することがで
きる。ただし、端点はそのプロトコル用のTProtocolInt
erfaceオブジェクトを使用してプロトコルにアクセスす
ることに留意されたい。アプリケーション・プログラム
は、必要な事象をTProtocolEventオブジェクトに設定
し、次にReceiveEventメソッドを呼び出す。TProtocolI
nterfaceオブジェクトは、事象が発生していればその事
象を含むTProtocolEventオブジェクトを返す。
【0109】1つの通信端点で事象を受信するプロセス
を図12の流れ図に示す。この例では、トランスポート
層が一番上の層であり、事象はネットワーク層に格納さ
れ、アプリケーションからの要求はトランスポート層に
対して行われる。
【0110】もう1つの代替方法は、事象を受信するた
めにその層への直接の事象インタフェースをセットアッ
プする方法である。しかし、このプロセスでは、あまり
有利ではない事象についてもすべての層をそのように処
置しなければならなくなる。1つの点から獲得する方が
良好なので、クライアントは選択基準として事象ベクト
ルを使用してすべての層から事象を獲得するように呼出
しを行う。
【0111】図12は、単一端点での事象受信機構を示
している。端点で1つまたは多数の事象を受信するため
の要求は、TProtocolInterface::ReceiveEvent()メソッ
ド411を使用してインタフェース・オブジェクトに対
して行われる。結果的に端点から報告されるTProtocolE
ventsを含むProtocolEventQueue413が内部で作成さ
れる。次に、TProtocolLayer::ReceiveEvent()メソッド
415を使用して対応する層オブジェクトにその要求が
送られる。同図は、層オブジェクト間でどのように要求
が送られるかを示している。TProtocolEventQueueはRec
eiveEvent要求内のパラメータとして送られる。プロト
コル層オブジェクトは、事象が発生するたびに、TProto
colEventQueueを無効にするTProtocolLayer::CancelEve
nt()要求を受信する前に、この待ち行列にTProtocolEve
ntを待ち行列化する。要求された事象に応じて、TxxTra
nsportLayerは、TProtocolLayerクラスのTransmitEvent
()メソッドを使用してTxxNetworkLayerに要求を送るこ
とができる(417)。同様に、事象要求が下位層に到
達する必要がある場合には、TxxNetworkLayerは、要求
をTxxFamilyLayerに送ることもできる(419)。
【0112】事象が非同期に発生する場合、TProtocolL
ayerオブジェクトは、DispatchEvent()を使用してその
事象を上位層に報告することができる(421)。次に
ネットワーク層は、この事象をTxxTransportLayerに報
告する(423)。TxxTransportLayerは報告された事
象をProtocolEventQueueに待ち行列化する(415)。
次に、事象は呼出し側に報告される(411)。
【0113】b.複数の通信端点での事象の受信 アプリケーションは、TEventDefinitionオブジェクトを
使用することにより、複数の通信端点の事象のための端
点を作成することができる。図11に示すように、TEve
ntDefinitionクラス103はTNetworkDefinitionクラス
100から派生している。TEventDefinitionオブジェク
ト103は、任意のプロトコルで任意の数の端点の事象
を監視するための端点として機能する。アプリケーショ
ン・プログラムにとって関心のある各通信端点ごとに、
必要な数のProtocolEventsがTProtocolEventオブジェク
トに設定される。すなわち、その事象が監視対象となる
すべての端点について、2タプル(端点、プロトコル事
象)の対が形成される。その後、アプリケーションは、
様々な端点から要求された事象の組を渡して、TEventDe
finitionオブジェクトのReceiveEventAny()メソッドへ
の呼出しを行う。ReceiveEventAnyは、TProtocolEvents
の待ち行列に事象を入れて復帰するか、またはタイムア
ウトする。ただし、すべての通信端点はTAccessDefinit
ionクラスを使用して作成されることに留意されたい。
【0114】図13は、複数の端点での事象受信の流れ
を示している。
【0115】図13は、複数の端点での事象受信機構を
示している。アプリケーションは、事象端点として機能
するTEventDefinitionオブジェクトを作成する(45
1)。次にアプリケーションは、端点当たり1つずつ、
TProtocolEventオブジェクトのアレイを作成する(45
3)。端点での要求された事象のアレイがパラメータと
してTEventDefinition::ReceiveEventAny()に渡される
(455)。ReceiveEventAny()メソッドは、TProtocol
EventQueueを作成し(457)、事象が探索されるすべ
ての端点に待ち行列を送る(461)。ReceiveEvent要
求を介して要求を受信する(463)TxxProtocolLayer
は、それより下の層に事象要求を伝送することができ
る。これは、どの端点についても同じである(46
5)。TxxProtocolLayerは、事象を非同期に受信する
と、上位層にその事象をディスパッチするか、またはTP
rotocolEventQueueで事象を報告することができる。事
象がTProtocolEventQueueに入ると、すべての関連端点
のTxxProtocolLayerにTxxProtocolLayer::CancelEven
t()が送られる。次に、ReceiveEventAnyメソッド455
は、TProtocolEventQueueからすべてのTProtocolEvents
を取り出し(459)、それを呼出し側に報告する。報
告する事象がまったくない場合には、待ち行列が空であ
るはずである。
【0116】いずれかの端点から応答が受信された後、
すべての端点はCancelEvent要求を受け取り、ProtocolE
ventQueueオブジェクトの寿命が終了したことを示す。
その要求が取り消された場合でも、事象は依然としてプ
ロトコル層に保管される。クライアントは、次に新しい
事象を獲得するときに、別のReceiveEventとともに戻る
ことができる。この実施例では、クライアントからのプ
ル・モデルを使用するが、クライアントにとって便利な
ときにクライアントが事象を獲得することを意味する。
呼出し側には収集された1組のProtocolEventsが返され
る。
【0117】動的実行ユニット管理 マルチタスキング・システムでは、TCP/IPなどの
ネットワーク・プロトコル・スタックは、クライアント
/サーバ・モデルを使用して効率よく実現することがで
きる。サーバは、多数のクライアントをサポートするた
めにマルチタスキング技法を使用してユーザ・レベル・
タスクにすることができる。多数のクライアントをサポ
ートする際に十分なパフォーマンスを保証するため、固
定した1組のサーバ資源を特定のプロセスに事前割振り
することが必要な場合も多い。重要なサーバ資源の1つ
は、割り振られたサーバ実行ユニットの数である。OS
/2やWindows NTなどの最新のオペレーティング・シス
テムでは、実行の基本ユニットはスレッドである。現在
の多くのシステムは「軽量」スレッド(高速スレッド切
替えを意味する)を備えているが、残念ながら、スレッ
ド作成/削除は、何千ものクライアントをサポートする
ために拡大したときに本発明が提案するようなネットワ
ーク・プロトコル・サーバのパフォーマンス要件をサポ
ートできるほど十分「軽量」ではない。
【0118】さらに、スレッドの数が増すにつれて、シ
ステム、すなわち、サーバのパフォーマンスは大幅に低
下する。スレッド切替えのオーバヘッドは、システム内
に割り振られたフットプリントに加え、スレッドの数が
増すにつれて比例して増加する傾向がある。これは、ネ
ットワーク・セッション下の全二重通信で2つのスレッ
ドに入れてデータの送受信を実行するなど、同じクライ
アントからの複数の同時要求をサポートする必要があり
そうなネットワーク・サーバの場合にさらに複雑にな
る。その結果、複数の同時クライアント対応専用のサー
バ内のスレッドの数は非常に大きくなる可能性がある。
したがって、スレッドなどのサーバ実行ユニットを効率
よく管理することは、十分なパフォーマンスを備えた多
数のクライアントをサポートするサーバの能力にとって
重要なことである。
【0119】ここでは、ネットワーク・プロトコル・サ
ーバが実行スレッドの数を動的に管理するための方法を
開示する。この方法は、多数のクライアントに対応する
のに必要なスレッド資源を低減する。個々のクライアン
トがサーバ割振りのスレッド資源をすべて消費してしま
わないように、進入制御が設けられている。同時に、サ
ーバ・スレッド資源を待って特定のクライアントをいつ
までも停止させておくことはない。
【0120】1.サーバ実行ユニット管理 サーバ・スレッドは、サーバ・スレッド・プールで作成
され管理される。まずサーバが始動すると、サーバ管理
スレッドが作成される。好ましいオブジェクト指向の実
施例では、これは、以下に記載するクライアント・ポー
ト・プールとネットワーク・サーバ・スレッド・プール
を管理するためのメソッドを含むTNetworkServerクラス
・オブジェクトをインスタンス化することによって行わ
れる。サーバ管理スレッドは、スレッド・プールでのサ
ーバ・スレッドの作成または削除を調整することによ
り、サーバ・スレッド・プールの管理を担当する。サー
バ管理スレッドは通常、休眠状態である。これは、要求
信号とタイマによって定期的に起こされる。
【0121】すべてのクライアント要求サービスは、最
初にサーバとのセッションを確立しなければならない。
セッション要求は、session_portという単一のサーバ通
信端点に送られる。サーバとの通信セッションが確立し
た後、各クライアントにはclient_portという固有の通
信端点が割り当てられる。好ましい実施例では、TAcces
sDefinitionオブジェクトとサーバ側で割り当てられた
各client_portとの間に1対1の対応が存在する。
【0122】クライアントとサーバは、RPC機構を使
用して互いにやりとりすることができる。遠隔プロシー
ジャ呼出し(RPC)機構は、後述するように必要な要
求経路指定と進入制御を行う。RPC機構は、基礎とな
るオペレーティング・システムの内部プロセス通信の内
部プロシージャ呼出し(IPC)サービスの上に構築す
ることができる。サーバ・タスクの位置の特定に加え、
基本RPCプリミティブは以下の通りである。
【0123】クライアント側 ○ SendRequest (server_port(セッションまたはクラ
イアント), request_data, reply_data) サーバ側 ○ ReceiveRequest (request_data) ○ SendReply (reply_data)
【0124】すべてのクライアントのclient_portはcli
ent_portプールに収集される。その割当てclient_port
を使用して、クライアントはサーバにネットワーク要求
を出すことができる。サーバは、client_portプールか
らの要求を管理し、スレッド・プール内のスレッドを任
意の数のclient_portプールから受け取ったサービス要
求に割り当てる。図14は、オブジェクト指向ネットワ
ークの第1の実施例でのclient_portプールとスレッド
・プールの制御及び管理の流れを示しているが、クライ
アントおよびサーバ・アプリケーション・オブジェクト
は対称マルチプロセッサ(SMP)などのマルチプロセ
ッサ構成の各種プロセッサに割り振られたメモリ内に常
駐し、両者はオブジェクト指向RPCインタフェースを
介してやりとりする。
【0125】複数のクライアント・マシン500は、ネ
ットワーク505によりサーバ・マシン503に連絡す
る。それぞれのクライアント・マシン500は、それぞ
れがクライアント要求を行うことができる複数のクライ
アント・アプリケーション・オブジェクト507を常駐
させておくことができる。図示の通り、クライアント・
オブジェクト507は、RPC/API層509の適切
なRPC/APIオブジェクトに自分の要求を送り、そ
の層は異なるアドレス空間で動作するIPCオブジェク
ト511を使用してサーバへの接続を行う。プロトコル
・スタックは、ネットワーク505への通信経路を確立
する。この実施例によれば、クライアント・マシンまた
はクライアント・タスクが要求されたサーバでその許容
量の通信スレッドを超えているかどうかを判定するため
に、以下に詳述するスレッド・カウント・オブジェクト
がプロトコル・スタックに追加されている。超えていな
い場合、通信経路は作成されず、クライアント・プロセ
スは使用可能なスレッドを待つように指示されるか、ま
たはプロトコル・スタックが単にクライアント・プロセ
スへのサービスを拒否することになる。同図にはサーバ
が1つだけ示されているが、スレッド・カウント・オブ
ジェクトは、ネットワーク内の複数のサーバ・マシンで
クライアント口座を追跡することができる。
【0126】サーバへの通信経路が確立されると想定し
て、プロトコル・スタック513は、サーバ側の通信端
点であるセッション・ポートを割り当てるセッション・
ポート・オブジェクト519に送るクライアント要求を
受信する。クライアント要求には、クライアント・プー
ル・オブジェクト521からクライアント・ポートが割
り当てられる。クライアント・ポートは、サーバ側のス
レッド・プール522に使用可能な十分なスレッドがあ
る場合にクライアント・プロトコル・スタックに返され
るクライアント通信端点である。セッション・ポート割
振りと、クライアント・ポート・プールと、スレッド・
プールとを管理する1組のネットワーク・プロトコル・
サーバ・オブジェクトについては、以下に詳述する。ス
レッドと、クライアント・ポートと、セッション・ポー
トが割り振られると、サーバ・セットのRPC/API
オブジェクト515と、上方向のサーバ・サービス51
7への通信を続行することができる。
【0127】動的実行ユニット管理は、手続きベースの
システムでも実行することができる。また、図15に示
すように、この機構は、メモリがクライアント空間53
1とサーバ空間533に分割される単一プロセッサ・マ
シンや、複数のクライアント・タスク535、537、
539がサーバ・タスク540と同じマシンで動作する
環境に応用することもできる。クライアント・タスク
は、その要求をクライアント側のRPCライブラリ・イ
ンタフェース541を介してサーバ・タスクに送る。要
求はまず、サーバ側のRPCライブラリ543によって
サーバ側で処理される。次に、セッション・ポート・プ
ロセス545によってセッション・ポートが割り振ら
れ、クライアント・ポート・プール547からクライア
ント・ポートが割り振られる。プロトコル・スタック5
51がネットワーク553へのクライアント要求を処理
できるように、スレッド・プール549からスレッドが
割り当てられる。
【0128】プール内のスレッドの数は、複数のシステ
ム構成変数によって制御される。これらの変数の修正
は、ユーザ構成プログラムを使ってシステム管理者が行
うことができる。
【0129】○(MinThreads)−これは、クライアント
要求に対応するために予約されたスレッドの最小数であ
る。この限界は、典型的なサーバ・ロードのクライアン
トをサポートするために使用するスレッドの最小数を維
持するためのものである。
【0130】○(MaxThreads)−これは、クライアント
要求に対応するために予約されたスレッドの最大数であ
る。この限界は、サーバ・システムの過負荷にならずに
ピーク・ロードのクライアントの対応専用となるスレッ
ド資源に関する上限として使用するものである。
【0131】○(MaxReq)−これは、所与のクライアン
トに割り振られる同時要求の最大数である。
【0132】○(TotalThreads)−これは、すべてのク
ライアント要求に対応するために作成されたスレッドの
総数である。この値は、必ずMinThreadsとMaxThreadsと
の間になる。
【0133】○(ReservedThreads)−これは、すべて
のクライアント・セッションをサポートするために予約
されたスレッドの総数である。
【0134】○(Unusedthreads)−これは、プール内
の未使用スレッドの数である。
【0135】○(Clientthreads)−これは、各クライ
アントごとに、サーバが対応する活動要求の数である。
【0136】プール内のスレッドの数は、同時に処理さ
れる活動クライアント要求の数に基づいて、動的に増加
または減少する。
【0137】スレッドの数を管理するために使用するプ
ロセス、すなわち、オブジェクト指向実施例のメソッド
については、図16〜19を参照して以下に詳述する。
【0138】図16を参照すると、ステップ575のサ
ーバ初期設定では、<MinThreads>個のスレッドが作成
され、スレッド・プールに挿入される。また、このステ
ップでは、(UnusedThreads)と(TotalThreads)が(M
inThreads)に設定され、(ReservedThreads)が0に設
定される。ステップ577では、新しいクライアントが
サーバとのセッションを要求する。サーバ側では、クラ
イアント要求を受信後に、(ReservedThreads)+(Max
Req)<=(MinThreads)であるかどうかを判定するた
めにステップ579でテストが行われる。この結果が真
であれば、既存のクライアントと新しいクライアントを
サポートするために十分なスレッドが存在するので、ス
レッド・プールを調整するためのアクションは一切行わ
れない。
【0139】ステップ581では、サーバがクライアン
ト・タスクにclient_portを割り当てて返す。ステップ
583では、(ReservedThreads)が(MaxReq)だけ増
分され、新しいクライアントがセッションを要求するま
で待つためにステップ577に戻る。
【0140】ステップ579のテストが否定の場合、ク
ライアント要求が許可された場合に最大数のスレッドを
超えるかどうかを判定するためにステップ585でテス
トが行われる。(MinThreads)<(ReservedThreads)
+(MaxReq)<(MaxThreads)かどうかのテストが行わ
れる。この結果が真であれば、スレッド限界を超えてお
らず、プロセスはステップ581に移行し、クライアン
ト・タスクにクライアント・ポートを割り当てて返す。
ステップ583では、(ReservedThreads)が(MaxRe
q)だけ増分される。後述するように、この図のプロセ
スはこの分岐と上記の分岐の場合に同じように見える
が、管理スレッドは、新しいカウント(ReservedThread
s)に基づいて次に起こされたときにスレッド・プール
内のスレッドを非同期に増加する。
【0141】ステップ585のテストが肯定の場合、す
なわち、(ReservedThreads)+(MaxReq)>(MaxThre
ads)である場合、ステップ587でクライアント要求
が拒否される。したがって、サーバは、過負荷の状況を
回避するためにクライアント・セッション進入制御を管
理する。ステップ589では、スレッドが他のクライア
ント・タスクから解放されるまで、サーバは待ち状態に
入り、おそらくクライアントに待ち状態を通知するはず
である。あるいは、サーバは、クライアント要求を拒否
し、後でクライアントがもう一度試行できるようにする
だけである。
【0142】以下の擬似コードは、このプロセスの実現
例を示している。
【0143】 New client request session with server On the server - If (ReservedThreads) + (MaxReq) <= (MinThreads), (ReservedThreads) increment by (MaxReq) Assign and return a client_port to the client If (MinThreads < (ReservedThreads) + (MaxReq) < (MaxThreads) Increment (ReservedThreads) by (MaxReq) Assign and return a client_port to the client If (ReservedThreads) + (MaxReq) > (MaxThreads) Reject the network request
【0144】図17には、クライアント要求の進入制御
を管理するためのクライアント側プロセスが示されてい
る。ステップ601では、クライアント・タスクがサー
バに割り当てられたクライアント・ポートを使用して新
しいネットワーク要求を出す。ステップ603では、ク
ライアント・タスクがサーバ側の許容数のスレッドのう
ち使用可能な複数のスレッドを備えているかどうかを判
定するためにテストが行われる。これを判定するため
に、(ClientThreads)<(MaxReq)かどうかのテスト
を使用することができる。備えている場合、ステップ6
07でクライアント要求はサーバに送られる。ステップ
609では、現行クライアント・スレッドの数が増分さ
れる。
【0145】サーバ側の許容数のスレッドのすべてが使
用中である場合、ステップ605でネットワーク要求が
拒否されるか、またはこのクライアントからの同時要求
の数が(MaxReq)より少なくなるまで待機状態に入る。
待機状態になっているときに、許容スレッドの1つが解
放された場合、プロセスはステップ605からステップ
607に進むことができる。
【0146】図17には、クライアント要求に対応する
ためにスレッド・プール内のサーバ・スレッドを割り当
て、プール内のスレッドの数を調整するためのサーバ側
のプロセスも示されている。ステップ611では、クラ
イアント要求の処理に必要な期間中、サーバ・スレッド
がクライアント要求に割り当てられる。ステップ613
では、(UnusedThreads)変数が減分される。ステップ
615では、スレッド・プール内のスレッドの数が許容
できるかどうかを判定するためにテストが行われる。
((UnusedThreads)<(MinThreads)&(TotalThread
s)<(MaxThreads))かどうかのテストは、このステ
ップを実行するためのテストの1つである。スレッド・
プール内の使用可能なスレッドの数が許容できない場合
には、スレッド・プール内のスレッドの数を増加するよ
うに管理スレッドに通知される。プロセスはステップ6
19で終了する。
【0147】以下の擬似コードは、このプロセスの実現
例を示している。
【0148】 Client issues network request to the server If (ClientThreads) < (MaxReq), Send the request to the server. Increment (ClientThreads) else Reject the network request
【0149】 Assign server thread to service client request Decrement (UnusedThreads) If (UnusedThread)<(MinThread)&(TotalThread)<(MaxThread) Increase threads in the thread pool
【0150】図18には、サーバがクライアント・ネッ
トワーク要求を完了したときにクライアントとサーバが
従うプロセスが示されている。サーバ側では、ステップ
625でクライアント要求にどのような処理が必要であ
ってもその処理をサーバが完了している。ステップ62
7では、プロトコル・スタックを介してクライアント要
求への応答が送られる。次に、ステップ629では、サ
ーバ・スレッドがスレッド・プールに返される。次に、
ステップ631では、(UnusedThreads)変数が増分さ
れる。
【0151】クライアント側では、ステップ635でプ
ロトコル・スタックがサーバからの応答を受け取る。ス
テップ637では、他のクライアント・タスクが通信ス
レッドのクライアント割振り分を使用できるようにする
ために、(ClientThreads)変数が減分される。ステッ
プ639では、(ClientThread)が(MaxReq)限界を上
回っているためにサーバに要求を送るために待機してい
る同じクライアントから任意のスレッドを起こすための
信号が出される。ステップ641では、プロセスが図1
7のステップ607に移行する。
【0152】図19には、サーバ管理スレッド・プロセ
スが示されている。サーバ管理スレッドは、スレッド・
プール内の未使用スレッドの数がある程度低い限界より
下がったときにスレッド割振りのためにタイマまたは信
号によって起こされる。ステップ653では、さらにス
レッドを追加する必要があるかどうかを判定するための
テストが行われる。適当なテストの1つは、((Unused
Threads)<(MinThreads)&(TotalThreads)<(Max
Threads))かどうかである。そうではない場合、ステ
ップ654で管理スレッドが休眠状態に戻る。そうであ
る場合、ステップ655で((UnusedThreads)−(Min
Threads))個のスレッドをプールに加えるという式に
応じて、通信スレッドがスレッド・プールに追加され
る。ステップ657では、(UnusedThreads)が(MinTh
reads)と等しくなるように設定される。ただし、Unuse
dThreadsが(MinThreads)限界より下がったときだけ、
ただちにスレッドが追加されることに留意されたい。そ
れ以外の場合は、次のタイマ間隔までスレッドが遅延さ
れる。ステップ659では、(TotalThreads)変数が追
加したスレッドの数だけ増分される。管理スレッドはス
テップ654の休眠状態に戻る。
【0153】図19では、パフォーマンスを改善するた
めに通信スレッド・プール内の未使用スレッドの数を低
減するためのサーバ管理スレッド方法も示している。ス
テップ661では、通信スレッドの割振りまたは割振り
解除のために定期的にスレッドを起こすタイマによっ
て、スレッドが起こされる。ステップ663では、スレ
ッド・プール内のスレッドが多すぎるかどうかを判定す
るためのテスト、たとえば、((ReservedThreads)<
(MinThreads))&((UnusedThread)>(MinThread
s))かどうかなどが行われる。そうではない場合、ス
テップ664で次の間隔までスレッドが休眠する。そう
である場合、ステップ665でプール内のスレッドの数
が1だけ低減される。ステップ667では、(TotalThr
eads)が1だけ減分される。所定の期間中にまったく活
動が発生しない場合、結果的に(TotalThreads)変数が
(MinThread)に戻ることになる。ステップ669で
は、スレッド・プール内の未使用スレッドが少なすぎる
かどうかをテストが判定する。(ReservedThreads)>
(TotalThreads)&((ReservedThreads)<(MaxThre
ads))かどうかの式を使用することができる。そうで
ある場合、((ReservedThreads)−(TotalThread
s))を加えるという式に応じて、スレッドがスレッド
・プールに追加される。ステップ673では、(TotalT
hreads)変数が(ReservedThreads)に設定される。管
理スレッドはステップ674の休眠状態に戻る。
【0154】本発明の利点としては、セッションおよび
通常クライアント要求の進入制御がある。さらに、クラ
イアント要求に対応するためのスレッド資源がクライア
ント・タスクに認められた限界まで必ず保証されてい
る。したがって、サーバ・スレッド資源を待ってクライ
アントをいつまでも停止させておくことはない。
【0155】すべてのクライアント間で共用可能な事前
割振りスレッドの場合、クライアント要求に対応するス
レッド実行経路でスレッドの作成または削除が行われな
いので、サーバのパフォーマンスによってクライアント
要求への応答時間が改善される。非活動の期間中に割振
り済みスレッドの数を(MinThreads)まで定期的にプル
ーニング・バックすることによって、オーバコミット・
スレッド資源が最小限になる。プール内のサーバ・スレ
ッドの総数は、構成値(MaxThreads)まで拡大すること
ができる。非活動スレッドは最小限に維持されるので、
これによりシステム・オーバヘッドが低減される。
【0156】(MaxThreads)と(MinThreads)は構成限
界であり、システム管理者がアクセスできるようにする
ことができるので、本発明によって動的スレッド資源調
整が達成される。これらは、手作業で構成して、導入シ
ステムに最適な最小値に調整することによって調整する
ことができる。あるいは、クライアントと同時クライア
ント要求の数について、1日の様々な時間に統計をとり
続け、これらの統計に基づいて自動的に(MinThreads)
と(MaxThreads)の値を計算し調整することもできる。
【0157】マルチスレッド化クライアント/サーバ・
システムではスレッド・プールの概念が一般に使用され
てきたが、クライアントの数とクライアントの使用法に
基づく通信スレッド・プールの動的調整はこれまで行わ
れていない。本発明は、長期または短期で動作するクラ
イアント要求に対応するために同様に適用可能である。
さらに、ユーザ・レベルで動作するネットワーク・プロ
トコル・サーバを実現するためのスレッド・プールの使
い方は、先行技術では実施されていない。
【0158】本発明は、サーバがマルチタスキング化さ
れ、多数のクライアントを効率よくサポートしなければ
ならない、いかなるクライアント/サーバ・システムで
も実施することができる。この解決策は、IBMメイン
フレームMVSや多くのUNIXベースのシステムな
ど、軽量の実行ユニットを持たないシステムには特に有
用である。
【0159】前述のように、上記のアルゴリズムを使用
するネットワーク・プロトコル・サーバは、1組のネッ
トワーク・サーバ・クラスを定義することによって、オ
ブジェクト指向技術を使用して実現することができる。
このようなクラスの定義例を以下に示す。
【0160】 クラスTNetworkServer:公用TNetworkThreadHandle { 公用: TNetworkServer−クラス・コンストラクタ 〜TNetworkServer−クラス・デストラクタ AddClientPort−クライアント・ポート・プールにポートを追加する RemoveClientPort−クライアント・ポート・プールからポートを除去す る AddServerThread−ThreadPoolにスレッドを追加する DeleteServerThread−ThreadPoolからスレッドを削除する ExecuteMgmtThread−管理スレッド入口 ExecuteThread−NetworkThread入口点 私用: RegisterNames−クライアントにとって使用可能になるべきサーバ名を 公表する
【0161】 ネットワーク・サーバ実行用に使用するネットワーク・スレッド・クラス クラスTNetworkThreadHandle: { 公用: TNetworkThreadHandle−クラス・コンストラクタ TNetworkThreadHandle−クラス・デストラクタ Fork−クラス関数を実行する新しいスレッドを開始する Join−スレッドが完了するまで待つ Release−スレッドがそのオブジェクトを削除できることを示す
【0162】 ネットワーク・クライアント/サーバ通信用のRPCクラス class TNWRPCMessage { 公用: virtual TNWRPCMessage(); virtual 〜TNWRPCMessage(); /* クライアント側メソッド: SendRequest() */ virtual kern_return_t SendRequest (const port_t& clientport, void* buffer, int& buflen); // buffer used for inbound/outbound virtual kern_return_t SendRequest (const port_t& sessionport, port_t& clientport, void* buffer, int& buflen); /* サーバ側メソッド: ReceiveRequest() & Reply&Receive() */ virtual kern_return_t ReceiveRequest (const port_t& sessionport void* buffer, int& buflen); virtual kern_return_t ReceiveRequest (const port_t& clientport_pool, void* buffer, int& buflen, port_t& clientport); virtual kern_return_t SendReply (const port_t& newclientport, void* buffer, int& buflen, port_t& sessionport); virtual kern_return_t SendReply (const port_t& clientport, void* buffer, int& buflen); };
【0163】クライアント/サーバ環境でのネットワー
ク要求の表現 ここでは、クライアント/サーバ・モデル用のネットワ
ーク・プロトコル要求のオブジェクト指向表現を示す。
プロトコルAPIがオブジェクト指向で、プロトコル・
インプリメンテーションもオブジェクト指向の場合に
は、プロトコル要求のオブジェクト指向表現は重要なも
のになる。ネットワーク・プロトコルにアクセスするた
めのオブジェクト・ベースのクライアント要求がサーバ
に送られ、このサーバがこれらの要求を適切なネットワ
ーク・プロトコル層オブジェクトに送達する。本発明
は、クライアント・ネットワーク要求を転送し、その要
求をサーバ上に常駐する適切なネットワーク・プロトコ
ル層に送達し、要求の結果をクライアント・アプリケー
ションに取り出すための新しい方式を提示する。クライ
アント要求は「ネットワーク操作」オブジェクトで折り
返されるが、そのオブジェクトはサーバがネットワーク
・プロトコル層オブジェクトに要求を提示できるように
必要な情報をすべて含んでいる。
【0164】以下のシナリオを検討されたい。クライア
ントAPIは1組のオブジェクト指向ネットワーク・プ
ロトコル・インタフェース要求を含み、プロトコルはオ
ブジェクトのスタックとして実現され、それぞれのオブ
ジェクトは特定のOSI層を表している。ネットワーク
・プロトコル・スタックは、ネットワーク・サーバ上に
常駐する様々なネットワーク・プロトコルを提供し、ク
ライアントとサーバとの間でやりとりするためにRPC
またはIPCなどの通信機構が存在する。クライアント
が何らかのデータの送信のようなネットワーク活動を要
求した場合、サーバ上の適切なネットワーク・プロトコ
ル・スタックにその要求を伝送する必要がある。本発明
は、このようなクライアント要求をサーバに転送するた
めの統一方式を提示する。この方式は多様性を利用して
いるので、このような要求を発送し、それをサーバで処
理するプロセスは、どの要求およびプロトコル・スタッ
クについても変わらない。
【0165】ネットワーク・プロトコルにアクセスする
ためのクライアント・インタフェースは、主にTProtoco
lInterfaceクラスによる。このプロトコル・インプリメ
ンテーションは、TProtocolLayerクラスに基づいてそれ
ぞれのOSI層を表している。このネットワーク・サブ
システムは、TCP/IPやSNAなどの各プロトコル
用のTFamilyLayerオブジェクトと、TDataLinkLayerオブ
ジェクトから構成され、どちらのオブジェクトもシステ
ム内に常駐している。セッション層、トランスポート
層、ネットワーク層を表すためのTProtocolLayerオブジ
ェクトのスタックはすべてのクライアント端点ごとに作
成され、クライアント通信端点はTAccessDefinitionオ
ブジェクトによって記述される。このような概念、関連
クラス、その機能については、いずれも上記のプロトコ
ル・インタフェース・モデルの項で説明する。
【0166】1.ネットワーク操作オブジェクト クライアントからサーバへのネットワーク要求とその逆
のネットワーク要求は、いずれもTNetworkOperationオ
ブジェクトを使用して転送される。TNetworkOperation
オブジェクトは、サーバ内のプロトコル層にクライアン
ト・ネットワーク要求を伝送し、その結果をサーバから
クライアントにリレーするための機構を提供する。
【0167】TNetworkOperationクラスは、すべての要
求の基本クラスである。クライアント・インタフェース
がサーバに対して行う各要求ごとに、TNetworkProtocol
からサブクラスが派生している。TProtocolInterfaceメ
ソッドのそれぞれについて、対応する「操作オブジェク
ト」クラスが1つずつ定義されている。図20は、いく
つかのクライアント要求用のクラス・オブジェクトのク
ラス階層を示している。TNetworkOperationクラス70
1は階層の一番上に位置する。TConnectOpクラス703
と、TSendOpクラス705と、TReceiveOpクラス707
と、TDisconnectOpクラス709と、TBindOpクラス71
3は、いずれも基本クラスから派生したもので、TProto
colInterfaceクラスの接続操作、送信操作、受信操作、
切断操作、バインド操作にそれぞれ対応する。GetPeerN
ameおよびGetLocalNameなどの獲得および設定要求は、T
GetSetNetworkOpクラス711という1つの操作クラス
にバンドルされている。
【0168】TNetworkOperationオブジェクトは、ネッ
トワーク・サーバでの対応を必要とする要求を満足する
ためにTProtocolInterfaceによって作成される。TNetwo
rkOperationから派生したクラスは、インタフェースか
らの特定の要求を表す。TNetworkOperationオブジェク
トは、要求が適切なプロトコル層に伝送されるように、
RPC/IPC機構を使用してネットワーク・サーバに
送られる。ネットワーク・サーバがNetworkOperationオ
ブジェクトを受け取ると、それは操作オブジェクト上で
Execute()メソッドを呼び出し、次に適切なプロトコル
・インプリメンテーション層オブジェクト上で対応する
関数を呼び出す。
【0169】したがって、TNetworkOperationオブジェ
クトは、それに対して要求したタスクを実行するために
「組込み知能」を備えている。ネットワーク・サーバ
は、TNetworkOperationオブジェクトを受け取ると、そ
のオブジェクト内のExecute()メソッドを呼び出す。ク
ライアント要求の特徴とは無関係に、サーバ機能は同じ
である。各クライアント要求用のExecute()メソッド
は、クライアント要求を適切なプロトコル層オブジェク
トに伝送するために必要な情報をすべて含んでいる。
【0170】TNetworkOperationオブジェクトは、TProt
ocolInterfaceの具象クラスでも作成することができ
る。たとえば、TBindOpのデフォルト・クラスがTCP
/IPの要求を満足しない場合、TCP/IPインタフ
ェースは、TTCPBindOpクラスを作成するようにTBindOp
を指定変更する。その後、クライアントがバインド要求
を行うと、具象TCP/IPクライアントAPIを表す
TTCPINFクラスはTTCPBindOpオブジェクトを作成する。
特定のクライアント要求の意味を再定義するか、または
新しい要求とその操作オブジェクトを追加することをTN
etworkOperationクラスから継承できる能力により、こ
の方式は極めて柔軟かつ強力なものになる。
【0171】図21は、特定のクライアント要求を満た
すために作成されるクラス・オブジェクトのクラス階層
を示している。同図のTTCPBindOpオブジェクト715
は、クライアント・アプリケーションからのバインド要
求に対応するTTCPTINF::Bind()メソッドによって作成さ
れる。これにより、TProtocolInterface::Bind()メソッ
ドが指定変更される。TTCPNew1Op717とTTCPNew2Op7
19は、いくつかのクライアント要求の場合にTCP/
IPに固有の2つの新しい操作オブジェクトの例であ
る。
【0172】2.TNetworkOperationの関数 TNetworkOperationクラスが提供する重要な関数の一部
を以下に示す。
【0173】Classコンストラクタ: この関数は、ク
ライアント・アプリケーションによる要求の対象となる
プロトコル層インデックスを設定するものである。
【0174】層インデックスは、その要求をプロトコル
・スタックのトランスポート層、ネットワーク層、ファ
ミリー層のいずれに送るべきかを識別するものである。
【0175】Execute(): この関数は、TNetworkOpera
tionオブジェクトを受け取ったときにサーバによって呼
び出される。この関数は、操作オブジェクトから層イン
デックスを獲得し、操作オブジェクトから関連パラメー
タを収集し、スタックの適切なTProtocolLayerオブジェ
クトへの呼出しを行うものである。たとえば、TBindO
p::Execute()は、TTCPProtocolAddressオブジェクトをB
ind()関数へのパラメータとしてTProtocolLayer::Bin
d()を呼び出すはずである。
【0176】Get/SetLayerIndex: この関数は、操作
オブジェクトで層インデックスを返す/設定するもので
ある。
【0177】SetLocationToClient: デフォルトで
は、操作オブジェクトがその位置をサーバに設定する。
操作オブジェクトは、サーバ上にあるか、クライアント
上にあるかによって、挙動が異なってくる。たとえば、
TProtocolLayer::Bind()関数へのパラメータなので、TB
indOpはTNetworkAddressオブジェクトをサーバに送る必
要がある。しかし、サーバはアドレスをクライアントに
戻す必要はない。位置フラグを使用して、パラメータの
受渡しが制御される。ネットワーク操作オブジェクトが
クライアントによって作成されると、そのオブジェクト
は位置をクライアントに設定する。
【0178】Stream-out演算子: この関数は、操作オ
ブジェクトを平坦化し、そのオブジェクトのデータ・メ
ンバーをデータ・ストリームに入れるために使用する。
たとえば、TBindOp用のStream-out演算子は、それがク
ライアントからのオブジェクトを送信する場合にTNetwo
rkAddressオブジェクトを平坦化する。TSendOpは、バッ
ファおよび宛先アドレスをサーバに送るためにバッファ
・アドレスとTNetworkAddressオブジェクトを平坦化す
ることができる。次にサーバはSendOp::Execute()を呼
び出し、次にこれがユーザ・データとともにTProtocolL
ayer::Xmit()メソッドを呼び出して、宛先にデータを送
る。送信が完了すると、サーバはRPC/IPC機構を
使用してTSendCompletionオブジェクトをクライアント
に戻す。TSendOp用のStream-out演算子は、それがサー
バであるかどうかを検査し、TSendCompletionオブジェ
クトをストリームアウトする。
【0179】Stream-in演算子: この関数は、オブジ
ェクトが平坦化された場合にデータ・ストリームからオ
ブジェクトを再構築するために使用する。Stream-out演
算子とは逆の操作であることは明らかである。操作オブ
ジェクトは、データ・ストリームにオブジェクトを平坦
化したり、データ・ストリームからオブジェクトを再構
築するために位置フラグを使用する。
【0180】3.クライアントサーバ通信 ユーザが作成するどの通信端点についても、プロトコル
層オブジェクトのスタックに端点を関連付けるために維
持しなければならない固有のIDが存在していなければ
ならない。プロトコル層オブジェクトは、サーバ・プロ
セス上の端点を表す。ただし、この対応は1対1である
ことに留意されたい。このため、TAccessDefinition::I
nstantiate()メソッドを使用して端点の作成中にTAcces
sOpオブジェクトが作成される。TAccessOpオブジェクト
は、通信のクライアント側を表すClientStackHeadオブ
ジェクトを作成する。次にTAccessOpオブジェクトは平
坦化され、ClientStackHeadによりRPCまたはIPC
機構を使用してサーバに送られる。次にサーバは、TNet
workOperationのstream-in演算子を使用してデータ・ス
トリームからTAccessOpオブジェクトを再構築し、TAcce
ssOp::Execute()メソッドを呼び出す。この関数は、プ
ロトコル・インタフェース・オブジェクトからプロトコ
ル層オブジェクトを作成するServerStackHeadオブジェ
クトを作成し、TServerStackHeadオブジェクトでこれら
のプロトコル層オブジェクトへのポインタのリストを保
持する。TServerStackHeadポインタはネットワーク・サ
ーバのグローバル・テーブルに格納され、インデックス
はクライアントにストリームアウトされる。TClientSta
ckHeadオブジェクトは、ServerStackHeadIDを格納し、
後続のすべての操作にそれを使用する。したがって、Se
rverStackHeadIDは、クライアントとサーバとの間で固
有のIDとして機能する。TBindOpなどの後続の要求
は、サーバによって受け取られると、TBindOpで渡され
るIDを使用して、対応するサーバ・スタック・ヘッド
の位置を特定する。
【0181】TClientStackHeadとTServerStackHeadは、
所与の端点についてクライアントとサーバとのやりとり
を管理する。これらのオブジェクトは、クライアント端
点のハンドルであるTAccessDefinitionオブジェクト
と、サーバ上の端点を表すTProtocolLayerオブジェクト
の対応スタックとの間をリンクする。また、ClientStac
kHeadとServerStackHeadの対は、クライアントとサーバ
をリンクする内部管理オブジェクトを構成する。
【0182】TClientStackHeadの重要な関数の一部を以
下に示す。
【0183】1.ProcessOperation: この関数は、TC
lientStackHeadがTNetworkOperationオブジェクトを処
理するために、TProtocolInterfaceまたはTAccessDefin
itionオブジェクトによって呼び出される。この関数
は、TNetworkOperationオブジェクトを平坦化し、シス
テムが提供するRPC/IPC機構を使用して、平坦化
した操作オブジェクトをサーバに送る。また、この関数
は、送られた要求に対してサーバが応答したときにNetw
orkOperationオブジェクトも再構築する。基本的にこの
関数は、サーバとの間でNetworkOperationオブジェクト
を送受信するものである。
【0184】2.SaveServerInfo: このメソッドは、
ServerStackHeadIDをClientStackHeadに保管するために
呼び出されるものである。AccessDefinitionがインスタ
ンス化されると、サーバは端点用に作成されたServerSt
ackHead用のIDとともにTAccessOpオブジェクトを返
す。その後、サーバに対して要求が送られるときは、必
ずNetworkOperationがこのIDを使用する。
【0185】3.CancelRequests: この関数は、クラ
イアント・アプリケーションによってTProtocolInterfa
ce::CancelRequestsが呼び出されたとき、またはクライ
アント・アプリケーションが異常終了したときに呼び出
されるものである。ClientStackHeadは、必要な終結処
置を行うようServerStackHeadに通知するCancelRequest
sOp操作オブジェクトを作成する。
【0186】ServerStackHeadの重要な関数の一部を以
下に示す。
【0187】1.Classコンストラクタ: このコンス
トラクタは、TProtocolInterfaceオブジェクトのスタッ
クを受け取り、対応するTProtocolLayerオブジェクトを
構築する。これは、後続の要求からこれらの層オブジェ
クトを呼び出すためにこれらの層オブジェクトへのポイ
ンタを維持している。
【0188】2.ProcessOperation: この関数は、ク
ライアントからNetworkOperationオブジェクトを受け取
ったときにNetworkServerProcessによって呼び出される
ものである。この関数は、適切なProtocolLayerオブジ
ェクトの位置を特定した後、TNetworkOperationオブジ
ェクト上でExecute()メソッドを呼び出す。次にExecute
()メソッドは、ProtocolLayerオブジェクト上で必要な
メソッドを呼び出す。
【0189】3.GetProtocolLayer: この関数は、イ
ンデックスが付けられたTProtocolLayerオブジェクトへ
のポインタを返すものである。このインデックスはクラ
イアント・アプリケーションによって渡される。
【0190】4.CancelRequests: この関数は、プロ
トコル・スタック上のすべての保留要求を取り消すため
にTCancelRequestsOpを受け取ったときに呼び出される
ものである。これは、TClientStackHeadのCancelReques
tsに対応するサーバ側の関数である。
【0191】図22は、上記のオブジェクトのクラス階
層を示し、Boochの表記法を使用してオブジェクト
・モデルを記述している。TAccessDefinition101
は、TNetworkDefinition100から派生したものであ
る。TAccessDefinition101は、端点を構成する様々
なTProtocolInterface135オブジェクトを含んでい
る。また、TAccessDefinition101は、クライアント
サーバ通信のプリミティブ機能のすべてを実行するTCli
entStackHead721も含んでいる。TServerStackHead7
23は、ClientStackHeadに対応するサーバ側のクラス
である。TClientStackHeadとTServerStackHeadの対は、
プロトコル・インタフェースとプロトコル・インプリメ
ンテーション層オブジェクトとのリンクを表し、したが
って、クライアント・アプリケーションとサーバ上のプ
ロトコル・スタックとをリンクする。TProtocolInterfa
ceクラス135とTProtocolLayerクラス151はともに
共通基本クラスであるMProtocolService133から派生
したものである。クライアントからのネットワーク要求
はいずれもTNetworkOperation701オブジェクトで折
り返されるサーバに送られる。すなわち、TProtocolInt
erface内のメソッドが適切なTNetworkOperationオブジ
ェクトを作成し、操作オブジェクトはTClientStackHead
によって平坦化され、サーバに送られる。TNetworkOper
ationオブジェクトは、TClientStackHeadとTServerStac
kHeadの両方を使用する。
【0192】図23は、クライアントからサーバへの要
求とその逆の要求の流れを示している。前述のように、
端点は、クライアント上のTAccessDefinitionオブジェ
クトと、サーバ上のTProtocolLayerオブジェクトのスタ
ックによって表される。クライアントとサーバとのやり
とりは、TClientStackHeadオブジェクトとTServerStack
Headオブジェクトによって管理される。同図は2つの端
点725を示している。クライアントからのネットワー
ク要求は、システムのRPCまたはIPC機構を使用し
てTNetworkOperationオブジェクトとしてServerProcess
/Thread727に送られる。ServerProcessは、TNetwork
Operationオブジェクトを再構築し、次に端点1を表すT
ServerStackHeadオブジェクトの位置を特定し、ServerS
tackHead1729に要求を経路指定する。サーバ上のこ
の端点を表すServerStackHead2へ端点2から要求を経路
指定する場合も同様の処理が行われる。次に、ServerSt
ack1はTNetworkOperation::Execute()メソッドを呼び出
し、これがスタック1 733のTTransportLayerの適
切なメソッドを呼び出す。TTransportLayerは、要求をT
FamilyLayer737に送るTNetworkLayerのメソッドの呼
出しを選ぶこともできる。次にファミリー層は、スタッ
ク1 733のTDataLinkLayerに要求を送る。TTranspo
rtLayerは、要求をTFamilyLayer737に送るTNetworkL
ayerのメソッドの呼出しを選ぶこともできる。次にファ
ミリー層は、要求の処理後、アダプタに要求を送ること
ができるTDataLinkLayer739に要求を送る。DataLink
Layerは、アダプタを介して何らかのパケットを受信す
ると、そのパケットをファミリー層にディスパッチす
る。TFamilyLayerは、そのパケットを適切なスタックに
経路指定する。呼出しからTTransportLayerに戻ると、T
NetworkOperation::Execute()は応答を収集し、システ
ムのRPC/IPC機構を使用して適切なTClientStack
HeadにTNetworkOperationオブジェクトを戻す。この手
続きは、サーバ上の端点を表す端点2とスタック2 7
35上のいかなる要求についても同じである。
【0193】図23は、クライアントとサーバのクラス
・オブジェクト間の関係を示している。以下の例では、
一般的なネットワークのクライアント/サーバ・モデル
を想定している。
【0194】3.例 TCP/IPトランスポート・インタフェースを表すTT
CPTINFについて検討する。TTCPTINF::Bind()が入力パラ
メータとしてTTCPAddressを取り、TTCPAddressオブジェ
クトを返すものと想定する。ただし、TTCPAddressはTPr
otocolAddressから派生したものであることに留意され
たい。図24に示すように、TTCPTINF::Bind()メソッド
は以下のように実行する。
【0195】ステップ801では、TNetworkOperation
オブジェクトであるTTCPBindOpが作成される。
【0196】ステップ803では、このAccessDefiniti
on用のClientStackHeadオブジェクトを獲得する。
【0197】ステップ805では、TTCPBindOpオブジェ
クトのTTCPAddressを平坦化し、要求をサーバに送るた
めに、ClientStackHead::ProcessOperation()が呼び出
される。サーバは、ステップ807でRPC/IPCな
どのメッセージ・ストリームから平坦化したTTCPBindOp
を再構築する。
【0198】ステップ809では、サーバは、TTCPBind
Opオブジェクトで渡されたスタックIDからServerStac
kHeadオブジェクトの位置を特定する。
【0199】ステップ811では、ServerStackHeadオ
ブジェクトが適切なプロトコル層オブジェクトにTProto
colLayer::Bind()を呼び出す。
【0200】ステップ813では、バインドするための
呼出しがTTCPAddressオブジェクトを返し、サーバがTTC
PBindOpで復帰情報(アドレス)を復元し、それをクラ
イアントにストリームで戻す。ClientStackHeadはメッ
セージ・ストリームからTTCPBindOp()オブジェクトを再
構築する。最後に、ステップ817では、TTCPINF::Bin
d()がTTCPBindOpからTTCPAddressを取り出し、それをク
ライアント・プログラムに返す。
【0201】特定の実施例に関連して本発明を示し説明
してきたが、当業者であれば、修正を加え他の環境で本
発明を実施できることを理解できるだろう。たとえば、
上記の本発明はソフトウェアによって選択的に再構成ま
たは活動化される汎用コンピュータで都合よく実施する
ことができるが、当業者は、上記の発明を実行するため
に特別に設計された専用装置を含む、ハードウェア、フ
ァームウェア、またはソフトウェアとファームウェアと
ハードウェアの組合せで本発明を実施できることに留意
されたい。したがって、特許請求の範囲に記載する本発
明の精神および範囲を逸脱せずに、形式および細部の変
更を行うことができる。
【0202】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0203】(1)サーバ・システム内の実行ユニット
の、クライアント・プロセスとサーバ・プロセスとの間
の通信プロセス専用のプールを動的に管理するための方
法において、通信プロセス・プール内に、典型的なクラ
イアント・ロードをサポートするのに必要な数である最
小数、およびサーバ・システムにとって過負荷にならず
にピーク・クライアント・ロードをサポートするための
上限である最大数の実行ユニットを割り振るステップ
と、クライアントによるサービス要求をサーバ・システ
ムが受信するステップとを含み、受信した各クライアン
ト要求ごとに、受信したクライアント要求に実行ユニッ
トを割り当てると、通信プロセス・プール内の現行数の
実行ユニットが最大数の実行ユニットを上回ることにな
るかどうかを判定し、上回る場合にクライアント要求を
拒否するステップと、受信したクライアント要求に実行
ユニットを割り当てると、その要求を行うクライアント
・タスクに割り当てられた現行数の実行ユニットがクラ
イアント・タスク用の割り当てられた実行ユニットの数
を上回ることになるかどうかを判定し、上回る場合にク
ライアント要求を拒否するステップと、判定ステップが
否定であればクライアント要求を許可し、その結果、通
信プロセス・プール内の実行ユニットがクライアント要
求に割り当てられるステップとを含むことを特徴とする
方法。 (2)サーバ・システム内の実行ユニットの、クライア
ント・プロセスとサーバ・プロセスとの間の通信プロセ
ス専用のプールを動的に管理するためのシステムにおい
て、通信プロセス・プール内に、典型的なクライアント
・ロードをサポートするのに必要な数である最小数、お
よびサーバ・システムにとって過負荷にならずにピーク
・クライアント・ロードをサポートするための上限であ
る最大数の実行ユニットを割り振る手段と、クライアン
トによるサービス要求をサーバ・システムが受信する手
段と、受信したクライアント要求に実行ユニットを割り
当てると、通信プロセス・プール内の現行数の実行ユニ
ットが最大数の実行ユニットを上回ることになるかどう
かを判定する手段と、受信したクライアント要求に実行
ユニットを割り当てると、その要求を行うクライアント
・タスクに割り当てられた現行数の実行ユニットがクラ
イアント・タスク用の割り当てられた実行ユニットの数
を上回ることになるかどうかを判定する手段と、通信プ
ロセス・プール内の実行ユニットをクライアント要求に
割り当てることができると判定手段が確認した場合にク
ライアント要求を許可する手段とを含むことを特徴とす
るシステム。 (3)サーバ・システム内の実行ユニットの、クライア
ント・プロセスとサーバ・プロセスとの間の通信プロセ
ス専用のプールを動的に管理するためのコンピュータが
読取り可能な媒体上のコンピュータ・プログラム製品に
おいて、通信プロセス・プール内に、典型的なクライア
ント・ロードをサポートするのに必要な数である最小
数、およびサーバ・システムにとって過負荷にならずに
ピーク・クライアント・ロードをサポートするための上
限である最大数の実行ユニットを割り振るようにシステ
ムに指示する手段と、クライアントによるサービス要求
をサーバ・システムが受信するようにシステムに指示す
る手段と、受信したクライアント要求に実行ユニットを
割り当てると、通信プロセス・プール内の現行数の実行
ユニットが最大数の実行ユニットを上回ることになるか
どうかを判定するようにシステムに指示する手段と、受
信したクライアント要求に実行ユニットを割り当てる
と、その要求を行うクライアント・タスクに割り当てら
れた現行数の実行ユニットがクライアント・タスク用の
割り当てられた実行ユニットの数を上回ることになるか
どうかを判定するようにシステムに指示する手段と、通
信プロセス・プール内の実行ユニットをクライアント要
求に割り当てることができるという判定に応答してクラ
イアント要求を許可するようにシステムに指示する手段
とを含むことを特徴とするコンピュータ・プログラム製
品。
【図面の簡単な説明】
【図1】本発明の教示により構成されたコンピュータ・
システムを示す図である。
【図2】ネットワーク定義オブジェクト用のクラス階層
を示す図である。
【図3】ネットワーク・アドレス・クラス用のクラス階
層を示す図である。
【図4】プロトコル・インタフェース・クラス用のクラ
ス階層を示す図である。
【図5】プロトコル層クラス用のクラス階層を示す図で
ある。
【図6】接続指向遷移の状態図である。
【図7】無接続状態遷移の状態図である。
【図8】本発明のTCP/IP実施例のクラス関係を示
す図である。
【図9】本発明によりネットワーク接続をセットアップ
するためのプロセスの流れ図である。
【図10】図9に示すネットワーク接続プロセスの専用
ネットワーク層にある様々なオブジェクトの体系図であ
る。
【図11】ネットワーク事象オブジェクト用のクラス階
層を示す図である。
【図12】単一の通信端点から事象を収集するためのプ
ロセスの流れ図である。
【図13】複数の通信端点から事象を収集するためのプ
ロセスの流れ図である。
【図14】ネットワーク・プロトコル・サーバのクライ
アント要求を処理するために通信スレッドのプールを管
理するための第1および第2の実施例の体系図である。
【図15】ネットワーク・プロトコル・サーバのクライ
アント要求を処理するために通信スレッドのプールを管
理するための第1および第2の実施例の体系図である。
【図16】通信スレッドのプール用の管理プロセスの流
れ図である。
【図17】通信スレッドのプール用の管理プロセスの流
れ図である。
【図18】通信スレッドのプール用の管理プロセスの流
れ図である。
【図19】通信スレッドのプール用の管理プロセスの流
れ図である。
【図20】ネットワーク操作オブジェクト用のクラス階
層図である。
【図21】ネットワーク操作オブジェクト用のクラス階
層図である。
【図22】本発明の様々なクラス間のクラス関係を示す
図である。
【図23】本発明によるネットワーク内の様々なオブジ
ェクト間のメッセージの流れを示す図である。
【図24】ネットワーク操作オブジェクトでネットワー
ク・プロトコル要求を渡すための流れ図である。
【符号の説明】
11 システム・ユニット 12 キーボード 13 マウス 14 グラフィック・ディスプレイ 15A スピーカ 15B スピーカ 21 システム・バス 22 マイクロプロセッサ 23 ROM 24 RAM 25 メモリ管理チップ 26 ハード・ディスク・ドライブ 27 フロッピー・ディスク・ドライブ 28 キーボード制御装置 29 マウス制御装置 30 ビデオ制御装置 31 オーディオ制御装置 32 CD−ROM 33 ディジタル信号プロセッサ 40 入出力制御装置 46 ネットワーク 48 オペレーティング・システム 49 クライアント・アプリケーション 50 クライアント・インタフェース 51 プロトコル・オブジェクト 52 サーバ・アプリケーション
───────────────────────────────────────────────────── フロントページの続き (72)発明者 レオ・ユエ・タク・ユング アメリカ合衆国78759 テキサス州オー スチン ディーケイ・ラーンチ・ロード 11714 (56)参考文献 特開 平6−332833(JP,A) 特開 平8−44576(JP,A) 特開 平7−160648(JP,A) 特開 平6−332834(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 G06F 15/16 G06F 13/00 351 - 357 G06F 15/00 310 - 330 G06F 1/00 370 CSDB(日本国特許庁)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】サーバ・システム内の実行ユニットの、ク
    ライアント・プロセスとサーバ・プロセスとの間の通信
    プロセス専用のプールを動的に管理するための方法にお
    いて、 典型的なクライアント・ロードをサポートするのに必要
    な数である最小数を通信プロセス・プール内に設定する
    ステップと、 サーバ・システムにとって過負荷にならずにピーク・ク
    ライアント・ロードをサポートするための上限である実
    行ユニットの最大数を通信プロセス・プール内に設定す
    るステップと、 それぞれのクライアントに割当てることの出来る実行ユ
    ニットの最大割当数を通信プロセス・プール内に設定す
    るステップと、 クライアントによるサービス要求をサーバ・システムに
    より受信するステップと、 通信プール内の未使用の実行ユニットの数が所定の数よ
    り少ないかどうかを判定し、未使用の実行ユニットの数
    が所定の数より少ないならば、未使用の実行ユニットの
    追加により実行ユニットの現行数が実行ユニットの最大
    数を超過しない限り、通信プール内に未使用の実行ユニ
    ットを追加するステップと、 を含み、 受信した各クライアント要求ごとに、 受信したクライアント要求に実行ユニットを割り当てる
    と、通信プロセス・プール内の実行ユニットの現行数が
    実行ユニットの最大数を上回ることになるかどうかを判
    定し、上回る場合にクライアント要求を拒否するステッ
    プと、 受信したクライアント要求に実行ユニットを割り当てる
    と、その要求を行うクライアントに割り当てられた実行
    ユニットの現行数がクライアント用の実行ユニットの最
    大割当数を上回ることになるかどうかを判定し、上回る
    場合にクライアント要求を拒否し、判定ステップが否定
    であればクライアント要求を許可し、その結果、通信プ
    ロセス・プール内の実行ユニットがクライアント要求に
    割り当てられるようにするステップと、 を含むことを特徴とする方法。
  2. 【請求項2】サーバ・システム内の実行ユニットの、ク
    ライアント・プロセスとサーバ・プロセスとの間の通信
    プロセス専用のプールを動的に管理するための方法にお
    いて、 典型的なクライアント・ロードをサポートするのに必要
    な数である最小数を通信プロセス・プール内に設定する
    ステップと、 サーバ・システムにとって過負荷にならずにピーク・ク
    ライアント・ロードをサポートするための上限である実
    行ユニットの最大数を通信プロセス・プール内に設定す
    るステップと、 それぞれのクライアントに割当てることの出来る実行ユ
    ニットの最大割当数を通信プロセス・プール内に設定す
    るステップと、 クライアントによるサービス要求をサーバ・システムに
    より受信するステップと、 通信プール内の未使用の実行ユニットの数が所定の数よ
    り多いかどうかを判定し、未使用の実行ユニットの数が
    所定の数より多いならば、通信プール内に未使用の実行
    ユニットを減じるステップと、 を含み、 受信した各クライアント要求ごとに、 受信したクライアント要求に実行ユニットを割り当てる
    と、通信プロセス・プール内の実行ユニットの現行数が
    実行ユニットの最大数を上回ることになるかどうかを判
    定し、上回る場合にクライアント要求を拒否するステッ
    プと、 受信したクライアント要求に実行ユニットを割り当てる
    と、その要求を行うクライアントに割り当てられた実行
    ユニットの現行数がクライアント用の実行ユニットの最
    大割当数を上回ることになるかどうかを判定し、上回る
    場合にクライアント要求を拒否し、判定ステップが否定
    であればクライアント要求を許可し、その結果、通信プ
    ロセス・プール内の実行ユニットがクライアント要求に
    割り当てられるようにするステップと、 を含むことを特徴とする方法。
JP04071397A 1996-03-08 1997-02-25 通信プロセス・プール内の実行ユニットを動的に管理するための方法 Expired - Fee Related JP3229237B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/613,106 US6182109B1 (en) 1996-03-08 1996-03-08 Dynamic execution unit management for high performance user level network server system
US08/613106 1996-03-08

Publications (2)

Publication Number Publication Date
JPH09265409A JPH09265409A (ja) 1997-10-07
JP3229237B2 true JP3229237B2 (ja) 2001-11-19

Family

ID=24455880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04071397A Expired - Fee Related JP3229237B2 (ja) 1996-03-08 1997-02-25 通信プロセス・プール内の実行ユニットを動的に管理するための方法

Country Status (4)

Country Link
US (1) US6182109B1 (ja)
EP (1) EP0794490A3 (ja)
JP (1) JP3229237B2 (ja)
KR (1) KR100253930B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234648A (ja) * 2003-01-10 2004-08-19 Matsushita Electric Ind Co Ltd グループ加入認可システム、サーバ機器及びクライアント機器

Families Citing this family (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175854B1 (en) * 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
US6758755B2 (en) * 1996-11-14 2004-07-06 Arcade Planet, Inc. Prize redemption system for games executed over a wide area network
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6189023B1 (en) * 1997-09-30 2001-02-13 Tandem Computers Incorporated Simulating shared code thread modules with shared code fibers
US7024450B1 (en) * 1997-10-06 2006-04-04 Mci, Inc. Method and apparatus for deploying service modules among service nodes distributed in an intelligent network
US6425005B1 (en) * 1997-10-06 2002-07-23 Mci Worldcom, Inc. Method and apparatus for managing local resources at service nodes in an intelligent network
US6594355B1 (en) * 1997-10-06 2003-07-15 Worldcom, Inc. Method and apparatus for providing real time execution of specific communications services in an intelligent network
US6804711B1 (en) * 1997-10-06 2004-10-12 Mci, Inc. Method and apparatus for managing call processing services in an intelligent telecommunication network
US6779030B1 (en) 1997-10-06 2004-08-17 Worldcom, Inc. Intelligent network
DE19802364A1 (de) * 1998-01-22 1999-07-29 Siemens Ag Vorrichtung und Verfahren zur Steuerung von Prozessen auf einem Computersystem
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US6788649B1 (en) 1998-08-03 2004-09-07 Mci, Inc. Method and apparatus for supporting ATM services in an intelligent network
US6493749B2 (en) * 1998-08-17 2002-12-10 International Business Machines Corporation System and method for an administration server
US6622155B1 (en) 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
GB2345555A (en) * 1999-01-05 2000-07-12 Ibm Controlling device access in a network
EP1860519B1 (en) * 1999-02-26 2011-07-27 Henry Haugland Mass Generation of Individual Virtual Servers, Virtual Web Sites and Virtual Web Objects
US6925642B1 (en) * 1999-04-29 2005-08-02 Hewlett-Packard Development Company, L.P. Distributed computer network which spawns inter-node parallel processes based on resource availability
US6604125B1 (en) 1999-09-24 2003-08-05 Sun Microsystems, Inc. Mechanism for enabling a thread unaware or non thread safe application to be executed safely in a multi-threaded environment
AU2112301A (en) 1999-09-24 2001-04-24 Sun Microsystems, Inc. Mechanism for enabling session information to be shared across multiple processes
US6701367B1 (en) 1999-09-24 2004-03-02 Sun Microsystems, Inc. Mechanism for enabling customized session managers to interact with a network server
US6629142B1 (en) 1999-09-24 2003-09-30 Sun Microsystems, Inc. Mechanism for optimizing processing of client requests
US6542920B1 (en) * 1999-09-24 2003-04-01 Sun Microsystems, Inc. Mechanism for implementing multiple thread pools in a computer system to optimize system performance
US6895584B1 (en) 1999-09-24 2005-05-17 Sun Microsystems, Inc. Mechanism for evaluating requests prior to disposition in a multi-threaded environment
US6766349B1 (en) * 1999-09-24 2004-07-20 Sun Microsystems, Inc. Mechanism for obtaining a thread from, and returning a thread to, a thread pool without attaching and detaching
KR100476649B1 (ko) * 1999-10-12 2005-03-18 주식회사 케이티 인터넷 프로토콜(IP)망에서 서비스품질(QoS) 보장을 위한 동적 부하 제어 방법
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
KR100703385B1 (ko) * 2000-01-07 2007-04-03 엘지엔시스(주) 공통 인터페이스를 갖는 응용 프로그램 인터페이스 시스템
JP2001197119A (ja) * 2000-01-13 2001-07-19 Nec Corp サーバ装置、ネットワークシステム、及びその受信負荷制御方法
US6938256B2 (en) 2000-01-18 2005-08-30 Galactic Computing Corporation System for balance distribution of requests across multiple servers using dynamic metrics
US7137115B2 (en) * 2000-01-25 2006-11-14 Fujitsu Limited Method for controlling multithreading
US7117263B1 (en) * 2000-02-01 2006-10-03 Hewlett-Packard Development Company, L.P. Apparatus and method for processing requests from an external queue in a TCP/IP-based application system
US6732182B1 (en) 2000-05-17 2004-05-04 Worldcom, Inc. Method for generating packet loss report by a data coordinator in a multicast data transmission network utilizing a group shortest path tree
GB0011954D0 (en) * 2000-05-17 2000-07-05 Univ Surrey Protocol stacks
GB0011976D0 (en) * 2000-05-19 2000-07-05 Smith Neale B Parallelism throttling
US6941379B1 (en) * 2000-05-23 2005-09-06 International Business Machines Corporation Congestion avoidance for threads in servers
US6965892B1 (en) 2000-05-31 2005-11-15 International Business Machines Corporation Method, system and program products for concurrently accessing a global data repository by multithreaded clients
US7487152B1 (en) 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US6816905B1 (en) * 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
WO2002037799A2 (en) * 2000-11-03 2002-05-10 The Board Of Regents Of The University Of Nebraska Load balancing method and system
US20020069241A1 (en) * 2000-12-06 2002-06-06 Girija Narlikar Method and apparatus for client-side proxy selection
US6996833B1 (en) * 2001-03-27 2006-02-07 Microsoft Corporation Protocol agnostic request response pattern
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
US20030061262A1 (en) * 2001-09-25 2003-03-27 Hahn Stephen C. Method and apparatus for partitioning resources within a computer system
GB2366891B (en) * 2001-12-06 2002-11-20 Appsense Ltd Improvements in and relating to computer apparatus terminal server apparatus & performance management methods therefor
US20030140093A1 (en) * 2002-01-23 2003-07-24 Factor Cory L. Method and apparatus for providing content over a distributed network
US7096475B2 (en) * 2002-03-05 2006-08-22 Exigen Group Runlets as application execution units
US7107327B2 (en) * 2002-04-26 2006-09-12 Sun Microsystems, Inc. Method and apparatus for determining a server configuration based on an execution profile of an application
US20030233485A1 (en) * 2002-06-13 2003-12-18 Mircrosoft Corporation Event queue
US7698434B2 (en) * 2002-08-29 2010-04-13 Bea Systems, Inc. J2EE connector architecture
US7765299B2 (en) * 2002-09-16 2010-07-27 Hewlett-Packard Development Company, L.P. Dynamic adaptive server provisioning for blade architectures
US7237242B2 (en) * 2002-12-31 2007-06-26 International Business Machines Corporation Dynamic thread pool tuning techniques
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7457302B1 (en) * 2002-12-31 2008-11-25 Apple Inc. Enhancement to loop healing for malconfigured bus prevention
TWI349204B (en) * 2003-01-10 2011-09-21 Panasonic Corp Group admission system and server and client therefor
US7263554B2 (en) 2003-02-28 2007-08-28 Bea Systems, Inc. Method and system for performing resource pool maintenance by refreshing resources based on the pool resource test
US7080126B2 (en) * 2003-02-28 2006-07-18 Bea Systems, Inc. Computer program product for performing resource pool maintenance by maintaining resources in several deques
US7080145B2 (en) * 2003-02-28 2006-07-18 Bea Systems, Inc. Method for performing resource pool maintenance by maintaining resources in several deques
US7451183B2 (en) * 2003-03-21 2008-11-11 Hewlett-Packard Development Company, L.P. Assembly and method for balancing processors in a partitioned server
US7363626B2 (en) * 2003-03-24 2008-04-22 Sun Microsystems, Inc. Thread level application partitioning
US7225437B2 (en) 2003-03-26 2007-05-29 Sun Microsystems, Inc. Dynamic distributed make
US7467390B2 (en) 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
GB0312171D0 (en) * 2003-05-28 2003-07-02 Ibm Workload balancing
US20050010925A1 (en) * 2003-07-10 2005-01-13 Charbel Khawand Interprocessor communication protocol with smart streaming port
US8533597B2 (en) * 2003-09-30 2013-09-10 Microsoft Corporation Strategies for configuring media processing functionality using a hierarchical ordering of control parameters
US7552450B1 (en) 2003-09-30 2009-06-23 Microsoft Corporation Systems and methods for enabling applications via an application programming interface (API) to interface with and configure digital media components
US7647599B2 (en) * 2003-12-22 2010-01-12 Motorola, Inc. Interprocessor communication network providing dynamic dedication of ports
US7703101B2 (en) * 2004-02-13 2010-04-20 International Business Machines Corporation Autonomic workload classification using predictive assertion for wait queue and thread pool selection
US20050179936A1 (en) * 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
US7756033B2 (en) * 2004-05-03 2010-07-13 Verizon Business Global Llc Systems and methods for managing multicast data transmissions
US8244865B2 (en) * 2004-10-08 2012-08-14 International Business Machines Corporation Method and apparatus for autonomic management of connection pools
US7640346B2 (en) * 2005-02-01 2009-12-29 Microsoft Corporation Dispatching network connections in user-mode
JP4117299B2 (ja) * 2005-02-28 2008-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバの多重度の上限値を制御するための方法、管理サーバ、サーバ、およびプログラム
US7957413B2 (en) * 2005-04-07 2011-06-07 International Business Machines Corporation Method, system and program product for outsourcing resources in a grid computing environment
US8091089B2 (en) 2005-09-22 2012-01-03 International Business Machines Corporation Apparatus, system, and method for dynamically allocating and adjusting meta-data repository resources for handling concurrent I/O requests to a meta-data repository
US7823136B2 (en) * 2005-10-11 2010-10-26 Bea Systems, Inc. Callbacks for monitoring driver-level statistics
US7784033B2 (en) * 2005-10-11 2010-08-24 Bea Systems, Inc. JDBC monitoring and diagnostics enhancements
US20070083526A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava Monitoring statistics and profile information for JDBC resources
US20070083525A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava JDBC debugging enhancements
US7921084B2 (en) * 2005-10-11 2011-04-05 Oracle International Corporation Timer-driven diagnostic image inhibition for statement cache/connection pool
US8260924B2 (en) * 2006-05-03 2012-09-04 Bluetie, Inc. User load balancing systems and methods thereof
US8056082B2 (en) * 2006-05-31 2011-11-08 Bluetie, Inc. Capacity management and predictive planning systems based on trended rate change of monitored factors and methods thereof
US7493249B2 (en) 2006-06-23 2009-02-17 International Business Machines Corporation Method and system for dynamic performance modeling of computer application services
JP5011927B2 (ja) * 2006-10-02 2012-08-29 セイコーエプソン株式会社 アプリケーション実行システム、コンピュータ、アプリケーション実行システムのアプリケーション実行方法およびプログラム
EP1990738B1 (en) * 2007-05-07 2011-03-09 Software AG Method and server for synchronizing a plurality of clients accessing a database
US8122449B2 (en) * 2007-09-07 2012-02-21 International Business Machines Corporation Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel
US7840653B1 (en) * 2007-10-25 2010-11-23 United Services Automobile Association (Usaa) Enhanced throttle management system
US20090157817A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Using an unsynchronized event pool to improve performance of an event driven im gateway
JP5285069B2 (ja) * 2008-06-17 2013-09-11 パナソニック株式会社 サーバ装置、サーバ処理方法およびプログラム
JP5509564B2 (ja) * 2008-09-30 2014-06-04 富士通株式会社 メッセージ送信方法及びプログラム
US8527646B2 (en) 2009-04-14 2013-09-03 Avid Technology Canada Corp. Rendering in a multi-user video editing system
US8464276B1 (en) * 2010-01-11 2013-06-11 Sprint Communications Company L.P. Channel monitoring in a messaging-middleware environment
US9313604B1 (en) 2010-06-22 2016-04-12 Amazon Technologies, Inc. Network service request throttling system
US8910046B2 (en) 2010-07-15 2014-12-09 Apple Inc. Media-editing application with anchored timeline
US20120198319A1 (en) * 2011-01-28 2012-08-02 Giovanni Agnoli Media-Editing Application with Video Segmentation and Caching Capabilities
US8954477B2 (en) 2011-01-28 2015-02-10 Apple Inc. Data structures for a media-editing application
US11747972B2 (en) 2011-02-16 2023-09-05 Apple Inc. Media-editing application with novel editing tools
US9997196B2 (en) 2011-02-16 2018-06-12 Apple Inc. Retiming media presentations
EP2608029A1 (en) * 2011-12-19 2013-06-26 Siemens Aktiengesellschaft Method and system for managing resources among different clients for an exclusive use
US9092282B1 (en) 2012-08-14 2015-07-28 Sprint Communications Company L.P. Channel optimization in a messaging-middleware environment
JP5920125B2 (ja) 2012-09-05 2016-05-18 富士通株式会社 プロセス数制御プログラム、プロセス数制御方法、および情報処理装置
US9264338B1 (en) 2013-04-08 2016-02-16 Sprint Communications Company L.P. Detecting upset conditions in application instances
CN103440578A (zh) * 2013-08-07 2013-12-11 四川盛世宝典科技有限公司 基于vr的电子商务管理系统
US10885023B1 (en) * 2014-09-08 2021-01-05 Amazon Technologies, Inc. Asynchronous processing for synchronous requests in a database
CN106095590B (zh) * 2016-07-21 2019-05-03 联动优势科技有限公司 一种基于线程池的任务分配方法及装置
EP3674894A4 (en) * 2017-10-09 2020-10-28 Huawei Technologies Co., Ltd. PROCESSING METHOD AND DEVICE
CN107885590A (zh) * 2017-11-30 2018-04-06 百度在线网络技术(北京)有限公司 用于智能设备的任务处理方法和装置
CN111542808B (zh) * 2017-12-26 2024-03-22 三星电子株式会社 预测电子设备上运行应用的线程的最优数量的方法和系统
US11467877B2 (en) * 2020-01-31 2022-10-11 Salesforce, Inc. Throttling and limiting thread resources of service computing platform
CN111654480B (zh) * 2020-05-24 2022-05-20 中信银行股份有限公司 一种rpc连接建立方法、装置及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099235A (en) * 1972-02-08 1978-07-04 Siemens Aktiengesellschaft Method of operating a data processing system
JPS61253572A (ja) * 1985-05-02 1986-11-11 Hitachi Ltd 疎結合マルチプロセツサ・システムの負荷配分方式
US5021949A (en) * 1988-02-29 1991-06-04 International Business Machines Corporation Method and apparatus for linking an SNA host to a remote SNA host over a packet switched communications network
CA1329432C (en) * 1988-11-02 1994-05-10 William Davy Method of memory and cpu time allocation for a multi-user computer system
EP0384339B1 (en) 1989-02-24 1997-04-02 Digital Equipment Corporation Broker for computer network server selection
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
EP0413490A3 (en) 1989-08-15 1992-04-22 American Telephone And Telegraph Company Resource allocation scheme
EP0473913A3 (en) 1990-09-04 1992-12-16 International Business Machines Corporation Method and apparatus for providing a service pool of virtual machines for a plurality of vm users
US5249290A (en) * 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
US5504894A (en) * 1992-04-30 1996-04-02 International Business Machines Corporation Workload manager for achieving transaction class response time goals in a multiprocessing system
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
JPH0659906A (ja) * 1992-08-10 1994-03-04 Hitachi Ltd 並列計算機の実行制御方法
JP2508589B2 (ja) * 1993-05-25 1996-06-19 日本電気株式会社 サ―バ運用方式
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5446737A (en) 1994-02-07 1995-08-29 International Business Machines Corporation Method and apparatus for dynamically allocating shared resource access quota
EP0694837A1 (en) * 1994-07-25 1996-01-31 International Business Machines Corporation Dynamic workload balancing
US5553083B1 (en) * 1995-01-19 2000-05-16 Starburst Comm Corp Method for quickly and reliably transmitting frames of data over communications links
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5603029A (en) * 1995-06-07 1997-02-11 International Business Machines Corporation System of assigning work requests based on classifying into an eligible class where the criteria is goal oriented and capacity information is available

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234648A (ja) * 2003-01-10 2004-08-19 Matsushita Electric Ind Co Ltd グループ加入認可システム、サーバ機器及びクライアント機器
JP4614664B2 (ja) * 2003-01-10 2011-01-19 パナソニック株式会社 グループ加入認可システム、サーバ機器及びクライアント機器

Also Published As

Publication number Publication date
EP0794490A2 (en) 1997-09-10
JPH09265409A (ja) 1997-10-07
KR100253930B1 (ko) 2000-04-15
US6182109B1 (en) 2001-01-30
EP0794490A3 (en) 1999-04-21

Similar Documents

Publication Publication Date Title
JP3229237B2 (ja) 通信プロセス・プール内の実行ユニットを動的に管理するための方法
US5938733A (en) Object oriented representation of network requests in a client server model
US5764915A (en) Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5809235A (en) Object oriented network event management framework
Schmidt et al. An overview of the real-time CORBA specification
US5832219A (en) Distributed object networking service
US8010967B2 (en) Method and system for dynamic configuration of interceptors in a client-server environment
US5317568A (en) Method and apparatus for managing and facilitating communications in a distributed hetergeneous network
US6633923B1 (en) Method and system for dynamic configuration of interceptors in a client-server environment
US5548723A (en) Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US5499343A (en) Object-oriented networking system with dynamically configurable communication links
Dixon System support for multi-service traffic
Wetherall Service introduction in an active network
WO1995017060A1 (en) Object-oriented polymorphic communication system
WO2001088707A2 (en) Protocol stacks
Lo et al. The implementation of a high-performance ORB over multiple network transports
Coulson et al. A CORBA compliant real-time multimedia platform for broadband networks
Waddington et al. A distributed multimedia component architecture
Schmidt Middleware techniques and optimizations for real-time, embedded systems
US6490623B1 (en) System, method and computer readable code for encapsulating system, language and device independent communications socket functionality in a lightweight uniform communications object model
Cortes et al. Narnia: A virtual machine for multimedia communication services
Conrad et al. QoS-based application programming interface for communication middleware
Dalpee et al. Beyond RPC: The virtual network
Goldberg et al. The parallel protocol framework
Schmidt et al. Tools for Generating Application-Tailored Multimedia Protocols on Heterogeneous Multi-Processor Platforms

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees