JPH09265409A - Dynamic execution unit management for high performance user level network protocol server system - Google Patents

Dynamic execution unit management for high performance user level network protocol server system

Info

Publication number
JPH09265409A
JPH09265409A JP9040713A JP4071397A JPH09265409A JP H09265409 A JPH09265409 A JP H09265409A JP 9040713 A JP9040713 A JP 9040713A JP 4071397 A JP4071397 A JP 4071397A JP H09265409 A JPH09265409 A JP H09265409A
Authority
JP
Japan
Prior art keywords
client
server
request
layer
execution units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9040713A
Other languages
Japanese (ja)
Other versions
JP3229237B2 (en
Inventor
Mohan Sharma
モーハン・シャルマ
Leo Yue Tak Yeung
レオ・ユエ・タク・ユング
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/en
Application granted granted Critical
Publication of JP3229237B2 publication Critical patent/JP3229237B2/en
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

Abstract

PROBLEM TO BE SOLVED: To dynamically manage the pool of execution units inside a server system by periodically examining the number of non-used execution units inside a communication pool. SOLUTION: A client object 507 uses an IPC object 511 and performs connection to a server. To a protocol stack 513 for establishing a communication route to a network 505, a thread counter object is added so as to judge whether or not the communication thread of an allowable amount in the server to which a client machine or a client task is requested is exceeded. In the case of exceeding it, the communication route is not prepared and a service to a client process is denied. When the communication route to the server is established, a client port is allocated in the case that usable sufficient threads are present in a thread pool 522 on a server side from a client pool object 521 to a client request.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】本発明は、一般に、コンピュ
ータ・ネットワーク上の通信、ならびにこのような通信
を容易にするコンピュータ・プロトコルに関する。より
具体的には、本発明は、ネットワーク・プロトコル・ア
クセスのためのオブジェクト指向通信インタフェースに
関する。
FIELD OF THE INVENTION The present invention relates generally to communications over computer networks, as well as computer protocols that facilitate such communications. More specifically, the present invention relates to object oriented communication interfaces for network protocol access.

【0002】[0002]

【従来の技術】非常に初期のコンピュータ・システム
は、ディスプレイやプリンタなどの周辺装置と入力装置
が接続された、スタンドアロン・プロセッサであった。
各コンピュータ・システムは独立しており、コンピュー
タ・システム間の通信はほとんど行われていなかった。
現在、ローカル・エリア・ネットワークや広域ネットワ
ークなどのコンピュータ・ネットワークでは、複数のコ
ンピュータ・システムを相互接続し、ネットワークに結
合された各種コンピュータ・システムから得られるデー
タ、サービス、資源の共有を含む様々な利益を達成する
ことが周知になっている。
BACKGROUND OF THE INVENTION The very earliest computer systems were stand-alone processors in which peripherals such as displays and printers and input devices were connected.
Each computer system was independent, with little communication between the computer systems.
Computer networks, such as local area networks and wide area networks, nowadays interconnect multiple computer systems and share a variety of data, services, and resources obtained from the various computer systems coupled to the network. It is well known to achieve profits.

【0003】ネットワークにより各種コンピュータ・シ
ステム間で通信するために、多くの通信プロトコルが開
発された。周知のネットワーク・プロトコルの例として
は、システム・ネットワーク体系(SNA)、伝送制御
プロトコル/インターネット・プロトコル(TCP/I
P)、ネットワーク基本入出力システム(NetBIO
S)、インターネット・パケット交換/順次パケット交
換(IPX/SPX)などがある。その他の通信プロト
コルも既知であり、広く使用され、ISO、IEEE、
その他の組織の様々な規格に記載されている。コンピュ
ータ・ネットワークの理解を容易にするため、ネットワ
ークの諸機能および関連ソフトウェアは一連の層として
記述されることが多い。ネットワークにより配布された
アプリケーションの1つのコピーとその配布されたアプ
リケーションの別のコピーとの間のデータ転送は、基礎
となる一連の通信層のサービスを使用することによって
行われる。一般に、1つのコンピュータ・システム内の
各層は、それぞれの層がそれぞれの対等層とやりとりす
るように、受信側コンピュータ・システム内に対応層を
備えている。
Many communication protocols have been developed for communicating between various computer systems over a network. Examples of well-known network protocols are System Network Architecture (SNA), Transmission Control Protocol / Internet Protocol (TCP / I).
P), network basic input / output system (NetBIO
S), Internet packet switching / sequential packet switching (IPX / SPX), etc. Other communication protocols are also known and widely used, including ISO, IEEE,
It is described in various standards of other organizations. To facilitate the understanding of computer networks, the network functions and associated software are often described as a series of layers. Data transfer between one copy of an application distributed by a network and another copy of the distributed application is accomplished by using an underlying set of communication layer services. In general, each layer in a computer system has a corresponding layer in the receiving computer system such that each layer interacts with its peer layer.

【0004】7層の開放型システム間相互接続(OS
I)モデルは、ネットワーク通信の説明のうち、最もよ
く知られたものの1つであるが、多くの通信実施態様で
は、1つまたは複数のOSI層を結合するかまたは省略
している。OSIの物理層は、ネットワークと直接やり
とりする最下層である。これは、物理的接続部を越えて
実際にビット・ストリームをネットワークに伝送するこ
とを含む。第2の層は、物理層ストリームの多重化とフ
レーム化を行ってメッセージにするデータリンク層であ
る。これは、エラー検出、同期情報、物理チャネル管理
ももたらす。第3の層は、ネットワークによる情報の経
路指定を制御するネットワーク層である。アドレス指
定、ネットワークの初期設定、切替え、セグメント化、
フォーマット化などのサービスはこの層に用意される。
データ送達の肯定応答は、この層で行われる場合もあれ
ば、データリンク層で行われる場合もある。
A seven-layer open system interconnection (OS
I) The model is one of the most well known of the description of network communication, but in many communication implementations one or more OSI layers are combined or omitted. The physical layer of OSI is the lowest layer that interacts directly with the network. This involves actually transmitting the bit stream to the network over the physical connection. The second layer is a data link layer in which a physical layer stream is multiplexed and framed into a message. It also provides error detection, synchronization information, physical channel management. The third layer is the network layer, which controls the routing of information by the network. Addressing, network initialization, switching, segmentation,
Services such as formatting are provided in this layer.
The acknowledgment of data delivery may occur at this layer or at the data link layer.

【0005】第4の層は、透過データの送達、多重化、
マッピングを制御するトランスポート層である。これよ
り下の諸層で行われる最善の努力とは対照的に、アプリ
ケーションが必要とすれば、信頼性の高い送達がこの層
で行われる。欠落データの再伝送、順不同で送達された
データの再配列、伝送エラーの訂正などのサービスは、
通常、この層で行われる。第5の層は、トランスポート
層からの情報を使用して、セッションと呼ばれるネット
ワーク内の2つのノード間の共通活動として個々のデー
タをグループ化するセッション層である。第6の層は、
セッション層と第7の層であるアプリケーション層との
インタフェースを含むプレゼンテーション層である。プ
レゼンテーション層は、セッション層の整合性を損なわ
ずに、アプリケーション層で使用するための情報を提供
する。また、プレゼンテーション層はデータの解釈とフ
ォーマットおよびコードの変換を行うのに対し、アプリ
ケーション層はユーザ・アプリケーション・インタフェ
ースと管理機能を提供する。
The fourth layer is the transmission, multiplexing, and transmission of transparent data.
It is a transport layer that controls mapping. In contrast to the best effort undertaken below this layer, reliable delivery occurs at this layer if the application requires it. Services such as retransmitting missing data, rearranging data delivered out of order, and correcting transmission errors
Usually done in this layer. The fifth layer is the session layer, which uses information from the transport layer to group individual data as a common activity between two nodes in the network called a session. The sixth layer is
It is a presentation layer including an interface between a session layer and an application layer which is a seventh layer. The presentation layer provides information for use by the application layer without compromising the integrity of the session layer. The presentation layer also interprets data and translates formats and codes, while the application layer provides user application interfaces and management functions.

【0006】もう1つの周知のネットワーク規格はIE
EE規格である。IEEEモデルとOSIとの主な相違
点は、OSIの第2の層であるデータリンク層が媒体ア
クセス制御(MAC)副層と論理リンク制御(LCC)
副層という2つの副層に分割されることである。媒体ア
クセス制御は、その制御アクセスにおける通信媒体への
媒体アクセス接続を管理する。論理リンク制御は、関連
するデータ・リンク制御が指定するプロトコルをサポー
トするための状態マシンを提供する。
Another well-known network standard is the IE
It is an EE standard. The main difference between the IEEE model and OSI is that the data link layer, which is the second layer of OSI, is a medium access control (MAC) sublayer and a logical link control (LCC).
It is to be divided into two sublayers called sublayers. The medium access control manages the medium access connection to the communication medium in the control access. Logical link control provides a state machine to support the protocol specified by the associated data link control.

【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)などの参考文献を参照されたい。
Another well-known technique is object-oriented programming, which encapsulates data and methods in a programming entity called an object. By protecting a given method and data with a public interface, an object oriented program can provide the required functionality with minimal reprogramming while isolating each component from changes to other components. For detailed background information on object-oriented techniques, concepts, and rules, see Object Orie by Grady Booch.
nted Design WithApplications (The Benjamin / Cummins
Publishing Company, 1990) and B. Meyer
Object Oriented Software Construction (Pr
See references such as entice Hall, 1988).

【0008】マルチプロセッサ・ネットワークにおける
通信プロトコルの一般領域に対してオブジェクト指向技
術を応用しようという試みは、すでにいくつか行われて
きた。以下に示すように、それは依然として本発明の実
り多い分野である。
[0008] Several attempts have already been made to apply object-oriented technology to the general area of communication protocols in multiprocessor networks. As will be shown below, it is still a fruitful area of the invention.

【0009】[0009]

【発明が解決しようとする課題】サーバ・システム内の
実行ユニットのプールを動的に管理するための方法、シ
ステム、製品であって、そのプールは、クライアント・
プロセスとサーバ・プロセスとの間の通信プロセス専用
である。通信プロセス・プール内に最小数および最大数
の実行ユニットが確立される。最小数の実行ユニット
は、典型的なクライアント・ロードをサポートするのに
必要な数である。最大数の実行ユニットは、サーバ・シ
ステムにとって過負荷にならずにピーク・クライアント
・ロードをサポートするための上限である。クライアン
トによるサービス要求がサーバ・システムによって受信
されると、いくつかの判定が行われる。まず、その要求
に実行ユニットを割り当てると、通信プロセス・プール
内の現行数の実行ユニットが最大数の実行ユニットを上
回ることになるかどうかが判定される。上回る場合、ク
ライアント要求は拒否される。次に、その要求に実行ユ
ニットを割り当てると、その要求を行うクライアント・
タスクに割り当てられた実行ユニットの数がクライアン
ト・タスク用の割り当てられた実行ユニットの数を上回
ることになるかどうかが判定される。上回る場合、クラ
イアント要求は拒否される。判定結果が否定であればク
ライアント要求が許可され、それにより、通信プロセス
・プール内の実行ユニットがクライアント要求に割り当
てられる。
A method, system and product for dynamically managing a pool of execution units in a server system, the pool comprising:
Dedicated to the communication process between the process and the server process. A minimum and maximum number of execution units are established in the communication process pool. The minimum number of execution units is the number needed to support a typical client load. The maximum number of execution units is an upper limit to support peak client loads without overloading the server system. When a service request by a client is received by the server system, several decisions are made. First, assigning an execution unit to the request determines whether the current number of execution units in the communication process pool will exceed the maximum number of execution units. If so, the client request is rejected. Then assign an execution unit to the request and the client making the request
It is determined whether the number of execution units assigned to the task will exceed the number of execution units assigned for the client task. If so, the client request is rejected. If the result of the determination is negative, the client request is permitted, whereby the execution unit in the communication process pool is assigned to the client request.

【0010】[0010]

【課題を解決するための手段】システム・パフォーマン
スを改善するために通信プール内の未使用の実行ユニッ
トの数を増減する必要があるかどうかを判定するため、
未使用の実行ユニットの数を定期的に検討する。
To determine whether it is necessary to increase or decrease the number of unused execution units in a communication pool to improve system performance,
Periodically review the number of unused execution units.

【0011】上記の目的、特徴、および利点は、添付図
面と以下の説明を参照すれば、さらに容易に理解される
だろう。
The above objects, features, and advantages will be more readily understood with reference to the accompanying drawings and the following description.

【0012】[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等を
参照されたい。
DETAILED DESCRIPTION OF THE INVENTION The present invention is capable of operating on various computers or collections of computers under multiple operating systems. This computer can be, for example, a personal computer, a mini computer, a mainframe computer, a computer operating in a distributed network of other computers, and the like. The specific choice of computer is limited only by the requirements of the disk or disk storage device, but any IBM PC series computer should work for the present invention. IBM
For more information on PC series computers from IBM
PC 300/700 Series Hardware Maintenance , Publicatio
n No. S83G-7789-03 and User's Handbook IBM PC Ser
See ies 300 and 700 , Publication No. S83G-9822-00. One of the operating systems on which an IBM personal computer can operate is
OS / 2 Warp 3.0. For more information on IBM's OS / 2 Warp 3.0 operating system, see OS / 2 Warp V3 T
See 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のその他の資
料に記載されている。
An alternative embodiment computer system is
Runs on the AIX (TM) operating system
Of IBM's RISC system / 6000 (TM) series
It can also be a computer. RISC system /
For the various models of the 6000,RISC System / 600
0, 7073 and 7016 POWERstation and POWERserver Hard
ware TechnicalReference (Document number SA23-2644-0
0) and many other IBM documents. AI
For the X operating system,General Co
ncepts and Procedure-AIX for RISC System / 6000
(Document number SC23-2202-02) and other IBM resources
It is stated in the fee.

【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)マイクロプロセッサを含み、かつ
これらに限定されないマイクロプロセッサも、特定のコ
ンピュータで使用することができる。
FIG. 1 is a block diagram of a computer 10 including a system unit 11, a keyboard 12, a mouse 13 and a display 14. The system unit 11 includes a system bus or a plurality of system buses 21 to which various components are coupled,
The bus provides communication between the various components. The microprocessor 22 is connected to the system bus 21,
A read only memory (ROM) 23 and a random access memory (RA) also connected to the system bus 21.
M) 24. IBM PS /
The microprocessors in the 2 series computers are one of Intel's family of microprocessors, including 386 or 486 microprocessors.
One. However, 68000, 68020, 6803
And includes a variety of reduced instruction set computer (RISC) microprocessors such as Motorola's microprocessor family such as the O. Microprocessor and those manufactured by IBM PowerPC chips or Hewlett-Packard, Sun, Motorola, etc. Microprocessors, not limited to, can also be used in a particular computer.

【0015】ROM23は、数あるコードのうち、やり
とりや、ディスク・ドライブおよびキーボードなどの基
本的なハードウェア操作を制御する、基本入出力システ
ム(BIOS)を含んでいる。RAM24は、オペレー
ティング・システムとアプリケーション・プログラムの
ロード先になるメイン・メモリである。メモリ管理チッ
プ25は、システム・バス21に接続され、RAM24
とハード・ディスク・ドライブ26およびフロッピー・
ディスク・ドライブ27とのデータの受渡しを含む直接
メモリ・アクセス操作を制御する。同じくシステム・バ
ス21に結合されたCD−ROM32は、マルチメディ
ア・プログラムまたはプレゼンテーションなどの大量の
データを格納するために使用する。
The ROM 23 includes a basic input / output system (BIOS) that controls, among other codes, the interaction and basic hardware operations such as the disk drive and keyboard. The RAM 24 is a main memory into which the operating system and application programs are loaded. The memory management chip 25 is connected to the system bus 21 and has a RAM 24.
And hard disk drive 26 and floppy
Controls direct memory access operations, including passing data to and from disk drive 27. A CD-ROM 32, also coupled to system bus 21, is used to store large amounts of data such as multimedia programs or presentations.

【0016】このシステム・バス21には、様々な入出
力制御装置、すなわち、キーボード制御装置28、マウ
ス制御装置29、ビデオ制御装置30、オーディオ制御
装置31も接続されている。予想通り、キーボード制御
装置28はキーボード12用のハードウェア・インタフ
ェースになり、マウス制御装置29はマウス13用のハ
ードウェア・インタフェースになり、ビデオ制御装置3
0はディスプレイ14用のハードウェア・インタフェー
スであり、オーディオ制御装置31はスピーカ15用の
ハードウェア・インタフェースである。トークン・リン
グ・アダプタなどの入出力制御装置40により、ネット
ワーク46を介して同様に構成された他のデータ処理シ
ステムへの通信が可能になる。
Various input / output control devices, that is, a keyboard control device 28, a mouse control device 29, a video control device 30, and an audio control device 31 are also connected to the system bus 21. As expected, the keyboard controller 28 becomes the hardware interface for the keyboard 12, the mouse controller 29 becomes the hardware interface for the mouse 13, and the video controller 3
0 is a hardware interface for the display 14, and the audio controller 31 is a hardware interface for the speaker 15. I / O controller 40, such as a token ring adapter, enables communication via network 46 to other similarly configured data processing systems.

【0017】本発明の好ましい実施態様の1つは、上記
のように一般的に構成された1つまたは複数のコンピュ
ータ・システムのランダム・アクセス・メモリ24に常
駐する複数の命令セット48〜52である。コンピュー
タ・システムが要求するまで、命令セットは、ハード・
ディスク・ドライブ26などの他のコンピュータ・メモ
リ、最終的にCD−ROM32で使用するための光ディ
スクなどの取外し可能メモリ、最終的にフロッピー・デ
ィスク・ドライブ27で使用するためのフロッピー・デ
ィスクに格納することができる。当業者であれば、この
命令セットを物理的に格納すると、それが電気的、磁気
的、または化学的に格納されている媒体が物理的に変化
し、その媒体上にコンピュータが読取り可能な情報が乗
ることを理解できるはずである。命令、記号、文字など
によって本発明を記述すると便利であるが、これらの表
現および同様の表現はいずれも適切な物理要素に関連付
けられている必要があることに留意されたい。さらに、
本発明は、比較や妥当性検査、あるいは人間の操作員に
関連しうる他の表現によって記述されることも多い。こ
こに記載するいずれの操作でも、本発明の一部を形成す
るような人間の操作員によるアクションは一切不要であ
り、この操作は電気信号を処理して他の電気信号を生成
するためのマシン操作である。
One of the preferred embodiments of the present invention is a plurality of instruction sets 48-52 residing in the random access memory 24 of one or more computer systems generally configured as described above. is there. The instruction set is hard-coded until the computer system requires it.
Store in another computer memory such as disk drive 26, removable memory such as an optical disk for final use in CD-ROM 32, or a floppy disk for final use in floppy disk drive 27. be able to. Those of ordinary skill in the art, when physically storing this instruction set, the medium on which it is electrically, magnetically, or chemically stored physically changes and computer readable information is stored on the medium. You should understand that rides. Although it is convenient to describe the invention in terms of instructions, symbols, characters, etc., it should be noted that all of these and similar expressions must be associated with the appropriate physical element. further,
The invention is often described in terms of comparisons, validations, or other expressions that may be relevant to human operators. None of the operations described herein require any action by a human operator to form part of the present invention, which is a machine for processing electrical signals to produce other electrical signals. It is an operation.

【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)等に記載されている。
The network in which this workstation is integrated is a local area network (L
AN) or Wide Area Network (WAN), the latter including teleprocessing connections to networks of other nodes or systems operating according to known computer architectures. At any node, there may be one or more processing systems, and each processing system may be a single-user system or a multi-user system, generally configured as described above. These processing systems act as client or server workstations, depending on whether they request or provide services. In particular embodiments, the invention operates on multiple IBM compatible workstations interconnected by a network that communicates via one or more of a variety of communication protocols. Software applications can be packaged together or sold as separate applications. A brief description of local area networks can be found in Larry E. Larry E. Jordan and Bruce Churchill (B
ruce Churchill) by Communications and Networking Fo
r The IBM PC (Published by Robert J. Brady, A Prentice Hall
Company 1983) and the like.

【0019】好ましい実施例では、本発明は、オブジェ
クト指向プログラミング技法を使用してC++プログラ
ミング言語で実現される。C++はコンパイル済みの言
語である。プログラムは人間が読取り可能なスクリプト
で作成され、このスクリプトがコンパイラという他のプ
ログラムに供給され、マシンが読取り可能な数字コード
が生成されるが、このコードはコンピュータにロードし
てコンピュータが直接実行できるものである。C++言
語は、ソフトウェア開発者が他の開発者によって作成さ
れたプログラムを容易に使用できるようにするような所
与の特性を処理しながら、その破壊や不適正使用を防止
するためにプログラムの再使用を大幅に制御する。C+
+言語は周知のものなので、この言語について詳細に記
載した論文やテキストは数多く存在する。
In the preferred embodiment, the present invention is implemented in the C ++ programming language using object oriented programming techniques. C ++ is a compiled language. The program is written in a human-readable script, which is fed into another program called a compiler, which produces a machine-readable numeric code that can be loaded into a computer and executed directly by the computer. It is a thing. The C ++ language deals with certain characteristics that make it easier for software developers to use programs written by other developers, while reusing the programs to prevent their destruction or improper use. Greatly control the use. C +
+ Since the language is well known, there are many papers and texts that describe this language in detail.

【0020】当業者には既知のように、オブジェクト指
向プログラミング技法は、「オブジェクト」の定義、作
成、使用、破棄を含む。これらのオブジェクトは、デー
タ要素とルーチン、すなわちデータ要素を操作するメソ
ッドとを含む、ソフトウェア・エンティティである。デ
ータと関連メソッドは、ソフトウェアによってエンティ
ティとして扱われ、そのように作成し、使用し、削除す
ることができる。データと関数により、オブジェクト
は、データ要素により提示可能なその属性と、そのメソ
ッドにより表現可能なその挙動によって、実世界のエン
ティティをモデル化することができる。
As known to those skilled in the art, object-oriented programming techniques include defining, creating, using, and destroying "objects." These objects are software entities that contain data elements and routines, ie methods that operate on the data elements. The data and associated methods are treated by the software as entities and can be created, used and deleted as such. Data and functions allow an object to model a real-world entity by its attributes, which can be represented by data elements, and its behavior, which can be represented by its methods.

【0021】オブジェクトの定義は、オブジェクトその
ものではないが、実際のオブジェクトを構築する方法を
コンパイラに指示するテンプレートとして機能する「ク
ラス」を作成することによって行う。たとえば、クラス
は、データを操作する関数に含まれるデータ変数とステ
ップの数とタイプを指定することができる。実際にはオ
ブジェクトは、対応するクラス定義と、オブジェクト作
成中に供給される引数などの追加情報とを使用してオブ
ジェクトを構築する、コンストラクタという特殊な関数
を使ってプログラム内に作成される。オブジェクトの破
棄は、デストラクタという特殊な関数によって行われ
る。
The definition of an object is performed by creating a "class" which functions as a template for instructing the compiler how to construct an actual object, not the object itself. For example, a class can specify the number and type of data variables and steps contained in a function that manipulates data. In practice, an object is created in a program using a special function called a constructor that builds the object using the corresponding class definition and additional information such as arguments supplied during object creation. Object destruction is done by a special function called destructor.

【0022】多くの利点は、オブジェクト指向プログラ
ミング技法の3つの基本的特性、すなわち、カプセル
化、多様性、継承から発生している。オブジェクトは、
内部データ構造および内部関数の全部または一部を隠
す、すなわち、カプセル化するために設計することがで
きる。より具体的には、プログラム設計時にプログラム
開発者は、データ変数の全部または一部と関連メソッド
の全部または一部を「私用」すなわちそのオブジェクト
のみが使用するものと見なしてオブジェクトを定義する
ことができる。他のデータまたはメソッドは、「公用」
すなわち他のプログラムが使用可能なものであると宣言
することができる。他のプログラムによる私用変数およ
びメソッドへのアクセスは、そのオブジェクトの私用デ
ータにアクセスする公用メソッドを定義することによっ
て制御することができる。この公用メソッドは、私用デ
ータと外部プログラムとのインタフェースを形成する。
私用変数に直接アクセスするプログラム・コードを作成
しようと試みると、コンパイラは、プログラムのコンパ
イル時にエラーを発生する。このエラーによって、コン
パイル・プロセスが停止し、プログラムが実行できなく
なる。
Many benefits arise from the three basic properties of object-oriented programming techniques: encapsulation, polymorphism, and inheritance. The object is
It can be designed to hide, or encapsulate, all or part of internal data structures and functions. More specifically, when designing a program, the program developer should define all or some of the data variables and all or some of the associated methods as "private", that is, to be used only by that object. You can Other data or methods are "public"
That is, it can be declared that another program can be used. Access to private variables and methods by other programs can be controlled by defining public methods that access the object's private data. This public method forms the interface between private data and external programs.
If you try to write program code that directly accesses a private variable, the compiler will issue an error when compiling the program. This error stops the compilation process and prevents the program from running.

【0023】多様性とは、全体的なフォーマットが同じ
であるが別々のデータで機能する複数のオブジェクトお
よび関数が、別々に機能して一定の結果を生み出せるよ
うにするものである。たとえば、加算メソッドを変数A
プラス変数B(A+B)として定義することができる。
AとBが数字、文字、またはドルとセントであっても、
これと同じフォーマットを使用することができる。しか
し、この加算を実行する実際のプログラム・コードは、
AとBを構成する変数のタイプに応じて、大幅に異なっ
てくる可能性がある。したがって、変数のタイプ(数
字、文字、ドル)ごとに1つずつ、3通りのメソッド定
義を作成することができる。メソッドの定義後、プログ
ラムはその共通フォーマット(A+B)によってその加
算メソッドをあとで参照することができ、コンパイル時
にC++コンパイラは、その変数タイプを検査すること
によって3つのメソッドのいずれを使用すべきかを判定
する。その後、コンパイラは適切な関数コードを代入す
る。
Diversity allows multiple objects and functions that have the same overall format but operate on different data to work independently and produce consistent results. For example, add method to variable A
It can be defined as the plus variable B (A + B).
Even if A and B are numbers, letters, or dollars and cents,
The same format can be used. However, the actual program code that performs this addition is
Depending on the types of variables that make up A and B, they can vary significantly. Therefore, it is possible to create three types of method definitions, one for each variable type (number, letter, dollar). After the method is defined, the program can later refer to that addition method by its common format (A + B), and at compile time the C ++ compiler should check which of the three methods it should use by checking its variable type. judge. The compiler then substitutes the appropriate function code.

【0024】オブジェクト指向プログラミングの第3の
特性は、プログラム開発者が既存のプログラムを再使用
できるようにする継承である。継承により、ソフトウェ
ア開発者は、クラスと、クラス階層によって関連付けら
れるようにそのクラスからあとで作成されるオブジェク
トとを定義することができる。具体的には、クラスは、
他の基本クラスのサブクラスと呼ぶこともできる。サブ
クラスは、その基本クラスの公用関数がサブクラスに含
まれている場合のように、その公用関数のすべてを「継
承」し、そのすべてにアクセスすることができる。ま
た、サブクラスは、同じ形式の新しい関数を定義するこ
とによって、継承した関数の一部または全部を指定変更
したり、修正することもできる。
A third property of object oriented programming is inheritance, which allows program developers to reuse existing programs. Inheritance allows a software developer to define a class and the objects that are subsequently created from that class so that they are related by a class hierarchy. Specifically, the class is
It can also be called a subclass of another base class. A subclass can "inherit" and access all of its public functions, as if the public functions of its base class were contained in the subclass. Subclasses can also override or modify some or all of the inherited functions by defining new functions of the same format.

【0025】他のクラスの機能性を借用する新しいサブ
クラスを作成すると、ソフトウェア開発者は、その特定
のニーズに合うように既存のコードを容易にカストマイ
ズすることができる。
By creating new subclasses that borrow the functionality of other classes, software developers can easily customize existing code to meet their particular needs.

【0026】オブジェクト指向プログラミングにより、
他のプログラミングの概念が大幅に改善されるが、特に
修正に使用可能な既存のソフトウェア・プログラムがま
ったくない場合には、依然としてプログラム開発には相
当な時間と労力が必要になる。その結果、いずれも特定
の環境で一般に検出されるタスクの実行向けの1組のオ
ブジェクトと追加の雑ルーチンを作成するために、1組
の事前定義相互接続済みクラスが用意されていることが
ある。このような事前定義クラスとライブラリは、通
常、「フレームワーク」と呼ばれ、本質的に作業アプリ
ケーション用の事前製作構造を提供する。
By object-oriented programming,
Although other programming concepts are greatly improved, program development still requires significant time and effort, especially if there are no existing software programs available for modification. As a result, a set of predefined interconnected classes may be provided to create a set of objects and additional miscellaneous routines, both of which are for performing tasks commonly found in a particular environment. . Such pre-defined classes and libraries, commonly referred to as "frameworks", essentially provide a pre-built structure for work applications.

【0027】たとえば、ユーザ・インタフェース用のフ
レームワークは、ウィンドウ、スクロール・バー、メニ
ューなどを作成する1組の事前定義グラフィック・イン
タフェース・オブジェクトを提供し、これらのグラフィ
ック・インタフェース・オブジェクト用のサポートと
「デフォルト」挙動を提供する可能性がある。多くのフ
レームワークはオブジェクト指向技法に基づいているの
で、事前定義クラスを基本クラスとして使用することが
でき、組込みデフォルト挙動を開発者定義サブクラスが
継承し、開発者がそのフレームワークを拡張し、特定の
専門分野でカストマイズ済みの解決策を作成できるよう
に修正または指定変更することができる。プログラマは
元のプログラムを変更せず、むしろ元のプログラムの諸
機能を拡張するので、このオブジェクト指向手法は従来
のプログラミングより大幅に優れている。さらに、この
フレームワークは体系的なガイダンスとモデル化を提供
し、同時に、開発者は問題定義域に固有の特定のアクシ
ョンを自由に供給できるようになる。
For example, a framework for a user interface provides a set of predefined graphic interface objects that create windows, scrollbars, menus, etc. and provides support for these graphic interface objects. May provide "default" behavior. Many frameworks are based on object-oriented techniques, so you can use a predefined class as a base class, with developer-defined subclasses inheriting the built-in default behavior and allowing developers to extend and identify their framework. Can be modified or overridden to create a customized solution for your area of expertise. This object-oriented approach is significantly superior to conventional programming because the programmer does not modify the original program, but rather extends the functionality of the original program. In addition, the framework provides systematic guidance and modeling, while at the same time allowing developers to freely supply specific actions specific to the problem domain.

【0028】以下に記載する本発明では、コンピュータ
・ネットワーク内の様々なコンピュータ・システムのア
プリケーション用のネットワーク・サービスを提供する
ためにネットワーキング・フレームワークを提供する。
The invention described below provides a networking framework for providing network services for applications of various computer systems within a computer network.

【0029】プロトコル・インタフェース・モデル ここでは、オブジェクト指向のプロトコル・インタフェ
ース・モデルおよび機構について説明する。このインタ
フェースの一般的な特徴により、OSIネットワーク・
モデルのすべての層の開発が可能になる。したがって、
すべてのネットワーク層は同様の構文になり、その意味
は特定の層の仕様によって定義される。すなわち、OS
Iネットワーク・モデル内の各種の層を実現するオブジ
ェクトは構文上は同様であるが、そのインプリメンテー
ションは特定の層の責任に応じて異なる可能性がある。
さらに、TCP/IPなどの特定のプロトコル用のそれ
ぞれの層を実現するオブジェクトは、NetBIOSな
どの別のプロトコルの同様の層とは、機能およびインプ
リメンテーションの点で異なる可能性がある。というの
は、2つのプロトコルではそれぞれの層の責任が異なる
からである。このモデルは、通信端点を定義し、端点を
再使用し、ネットワーク事象を監視するための機構も提
供する。これは、オブジェクト指向モデルなので、コー
ドの再使用性、保守容易性、クライアント・アプリケー
ションに影響せずにインプリメンテーションを更新する
能力など、オブジェクト指向インプリメンテーションの
特徴をすべて継承している。
Protocol Interface Model This section describes the object-oriented protocol interface model and mechanism. Due to the general characteristics of this interface, OSI network
Allows development of all layers of the model. Therefore,
All network layers have a similar syntax, the meaning of which is defined by the specific layer specifications. That is, OS
The objects that implement the various layers in the I-network model are syntactically similar, but their implementation may differ depending on the responsibilities of a particular layer.
Moreover, the objects that implement each layer for a particular protocol, such as TCP / IP, may differ in functionality and implementation from similar layers in another protocol, such as NetBIOS. This is because the two protocols have different responsibilities for each layer. This model also provides a mechanism for defining communication endpoints, reusing endpoints, and monitoring network events. Because it is an object-oriented model, it inherits all the characteristics of an object-oriented implementation, such as code reusability, maintainability, and the ability to update an implementation without affecting client applications.

【0030】1.通信端点の作成:通信端点の作成は、
ネットワーク定義オブジェクトにより容易になってい
る。各ネットワーク定義オブジェクトは、クライアント
・インタフェースの定義を含む。これは、クライアント
・プログラムがアクセスを必要とすると思われる各種タ
イプのオブジェクトの抽象概念である。通信端点は、ネ
ットワーク定義クラスから派生したTAccessDefinition
オブジェクトである。
1. Creating communication endpoints: Creating communication endpoints
Made easier by network definition objects. Each network definition object contains a definition of a client interface. It is an abstraction of the various types of objects that a client program may need to access. Communication end point is TAccessDefinition derived from network definition class
Object.

【0031】図2は、ネットワーク定義オブジェクトの
クラス階層を示している。TNetworkDefinitionクラス1
00は、端点をインスタンス化するためのメソッドInst
antiateDefinitionと、通信端点を破棄するためのメソ
ッドDeinstantiationDefinitionをそれぞれ含んでい
る。TNetworkDefinitionの新しいインスタンスを構築す
るためのメソッドまたは特定のクラス・オブジェクトを
破棄するためのメソッドも用意されているが、これらの
メソッドはすべてのクラスに共通なので、以下の説明で
は繰り返さないことにする。
FIG. 2 shows a class hierarchy of network definition objects. TNetworkDefinition class 1
00 is the method Inst for instantiating the endpoint
It contains antiateDefinition and method DeinstantiationDefinition for destroying communication endpoints. There are also methods to construct a new instance of TNetworkDefinition or to destroy a particular class object, but these methods are common to all classes and will not be repeated in the following discussion.

【0032】TAccessDefinitionオブジェクト101
は、特定のプロトコル・タイプとその諸層を定義するプ
ロトコル・インタフェース・オブジェクトを含んでい
る。TAccessDefinitionオブジェクト101は、通信端
点のハンドルとして機能する。さらに、TAccessDefinit
ionオブジェクト101は、その親であるTNetworkDefin
itionから継承したメソッドに加え、すでに追加されて
いるものの上にアクセス定義へのインタフェース層を加
えるためのメソッドAddToTopと、一番下にすでに追加さ
れているものにAccessDefinitionへのインタフェース層
を加えるためのメソッドAddToBottomと、最も高いプロ
トコル層インタフェースを獲得するためのメソッドGetT
opOfStackも含んでいる。TEventDefinitionクラス10
3は、ネットワーク事象を監視するために使用する。TE
ventDefinitionクラス103については、以下のNetwor
kEventの項でより詳細に説明する。
TAccessDefinition object 101
Contains protocol interface objects that define a particular protocol type and its layers. The TAccessDefinition object 101 functions as a handle of the communication endpoint. In addition, TAccessDefinit
ion object 101 is its parent TNetworkDefin
In addition to the methods inherited from ition, the method AddToTop to add an interface layer to the access definition above what is already added, and the method AddToTop to add an interface layer to AccessDefinition to the one already added at the bottom Method AddToBottom and method GetT to get the highest protocol layer interface
It also includes opOfStack. TEventDefinition class 10
3 is used to monitor network events. TE
For ventDefinition class 103, the following Networ
More on this in the kEvent section.

【0033】2.ネットワーク・アドレス・クラス TNetworkAddressクラス111は、すべてのプロトコル
・アドレス・クラスとハードウェア・アドレス・クラス
を定義するために使用する基本クラスである。図3は、
プロトコル・アドレス・クラスのクラス階層を示してい
る。TNetworkAddressクラス111は、アドレスのタイ
プをテストするためのメソッドIsOfAddressTypeと、グ
ループ・アドレスかどうかをテストするためのメソッド
IsGroupと、同報アドレスかどうかをテストするための
メソッドIsBroadCastと、マルチキャスト・アドレスか
どうかをテストするためのメソッドIsMulticastと、ヌ
ル・アドレスかどうかをテストするためのメソッドIsNu
llAddressとを含んでいる。このクラスは、アドレスの
ワイヤ長を獲得するためのメソッドGetWireLengthと、
アドレスをヘッダにフォーマット化するためのメソッド
AddressToWireと、ヘッダからアドレスを獲得するため
のメソッドWireToAddressも含んでいる。ストリームが
端点に着信するのか、それともストリームが端点から発
信するのかを判定するための演算子も、このクラスの一
部である。各クラスに固有のポインタを獲得するための
メソッドGetClassIdentifierは、このクラスによって提
供される。
2. Network Address Class TNetworkAddress class 111 is the base class used to define all protocol address classes and hardware address classes. FIG.
3 illustrates a class hierarchy of protocol address classes. TNetworkAddress class 111 has a method IsOfAddressType for testing the type of address and a method for testing whether it is a group address.
IsGroup, a method IsBroadCast for testing if it is a broadcast address, a method IsMulticast for testing if it is a multicast address, and a method IsNu for testing if it is a null address.
llAddress and. This class has a method GetWireLength to get the wire length of the address,
Method for formatting the address in the header
It also contains AddressToWire and the method WireToAddress to get the address from the header. Operators for determining if a stream arrives at an endpoint or if a stream originates at an endpoint are also part of this class. The method GetClassIdentifier to get a pointer specific to each class is provided by this class.

【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などがある。
Instances of the TProtocolAddress class object act as communication endpoints so that protocol addresses can be passed. TProtocolAddre
The ss object 113 adds a method BroadCastAddress for acquiring a broadcast address and a method NullAddress for acquiring a null address. THardware
Instances of the Address object 115 pass hardware addresses to applications as needed. Similarly, the THardwareAddress object 115 has a method Broa for obtaining broadcast addresses.
Add dCastAddress and the method NullAddress to get a null address. Also add a method IsFunctional to test if it is a functional address. TIEEE8023Address class is IEEE802.3
The hardware class address is changed according to the addressing rule. In addition, this is a method to test for a group address.
Add IsGroup, a method SetGroup for setting the group address, and a method ClearGroup for resetting the group address. Other methods are BroadCastAddress to get a broadcast address and IsMulticas to test for a multicast address.
t, NullAddress that gets a null address, and CanonicalAddress that gets an address from standard input.

【0035】TTCPAddr117とTNBAddr119は、それ
ぞれTCP/IPおよびNetBIOSのアドレス指定
の詳細を表す具象アドレス・クラスの例である。同様
に、TIEEE8023Addr121とTIEEE8025Addr123は、I
EEE802.3およびIEEE802.5のアドレス
指定用の具象ハードウェア・アドレスを表している。
TTCPAddr 117 and TNBAddr 119 are examples of concrete address classes that represent TCP / IP and NetBIOS addressing details, respectively. Similarly, TIEEE8023Addr121 and TIEEE8025Addr123 are I
FIG. 6 represents a concrete hardware address for addressing IEEE 802.3 and IEEE 802.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つのオブジェクトだけがシステム内に常駐するよ
うにして、すべてのグローバル情報とプロトコルとの関
連を維持するために行われるものである。クライアント
・アプリケーションによって各端点が作成され破棄され
ると、セッション層などの他のプロトコル層オブジェク
トと、トランスポート層オブジェクトと、ネットワーク
層オブジェクトは作成され破棄されるが、ファミリー層
オブジェクトとデータリンク層オブジェクトは常駐した
ままになる。
3. Protocol Interface Class The present invention supports both connection-oriented and connectionless transactions. The invention also describes a state machine that is followed by a protocol independent application. The object hierarchy of the protocol interface class is shown in FIG. The protocol interface class is derived from the base class MProtocolServe 133 which contains the methods for all common functions that the protocol must have. The TProtocolInterface class 135 contains additional methods for network functions. These methods are detailed in Tables 1 and 2 below. Network protocols such as TCP / IP
Derive its TCPIPInterface class from TProtocolInterface to override the default implementation and add its own specific features such as checking for valid flags on send or receive requests. As a separate class derived from the TProtocolInterface class, TSessionInterface13 for the session layer
7. TTransportInterface13 for transport layer
8. TNetworkInterface 141 for network layer, TFamilyInterface 143 for family layer, and TDLCInterface 145 for data link layer are prepared. The object hierarchy is as shown. In this example, O
The SI network layer is divided into a network layer and lower layers called protocol family layers. The family layer contains non-duplicated portions of the OSI network layer, such as routing information. The network layer contains information related to particular endpoints, such as peer addresses and local SAPs. This is done to keep only one object, such as the FamilyLayer object, resident in the system and to keep all global information associated with the protocol. When the client application creates and destroys each endpoint, other protocol layer objects such as the session layer, transport layer objects, and network layer objects are created and destroyed, but family layer and data link layer objects. Will remain resident.

【0037】具象クラスは、個々のインタフェース・ク
ラスから派生する。たとえば、以下に説明するように、
プロトコル・スタックを構築するためにTCP/IPな
どの特定のプロトコル用のトランスポート、ネットワー
ク、ファミリー・インタフェース・クラスのために、具
象クラスが用意されている。
Concrete classes derive from individual interface classes. For example, as explained below,
Concrete classes are provided for transport, network, family interface classes for specific protocols such as TCP / IP to build the protocol stack.

【0038】表1 前述のように、MProtocolServiceオブジェクトは、プロ
トコル層定義用の基本クラスとして機能する。MProtoco
lServiceオブジェクトに設けられているメソッドのリス
トを以下に示す。これらのメソッドの大部分は、純粋仮
想関数である。
Table 1 As mentioned above, the MProtocolService object functions as a base class for protocol layer definition. MProtoco
The list of methods provided in lService object is shown below. Most of these methods are pure virtual functions.

【0039】 Bind −ローカル・アドレスを初期設定しバインド する Unbind −ローカル・アドレスをアンバインドする SendRelease −正常解放開始 ReceiveRelease −正常解放開始の肯定応答受信 GetLocalAddress −ローカル・アドレスを獲得する SetLocalAddress −ローカル・アドレスを設定する GetPeerAddress −対等アドレスを獲得する SetPeerAddress −対等アドレスを設定する GetProtocolInfo −プロトコル情報を獲得する SetProtocolInfo −プロトコル情報を設定する GetProtocolOptions −プロトコル・オプションを設定する GetRequestMode −要求モードを獲得する SetRequestMode −要求モードを設定する GetRetry −プロトコル層再試行パラメータを獲得する SetRetry −プロトコル層再試行パラメータを設定する GetTimeout −プロトコル層タイムアウト・パラメータを 獲得する SetTimeout −プロトコル層タイムアウト・パラメータを 設定する GetStatistics −プロトコル層統計情報を獲得する SetStatistics −プロトコル層統計情報を設定する IsSession −プロトコル層がセッション層である場合に 真を返す IsTransport −プロトコル層がトランスポート層である場 合に真を返す IsNetwork −プロトコル層がネットワーク層である場合 に真を返す IsFamily −プロトコル層がファミリー層である場合に 真を返す 演算子<<= −オブジェクトをデータ・ストリームに受信 するための演算子 演算子>>= −オブジェクトをデータ・ストリームに送信 するための演算子Bind-Initialize and bind local address Unbind-Unbind local address SendRelease-Start normal release ReceiveRelease-Receive acknowledgment of normal release start GetLocalAddress-Get local address SetLocalAddress-Local address GetPeerAddress-Get peer address SetPeerAddress-Set peer address GetProtocolInfo-Get protocol information SetProtocolInfo-Set protocol information GetProtocolOptions-Set protocol options GetRequestMode-Get request mode SetRequestMode-Request mode GetRetry-Get protocol layer retry parameters SetRetry-Set protocol layer retry parameters GetTimeout-Get protocol layer timeout parameters SetTimeout-Set Set protocol layer timeout parameters GetStatistics-Get protocol layer statistics SetStatistics-Set protocol layer statistics IsSession-Return true if protocol layer is session layer IsTransport-Protocol layer is transport layer IsNetwork-returns true if the protocol layer is the network layer IsFamily-returns true if the protocol layer is the family layer <<<-for receiving the object in the data stream Operator Operator >> =-Operator to send the object to the data stream

【0040】表2 TProtocolInterfaceクラスに設けられた関数のリストを
以下に示す。
Table 2 A list of functions provided in the TProtocolInterface class is shown below.

【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 −正常解放開始の肯定応答受信 演算子<<= −オブジェクトをデータ・ストリームにスト リーム・インするための演算子 演算子>>= −オブジェクトをデータ・ストリームにスト リーム・アウトするための演算子GetLayerIndex-Get protocol layer index CancelRequests-Cancel all current outstanding requests ReceiveEvent-Received events on this stack GetConnectionInfo-Get connection info and memory constraints BorrowMemory-System for network data ReturnMemory-Return system memory for network data GetAccessDefinition-Get pointer to TAccessDefinition GetLocalAddress-Get local address of layer SetLocalAddress-Set local address of layer GetPeerAddress-Layer GetPeerAddress-Get the layer's peer address GetProtocolInfo-Get the layer protocol information SetProtocolInfo-Get the layer protocol information GetProtocolOptions-Get the layer protocol options olOptions-Set layer protocol options GetRequestMode-Get layer request mode SetRequestMode-Set layer request mode GetRetry-Get protocol layer retry parameters SetRetry-Set protocol layer retry parameters GetStatistics- Get Protocol-Get protocol layer statistics GetTimeout-Get protocol layer timeout parameters SetTimeout-Set protocol layer timeout parameters Bind-Bind protocol stack Unbind-Unbind protocol stack Receive-Get network data Receive-Send network data Connect-Initiate attempt to establish connection ReceiveConnection-Wait for attempt to establish connection Disconnect-End connection ReceiveDisconnect-Wait for disconnect A cceptConnection-Accept an attempt to establish a connection RejectConnection-Reject an attempt to establish a connection Listen-Listen to an attempt to establish a connection ListenForConnection-Listen to an attempt to establish a connection SendRelease-Start normal release => There is no more data to send ReceiveRelease − Acknowledgment to start normal release Receive operator << = − Operator to stream object into data stream operator >> = − Object to data stream Operator to stream out

【0042】4.プロトコル層インプリメンテーション
・クラス 前述のように、プロトコル・インタフェース・モデル
は、プロトコル層にアクセスするためのオブジェクト・
ベースのAPIとして機能する。TCP/IPなどのプ
ロトコル・スタックのインプリメンテーションを階層化
した1組のリンク済みオブジェクトとして実現するに
は、TProtocolLayerクラスを使用する。図5は、プロト
コル層クラスのクラス階層を示している。TProtocolLay
erクラス151は、1つのプロトコル・インプリメンテ
ーションのすべての層の基本クラスとして機能する。
4. Protocol Layer Implementation Class As mentioned above, the protocol interface model is a collection of objects for accessing the protocol layer.
Functions as a base API. To implement an implementation of a protocol stack such as TCP / IP as a layered set of linked objects, use the TProtocolLayer class. FIG. 5 shows a class hierarchy of protocol layer classes. TProtocolLay
The er class 151 serves as the base class for all layers of a protocol implementation.

【0043】TProtocolLayerクラス151は、各層で実
施されるTransmit、Connect、Receive、Disconnectなど
の関数用のメソッドを含んでいる。これらのメソッドに
ついては、以下の表3に詳しく示す。
The TProtocolLayer class 151 includes methods for functions such as Transmit, Connect, Receive, and Disconnect that are implemented in each layer. These methods are detailed in Table 3 below.

【0044】TCP/IPなどのプロトコル用の具象ク
ラスは、これらの層オブジェクトから派生し、その具体
的なプロトコル層の意味を取り入れている。
Concrete classes for protocols such as TCP / IP derive from these layer objects and incorporate their specific protocol layer meanings.

【0045】それぞれの子オブジェクト153〜161
は、これらのメソッドを継承し、特定のプロトコル層に
該当する場合にはそのメソッドを指定変更する。
Each child object 153-161
Inherits these methods and overrides them if they apply to a particular protocol layer.

【0046】表3 TProtocolLayerクラスの主な関数を以下に示す。 Table 3 The main functions of the TProtocolLayer class are shown below.

【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オブジェクトをデータ・ス トリームにアンマーシャルするための演算 子Dispatch-dispatch inbound packet to upper layer Transmit-transmit outbound packet to lower layer DispatchEvent-dispatch event to upper layer TransmitEvent-transmit event to lower layer ReceiveEvent-report event Enable CancelReceiveEvent-Cancel event reporting InstantiateInterface-Create interface object from layer object GetUpperProtocol-Get pointer to next higher layer GetLowerProtocol-Get pointer to next lower layer Bind-Protocol- Unbind to bind stack Unbind to unbind protocol stack Connect-Initiate attempt to establish connection ReceiveConnection-Wait for attempt to establish connection Disconnect-End connection GetPacketQueue-Inbound data Packet returns a pointer to the packet queue in which the packet is available ReceiveDisconnect-waiting for disconnect AcceptConnection-accepting connection initiation RejectConnection-rejecting attempt to establish connection Listen-listening connection attempting to listen ListenForConnection-listening connection Listen for attempts to establish SendRelease-Start normal release => no more data to send ReceiveRelease-Acknowledge start normal release operator Operator << =-Operation to marshal TProtocolLayer object to data stream Child operator >> = − Operator to unmarshal the TProtocolLayer object to the data stream

【0048】5.プロトコル状態マシン ここでは、接続指向操作と無接続操作の両方について可
能なプロトコル・インタフェース・オブジェクトの状態
について説明する。プロトコル状態マシンを図6および
図7に示す。これらの状態マシンは、プロトコルで典型
的な状態遷移を示しているが、プロトコルのインプリメ
ンテーションによっては異なる選択も可能である。しか
し、この状態マシンは、アプリケーションの可搬性を確
実にし、プロトコルの独立性を可能にする。プロトコル
の独立性を必要とするアプリケーションでは以下に説明
する状態マシンを使用し、プロトコルの独立性をサポー
トするプロトコルによって状態マシンが実現されるはず
である。
5. Protocol State Machine This section describes the states of protocol interface objects that are possible for both connection-oriented and connectionless operations. The protocol state machine is shown in FIGS. These state machines show typical state transitions in the protocol, but different choices are possible depending on the implementation of the protocol. However, this state machine ensures application portability and allows protocol independence. Applications that require protocol independence should use the state machine described below, and the state machine should be implemented by a protocol that supports protocol independence.

【0049】特定のプロトコル・インタフェース層オブ
ジェクト用のプロトコル端点は、以下に記載する状態の
いずれかになるはずである。これらの状態は通常、アプ
リケーション状態である。層オブジェクトは、特定のプ
ロトコルによって定義される状態マシンに従う。通常、
これらの状態は、ユーザが各種の「端点」状態で行うこ
とができる有効な呼出しと、アプリケーションの作成方
法を示すためのものである。層状態は、層の意味と状態
によって制御される。
The protocol endpoint for a particular protocol interface layer object should be in one of the states described below. These states are typically application states. Layer objects follow a state machine defined by a particular protocol. Normal,
These states are meant to show the valid calls that the user can make in various "endpoint" states and how to create the application. The layer state is controlled by the meaning and state of the layer.

【0050】未初期設定状態201は、端点の最終状態
でもある端点の開始状態を定義するものである。これ
は、アクセス定義が作成される前の状態である。
The uninitialized state 201 defines the starting state of the endpoint which is also the final state of the endpoint. This is the state before the access definition is created.

【0051】TAccessDefinitionオブジェクトが作成さ
れると(202)、端点は初期設定済みと呼ばれる。初
期設定済み状態203では、Set操作を使用してインタ
フェース・オブジェクトを構築し初期設定できるはずで
ある。Set操作はインタフェース・オブジェクトでロー
カルにキャッシュされるので、設定値の妥当性検査を行
う余地はほとんどない。すなわち、InstantiateDefinit
ionメソッドによりプロトコル層オブジェクトが作成さ
れる前に、インタフェース・オブジェクト上で送信/受
信容量を設定することができる。このような容量への制
限に関する情報は層オブジェクトだけが把握しているの
で、このような値をインタフェース上で妥当性検査する
ことは不可能である。というのは、AccessDefinitionオ
ブジェクト上でInstantiateDefinitionメソッドが呼び
出されるまで、層オブジェクトが存在しないからであ
る。TAccessDefinitionオブジェクト204を破棄する
よう要求すると、端点が初期設定済み状態203から未
初期設定状態201に移行する。
Once the TAccessDefinition object is created (202), the endpoint is said to have been initialized. In the initialized state 203, the Set operation could be used to build and initialize the interface object. Set operations are cached locally on the interface object, so there is little room for validation of the settings. That is, InstantiateDefinit
The send / receive capacity can be set on the interface object before the protocol layer object is created by the ion method. It is not possible to validate such values on the interface, since only the layer object knows information about such capacity limits. The layer object does not exist until the InstantiateDefinition method is called on the AccessDefinition object. When a request is made to destroy the TAccessDefinition object 204, the endpoint moves from the initialized state 203 to the uninitialized state 201.

【0052】TAccessDefinitionオブジェクト上でイン
スタンス化要求206を行うと、端点が未結合状態20
7に移行する。未結合状態207は、層オブジェクトが
インスタンス化された直後に発生する状態を定義する。
値を修正するためにGet/Set操作を出すことができる。
このような要求はもはやインタフェース・オブジェクト
にキャッシュされないが、対応する層オブジェクトに送
られて、処理され格納される。TAccessDefinitionオブ
ジェクト上でインスタンス解除要求208を行うと、端
点が初期設定済み状態203に移行する。
When the instantiation request 206 is made on the TAccessDefinition object, the end points are in the unconnected state 20.
Move to 7. The unbound state 207 defines a state that occurs immediately after the layer object is instantiated.
You can issue Get / Set operations to modify the values.
Such requests are no longer cached in the interface object, but are sent to the corresponding layer object for processing and storage. When the instance cancellation request 208 is made on the TAccessDefinition object, the endpoint moves to the initialized state 203.

【0053】ローカル・アドレスをバインドするために
Bind操作210が出されると、端点が未結合状態207
から結合状態209に移行する。無接続モードのデータ
転送の端点は、「結合」状態になるとデータの送受信を
開始することができる。結合状態209でスタックに対
してアンバインド要求212が出されると、端点が未結
合状態207に戻る。
To bind a local address
When the Bind operation 210 is issued, the endpoint is in the unbound state 207.
To the combined state 209. The endpoints of the data transfer in the connectionless mode can start sending and receiving data when in the "bonded" state. When the unbind request 212 is issued to the stack in the combined state 209, the end point returns to the uncombined state 207.

【0054】Listen要求214が出されると、端点が結
合状態209から聴取状態213に移行する。プロトコ
ル・スタックは、ユーザ指定の待ち行列サイズを使い尽
くすまでそのローカル名に関する着信接続要求を受け入
れる。着信接続216により、新しい活動プロトコル・
スタックが作成される。
When the Listen request 214 is issued, the endpoint moves from the combined state 209 to the listening state 213. The protocol stack will accept incoming connection requests for that local name until the user-specified queue size is exhausted. Incoming connection 216 allows a new activity protocol
A stack is created.

【0055】活動端点でConnect要求220が出される
と、端点が結合状態209から接続(クライアント)状
態219に移行する。図7に示すように、無接続モード
のサービスを使用する端点は、接続要求が正常に行われ
た後で「データ転送」状態225に入る。受動端点の場
合、着信接続要求を受信すると、プロトコル・スタック
は、層とインタフェース・オブジェクトのコピーと、受
信した接続要求用の新しいTAccessDefinitionを作成す
る。新たに作成された端点は、その後、接続(サーバ)
状態221になる。矢印は、聴取状態から接続(サー
バ)状態まで点線上にある。アプリケーションは、接続
を受け入れるか、または接続を拒否するかを選択するこ
とができる。AcceptConnectionでは、端点がデータ転送
状態225になるはずである。接続要求226が拒否さ
れた場合、端点は非活動状態229に移行する。
When the Connect request 220 is issued at the active endpoint, the endpoint transitions from the combined state 209 to the connected (client) state 219. As shown in FIG. 7, endpoints using the service in connectionless mode enter the "data transfer" state 225 after a successful connection request. For passive endpoints, when an incoming connection request is received, the protocol stack creates a copy of the layer and interface objects and a new TAccessDefinition for the received connection request. The newly created endpoint is then connected (server)
State 221 is entered. The arrow is on the dotted line from the listening state to the connected (server) state. The application can choose to accept or reject the connection. In AcceptConnection, the endpoint should be in data transfer state 225. If the connection request 226 is rejected, the endpoint transitions to the inactive state 229.

【0056】新たに作成したスタックが接続要求222
を完了後、端点はデータ転送状態225に入る。ローカ
ル・アプリケーションからDisconnect要求228を受信
するか、または接続パートナーによって接続が終了され
た後に、接続端点が結合状態209に移行する。ただ
し、このような場合、アプリケーションはReceiveDisco
nnect要求を出して終了データを受信できることに留意
されたい。
The newly created stack has a connection request 222.
After completing, the endpoint enters the data transfer state 225. After receiving the Disconnect request 228 from the local application or the connection being terminated by the connection partner, the connection endpoint moves to the combined state 209. However, in such cases, the application will receive ReceiveDisco.
Note that you can issue the nnect request to receive the end data.

【0057】着信接続要求がアプリケーションによって
拒否されると、端点は非活動状態229に移行する。次
に、TAccessDefinition破棄操作230を出すことによ
って、端点が破棄される。
If the incoming connection request is rejected by the application, the endpoint transitions to the inactive state 229. The endpoint is then destroyed by issuing a TAccessDefinition destroy operation 230.

【0058】6.例 ここでは、TCP/IPなどのネットワーク・プロトコ
ルに本発明のオブジェクト指向モデルを使用する方法の
例を示す。TCP/IPインプリメンテーションは、ト
ランスポート層と、ネットワーク層と、TCP/IPフ
ァミリー層とを含む。さらに、ネットワーキング・サブ
システムは、システム内に常駐するTDatalink層オブジ
ェクトを含み、TCP/IPのFamilyLayerオブジェク
トはTDatalink層にアクセスする手段を備えている。た
だし、この実施例では、TDataLink層オブジェクトはT
CP/IP、SNA、NetBIOSなど、すべてのネ
ットワーク・プロトコル・スタックに共通し、TDatalin
k層オブジェクトはTProtocolLayerクラス・オブジェク
トから派生することに留意されたい。
6. Example Here is an example of how to use the object oriented model of the present invention for a network protocol such as TCP / IP. The TCP / IP implementation includes a transport layer, a network layer, and a TCP / IP family layer. In addition, the networking subsystem includes a TDatalink layer object that resides within the system, and the TCP / IP FamilyLayer object provides the means to access the TDatalink layer. However, in this embodiment, the TDataLink layer object is T
Common to all network protocol stacks such as CP / IP, SNA, NetBIOS, TDatalin
Note that the k-tier object derives from the TProtocolLayer class object.

【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クラスのインスタンスである。
The TCP / IP interface (API) class is derived from the TProtocolInterface class.
FIG. 8 shows the class hierarchy of some objects in the TCP / IP implementation. As mentioned above, TProtocolInterface and TProtocolLayer are child classes of the MProtocolService class that provide API and protocol implementation functionality. TTCPTINF
251, TTCPNINF 253, and TTCPFINF 255 objects (collectively referred to as TTCPXINF) are TCP / IP.
TTransportInterface class for the protocol, TNetworkI
TProto representing nterface class and TFamilyInterface class
It is an example of a concrete class of colInterface. However, TCP
Note that there is no instance of the TSessionLayer class as there is no concept of "session" in the / IP protocol. Similarly, TTCPTIMP257 and TTCPNIMP
259 and each object of TTCPFIMP261 (collectively
Called TTCPXIMP) is TTRA for the TCP / IP protocol.
nsportInterface class, TNetworkInterface class, TF
It is an instance of the amilyInterface class.

【0060】前述のように、TDatalinkLayer161は、
この実施例のすべてのネットワーク・プロトコル用のイ
ンプリメンテーション・オブジェクトであり、TProtoco
lLayerクラス151のサブクラスである。
As described above, the TDatalinkLayer 161 is
The implementation object for all network protocols in this example, TProtoco
It is a subclass of the lLayer class 151.

【0061】また、IPアドレスを渡すことができるよ
うに、アプリケーションにはTTCPProtocolAddressクラ
スが用意されている。TTCPProtocolAddressは、4バイ
トのIPアドレスと、2バイトのポート・アドレスとを
含むことになる。
Further, the TTCPProtocolAddress class is prepared for the application so that the IP address can be passed. The TTCPProtocolAddress will contain a 4-byte IP address and a 2-byte port address.

【0062】TCP/IPプロトコルにアクセスするた
めにアプリケーションが必要とするプロセスについて
は、図9を参照して以下に説明する。ほとんど場合、
「アプリケーション」は、ユーザ・レベル・アプリケー
ションがAPI呼出しを行うBSDソケット・インタフ
ェースなどの通信API層になる可能性が最も高い。ソ
ケット・インタフェースにより、アプリケーション開発
者は、ネットワーク・プロトコル・オブジェクトの特定
の構文を把握する必要がなくなるはずである。しかし、
「アプリケーション」は、本発明のオブジェクト・モデ
ルの名前に精通したオペレーティング・システム・サー
ビスにもなりうる。以下の例では、アプリケーションが
トランスポート層にアクセスする。アプリケーションは
どの層にもアクセスすることができる。ネットワーク層
に直接送話することも可能である。現在、ユーザ・アプ
リケーションがまったくないことが一般的である。これ
らのステップは、TCP/IPプロトコルの手続き上の
インプリメンテーションのものと高レベルで非常によく
似ている。しかし、それは、本発明のプロトコル・イン
タフェース・モデルを使用して、オブジェクト指向のや
り方で実現されている。
The process required by the application to access the TCP / IP protocol is described below with reference to FIG. In most cases
The "application" is most likely to be the communication API layer, such as the BSD socket interface, where the user level application makes API calls. The socket interface should eliminate the need for application developers to understand the specific syntax of network protocol objects. But,
An "application" can also be an operating system service familiar with the name of the object model of the present invention. In the following example, the application accesses the transport layer. Applications can access any layer. It is also possible to talk directly to the network layer. Currently, it is common for there to be no user application. These steps are very similar at high level to those of the procedural implementation of the TCP / IP protocol. However, it has been implemented in an object-oriented manner using the protocol interface model of the present invention.

【0063】ステップ301では、TCP/IPプロト
コルにアクセスするために通信端点が作成される。これ
は、まずTAccessDefinitionオブジェクトを作成するこ
とによって行われる。たとえば、C++を使用して「新
しいTAccessDefinition」が構築される。次に、TAccess
Definition内のメソッドを使用して、TTCPxINFインタフ
ェース・オブジェクトが作成され、AccessDefinitionに
追加される。その後、TAccessDefinitionオブジェクト
上でInstantiateProtocolメソッドが呼び出され、次に
それによりTTCPxIMP層オブジェクトが作成される。
In step 301, a communication endpoint is created to access the TCP / IP protocol. This is done by first creating a TAccessDefinition object. For example, C ++ is used to build a "new TAccessDefinition". Then TAccess
The TTCPxINF interface object is created and added to the AccessDefinition using the methods in the Definition. The InstantiateProtocol method is then called on the TAccessDefinition object, which in turn creates the TTCPxIMP layer object.

【0064】ステップ303では、ステップ301で作
成された通信端点にアドレスが結合される。これは、用
意されたTTCPProtocolAddressクラス・オブジェクトか
ら必要なIPアドレスを備えたTTCPProtocolAddressオ
ブジェクトを作成することによって行われる。次に、そ
のアドレスをバインドするためにTTCPTINF->Bind()メソ
ッドが呼び出される。このステップは、バインドの意味
を含むプロトコル・インプリメンテーション層上でTTCP
IMP->Bind()メソッドを起動することになる。
In step 303, the address is combined with the communication end point created in step 301. This is done by creating a TTCPProtocolAddress object with the required IP address from the prepared TTCPProtocolAddress class object. The TTCPTINF-> Bind () method is then called to bind that address. This step involves TTCP on the protocol implementation layer, including the meaning of binding.
This will invoke the IMP-> Bind () method.

【0065】次に、ステップ305では、(TTCPTINFオ
ブジェクトで)TTCPTINF->Connect()メソッドを呼び出
して接続要求を開始することによって、アプリケーショ
ンが聴取対等機能に接続する。これにより、(TTCPTIMP
オブジェクトで)TTCPTIMP->Connect()メソッドが起動
され、次にこのメソッドは、下位層、すなわち、TTCPNI
MP->Connect()メソッドとTTCPFIMP->Connectメソッド用
のTTCPNIMPオブジェクトとTTCPFIMPオブジェクトをそれ
ぞれ呼び出すことにより、TCP/IP接続をセットア
ップするための必要なステップを実行する。
Next, in step 305, the application connects to the listening peer function by invoking the TTCPTINF-> Connect () method (in the TTCPTINF object) to initiate a connection request. This allows (TTCPTIMP
(On the object) the TTCPTIMP-> Connect () method is invoked, which then calls the lower layer, namely TTCPNI
Perform the necessary steps to set up a TCP / IP connection by calling the TTCPNIMP and TTCPFIMP objects for the MP-> Connect () method and the TTCPFIMP-> Connect method, respectively.

【0066】正常接続後、ステップ307では、結果の
プロトコル・スタックによりデータを送受信することが
できる。アプリケーションは、TTCPTINF->Send()メソッ
ドとTTCPTINF->Receive()メソッドを呼び出して、ネッ
トワーク・データを送受信する。TTCPTINF->Send()は次
にTTCPTIMP->Xmit()メソッドを呼び出して、TCPプロ
トコルのデータ伝送を開始する。データは、各プロトコ
ル層のXmit()関数を使用してプロトコル層オブジェクト
からプロトコル層オブジェクトに渡され、通信アダプタ
によりTDataLinkLayerオブジェクトに送達される。同様
に、受信機能の場合は、TDataLinkLayerが物理層からデ
ータを受信し、それを適切なプロトコル・ファミリー層
に渡し、次にその層が適切なスタックに渡す。しかし、
一実施態様では、クライアントからのデータ受信要求が
行われるまでデータが待ち行列化され、データはデータ
待ち行列からクライアントにコピーされる。
After successful connection, in step 307, data can be sent and received by the resulting protocol stack. Applications call the TTCPTINF-> Send () and TTCPTINF-> Receive () methods to send and receive network data. TTCPTINF-> Send () then calls the TTCPTIMP-> Xmit () method to start data transmission of the TCP protocol. The data is passed from the protocol layer object to the protocol layer object using the Xmit () function of each protocol layer and delivered by the communication adapter to the TDataLinkLayer object. Similarly, for the receive function, TDataLinkLayer receives data from the physical layer and passes it to the appropriate protocol family layer, which in turn passes it to the appropriate stack. But,
In one embodiment, the data is queued until a request to receive data from the client is made and the data is copied from the data queue to the client.

【0067】ステップ309では、所望の通信の完了後
に接続が閉じられる。アプリケーションは、TTCPTINF->
Disconnect()メソッドを呼び出して、接続終了を開始す
る。これにより次にTTCPTIMP->Disconnect()が呼び出さ
れ、このメソッドは特定のインプリメンテーションの場
合にファミリー層までそのメソッドを送信する可能性の
あるTTCPTIMPのTCP/IP切断状態マシンを処理す
る。
In step 309, the connection is closed after the desired communication is completed. Application is TTCPTINF->
Call the Disconnect () method to start the connection termination. This then calls TTCPTIMP-> Disconnect (), which handles the TCP / IP disconnect state machine for TTCPTIMP which may send the method down to the family layer for certain implementations.

【0068】最後に、ステップ311では、TAccessDef
initionオブジェクトを削除することによって、端点が
閉じられる。
Finally, in step 311, TAccessDef
The endpoint is closed by deleting the inition object.

【0069】図10を参照すると、様々なオブジェクト
とネットワーク層との関係を理解するのに役立つだろ
う。同図の左側には、図8および図9に関連して前述し
たTCP/IP実施例が示されている。TCP/IPア
プリケーション313、315は、いずれもアプリケー
ション層にあるソケットAPI317を介して、以下の
層のオブジェクト指向プロトコル・スタックに連絡す
る。通信端点を作成するためにソケットAPIが使用す
るTProtocolAddressオブジェクトは図示していない。そ
れぞれのTCP/IPアプリケーション313、315
ごとに個別の通信端点、すなわち、個別のTProtocolAdd
ressオブジェクトが必要である。
Referring to FIG. 10, it may be helpful to understand the relationship between various objects and the network layer. On the left side of the figure, the TCP / IP embodiment described above in connection with FIGS. 8 and 9 is shown. The TCP / IP applications 313 and 315 communicate with the object-oriented protocol stacks of the following layers via the socket API 317, both of which are in the application layer. The TProtocolAddress object used by the socket API to create the communication endpoint is not shown. Each TCP / IP application 313, 315
Each communication end point, that is, each TProtocolAdd
ress object is required.

【0070】前述のように、TCP/IPにはセッショ
ン層という概念がないので、ソケットAPI317はト
ランスポート層内のTTCPTINFオブジェクト251によっ
てやりとりする。前述のように、TAccessDefinitionオ
ブジェクト318は、トランスポート層、ネットワーク
層、ファミリー層のTTCPxINFオブジェクト251、25
3、255を含む。ユーザ・レベル・プロセスがファミ
リー層のネットワークによりプロトコル・スタックに連
絡することは比較的まれなことであるが、主にオペレー
ティング・システム・サービスにより、これらの層に連
絡するためにTTCPNINFオブジェクト253とTTCPFINFオ
ブジェクト255が提供される。
As described above, since there is no concept of session layer in TCP / IP, the socket API 317 communicates with the TTCPTINF object 251 in the transport layer. As described above, the TAccessDefinition object 318 includes the TTCPxINF objects 251, 25 of the transport layer, the network layer, and the family layer.
3, 255 are included. Although it is relatively rare for user-level processes to contact the protocol stack over a family layer network, the TTCPNINF object 253 and TTCPFINF are primarily used by operating system services to reach these layers. An object 255 is provided.

【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を介してプロトコル・スタック上
でネットワーク・データを送信することができる。
The TTCPTINF object 251 is the TTCPTINF
-> TTCPTIMP object 25 by Connect () method
Connect to 7. This allows the TTCPNIMP object 25
TTCPTIMP-> Connect () method to connect to 9,
TTCPNIMP to connect to TTCPFIMP object 261
-> Connect () method is started. Also, TDataLinkL
TTCPFIMP-> Connect to connect to ayer object 161
() Method is started. As shown in the figure, TTCPTIMP2
57, TTCPNIMP259, TTCPFIMP261, TDatalinkLay
The objects of the er 161 are in the transport layer, the network layer, the family layer, and the data link layer, respectively. As described above, the send / receive method allows network data to be sent on the protocol stack via the physical adapter 319 in the physical layer.

【0072】好ましい実施例では、通信端点が作成され
削除されたときに、TDataLinkLayerオブジェクト161
とTTCPFIMPオブジェクト261は不変であり、単独であ
る。それぞれの活動端点ごとに、残りのオブジェクト
(251、253、255、257、259、318)
のそれぞれの個別のスレッドとインスタンスが必要にな
る。当業者であれば容易に分かるように、何千ものクラ
イアント接続が行われる可能性のあるネットワーク・プ
ロトコル・サーバの場合、このような配置に関連するオ
ーバヘッドによってパフォーマンス上の問題が発生する
可能性がある。以下の動的実行ユニット管理の項で説明
するように、本発明は、パフォーマンスを最大にするた
めに実行スレッドを動的に管理するための手段を提供す
る。
In the preferred embodiment, a TDataLinkLayer object 161 is created when a communication endpoint is created and deleted.
And the TTCPFIMP object 261 is immutable and stand alone. The remaining objects (251, 253, 255, 257, 259, 318) for each activity endpoint
Each requires a separate thread and instance of. As one of ordinary skill in the art will readily appreciate, the overhead associated with such an arrangement can cause performance problems in the case of a network protocol server with potentially thousands of client connections. is there. As described in the Dynamic Execution Unit Management section below, the present invention provides a means for dynamically managing execution threads for maximum performance.

【0073】同図の右側には、NetBIOSのインプ
リメンテーションが示されている。したがって、本発明
は、システムが複数のネットワーク・プロトコルを実行
する複数のアプリケーションをサポートするマルチプロ
トコル環境を企図するものである。図10に示すよう
に、NetBIOSアプリケーション331、333
は、ソケットAPI317または特殊NetBIOS
API層335のいずれかを介して下位層とやりとりす
ることができる。したがって、本発明は、本発明のオブ
ジェクト指向プロトコル・スタックにアクセス可能な複
数のアプリケーションも企図するものである。このよう
なアプリケーションは、オブジェクト・ベースまたは手
続きベースのユーザ・レベル・アプリケーションまたは
オペレーティング・システム・レベル・プロセスにする
ことができる。
On the right side of the figure, an implementation of NetBIOS is shown. Accordingly, the present invention contemplates a multi-protocol environment in which the system supports multiple applications running multiple network protocols. As shown in FIG. 10, NetBIOS applications 331, 333.
Is a socket API 317 or special NetBIOS
It can interact with lower layers via any of the API layers 335. Thus, the present invention also contemplates multiple applications accessible to the object oriented protocol stack of the present invention. Such applications can be object-based or procedure-based user-level applications or operating system-level processes.

【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は不変かつ単独であり、それぞれの活
動通信端点ごとに残りのオブジェクトのそれぞれの個別
のインスタンスが作成され削除される。
As mentioned above, a similar process is used to establish the NetBIOS stack. However, Net
Since BIOS does not mean the session layer, AP
Note that the I-layer 317, 335 connects to the session-layer TNSINF object 337. NetBIO
TNSINF337 which is an S interface object,
TNTINF339, TNNINF341, TNFINF343 and Net
TNSIMP34, which is a BIOS protocol layer object
7. After TTNIMP349, TNNIMP351, and TNFIMP353 are created, TNSINF object 337 causes TDataLinkLayer object 1 through the protocol layer object.
A communication path is established up to 61. As in the TCP / IP embodiment, the TDataLinkLayer object 161 and the TNFIMP object 353 are immutable and stand-alone, with each active communication endpoint creating and deleting a separate instance of each of the remaining objects.

【0075】本発明では、TDataLinkLayer161に結合
された複数のアダプタ319、321に対処することが
できる。上位層は通信端点までの適切な経路指定を行う
ので、異なるネットワーク・プロトコルに対して同時に
これらのアダプタを使用することができる。さらに、こ
れらのアダプタは、イーサネットとトークン・リングな
ど、異なるタイプのものにすることができるので、サー
バは各種のネットワークからの要求に対応することがで
きる。
The present invention can deal with a plurality of adapters 319, 321 coupled to the TDataLinkLayer 161. The upper layers provide proper routing to the communication endpoints so that these adapters can be used simultaneously for different network protocols. Further, these adapters can be of different types, such as Ethernet and Token Ring, so that the server can serve the demands of different networks.

【0076】7.プロトコル・ユーティリティ・クラス このクラスは、TProtocolInterfaceクラスとTProtocolL
ayerクラスが使用するものである。このクラスのほとん
どは、インタフェース・クラスとインプリメンテーショ
ン・クラスの様々なメソッドのパラメータとして機能す
る。このクラスは、提案したモデルの一般的な特徴を強
調するものである。
7. Protocol Utility Class This class is a TProtocolInterface class and a TProtocolL
It is used by the ayer class. Most of this class serves as a parameter to various methods in the interface and implementation classes. This class emphasizes the general features of the proposed model.

【0077】ここでは、プロトコル・インタフェースが
使用する重要なクラスの一部について説明する。
This section describes some of the important classes used by the protocol interfaces.

【0078】a.TProtocolInfoクラス このクラスは、サービス・タイプ、最大メッセージ・サ
イズ、優先データ長など、そのプロトコルの様々な特性
を識別するものである。このクラスが提供する重要なメ
ソッドの一部を以下に示す。
A. TProtocolInfo Class This class identifies various characteristics of the protocol such as service type, maximum message size, preferred data length, and so on. Following are some of the important methods provided by this class.

【0079】これらは、端点の作成時に端点の特性を指
定するために使用する。
These are used to specify the characteristics of the end points when creating the end points.

【0080】 GetPSDUSize −プロトコル・サービス・データ・ユニット の最大サイズを獲得する SetPSDUSize −プロトコル・サービス・データ・ユニット の最大サイズを設定する GetEPSDUSize −優先プロトコル・サービス・データ・ユニ ットの最大サイズを獲得する PSDUSize −優先プロトコル・サービス・データ・ユニ ットの最大サイズを設定する GetConnectionDataSize −接続データの最大サイズを獲得する SetConnectDataSize −接続データの最大サイズを設定する GetDisconnectDataSize −切断データの最大サイズを獲得する SetDisconnectDataSize −切断データの最大サイズを設定する GetDisconnectDataSize −切断データの最大サイズを獲得する SetDisconnectDataSize −切断データの最大サイズを設定する GetServiceType −接続/無接続などのサービス・タイプを獲 得する SetServiceType −サービス・タイプを設定する SetServiceType −サービス・タイプを設定する SetServiceFlags −サービス・フラグを設定するGetPSDUSize-Get maximum size of protocol service data unit SetPSDUSize-Set maximum size of protocol service data unit GetEPSDUSize-Get maximum size of preferred protocol service data unit PSDUSize-Set the maximum size of priority protocol service data unit GetConnectionDataSize-Get the maximum size of connection data SetConnectDataSize-Set the maximum size of connection data GetDisconnectDataSize-Get the maximum size of disconnect data SetDisconnectDataSize -GetDisconnectDataSize to set the maximum size of disconnection data-GetDisconnectDataSize to acquire the maximum size of disconnection data-SetServiceconnectDataSize to set the maximum size of disconnection data-SetServiceType to acquire the service type such as connection / disconnection To set the service type SetServiceType - to set the service type SetServiceFlags - to set the service flag

【0081】b.TProtocolOptionsクラス このクラスは、サービス品質を含む、プロトコル固有の
オプションを定義するために使用する。しかし、この基
本クラスは、特定のサービス品質を含んでいない。具象
クラスがTProtocolOptionsから派生し、その固有のオプ
ションを含むものと思われる。
B. TProtocolOptions Class This class is used to define protocol-specific options, including quality of service. However, this base class does not include a particular quality of service. It is assumed that the concrete class derives from TProtocolOptions and contains its own options.

【0082】 GetLingerTime −プロトコル・リンガ時間を獲得する SetLingerTime −プロトコル・リンガ時間を設定する GetSendbufSize −プロトコル送信バッファ・サイズを獲得する SetSendbufSize −プロトコル送信バッファ・サイズを設定する GetRcvbufSize −プロトコル受信バッファ・サイズを獲得する SetRcvbufSize −プロトコル受信バッファ・サイズを設定するGetLingerTime-Get protocol linger time SetLingerTime-Set protocol linger time GetSendbufSize-Get protocol send buffer size SetSendbufSize-Set protocol send buffer size GetRcvbufSize-Get protocol receive buffer size SetRcvbufSize-Set protocol receive buffer size

【0083】c.TSendModifiersクラス TSendModifiersクラスは、TProtocolInterface::Sendメ
ソッドとTProtocolLayer::Xmit()メソッドにおけるネッ
トワーク送信機能に関連するフラグを修飾するものであ
る。送信タイムアウトのサポートの他に、送信機能を左
右しうる指示は以下の通りである。
C. TSendModifiers class The TSendModifiers class modifies the flags related to the network transmission function in the TProtocolInterface :: Send method and TProtocolLayer :: Xmit () method. In addition to support for send timeouts, the instructions that can affect the send function are:

【0084】 kPush −即時処理を要求する kEdnOfMessage −メッセージの終わりをマークする kExpeditedData −データを優先データとして扱う kNotify −クライアント・バッファが使用可能なとき に送信側に通知する kSendAll −「n」バイトがすべてバッファされるまで ブロックする kNoFragmentation −データを断片化しないKPush-request immediate processing kEdnOfMessage-mark end of message kExpeditedData-treat data as preferred data kNotify-notify sender when client buffer is available kSendAll-all "n" bytes Block until buffered kNoFragmentation-Do not fragment data

【0085】このクラスでサポートされる重要な関数の
一部を以下に示す。
The following are some of the important functions supported by this class:

【0086】 GetSendModifier −SendModifier用の値を獲得する SetSendModifier −SendModifierをONに設定する ClearSendModifier −SendModifierをOFFに設定する GetTimeout −送信タイムアウトを獲得する SetTimeout −送信タイムアウトを設定するGetSendModifier-Get value for SendModifier SetSendModifier-Set SendModifier to ON ClearSendModifier-Set SendModifier to OFF GetTimeout-Get send timeout SetTimeout-Set send timeout

【0087】d.TReceiveModifiersクラス このクラスは、TProtocolInterface::Receive()関数内
の受信フラグを定義するために使用する。
D. TReceiveModifiers Class This class is used to define the receive flags in the TProtocolInterface :: Receive () function.

【0088】このクラスは、ネットワーク・データを受
信しながら、フラグとタイムアウトを設定するためのメ
ソッドと定義を含む。以下の通りである。
This class contains methods and definitions for setting flags and timeouts while receiving network data. It is as follows.

【0089】 kPeek −ピーク・ユーザ・データ kExpeditedData −優先データを受信する kReceiveAll −「n」バイトが受信されるまでブロックす る kBroadcastData −同報データグラムを受信する kDiscardBufferOverflow −受信バッファからオーバフローするメッセ ージの一部を破棄する kDatagramAny −通常データグラムまたは同報データグラム のいずれかを受信するKPeek-Peak user data kExpeditedData-Receive priority data kReceiveAll-Block until'n 'bytes have been received kBroadcastData-Receive broadcast datagram kDiscardBufferOverflow-Message overflowing receive buffer Discard part of kDatagramAny-receive either a regular datagram or a broadcast datagram

【0090】このクラスの重要な関数の一部を以下に示
す。
Some of the important functions in this class are:

【0091】 GetReceiveModifier −ReceiveModifier用の値を獲得する SetReceiveModifier −ReceiveModifierをONに設定する ClearReceiveModifier −ReceiveModifierをOFFに設定する GetTimeout −受信タイムアウトを獲得する SetTimeout −受信タイムアウトを設定するGetReceiveModifier-Get value for ReceiveModifier SetReceiveModifier-Set ReceiveModifier to ON ClearReceiveModifier-Set ReceiveModifier to OFF GetTimeout-Get receive timeout SetTimeout-Set receive timeout

【0092】e.SendCompletionクラス ネットワーク・データ送信操作に応答してSendCompleti
onオブジェクトが返される。これは、送信機能の状況を
示し、送信バイトの総数も示す。状況指示は以下の通り
である。
E. SendCompletion class SendCompleti in response to a network data send operation
The on object is returned. It shows the status of the send function and also shows the total number of bytes sent. The situation instructions are as follows:

【0093】 kNormal −正常完了 kTimeout −送信タイムアウト kCancelled −アプリケーションが送信要求を取り消したKNormal-Normal completion kTimeout-Send timeout kCancelled-Application canceled send request

【0094】このクラスの重要なメソッドの一部を以下
に示す。
Some of the important methods of this class are:

【0095】 GetSTatus −SendCompletion状況を獲得する SetStatus −SendCompletion状況を設定する GetBytesTransferred −送信するクライアント・データのバイト数 を獲得する SetBytesTransferred −送信するクライアント・データのバイト数 を設定するGetSTatus-Get the SendCompletion status SetStatus-Set the SendCompletion status GetBytesTransferred-Get the number of bytes of client data to send SetBytesTransferred-Set the number of bytes of client data to send

【0096】f.TReceiveCompletionクラス ネットワーク・データ受信要求に応答してReceiveCompl
etionオブジェクトが返される。これは、受信機能の状
況と、データ受信バイトの総数を示す。状況指示は以下
の通りである。
F. TReceiveCompletion class ReceiveCompl in response to network data reception request
An etion object is returned. This indicates the status of the receive function and the total number of data received bytes. The situation instructions are as follows:

【0097】 kNormal −正常完了 kPushed −送信側がデータを「プッシュした」 kNoMoreData −ストリームが終了するかまたは受信パイプ が閉じられた kEndOfMessage −メッセージの終わりが検出された kExpeditedData −優先データを受信した kTimeout −受信タイムアウト kMessageTruncated −部分メッセージであり、残りは破棄される kCancelled −取消し要求が処理された kMore −追加データの受信準備ができているKNormal-Normal completion kPushed-Sender "pushed" data kNoMoreData-Stream ended or receive pipe closed kEndOfMessage-End of message detected kExpeditedData-Priority data received kTimeout-Reception Timeout kMessageTruncated-partial message, rest discarded kCancelled-cancel request processed kMore-ready to receive additional data

【0098】このクラスの重要な関数の一部を以下に示
す。
Some of the important functions in this class are:

【0099】 GetStatus −ReceiveCompletion状況を獲得する SetStatus −ReceiveCompletion状況を設定する GetBytesTransferred −受信するクライアント・データのバイト数 を獲得する SetBytesTransferred −受信するクライアント・データのバイト数 を設定するGetStatus-ReceiveCompletion Get status SetStatus-ReceiveCompletion Set status GetBytesTransferred-Get number of bytes of client data to receive SetBytesTransferred-Set number of bytes of client data to receive

【0100】ネットワーク事象管理 ここでは、複数のネットワーク・プロトコル・スタック
上で複数のネットワーク事象にアクセスし、それを様々
なプロトコル層で格納するという問題に対するオブジェ
クト指向の解決策を開示する。本発明では、OSIネッ
トワーク・プロトコル層モデルに基づくすべてのネット
ワーク事象の単一かつ一貫した1組のクラス定義を提供
する。各総称OSI層ごとに事象が定義されているの
で、これらの層の各インプリメンテーションは追加のサ
ブクラスを定義することによって、追加の層固有の事象
を加えることを選択できるはずである。この解決策は、
オブジェクト指向モデルなので、OO技術で多様性と継
承を完全に利用する。
Network Event Management This section discloses an object-oriented solution to the problem of accessing network events on multiple network protocol stacks and storing them at various protocol layers. The present invention provides a single and consistent set of class definitions for all network events based on the OSI network protocol layer model. Since events are defined for each generic OSI layer, each implementation of these layers should be able to choose to add additional layer-specific events by defining additional subclasses. This solution is
Being an object-oriented model, OO technology makes full use of diversity and inheritance.

【0101】OSI層に基づく事象の分類により、プロ
トコル層で格納され報告される事象が明確にカテゴリー
化される。このカテゴリー化により、アプリケーション
にとって重要であれば、特定の層について事象を取り出
すことができる。このような事象は、データが受信済み
で受信に使用可能である、接続が打ち切られたなど、確
立されているクライアントの通信セッションの条件を記
述することができる。クライアントは、単一の呼出しを
使用して、複数のプロトコル・スタックのいずれのプロ
トコル層上でもこれらの非同期事象を監視することがで
きる。本発明は、アプリケーションが個々の端点事象を
探す必要がなくなるように、TCP/IPやNetBI
OSなどの複数のプロトコルによる事象報告に及ぶ。さ
らに、ネットワーク事象機構により、層オブジェクト間
でネットワーク事象を送受信するためにネットワーク・
プロトコル層間でのやりとりが容易になる。
The classification of events based on the OSI layer clearly categorizes events stored and reported at the protocol layer. This categorization allows events to be retrieved for a particular layer if they are important to the application. Such an event may describe conditions for an established client communication session, such as data being received and available for reception, the connection being dropped, etc. Clients can use a single call to monitor for these asynchronous events on any protocol layer of multiple protocol stacks. The present invention eliminates the need for applications to look for individual endpoint events, TCP / IP and NetBI.
It covers event reporting by multiple protocols such as OS. In addition, the network event mechanism allows network objects to send and receive network events between layer objects.
It facilitates communication between protocol layers.

【0102】1.事象の説明 事象は、TProtocolEventという基本クラスを使用して定
義される。図11は、様々な事象オブジェクト間のクラ
ス階層を示している。図11は図2に似ているが、TEve
ntDefinitionクラス103のサブクラスであるTProtoco
lEventクラス401も示している。TProtocolEventクラ
ス401は、列挙されたクラスの事象と、すべてのOS
I層で一般に使用される1組の事象と、個々のプロトコ
ル層事象用の値の予約範囲を含む。TProtocolEventクラ
スは、事象とメンバーシップの質問を設定し獲得するた
めのメソッドを有する。一実施例のネットワーク事象は
ビット・ベクトルとして設定されている。このクラスで
は、GetCntメソッドがこのオブジェクト内に現在ある事
象の数を返す。これは、この場合のオプション事象のリ
ストを指定する典型的な方法であり、一般に使用するも
う1つの方法は、ビット・マスクを使用する方法であ
る。オブジェクト内にすべてのデータを隠すというオブ
ジェクト指向技術の能力のために、単一オブジェクトだ
けが必要であり、そのオブジェクトがそれらを獲得する
ためのメソッドを提供する。
1. Event description Events are defined using a base class called TProtocolEvent. FIG. 11 shows the class hierarchy among various event objects. Figure 11 is similar to Figure 2, but with TEve
TProtoco, which is a subclass of ntDefinition class 103
The lEvent class 401 is also shown. TProtocolEvent class 401 is the event of the listed classes and all OS
It contains a set of events commonly used at layer I and a reserved range of values for individual protocol layer events. The TProtocolEvent class has methods for setting and getting event and membership questions. The network events in one embodiment are set up as bit vectors. In this class, the GetCnt method returns the number of events currently in this object. This is a typical way to specify a list of optional events in this case, another commonly used method is to use a bit mask. Due to the power of object-oriented technology to hide all data within an object, only a single object is needed, and that object provides the methods to get them.

【0103】特定のネットワーク・プロトコルによって
は、TProtocolEventクラスで事象値を再定義することに
よって、プロトコル事象を定義することができる。TPro
tocolEventの重要なメソッドの一部は、識別されたイン
デックスの事象を返すGetEventと、リスト内の特定の事
象(メンバーシップ)を探索するHasAと、オブジェクト
内の事象の数を返すGetCntと、端点を示すアクセス定義
を返すGetAccessDefinitionと、端点用のアクセス定義
を設定するSetAccessDefinitionと、TProtocolEventオ
ブジェクト内の単一事象を設定するSetEventである。
Depending on the particular network protocol, protocol events can be defined by redefining event values in the TProtocolEvent class. TPro
Some of the important methods of tocolEvent are GetEvent, which returns the event at the identified index, HasA which searches for a specific event (membership) in the list, GetCnt which returns the number of events in the object, and endpoints. GetAccessDefinition that returns the access definition shown, SetAccessDefinition that sets the access definition for the endpoint, and SetEvent that sets a single event in the TProtocolEvent object.

【0104】2.OSI層インプリメンテーションへの
事象インタフェース 上記のプロトコル・インタフェース・モデルの項で述べ
たように、好ましい実施例ではネットワーク・プロトコ
ル層が一連のTProtocolLayerオブジェクトとして実現さ
れ、それぞれが特定のOSI層を表している。これらの
オブジェクトは互いに連鎖され、プロトコル・スタック
を完成させている。たとえば、TCP/IPスタック
は、トランスポート層、ネットワーク層、データリンク
層用のオブジェクトを備えることができる。各プロトコ
ル層オブジェクトは2つの事象インタフェース、すなわ
ち、TProtocolLayerオブジェクトに定義されたReceiveE
ventインタフェースとCancelEventインタフェースとを
有する。これらの層では、上位層のオブジェクトに事象
を渡すためにDispatchEventメソッドを使用し、下位プ
ロトコル層に事象を送信するためにTransmitEventメソ
ッドを使用する。適切な層に事象を格納することは、プ
ロトコル・スタックのインプリメンテーションの責任で
ある。
2. Event Interface to OSI Layer Implementation As described in the Protocol Interface Model section above, in the preferred embodiment, the network protocol layers are implemented as a series of TProtocolLayer objects, each representing a particular OSI layer. There is. These objects are chained together to complete the protocol stack. For example, the TCP / IP stack can include objects for the transport layer, network layer, data link layer. Each protocol layer object has two event interfaces, namely ReceiveE defined in the TProtocolLayer object.
It has a vent interface and a CancelEvent interface. In these layers, the DispatchEvent method is used to pass the event to the upper layer object, and the TransmitEvent method is used to send the event to the lower protocol layer. Storing events in the appropriate layers is the responsibility of the protocol stack implementation.

【0105】TProtocolLayerクラスの事象関連メソッド
は、上位層に事象をディスパッチするDispatchEvent
と、下位層に事象要求待ち行列を伝送するTransmitEven
tと、EventRequestQueueにTProtocolEventオブジェクト
を追加することにより事象(複数も可)を報告するRece
iveEventと、EventRequestQueueを無視するCancelRecei
veEventである。
The event related method of the TProtocolLayer class dispatches an event to the upper layer DispatchEvent
And TransmitEven that transmits the event request queue to the lower layer
Rece reporting event (s) by adding tProtocolEvent object to t and EventRequestQueue
CancelRecei that ignores iveEvent and EventRequestQueue
veEvent.

【0106】3.アプリケーションによる事象監視 それぞれのネットワーク・プロトコル層にオブジェクト
・ベースのAPI用の基本クラスを提供するTProtocolI
nterfaceクラス・オブジェクトは、ネットワーク事象を
受信するために端点が使用できる機能を含んでいる。TP
rotocolInterfaceクラスの事象関連機能は、特定の通信
端点用にTProtocolEventオブジェクトに設定された事象
(複数も可)を受信するReceiveEventメソッドである。
3. Event monitoring by application TProtocolI that provides a base class for object-based APIs for each network protocol layer
The nterface class object contains functions that endpoints can use to receive network events. TP
The event-related function of the rotocolInterface class is a ReceiveEvent method that receives the event (s) set in the TProtocolEvent object for a specific communication endpoint.

【0107】アプリケーションが複数の通信端点での事
象の監視を必要とするときは、TEventDefinitionオブジ
ェクトを使用する。TEventDefinitionオブジェクトは、
事象を監視するためのオブジェクト端点として機能す
る。このオブジェクトのインスタンスは、アプリケーシ
ョンの要求に応じて作成され削除される。TEventDefini
tionオブジェクトの主なメソッドは、TEventDefinition
オブジェクトのインスタンスをインスタンス化するInst
antiateDefinitionと、TEventDefinitionオブジェクト
のインスタンスを破棄するDeInstantiateDefinition
と、TProtocolEventオブジェクトのアレイまたは待ち行
列で複数のスタックからの事象を受信するReceiveEvent
Anyと、保留事象要求を取り消すCancelRequestである。
When an application needs to monitor events at multiple communication endpoints, it uses the TEventDefinition object. The TEventDefinition object is
Acts as an object endpoint for monitoring events. Instances of this object are created and deleted as required by the application. TEventDefini
The main method of action object is TEventDefinition
Inst that instantiates an instance of the object
deInstantiateDefinition that destroys the antiateDefinition and instance of the TEventDefinition object
And a ReceiveEvent that receives events from multiple stacks in an array or queue of TProtocolEvent objects.
Any and CancelRequest that cancels the pending event request.

【0108】a.1つの通信端点での事象の受信 アプリケーションは、特定のネットワーク層用のTProto
colInterfaceクラスのインスタンスでReceiveEventメソ
ッドを使用して、特定の端点で事象を受信することがで
きる。ただし、端点はそのプロトコル用のTProtocolInt
erfaceオブジェクトを使用してプロトコルにアクセスす
ることに留意されたい。アプリケーション・プログラム
は、必要な事象をTProtocolEventオブジェクトに設定
し、次にReceiveEventメソッドを呼び出す。TProtocolI
nterfaceオブジェクトは、事象が発生していればその事
象を含むTProtocolEventオブジェクトを返す。
A. Receiving an event at one communication end point The application is TProto for a specific network layer.
You can use the ReceiveEvent method on an instance of the colInterface class to receive an event at a particular endpoint. However, the endpoint is the TProtocolInt for that protocol.
Note that the erface object is used to access the protocol. The application program sets the required event in the TProtocolEvent object and then calls the ReceiveEvent method. TProtocolI
The nterface object returns a TProtocolEvent object containing the event, if any.

【0109】1つの通信端点で事象を受信するプロセス
を図12の流れ図に示す。この例では、トランスポート
層が一番上の層であり、事象はネットワーク層に格納さ
れ、アプリケーションからの要求はトランスポート層に
対して行われる。
The process of receiving an event at one communication endpoint is shown in the flow chart of FIG. In this example, the transport layer is the top layer, events are stored in the network layer, and requests from applications are made to the transport layer.

【0110】もう1つの代替方法は、事象を受信するた
めにその層への直接の事象インタフェースをセットアッ
プする方法である。しかし、このプロセスでは、あまり
有利ではない事象についてもすべての層をそのように処
置しなければならなくなる。1つの点から獲得する方が
良好なので、クライアントは選択基準として事象ベクト
ルを使用してすべての層から事象を獲得するように呼出
しを行う。
Another alternative is to set up a direct event interface to that layer to receive events. However, this process requires that all layers be treated in that way even for less favorable events. Since it is better to get from one point, the client makes a call to get the event from all layers using the event vector as the selection criterion.

【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)。
FIG. 12 shows the event receiving mechanism at a single endpoint. Requests to receive one or more events at the endpoint are made to the interface object using the TProtocolInterface :: ReceiveEvent () method 411. The resulting TProtocolE reported from the endpoint
A ProtocolEventQueue 413 including vents is created internally. The request is then sent to the corresponding layer object using the TProtocolLayer :: ReceiveEvent () method 415. The figure shows how requests are sent between layer objects. TProtocolEventQueue is Rec
Sent as a parameter in the eiveEvent request. The protocol layer object is responsible for the TProto
Disable colEventQueue TProtocolLayer :: CancelEve
TProtocolEve to this queue before receiving an nt () request.
Queue nt. TxxTra depending on the event requested
nsportLayer is a TransmitEvent of TProtocolLayer class
The request can be sent to the TxxNetworkLayer using the () method (417). Similarly, if the event request needs to reach lower layers, TxxNetworkLayer may also send the request to TxxFamilyLayer (419).

【0112】事象が非同期に発生する場合、TProtocolL
ayerオブジェクトは、DispatchEvent()を使用してその
事象を上位層に報告することができる(421)。次に
ネットワーク層は、この事象をTxxTransportLayerに報
告する(423)。TxxTransportLayerは報告された事
象をProtocolEventQueueに待ち行列化する(415)。
次に、事象は呼出し側に報告される(411)。
When the event occurs asynchronously, TProtocolL
The ayer object can report the event to upper layers using DispatchEvent () (421). The network layer then reports this event to the TxxTransportLayer (423). The TxxTransportLayer queues the reported event in the ProtocolEventQueue (415).
The event is then reported to the caller (411).

【0113】b.複数の通信端点での事象の受信 アプリケーションは、TEventDefinitionオブジェクトを
使用することにより、複数の通信端点の事象のための端
点を作成することができる。図11に示すように、TEve
ntDefinitionクラス103はTNetworkDefinitionクラス
100から派生している。TEventDefinitionオブジェク
ト103は、任意のプロトコルで任意の数の端点の事象
を監視するための端点として機能する。アプリケーショ
ン・プログラムにとって関心のある各通信端点ごとに、
必要な数のProtocolEventsがTProtocolEventオブジェク
トに設定される。すなわち、その事象が監視対象となる
すべての端点について、2タプル(端点、プロトコル事
象)の対が形成される。その後、アプリケーションは、
様々な端点から要求された事象の組を渡して、TEventDe
finitionオブジェクトのReceiveEventAny()メソッドへ
の呼出しを行う。ReceiveEventAnyは、TProtocolEvents
の待ち行列に事象を入れて復帰するか、またはタイムア
ウトする。ただし、すべての通信端点はTAccessDefinit
ionクラスを使用して作成されることに留意されたい。
B. Receiving Events at Multiple Communication Endpoints An application can create endpoints for multiple communication endpoint events by using the TEventDefinition object. As shown in FIG. 11, TEve
The ntDefinition class 103 is derived from the TNetworkDefinition class 100. The TEventDefinition object 103 functions as an endpoint for monitoring an event of an arbitrary number of endpoints by an arbitrary protocol. For each communication endpoint that is of interest to the application program,
The required number of ProtocolEvents are set in the TProtocolEvent object. That is, a pair of 2-tuples (end points, protocol events) is formed for all end points for which the event is monitored. Then the application
Pass in a set of requested events from various endpoints to get TEventDe
Call ReceiveEventAny () method of finition object. ReceiveEventAny is TProtocolEvents
Put an event in the queue and return, or time out. However, all communication end points are TAccessDefinit
Note that it is created using ion class.

【0114】図13は、複数の端点での事象受信の流れ
を示している。
FIG. 13 shows the flow of event reception at a plurality of end points.

【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)、それを呼出し側に報告する。報
告する事象がまったくない場合には、待ち行列が空であ
るはずである。
FIG. 13 shows an event receiving mechanism at a plurality of end points. The application creates a TEventDefinition object that acts as an event endpoint (45
1). Then the application will run one per endpoint,
Create an array of TProtocolEvent objects (45
3). The array of requested events at the endpoint is passed as a parameter to TEventDefinition :: ReceiveEventAny () (455). ReceiveEventAny () method is TProtocol
Create an EventQueue (457) and send a queue to all endpoints where the event is searched (461). Receive request via ReceiveEvent request (463) TxxProtocolLayer
Can send event requests to layers below it. This is the same for any endpoint (46
5). When TxxProtocolLayer receives an event asynchronously, it dispatches the event to the upper layer or TP
Events can be reported in the rotocolEventQueue. When an event enters the TProtocolEventQueue, TxxProtocolLayer :: CancelEven is added to the TxxProtocolLayer of all relevant endpoints.
t () is sent. Next, ReceiveEventAny method 455
Returns all TProtocolEvents from the TProtocolEventQueue
(459) and report it to the caller. The queue should be empty if there are no events to report.

【0116】いずれかの端点から応答が受信された後、
すべての端点はCancelEvent要求を受け取り、ProtocolE
ventQueueオブジェクトの寿命が終了したことを示す。
その要求が取り消された場合でも、事象は依然としてプ
ロトコル層に保管される。クライアントは、次に新しい
事象を獲得するときに、別のReceiveEventとともに戻る
ことができる。この実施例では、クライアントからのプ
ル・モデルを使用するが、クライアントにとって便利な
ときにクライアントが事象を獲得することを意味する。
呼出し側には収集された1組のProtocolEventsが返され
る。
After the response is received from either endpoint,
All endpoints receive a CancelEvent request, ProtocolE
Indicates that the life of the ventQueue object has ended.
If the request is canceled, the event is still stored at the protocol layer. The client can return with another ReceiveEvent the next time it gets a new event. This embodiment uses the pull model from the client, which means that the client gets the event when it is convenient for the client.
The set of ProtocolEvents collected is returned to the caller.

【0117】動的実行ユニット管理 マルチタスキング・システムでは、TCP/IPなどの
ネットワーク・プロトコル・スタックは、クライアント
/サーバ・モデルを使用して効率よく実現することがで
きる。サーバは、多数のクライアントをサポートするた
めにマルチタスキング技法を使用してユーザ・レベル・
タスクにすることができる。多数のクライアントをサポ
ートする際に十分なパフォーマンスを保証するため、固
定した1組のサーバ資源を特定のプロセスに事前割振り
することが必要な場合も多い。重要なサーバ資源の1つ
は、割り振られたサーバ実行ユニットの数である。OS
/2やWindows NTなどの最新のオペレーティング・シス
テムでは、実行の基本ユニットはスレッドである。現在
の多くのシステムは「軽量」スレッド(高速スレッド切
替えを意味する)を備えているが、残念ながら、スレッ
ド作成/削除は、何千ものクライアントをサポートする
ために拡大したときに本発明が提案するようなネットワ
ーク・プロトコル・サーバのパフォーマンス要件をサポ
ートできるほど十分「軽量」ではない。
Dynamic Execution Unit Management In multitasking systems, network protocol stacks such as TCP / IP can be efficiently implemented using a client / server model. The server uses a multitasking technique to support a large number of clients at the user level.
Can be a task. It is often necessary to pre-allocate a fixed set of server resources to a particular process in order to guarantee sufficient performance when supporting a large number of clients. One of the important server resources is the number of allocated server execution units. OS
In modern operating systems such as / 2 and Windows NT, the basic unit of execution is a thread. Many current systems are equipped with "lightweight" threads (meaning fast thread switching), but unfortunately thread creation / deletion is proposed by the present invention when scaled to support thousands of clients. Is not "lightweight" enough to support the performance requirements of network protocol servers such as

【0118】さらに、スレッドの数が増すにつれて、シ
ステム、すなわち、サーバのパフォーマンスは大幅に低
下する。スレッド切替えのオーバヘッドは、システム内
に割り振られたフットプリントに加え、スレッドの数が
増すにつれて比例して増加する傾向がある。これは、ネ
ットワーク・セッション下の全二重通信で2つのスレッ
ドに入れてデータの送受信を実行するなど、同じクライ
アントからの複数の同時要求をサポートする必要があり
そうなネットワーク・サーバの場合にさらに複雑にな
る。その結果、複数の同時クライアント対応専用のサー
バ内のスレッドの数は非常に大きくなる可能性がある。
したがって、スレッドなどのサーバ実行ユニットを効率
よく管理することは、十分なパフォーマンスを備えた多
数のクライアントをサポートするサーバの能力にとって
重要なことである。
Furthermore, as the number of threads increases, the performance of the system, ie, the server, drops significantly. Thread switching overhead tends to increase proportionally as the number of threads increases, in addition to the footprint allocated in the system. This is even better for network servers that are likely to need to support multiple simultaneous requests from the same client, such as sending and receiving data in two threads in full duplex under a network session. It gets complicated. As a result, the number of threads in a server dedicated to supporting multiple simultaneous clients can be very large.
Therefore, efficient management of server execution units such as threads is important to the server's ability to support a large number of clients with sufficient performance.

【0119】ここでは、ネットワーク・プロトコル・サ
ーバが実行スレッドの数を動的に管理するための方法を
開示する。この方法は、多数のクライアントに対応する
のに必要なスレッド資源を低減する。個々のクライアン
トがサーバ割振りのスレッド資源をすべて消費してしま
わないように、進入制御が設けられている。同時に、サ
ーバ・スレッド資源を待って特定のクライアントをいつ
までも停止させておくことはない。
Here, a method for the network protocol server to dynamically manage the number of execution threads is disclosed. This method reduces the thread resources needed to accommodate a large number of clients. Ingress control is provided so that each client does not consume all thread resources allocated to the server. At the same time, it never waits for server thread resources to keep a particular client dead.

【0120】1.サーバ実行ユニット管理 サーバ・スレッドは、サーバ・スレッド・プールで作成
され管理される。まずサーバが始動すると、サーバ管理
スレッドが作成される。好ましいオブジェクト指向の実
施例では、これは、以下に記載するクライアント・ポー
ト・プールとネットワーク・サーバ・スレッド・プール
を管理するためのメソッドを含むTNetworkServerクラス
・オブジェクトをインスタンス化することによって行わ
れる。サーバ管理スレッドは、スレッド・プールでのサ
ーバ・スレッドの作成または削除を調整することによ
り、サーバ・スレッド・プールの管理を担当する。サー
バ管理スレッドは通常、休眠状態である。これは、要求
信号とタイマによって定期的に起こされる。
[0120] 1. Server Execution Unit Management Server threads are created and managed in the server thread pool. First, when the server starts, a server management thread is created. In the preferred object-oriented embodiment, this is done by instantiating a TNetworkServer class object that contains the methods for managing the client port pool and network server thread pool described below. The server management thread is responsible for managing the server thread pool by coordinating the creation or deletion of server threads in the thread pool. The server management thread is normally dormant. This is triggered periodically by a request signal and a timer.

【0121】すべてのクライアント要求サービスは、最
初にサーバとのセッションを確立しなければならない。
セッション要求は、session_portという単一のサーバ通
信端点に送られる。サーバとの通信セッションが確立し
た後、各クライアントにはclient_portという固有の通
信端点が割り当てられる。好ましい実施例では、TAcces
sDefinitionオブジェクトとサーバ側で割り当てられた
各client_portとの間に1対1の対応が存在する。
All client request services must first establish a session with the server.
Session requests are sent to a single server communication endpoint called session_port. After establishing a communication session with the server, each client is assigned a unique communication endpoint called client_port. In the preferred embodiment, TAcces
There is a one-to-one correspondence between the sDefinition object and each client_port assigned on the server side.

【0122】クライアントとサーバは、RPC機構を使
用して互いにやりとりすることができる。遠隔プロシー
ジャ呼出し(RPC)機構は、後述するように必要な要
求経路指定と進入制御を行う。RPC機構は、基礎とな
るオペレーティング・システムの内部プロセス通信の内
部プロシージャ呼出し(IPC)サービスの上に構築す
ることができる。サーバ・タスクの位置の特定に加え、
基本RPCプリミティブは以下の通りである。
The client and server can interact with each other using the RPC mechanism. The remote procedure call (RPC) mechanism provides the required request routing and ingress control as described below. The RPC mechanism can be built on top of internal procedure call (IPC) services of the underlying operating system's internal process communication. In addition to locating server tasks,
The basic RPC primitives are:

【0123】クライアント側 ○ SendRequest (server_port(セッションまたはクラ
イアント), request_data, reply_data) サーバ側 ○ ReceiveRequest (request_data) ○ SendReply (reply_data)
Client side ○ SendRequest (server_port (session or client), request_data, reply_data) Server side ○ ReceiveRequest (request_data) ○ SendReply (reply_data)

【0124】すべてのクライアントのclient_portはcli
ent_portプールに収集される。その割当てclient_port
を使用して、クライアントはサーバにネットワーク要求
を出すことができる。サーバは、client_portプールか
らの要求を管理し、スレッド・プール内のスレッドを任
意の数のclient_portプールから受け取ったサービス要
求に割り当てる。図14は、オブジェクト指向ネットワ
ークの第1の実施例でのclient_portプールとスレッド
・プールの制御及び管理の流れを示しているが、クライ
アントおよびサーバ・アプリケーション・オブジェクト
は対称マルチプロセッサ(SMP)などのマルチプロセ
ッサ構成の各種プロセッサに割り振られたメモリ内に常
駐し、両者はオブジェクト指向RPCインタフェースを
介してやりとりする。
The client_port for all clients is cli
Collected in the ent_port pool. Its assigned client_port
Using, the client can make a network request to the server. The server manages requests from the client_port pool and assigns threads in the thread pool to service requests received from any number of client_port pools. FIG. 14 shows the control and management flow of the client_port pool and the thread pool in the first embodiment of the object oriented network, but the client and server application objects are multi-processors such as symmetric multi-processor (SMP). It resides in the memory allocated to the various processors of the processor configuration, and both communicate via the object-oriented RPC interface.

【0125】複数のクライアント・マシン500は、ネ
ットワーク505によりサーバ・マシン503に連絡す
る。それぞれのクライアント・マシン500は、それぞ
れがクライアント要求を行うことができる複数のクライ
アント・アプリケーション・オブジェクト507を常駐
させておくことができる。図示の通り、クライアント・
オブジェクト507は、RPC/API層509の適切
なRPC/APIオブジェクトに自分の要求を送り、そ
の層は異なるアドレス空間で動作するIPCオブジェク
ト511を使用してサーバへの接続を行う。プロトコル
・スタックは、ネットワーク505への通信経路を確立
する。この実施例によれば、クライアント・マシンまた
はクライアント・タスクが要求されたサーバでその許容
量の通信スレッドを超えているかどうかを判定するため
に、以下に詳述するスレッド・カウント・オブジェクト
がプロトコル・スタックに追加されている。超えていな
い場合、通信経路は作成されず、クライアント・プロセ
スは使用可能なスレッドを待つように指示されるか、ま
たはプロトコル・スタックが単にクライアント・プロセ
スへのサービスを拒否することになる。同図にはサーバ
が1つだけ示されているが、スレッド・カウント・オブ
ジェクトは、ネットワーク内の複数のサーバ・マシンで
クライアント口座を追跡することができる。
The plurality of client machines 500 contact the server machine 503 via the network 505. Each client machine 500 may have a plurality of client application objects 507 resident, each capable of making client requests. As shown, the client
The object 507 sends its request to the appropriate RPC / API object in the RPC / API layer 509, which layer uses the IPC object 511 running in a different address space to connect to the server. The protocol stack establishes a communication path to the network 505. According to this embodiment, a thread count object, detailed below, is used to determine whether a client machine or client task has exceeded its capacity of communication threads at the requested server. It has been added to the stack. If not, then no communication path is created and the client process is instructed to wait for an available thread, or the protocol stack will simply deny service to the client process. Although only one server is shown in the figure, the thread count object can track client accounts on multiple server machines in the network.

【0126】サーバへの通信経路が確立されると想定し
て、プロトコル・スタック513は、サーバ側の通信端
点であるセッション・ポートを割り当てるセッション・
ポート・オブジェクト519に送るクライアント要求を
受信する。クライアント要求には、クライアント・プー
ル・オブジェクト521からクライアント・ポートが割
り当てられる。クライアント・ポートは、サーバ側のス
レッド・プール522に使用可能な十分なスレッドがあ
る場合にクライアント・プロトコル・スタックに返され
るクライアント通信端点である。セッション・ポート割
振りと、クライアント・ポート・プールと、スレッド・
プールとを管理する1組のネットワーク・プロトコル・
サーバ・オブジェクトについては、以下に詳述する。ス
レッドと、クライアント・ポートと、セッション・ポー
トが割り振られると、サーバ・セットのRPC/API
オブジェクト515と、上方向のサーバ・サービス51
7への通信を続行することができる。
Assuming that a communication path to the server is established, the protocol stack 513 assigns a session port which is a communication end point on the server side.
Receive a client request to send to port object 519. The client port is assigned to the client request from the client pool object 521. The client port is the client communication endpoint returned to the client protocol stack when there are enough threads available in the server side thread pool 522. Session port allocation, client port pool, thread
A set of network protocols that manage pools and
The server object is described in detail below. Once threads, client ports, and session ports are allocated, the server set's RPC / API
Object 515 and upward server service 51
Communication to 7 can continue.

【0127】動的実行ユニット管理は、手続きベースの
システムでも実行することができる。また、図15に示
すように、この機構は、メモリがクライアント空間53
1とサーバ空間533に分割される単一プロセッサ・マ
シンや、複数のクライアント・タスク535、537、
539がサーバ・タスク540と同じマシンで動作する
環境に応用することもできる。クライアント・タスク
は、その要求をクライアント側のRPCライブラリ・イ
ンタフェース541を介してサーバ・タスクに送る。要
求はまず、サーバ側のRPCライブラリ543によって
サーバ側で処理される。次に、セッション・ポート・プ
ロセス545によってセッション・ポートが割り振ら
れ、クライアント・ポート・プール547からクライア
ント・ポートが割り振られる。プロトコル・スタック5
51がネットワーク553へのクライアント要求を処理
できるように、スレッド・プール549からスレッドが
割り当てられる。
Dynamic execution unit management can also be implemented in procedure-based systems. Further, as shown in FIG. 15, in this mechanism, the memory has a client space 53.
1 and a single processor machine divided into a server space 533, a plurality of client tasks 535, 537,
It can also be applied to an environment in which 539 operates on the same machine as the server task 540. The client task sends the request to the server task via the RPC library interface 541 on the client side. The request is first processed on the server side by the RPC library 543 on the server side. The session port process 545 then allocates the session port and allocates the client port from the client port pool 547. Protocol stack 5
Threads are allocated from thread pool 549 so that 51 can handle client requests to network 553.

【0128】プール内のスレッドの数は、複数のシステ
ム構成変数によって制御される。これらの変数の修正
は、ユーザ構成プログラムを使ってシステム管理者が行
うことができる。
The number of threads in the pool is controlled by a number of system configuration variables. Modification of these variables can be done by the system administrator using the user configuration program.

【0129】○(MinThreads)−これは、クライアント
要求に対応するために予約されたスレッドの最小数であ
る。この限界は、典型的なサーバ・ロードのクライアン
トをサポートするために使用するスレッドの最小数を維
持するためのものである。
O (MinThreads) -This is the minimum number of threads reserved to service client requests. This limit is to maintain the minimum number of threads used to support a typical server-loaded client.

【0130】○(MaxThreads)−これは、クライアント
要求に対応するために予約されたスレッドの最大数であ
る。この限界は、サーバ・システムの過負荷にならずに
ピーク・ロードのクライアントの対応専用となるスレッ
ド資源に関する上限として使用するものである。
O (MaxThreads) -This is the maximum number of threads reserved to service client requests. This limit is used as an upper limit on thread resources dedicated to serving peak load clients without overloading the server system.

【0131】○(MaxReq)−これは、所与のクライアン
トに割り振られる同時要求の最大数である。
O (MaxReq) -This is the maximum number of concurrent requests allocated to a given client.

【0132】○(TotalThreads)−これは、すべてのク
ライアント要求に対応するために作成されたスレッドの
総数である。この値は、必ずMinThreadsとMaxThreadsと
の間になる。
O (TotalThreads) -This is the total number of threads created to service all client requests. This value will always be between MinThreads and MaxThreads.

【0133】○(ReservedThreads)−これは、すべて
のクライアント・セッションをサポートするために予約
されたスレッドの総数である。
O (ReservedThreads) -This is the total number of threads reserved to support all client sessions.

【0134】○(Unusedthreads)−これは、プール内
の未使用スレッドの数である。
O (Unusedthreads) -This is the number of unused threads in the pool.

【0135】○(Clientthreads)−これは、各クライ
アントごとに、サーバが対応する活動要求の数である。
O (Clientthreads) -This is the number of activity requests the server serves for each client.

【0136】プール内のスレッドの数は、同時に処理さ
れる活動クライアント要求の数に基づいて、動的に増加
または減少する。
The number of threads in the pool will increase or decrease dynamically based on the number of active client requests being serviced at the same time.

【0137】スレッドの数を管理するために使用するプ
ロセス、すなわち、オブジェクト指向実施例のメソッド
については、図16〜19を参照して以下に詳述する。
The process used to manage the number of threads, ie the method of the object oriented embodiment, is described in detail below with reference to FIGS.

【0138】図16を参照すると、ステップ575のサ
ーバ初期設定では、<MinThreads>個のスレッドが作成
され、スレッド・プールに挿入される。また、このステ
ップでは、(UnusedThreads)と(TotalThreads)が(M
inThreads)に設定され、(ReservedThreads)が0に設
定される。ステップ577では、新しいクライアントが
サーバとのセッションを要求する。サーバ側では、クラ
イアント要求を受信後に、(ReservedThreads)+(Max
Req)<=(MinThreads)であるかどうかを判定するた
めにステップ579でテストが行われる。この結果が真
であれば、既存のクライアントと新しいクライアントを
サポートするために十分なスレッドが存在するので、ス
レッド・プールを調整するためのアクションは一切行わ
れない。
Referring to FIG. 16, at server initialization in step 575, <MinThreads> threads are created and inserted into the thread pool. In this step, (UnusedThreads) and (TotalThreads) are (M
inThreads) and (ReservedThreads) is set to 0. In step 577, the new client requests a session with the server. On the server side, after receiving the client request, (ReservedThreads) + (Max
A test is performed at step 579 to determine if Req) <= (MinThreads). If this result is true, then there are enough threads to support existing and new clients and no action is taken to tune the thread pool.

【0139】ステップ581では、サーバがクライアン
ト・タスクにclient_portを割り当てて返す。ステップ
583では、(ReservedThreads)が(MaxReq)だけ増
分され、新しいクライアントがセッションを要求するま
で待つためにステップ577に戻る。
In step 581, the server assigns client_port to the client task and returns. In step 583, (ReservedThreads) is incremented by (MaxReq) and the process returns to step 577 to wait until the new client requests a session.

【0140】ステップ579のテストが否定の場合、ク
ライアント要求が許可された場合に最大数のスレッドを
超えるかどうかを判定するためにステップ585でテス
トが行われる。(MinThreads)<(ReservedThreads)
+(MaxReq)<(MaxThreads)かどうかのテストが行わ
れる。この結果が真であれば、スレッド限界を超えてお
らず、プロセスはステップ581に移行し、クライアン
ト・タスクにクライアント・ポートを割り当てて返す。
ステップ583では、(ReservedThreads)が(MaxRe
q)だけ増分される。後述するように、この図のプロセ
スはこの分岐と上記の分岐の場合に同じように見える
が、管理スレッドは、新しいカウント(ReservedThread
s)に基づいて次に起こされたときにスレッド・プール
内のスレッドを非同期に増加する。
If the test at step 579 is negative, then a test is made at step 585 to determine if the maximum number of threads is exceeded if the client request is granted. (MinThreads) <(ReservedThreads)
+ (MaxReq) <(MaxThreads) is tested. If the result is true, then the thread limit has not been exceeded and the process moves to step 581 to allocate and return the client port for the client task.
At step 583, (ReservedThreads) becomes (MaxRe
q) is incremented. As we will see later, the process in this figure looks the same for this branch and the one above, but the managing thread has a new count (ReservedThread).
Asynchronously increments the thread in the thread pool the next time it is awakened based on s).

【0141】ステップ585のテストが肯定の場合、す
なわち、(ReservedThreads)+(MaxReq)>(MaxThre
ads)である場合、ステップ587でクライアント要求
が拒否される。したがって、サーバは、過負荷の状況を
回避するためにクライアント・セッション進入制御を管
理する。ステップ589では、スレッドが他のクライア
ント・タスクから解放されるまで、サーバは待ち状態に
入り、おそらくクライアントに待ち状態を通知するはず
である。あるいは、サーバは、クライアント要求を拒否
し、後でクライアントがもう一度試行できるようにする
だけである。
If the test in step 585 is positive, that is, (ReservedThreads) + (MaxReq)> (MaxThre
ad), the client request is rejected in step 587. Therefore, the server manages client session entry control to avoid overload situations. In step 589, the server should enter a wait state and probably notify the client until the thread is released from other client tasks. Alternatively, the server simply rejects the client request and allows the client to try again later.

【0142】以下の擬似コードは、このプロセスの実現
例を示している。
The following pseudo code shows an implementation of this process.

【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 requestNew 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では、現行クライアント・スレッドの数が増分さ
れる。
FIG. 17 shows the client side process for managing the client request ingress control. In step 601, the client task makes a new network request using the client port assigned to the server. In step 603, a test is performed to determine if the client task has available threads out of the allowed number of threads on the server side. To determine this, a test for (ClientThreads) <(MaxReq) can be used. If yes, step 6
At 07, the client request is sent to the server. At step 609, the number of current client threads is incremented.

【0145】サーバ側の許容数のスレッドのすべてが使
用中である場合、ステップ605でネットワーク要求が
拒否されるか、またはこのクライアントからの同時要求
の数が(MaxReq)より少なくなるまで待機状態に入る。
待機状態になっているときに、許容スレッドの1つが解
放された場合、プロセスはステップ605からステップ
607に進むことができる。
If all of the allowable number of threads on the server side are in use, then in step 605 the network request is rejected or waited until the number of simultaneous requests from this client is less than (MaxReq). enter.
When in the wait state, if one of the allowed threads is released, the process can proceed from step 605 to step 607.

【0146】図17には、クライアント要求に対応する
ためにスレッド・プール内のサーバ・スレッドを割り当
て、プール内のスレッドの数を調整するためのサーバ側
のプロセスも示されている。ステップ611では、クラ
イアント要求の処理に必要な期間中、サーバ・スレッド
がクライアント要求に割り当てられる。ステップ613
では、(UnusedThreads)変数が減分される。ステップ
615では、スレッド・プール内のスレッドの数が許容
できるかどうかを判定するためにテストが行われる。
((UnusedThreads)<(MinThreads)&(TotalThread
s)<(MaxThreads))かどうかのテストは、このステ
ップを実行するためのテストの1つである。スレッド・
プール内の使用可能なスレッドの数が許容できない場合
には、スレッド・プール内のスレッドの数を増加するよ
うに管理スレッドに通知される。プロセスはステップ6
19で終了する。
Also shown in FIG. 17 is a server-side process for allocating server threads in a thread pool and adjusting the number of threads in the pool to service client requests. At step 611, a server thread is assigned to the client request for the duration required to process the client request. Step 613
Now, the (UnusedThreads) variable is decremented. At step 615, a test is performed to determine if the number of threads in the thread pool is acceptable.
((UnusedThreads) <(MinThreads) & (TotalThreads
s) <(MaxThreads)) is one of the tests for performing this step. thread·
If the number of available threads in the pool is unacceptable, the administration thread is notified to increase the number of threads in the thread pool. The process is step 6
It ends at 19.

【0147】以下の擬似コードは、このプロセスの実現
例を示している。
The following pseudo code shows an implementation of this process.

【0148】 Client issues network request to the server If (ClientThreads) < (MaxReq), Send the request to the server. Increment (ClientThreads) else Reject the network requestClient 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 poolAssign 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)変数が増分さ
れる。
FIG. 18 illustrates the process followed by the client and server when the server completes the client network request. On the server side, in step 625, the server has completed any processing required for the client request. Step 62
At 7, the response to the client request is sent through the protocol stack. Next, in step 629, the server thread is returned to the thread pool. next,
In step 631, the (UnusedThreads) variable is incremented.

【0151】クライアント側では、ステップ635でプ
ロトコル・スタックがサーバからの応答を受け取る。ス
テップ637では、他のクライアント・タスクが通信ス
レッドのクライアント割振り分を使用できるようにする
ために、(ClientThreads)変数が減分される。ステッ
プ639では、(ClientThread)が(MaxReq)限界を上
回っているためにサーバに要求を送るために待機してい
る同じクライアントから任意のスレッドを起こすための
信号が出される。ステップ641では、プロセスが図1
7のステップ607に移行する。
On the client side, in step 635 the protocol stack receives the response from the server. In step 637, the (ClientThreads) variable is decremented to allow other client tasks to use the client allocation of the communication thread. In step 639, the same client waiting to send a request to the server because (ClientThread) is above the (MaxReq) limit is signaled to wake up any thread. In step 641, the process is shown in FIG.
7 to step 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の休眠状態に戻る。
A server management thread process is shown in FIG. The server management thread is
Raised by a timer or signal for thread allocation when the number of unused threads in the pool falls below some reasonably low limit. In step 653, a test is made to determine if more threads need to be added. One suitable test is ((Unused
Threads) <(MinThreads) & (TotalThreads) <(Max
Threads)) or not. If not, then in step 654 the management thread returns to the dormant state. If so, in step 655 ((UnusedThreads)-(Min
Threads)) Communication threads are added to the thread pool according to the formula of adding threads to the pool. At step 657, (UnusedThreads) becomes (MinTh
read)). However, Unuse
Only when dThreads drops below the (MinThreads) limit,
Note that threads will be added immediately. Otherwise, the thread will be delayed until the next timer interval. In step 659, the (TotalThreads) variable is incremented by the number of threads added. The management thread returns to the sleep state in step 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の休眠状態に戻る。
FIG. 19 also shows a server management thread method for reducing the number of unused threads in the communication thread pool to improve performance. In step 661, a thread is awakened by a timer that periodically awakens the thread for allocation or deallocation of communication threads. In step 663, a test to determine if there are too many threads in the thread pool, for example, ((ReservedThreads) <
((MinThreads)) &((UnusedThread)> (MinThreads
s)) or not. Otherwise, in step 664 the thread sleeps until the next interval. If so, then in step 665 the number of threads in the pool is reduced by one. In step 667, (TotalThr
eads) is decremented by 1. If no activity occurs during a given period, the (TotalThreads) variable will eventually revert to (MinThread). In step 669, the test determines if there are too few unused threads in the thread pool. (ReservedThreads)>
(TotalThreads) & ((ReservedThreads) <(MaxThre
You can use the expression whether or not ads)). If so, ((ReservedThreads)-(TotalThreads
s)) is added, the thread is added to the thread pool. In step 673, (TotalT
hreads) variable is set to (ReservedThreads). The management thread returns to the sleep state in step 674.

【0154】本発明の利点としては、セッションおよび
通常クライアント要求の進入制御がある。さらに、クラ
イアント要求に対応するためのスレッド資源がクライア
ント・タスクに認められた限界まで必ず保証されてい
る。したがって、サーバ・スレッド資源を待ってクライ
アントをいつまでも停止させておくことはない。
Advantages of the present invention include ingress control of session and normal client requests. In addition, thread resources to service client requests are guaranteed to the client task's permitted limit. Therefore, it never waits for server thread resources to keep the client stalled.

【0155】すべてのクライアント間で共用可能な事前
割振りスレッドの場合、クライアント要求に対応するス
レッド実行経路でスレッドの作成または削除が行われな
いので、サーバのパフォーマンスによってクライアント
要求への応答時間が改善される。非活動の期間中に割振
り済みスレッドの数を(MinThreads)まで定期的にプル
ーニング・バックすることによって、オーバコミット・
スレッド資源が最小限になる。プール内のサーバ・スレ
ッドの総数は、構成値(MaxThreads)まで拡大すること
ができる。非活動スレッドは最小限に維持されるので、
これによりシステム・オーバヘッドが低減される。
In the case of the pre-allocation thread that can be shared among all clients, the threads are not created or deleted in the thread execution path corresponding to the client request, so the response time to the client request is improved by the performance of the server. It Over-committing is achieved by periodically pruning back the number of allocated threads to (MinThreads) during periods of inactivity.
Minimize thread resources. The total number of server threads in the pool can grow up to the configured value (MaxThreads). Inactive threads are kept to a minimum, so
This reduces system overhead.

【0156】(MaxThreads)と(MinThreads)は構成限
界であり、システム管理者がアクセスできるようにする
ことができるので、本発明によって動的スレッド資源調
整が達成される。これらは、手作業で構成して、導入シ
ステムに最適な最小値に調整することによって調整する
ことができる。あるいは、クライアントと同時クライア
ント要求の数について、1日の様々な時間に統計をとり
続け、これらの統計に基づいて自動的に(MinThreads)
と(MaxThreads)の値を計算し調整することもできる。
Since (MaxThreads) and (MinThreads) are configuration limits and can be made accessible to the system administrator, the present invention achieves dynamic thread resource adjustment. These can be adjusted by manually configuring and adjusting to the minimum value that is optimal for the installation system. Alternatively, keep track of the number of clients and concurrent client requests at various times of the day and automatically (MinThreads) based on these statistics.
You can also calculate and adjust the values for and (MaxThreads).

【0157】マルチスレッド化クライアント/サーバ・
システムではスレッド・プールの概念が一般に使用され
てきたが、クライアントの数とクライアントの使用法に
基づく通信スレッド・プールの動的調整はこれまで行わ
れていない。本発明は、長期または短期で動作するクラ
イアント要求に対応するために同様に適用可能である。
さらに、ユーザ・レベルで動作するネットワーク・プロ
トコル・サーバを実現するためのスレッド・プールの使
い方は、先行技術では実施されていない。
Multi-threaded client / server
Although the concept of thread pools has been commonly used in the system, no dynamic adjustment of the communication thread pool based on the number of clients and client usage has been done so far. The present invention is equally applicable to serving long-term or short-term client requests.
Moreover, the use of thread pools to implement network protocol servers operating at the user level has not been implemented in the prior art.

【0158】本発明は、サーバがマルチタスキング化さ
れ、多数のクライアントを効率よくサポートしなければ
ならない、いかなるクライアント/サーバ・システムで
も実施することができる。この解決策は、IBMメイン
フレームMVSや多くのUNIXベースのシステムな
ど、軽量の実行ユニットを持たないシステムには特に有
用である。
The present invention can be implemented in any client / server system where the server is multitasking and must efficiently support a large number of clients. This solution is particularly useful for systems that do not have a lightweight execution unit, such as the IBM mainframe MVS and many UNIX based systems.

【0159】前述のように、上記のアルゴリズムを使用
するネットワーク・プロトコル・サーバは、1組のネッ
トワーク・サーバ・クラスを定義することによって、オ
ブジェクト指向技術を使用して実現することができる。
このようなクラスの定義例を以下に示す。
As mentioned above, a network protocol server using the above algorithm can be implemented using object oriented techniques by defining a set of network server classes.
An example of the definition of such a class is shown below.

【0160】 クラスTNetworkServer:公用TNetworkThreadHandle { 公用: TNetworkServer−クラス・コンストラクタ 〜TNetworkServer−クラス・デストラクタ AddClientPort−クライアント・ポート・プールにポートを追加する RemoveClientPort−クライアント・ポート・プールからポートを除去す る AddServerThread−ThreadPoolにスレッドを追加する DeleteServerThread−ThreadPoolからスレッドを削除する ExecuteMgmtThread−管理スレッド入口 ExecuteThread−NetworkThread入口点 私用: RegisterNames−クライアントにとって使用可能になるべきサーバ名を 公表するClass TNetworkServer: Public TNetworkThreadHandle {Public: TNetworkServer-class constructor-TNetworkServer-class destructor AddClientPort-add port to client port pool RemoveClientPort-remove port from client port pool AddServerThread-ThreadPool Add a thread to DeleteServerThread-Delete a thread from ThreadPool ExecuteMgmtThread-Manage thread entry ExecuteThread-NetworkThread entry point Private: RegisterNames-Publish server names that should be made available to clients

【0161】 ネットワーク・サーバ実行用に使用するネットワーク・スレッド・クラス クラスTNetworkThreadHandle: { 公用: TNetworkThreadHandle−クラス・コンストラクタ TNetworkThreadHandle−クラス・デストラクタ Fork−クラス関数を実行する新しいスレッドを開始する Join−スレッドが完了するまで待つ Release−スレッドがそのオブジェクトを削除できることを示すNetwork thread class used for network server execution class TNetworkThreadHandle: {Public: TNetworkThreadHandle-class constructor TNetworkThreadHandle-class destructor Fork-join to start a new thread to execute a class function-thread completes Wait until Release-indicates that the thread can delete the object

【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); };RPC class for network client / server communication class TNWRPCMessage {Public: virtual TNWRPCMessage (); virtual ~ TNWRPCMessage (); / * Client side method: 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); / * server-side method: 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 virtual kern_return_t SendReply (const port_t & clientport, void * buffer, int &buflen);};

【0163】クライアント/サーバ環境でのネットワー
ク要求の表現 ここでは、クライアント/サーバ・モデル用のネットワ
ーク・プロトコル要求のオブジェクト指向表現を示す。
プロトコルAPIがオブジェクト指向で、プロトコル・
インプリメンテーションもオブジェクト指向の場合に
は、プロトコル要求のオブジェクト指向表現は重要なも
のになる。ネットワーク・プロトコルにアクセスするた
めのオブジェクト・ベースのクライアント要求がサーバ
に送られ、このサーバがこれらの要求を適切なネットワ
ーク・プロトコル層オブジェクトに送達する。本発明
は、クライアント・ネットワーク要求を転送し、その要
求をサーバ上に常駐する適切なネットワーク・プロトコ
ル層に送達し、要求の結果をクライアント・アプリケー
ションに取り出すための新しい方式を提示する。クライ
アント要求は「ネットワーク操作」オブジェクトで折り
返されるが、そのオブジェクトはサーバがネットワーク
・プロトコル層オブジェクトに要求を提示できるように
必要な情報をすべて含んでいる。
Network in client / server environment
Request Representation Here we present an object-oriented representation of network protocol requests for a client / server model.
The protocol API is object-oriented,
When the implementation is also object-oriented, the object-oriented representation of protocol requirements becomes important. Object-based client requests to access network protocols are sent to the server, which delivers those requests to the appropriate network protocol layer objects. The present invention presents a new scheme for forwarding a client network request, delivering the request to the appropriate network protocol layer residing on the server, and retrieving the result of the request to the client application. The client request is wrapped in a "network operation" object, which contains all the information the server needs to be able to submit the request to a network protocol layer object.

【0164】以下のシナリオを検討されたい。クライア
ントAPIは1組のオブジェクト指向ネットワーク・プ
ロトコル・インタフェース要求を含み、プロトコルはオ
ブジェクトのスタックとして実現され、それぞれのオブ
ジェクトは特定のOSI層を表している。ネットワーク
・プロトコル・スタックは、ネットワーク・サーバ上に
常駐する様々なネットワーク・プロトコルを提供し、ク
ライアントとサーバとの間でやりとりするためにRPC
またはIPCなどの通信機構が存在する。クライアント
が何らかのデータの送信のようなネットワーク活動を要
求した場合、サーバ上の適切なネットワーク・プロトコ
ル・スタックにその要求を伝送する必要がある。本発明
は、このようなクライアント要求をサーバに転送するた
めの統一方式を提示する。この方式は多様性を利用して
いるので、このような要求を発送し、それをサーバで処
理するプロセスは、どの要求およびプロトコル・スタッ
クについても変わらない。
Consider the following scenario. The client API contains a set of object oriented network protocol interface requests, where the protocol is implemented as a stack of objects, each object representing a particular OSI layer. The network protocol stack provides various network protocols that reside on the network server and RPC to interact with the client and server.
Alternatively, there is a communication mechanism such as IPC. When a client requests network activity, such as sending some data, the request needs to be forwarded to the appropriate network protocol stack on the server. The present invention presents a unified scheme for forwarding such client requests to the server. Because this scheme utilizes versatility, the process of dispatching such requests and processing them at the server remains the same for any request and protocol stack.

【0165】ネットワーク・プロトコルにアクセスする
ためのクライアント・インタフェースは、主にTProtoco
lInterfaceクラスによる。このプロトコル・インプリメ
ンテーションは、TProtocolLayerクラスに基づいてそれ
ぞれのOSI層を表している。このネットワーク・サブ
システムは、TCP/IPやSNAなどの各プロトコル
用のTFamilyLayerオブジェクトと、TDataLinkLayerオブ
ジェクトから構成され、どちらのオブジェクトもシステ
ム内に常駐している。セッション層、トランスポート
層、ネットワーク層を表すためのTProtocolLayerオブジ
ェクトのスタックはすべてのクライアント端点ごとに作
成され、クライアント通信端点はTAccessDefinitionオ
ブジェクトによって記述される。このような概念、関連
クラス、その機能については、いずれも上記のプロトコ
ル・インタフェース・モデルの項で説明する。
The client interface for accessing the network protocol is mainly TProtoco.
Depending on the lInterface class. This protocol implementation represents each OSI layer based on the TProtocolLayer class. This network subsystem consists of TFamilyLayer objects for each protocol such as TCP / IP and SNA, and TDataLinkLayer objects, both objects resident in the system. A stack of TProtocolLayer objects to represent the session layer, transport layer, and network layer is created for every client endpoint, and the client communication endpoint is described by the TAccessDefinition object. All of these concepts, related classes, and their functionality are described in the Protocol Interface Model section above.

【0166】1.ネットワーク操作オブジェクト クライアントからサーバへのネットワーク要求とその逆
のネットワーク要求は、いずれもTNetworkOperationオ
ブジェクトを使用して転送される。TNetworkOperation
オブジェクトは、サーバ内のプロトコル層にクライアン
ト・ネットワーク要求を伝送し、その結果をサーバから
クライアントにリレーするための機構を提供する。
1. Network Operation Object All network requests from the client to the server and vice versa are forwarded using the TNetworkOperation object. TNetworkOperation
The object provides a mechanism for carrying client network requests to the protocol layer within the server and relaying the results from the server to the client.

【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つの操作クラス
にバンドルされている。
The TNetworkOperation class is the base class for all requests. TNetworkProtocol for each request that the client interface makes to the server
A subclass is derived from. For each of the TProtocolInterface methods, a corresponding "operation object" class is defined. Figure 20 shows a class hierarchy of class objects for some client requests. TNetworkOperation class 70
1 is at the top of the hierarchy. TConnectOp class 703
, TSendOp class 705 and TReceiveOp class 707
And TDisconnectOp class 709 and TBindOp class 71
All 3 are derived from the base class, TProto
colInterface class connection operation, send operation, receive operation,
Corresponds to disconnection operation and bind operation. GetPeerN
Get and set requests such as ame and GetLocalName are T
It is bundled in one operation class called GetSetNetworkOp class 711.

【0168】TNetworkOperationオブジェクトは、ネッ
トワーク・サーバでの対応を必要とする要求を満足する
ためにTProtocolInterfaceによって作成される。TNetwo
rkOperationから派生したクラスは、インタフェースか
らの特定の要求を表す。TNetworkOperationオブジェク
トは、要求が適切なプロトコル層に伝送されるように、
RPC/IPC機構を使用してネットワーク・サーバに
送られる。ネットワーク・サーバがNetworkOperationオ
ブジェクトを受け取ると、それは操作オブジェクト上で
Execute()メソッドを呼び出し、次に適切なプロトコル
・インプリメンテーション層オブジェクト上で対応する
関数を呼び出す。
A TNetworkOperation object is created by TProtocolInterface to satisfy a request that needs to be addressed at the network server. TNetwo
Classes derived from rkOperation represent a particular request from an interface. The TNetworkOperation object is responsible for ensuring that the request is delivered to the appropriate protocol layer.
It is sent to the network server using the RPC / IPC mechanism. When the network server receives the NetworkOperation object, it will
Call the Execute () method and then the corresponding function on the appropriate protocol implementation layer object.

【0169】したがって、TNetworkOperationオブジェ
クトは、それに対して要求したタスクを実行するために
「組込み知能」を備えている。ネットワーク・サーバ
は、TNetworkOperationオブジェクトを受け取ると、そ
のオブジェクト内のExecute()メソッドを呼び出す。ク
ライアント要求の特徴とは無関係に、サーバ機能は同じ
である。各クライアント要求用のExecute()メソッド
は、クライアント要求を適切なプロトコル層オブジェク
トに伝送するために必要な情報をすべて含んでいる。
Thus, the TNetworkOperation object has "built-in intelligence" to perform the tasks requested of it. When the network server receives the TNetworkOperation object, it calls the Execute () method in that object. The server functionality is the same regardless of the characteristics of the client request. The Execute () method for each client request contains all the information needed to transfer the client request to the appropriate protocol layer object.

【0170】TNetworkOperationオブジェクトは、TProt
ocolInterfaceの具象クラスでも作成することができ
る。たとえば、TBindOpのデフォルト・クラスがTCP
/IPの要求を満足しない場合、TCP/IPインタフ
ェースは、TTCPBindOpクラスを作成するようにTBindOp
を指定変更する。その後、クライアントがバインド要求
を行うと、具象TCP/IPクライアントAPIを表す
TTCPINFクラスはTTCPBindOpオブジェクトを作成する。
特定のクライアント要求の意味を再定義するか、または
新しい要求とその操作オブジェクトを追加することをTN
etworkOperationクラスから継承できる能力により、こ
の方式は極めて柔軟かつ強力なものになる。
TNetworkOperation object is TProt
You can also create a concrete class of ocolInterface. For example, the default class for TBindOp is TCP
If the TCP / IP interface does not satisfy the TIP / IP request, the TCP / IP interface creates a TTCPBindOp class, TBindOp.
Override. After that, when the client makes a bind request, it represents a concrete TCP / IP client API.
The TTCPINF class creates a TTCPBindOp object.
TN to redefine the meaning of a particular client request or to add a new request and its operation object.
The ability to inherit from the etworkOperation class makes this scheme extremely flexible and powerful.

【0171】図21は、特定のクライアント要求を満た
すために作成されるクラス・オブジェクトのクラス階層
を示している。同図のTTCPBindOpオブジェクト715
は、クライアント・アプリケーションからのバインド要
求に対応するTTCPTINF::Bind()メソッドによって作成さ
れる。これにより、TProtocolInterface::Bind()メソッ
ドが指定変更される。TTCPNew1Op717とTTCPNew2Op7
19は、いくつかのクライアント要求の場合にTCP/
IPに固有の2つの新しい操作オブジェクトの例であ
る。
FIG. 21 illustrates the class hierarchy of class objects created to satisfy a particular client request. TTCPBindOp object 715 of the same figure
Is created by the TTCPTINF :: Bind () method in response to a bind request from a client application. This overrides the TProtocolInterface :: Bind () method. TTCPNew1Op717 and TTCPNew2Op7
19 is TCP / for some client requests.
2 is an example of two new IP-specific operation objects.

【0172】2.TNetworkOperationの関数 TNetworkOperationクラスが提供する重要な関数の一部
を以下に示す。
[0172] 2. Functions of TNetworkOperation Following are some of the important functions provided by the TNetworkOperation class.

【0173】Classコンストラクタ: この関数は、ク
ライアント・アプリケーションによる要求の対象となる
プロトコル層インデックスを設定するものである。
Class Constructor: This function sets the protocol layer index that is the subject of the request by the client application.

【0174】層インデックスは、その要求をプロトコル
・スタックのトランスポート層、ネットワーク層、ファ
ミリー層のいずれに送るべきかを識別するものである。
The layer index identifies whether the request should be sent to the transport layer, network layer or family layer of the protocol stack.

【0175】Execute(): この関数は、TNetworkOpera
tionオブジェクトを受け取ったときにサーバによって呼
び出される。この関数は、操作オブジェクトから層イン
デックスを獲得し、操作オブジェクトから関連パラメー
タを収集し、スタックの適切なTProtocolLayerオブジェ
クトへの呼出しを行うものである。たとえば、TBindO
p::Execute()は、TTCPProtocolAddressオブジェクトをB
ind()関数へのパラメータとしてTProtocolLayer::Bin
d()を呼び出すはずである。
Execute (): This function calls TNetworkOpera
Called by the server when it receives a tion object. This function gets the layer index from the operation object, collects the relevant parameters from the operation object, and makes a call to the appropriate TProtocolLayer object in the stack. For example, TBindO
p :: Execute () returns a TTCPProtocolAddress object in B
TProtocolLayer :: Bin as a parameter to the ind () function
Should call d ().

【0176】Get/SetLayerIndex: この関数は、操作
オブジェクトで層インデックスを返す/設定するもので
ある。
Get / SetLayerIndex: This function returns / sets the layer index in the operation object.

【0177】SetLocationToClient: デフォルトで
は、操作オブジェクトがその位置をサーバに設定する。
操作オブジェクトは、サーバ上にあるか、クライアント
上にあるかによって、挙動が異なってくる。たとえば、
TProtocolLayer::Bind()関数へのパラメータなので、TB
indOpはTNetworkAddressオブジェクトをサーバに送る必
要がある。しかし、サーバはアドレスをクライアントに
戻す必要はない。位置フラグを使用して、パラメータの
受渡しが制御される。ネットワーク操作オブジェクトが
クライアントによって作成されると、そのオブジェクト
は位置をクライアントに設定する。
SetLocationToClient: By default, the operation object sets its location in the server.
The behavior of the operation object differs depending on whether it is on the server or the client. For example,
TB because it is a parameter to the TProtocolLayer :: Bind () function
indOp needs to send a TNetworkAddress object to the server. However, the server does not have to return the address to the client. Position flags are used to control the passing of parameters. When a network operation object is created by a client, it sets the location on the client.

【0178】Stream-out演算子: この関数は、操作オ
ブジェクトを平坦化し、そのオブジェクトのデータ・メ
ンバーをデータ・ストリームに入れるために使用する。
たとえば、TBindOp用のStream-out演算子は、それがク
ライアントからのオブジェクトを送信する場合にTNetwo
rkAddressオブジェクトを平坦化する。TSendOpは、バッ
ファおよび宛先アドレスをサーバに送るためにバッファ
・アドレスとTNetworkAddressオブジェクトを平坦化す
ることができる。次にサーバはSendOp::Execute()を呼
び出し、次にこれがユーザ・データとともにTProtocolL
ayer::Xmit()メソッドを呼び出して、宛先にデータを送
る。送信が完了すると、サーバはRPC/IPC機構を
使用してTSendCompletionオブジェクトをクライアント
に戻す。TSendOp用のStream-out演算子は、それがサー
バであるかどうかを検査し、TSendCompletionオブジェ
クトをストリームアウトする。
Stream-out Operator: This function is used to flatten an operation object and put its data members into the data stream.
For example, the Stream-out operator for TBindOp is TNetwo when it sends an object from a client.
Flattens the rkAddress object. TSendOp can flatten the buffer address and TNetworkAddress object to send the buffer and destination address to the server. The server then calls SendOp :: Execute (), which in turn calls TProtocolL with user data.
Call the ayer :: Xmit () method and send the data to the destination. When the transmission is complete, the server uses the RPC / IPC mechanism to return the TSendCompletion object to the client. The Stream-out operator for TSendOp checks if it is a server and streams out a TSendCompletion object.

【0179】Stream-in演算子: この関数は、オブジ
ェクトが平坦化された場合にデータ・ストリームからオ
ブジェクトを再構築するために使用する。Stream-out演
算子とは逆の操作であることは明らかである。操作オブ
ジェクトは、データ・ストリームにオブジェクトを平坦
化したり、データ・ストリームからオブジェクトを再構
築するために位置フラグを使用する。
Stream-in Operator: This function is used to reconstruct an object from the data stream if the object is flattened. It is clear that the operation is the reverse of the Stream-out operator. Manipulation objects use position flags to flatten the object in the data stream and reconstruct the object from the data stream.

【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を使用して、対応するサーバ・スタック・ヘッド
の位置を特定する。
3. Client-Server Communication For every user-created communication endpoint, there must be a unique ID that must be maintained to associate the endpoint with the stack of protocol layer objects. The protocol layer object represents an endpoint on the server process. However, note that this correspondence is one-to-one. Therefore, TAccessDefinition :: I
TAcces during endpoint creation using the nstantiate () method
An sOp object is created. The TAccessOp object creates a ClientStackHead object that represents the client side of the communication. Then the TAccessOp object is flattened and RPC or IPC by ClientStackHead
Sent to the server using the mechanism. Then the server is TNet
Use the workOperation stream-in operator to reconstruct the TAccessOp object from the data stream, and then use TAcce
Call the ssOp :: Execute () method. This function creates a ServerStackHead object that creates protocol layer objects from the protocol interface objects and holds a list of pointers to these protocol layer objects in the TServerStackHead object. The TServerStackHead pointer is stored in the network server's global table and the index is streamed out to the client. TClientSta
The ckHead object stores the ServerStackHeadID,
Use it for all subsequent operations. Therefore, Se
The rverStackHeadID functions as a unique ID between the client and the server. Subsequent requests such as TBindOp, when received by the server, use the ID passed in TBindOp to locate the corresponding server stack head.

【0181】TClientStackHeadとTServerStackHeadは、
所与の端点についてクライアントとサーバとのやりとり
を管理する。これらのオブジェクトは、クライアント端
点のハンドルであるTAccessDefinitionオブジェクト
と、サーバ上の端点を表すTProtocolLayerオブジェクト
の対応スタックとの間をリンクする。また、ClientStac
kHeadとServerStackHeadの対は、クライアントとサーバ
をリンクする内部管理オブジェクトを構成する。
TClientStackHead and TServerStackHead are
Manages client-server interactions for a given endpoint. These objects link between the TAccessDefinition object, which is the handle of the client endpoint, and the corresponding stack of TProtocolLayer objects that represent the endpoint on the server. Also, ClientStac
The kHead and ServerStackHead pair constitutes an internal management object that links the client and server.

【0182】TClientStackHeadの重要な関数の一部を以
下に示す。
Some of the important functions of TClientStackHead are shown below.

【0183】1.ProcessOperation: この関数は、TC
lientStackHeadがTNetworkOperationオブジェクトを処
理するために、TProtocolInterfaceまたはTAccessDefin
itionオブジェクトによって呼び出される。この関数
は、TNetworkOperationオブジェクトを平坦化し、シス
テムが提供するRPC/IPC機構を使用して、平坦化
した操作オブジェクトをサーバに送る。また、この関数
は、送られた要求に対してサーバが応答したときにNetw
orkOperationオブジェクトも再構築する。基本的にこの
関数は、サーバとの間でNetworkOperationオブジェクト
を送受信するものである。
1. ProcessOperation: This function is TC
lProtocolInterface or TAccessDefin for lientStackHead to handle TNetworkOperation objects
Called by the ition object. This function flattens the TNetworkOperation object and sends the flattened operation object to the server using the RPC / IPC mechanism provided by the system. This function is also called by Netw when the server responds to the request sent.
Also rebuild the orkOperation object. Basically this function sends and receives NetworkOperation objects to and from the server.

【0184】2.SaveServerInfo: このメソッドは、
ServerStackHeadIDをClientStackHeadに保管するために
呼び出されるものである。AccessDefinitionがインスタ
ンス化されると、サーバは端点用に作成されたServerSt
ackHead用のIDとともにTAccessOpオブジェクトを返
す。その後、サーバに対して要求が送られるときは、必
ずNetworkOperationがこのIDを使用する。
2. SaveServerInfo: This method
It is called to store ServerStackHeadID in ClientStackHead. When the AccessDefinition is instantiated, the server will be a ServerSt created for the endpoint.
Returns a TAccessOp object with an ID for ackHead. After that, whenever a request is sent to the server, NetworkOperation uses this ID.

【0185】3.CancelRequests: この関数は、クラ
イアント・アプリケーションによってTProtocolInterfa
ce::CancelRequestsが呼び出されたとき、またはクライ
アント・アプリケーションが異常終了したときに呼び出
されるものである。ClientStackHeadは、必要な終結処
置を行うようServerStackHeadに通知するCancelRequest
sOp操作オブジェクトを作成する。
3. CancelRequests: This function is called by TProtocolInterfa by the client application.
This is called when ce :: CancelRequests is called or when the client application terminates abnormally. ClientStackHead is a CancelRequest that notifies ServerStackHead to take any necessary cleanup.
Create an sOp operation object.

【0186】ServerStackHeadの重要な関数の一部を以
下に示す。
Some of the important functions of ServerStackHead are shown below.

【0187】1.Classコンストラクタ: このコンス
トラクタは、TProtocolInterfaceオブジェクトのスタッ
クを受け取り、対応するTProtocolLayerオブジェクトを
構築する。これは、後続の要求からこれらの層オブジェ
クトを呼び出すためにこれらの層オブジェクトへのポイ
ンタを維持している。
1. Class Constructor: This constructor takes a stack of TProtocolInterface objects and builds a corresponding TProtocolLayer object. It maintains a pointer to these layer objects to call these layer objects from subsequent requests.

【0188】2.ProcessOperation: この関数は、ク
ライアントからNetworkOperationオブジェクトを受け取
ったときにNetworkServerProcessによって呼び出される
ものである。この関数は、適切なProtocolLayerオブジ
ェクトの位置を特定した後、TNetworkOperationオブジ
ェクト上でExecute()メソッドを呼び出す。次にExecute
()メソッドは、ProtocolLayerオブジェクト上で必要な
メソッドを呼び出す。
2. ProcessOperation: This function is called by NetworkServerProcess when it receives a NetworkOperation object from the client. This function calls the Execute () method on the TNetworkOperation object after locating the appropriate ProtocolLayer object. Then Execute
The () method calls the required method on the ProtocolLayer object.

【0189】3.GetProtocolLayer: この関数は、イ
ンデックスが付けられたTProtocolLayerオブジェクトへ
のポインタを返すものである。このインデックスはクラ
イアント・アプリケーションによって渡される。
[0189] 3. GetProtocolLayer: This function returns a pointer to the indexed TProtocolLayer object. This index is passed by the client application.

【0190】4.CancelRequests: この関数は、プロ
トコル・スタック上のすべての保留要求を取り消すため
にTCancelRequestsOpを受け取ったときに呼び出される
ものである。これは、TClientStackHeadのCancelReques
tsに対応するサーバ側の関数である。
4. CancelRequests: This function is called when TCancelRequestsOp is received to cancel all pending requests on the protocol stack. This is the CancelReques from TClientStackHead
This is a server-side function corresponding to 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の両方を使用する。
FIG. 22 shows the class hierarchy of the above objects and describes the object model using Booth's notation. TAccessDefinition101
Is derived from TNetworkDefinition100. The TAccessDefinition 101 contains various TProtocolInterface135 objects that make up the endpoints. In addition, TAccessDefinition101 is a TCli that executes all of the primitive functions of client-server communication.
Also includes entStackHead721. TServerStackHead7
Reference numeral 23 is a server-side class corresponding to ClientStackHead. The pair of TClientStackHead and TServerStackHead is
Represents a link between a protocol interface and a protocol implementation layer object, thus linking a client application with a protocol stack on a server. TProtocolInterfa
Both the ce class 135 and the TProtocolLayer class 151 are derived from the common basic class MProtocolService 133. Any network request from the client is sent to the server which is returned by the TNetworkOperation 701 object. That is, TProtocolInt
The method in erface creates the appropriate TNetworkOperation object and the operation object is TClientStackHead
Flattened by and sent to the server. TNetworkOper
ation objects are TClientStackHead and TServerStac
Use both kHeads.

【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上のいかなる要求についても同じである。
FIG. 23 shows the flow of requests from the client to the server and vice versa. As aforementioned,
The endpoints are represented by a stack of TAccessDefinition objects on the client and TProtocolLayer objects on the server. The interaction between the client and server is the TClientStackHead object and the TServerStack
Managed by the Head object. The figure shows two endpoints 725. The network request from the client is a ServerProcess as a TNetworkOperation object using the system RPC or IPC mechanism.
/ Sent to Thread727. ServerProcess is TNetwork
Reconstruct the Operation object, then T for endpoint 1.
Locate the ServerStackHead object and use the ServerS
Route the request to tackHead1729. Similar processing is done when routing a request from endpoint 2 to ServerStackHead2, which represents this endpoint on the server. Then ServerSt
ack1 calls the TNetworkOperation :: Execute () method, which calls the appropriate method on TTransportLayer on stack 1733. TTransportLayer requests T
You can also choose to call the methods of TNetworkLayer that you want to send to FamilyLayer 737. The family layer then sends a request to the TDataLinkLayer on Stack1 733. TTranspo
rtLayer sends the request to TFamilyLayer 737 TNetworkL
You can also choose to call ayer's methods. After processing the request, the family layer then sends the request to TDataLinkLayer 739, which can send the request to the adapter. DataLink
Upon receiving any packet via the adapter, the Layer dispatches the packet to the family layer. TFamilyLayer routes the packet to the appropriate stack. Returning to the TTransportLayer from the call is T
NetworkOperation :: Execute () collects the response and uses the system's RPC / IPC mechanism to populate the appropriate TClientStack.
Returns a TNetworkOperation object to Head. This procedure consists of endpoint 2 and stack 2 7 which represent the endpoints on the server.
The same is true for any requirements on 35.

【0193】図23は、クライアントとサーバのクラス
・オブジェクト間の関係を示している。以下の例では、
一般的なネットワークのクライアント/サーバ・モデル
を想定している。
FIG. 23 shows the relationship between client and server class objects. In the example below,
A general network client / server model is assumed.

【0194】3.例 TCP/IPトランスポート・インタフェースを表すTT
CPTINFについて検討する。TTCPTINF::Bind()が入力パラ
メータとしてTTCPAddressを取り、TTCPAddressオブジェ
クトを返すものと想定する。ただし、TTCPAddressはTPr
otocolAddressから派生したものであることに留意され
たい。図24に示すように、TTCPTINF::Bind()メソッド
は以下のように実行する。
[0194] 3. Example TT representing TCP / IP transport interface
Consider CPTINF. Assume that TTCPTINF :: Bind () takes TTCPAddress as an input parameter and returns a TTCPAddress object. However, TTCPAddress is TPr
Please note that it is derived from otocolAddress. As shown in FIG. 24, the TTCPTINF :: Bind () method executes as follows.

【0195】ステップ801では、TNetworkOperation
オブジェクトであるTTCPBindOpが作成される。
At step 801, TNetworkOperation is executed.
An object, TTCPBindOp, is created.

【0196】ステップ803では、このAccessDefiniti
on用のClientStackHeadオブジェクトを獲得する。
At step 803, this AccessDefiniti
Acquire the ClientStackHead object for on.

【0197】ステップ805では、TTCPBindOpオブジェ
クトのTTCPAddressを平坦化し、要求をサーバに送るた
めに、ClientStackHead::ProcessOperation()が呼び出
される。サーバは、ステップ807でRPC/IPCな
どのメッセージ・ストリームから平坦化したTTCPBindOp
を再構築する。
In step 805, ClientStackHead :: ProcessOperation () is called to flatten the TTCPAddress of the TTCPBindOp object and send the request to the server. The server flattens the TTCPBindOp from the message stream such as RPC / IPC in step 807.
To rebuild.

【0198】ステップ809では、サーバは、TTCPBind
Opオブジェクトで渡されたスタックIDからServerStac
kHeadオブジェクトの位置を特定する。
At step 809, the server sends TTCPBind.
ServerStac from the stack ID passed in the Op object
Locate the kHead object.

【0199】ステップ811では、ServerStackHeadオ
ブジェクトが適切なプロトコル層オブジェクトにTProto
colLayer::Bind()を呼び出す。
At step 811, the ServerStackHead object is TProto to the appropriate protocol layer object.
Call colLayer :: Bind ().

【0200】ステップ813では、バインドするための
呼出しがTTCPAddressオブジェクトを返し、サーバがTTC
PBindOpで復帰情報(アドレス)を復元し、それをクラ
イアントにストリームで戻す。ClientStackHeadはメッ
セージ・ストリームからTTCPBindOp()オブジェクトを再
構築する。最後に、ステップ817では、TTCPINF::Bin
d()がTTCPBindOpからTTCPAddressを取り出し、それをク
ライアント・プログラムに返す。
At step 813, the call to bind returns a TTCPAddress object, and the server calls TTC.
Restore the return information (address) with PBindOp and return it to the client in a stream. ClientStackHead reconstructs a TTCPBindOp () object from the message stream. Finally, in step 817, TTCPINF :: Bin
d () retrieves TTCPAddress from TTCPBindOp and returns it to the client program.

【0201】特定の実施例に関連して本発明を示し説明
してきたが、当業者であれば、修正を加え他の環境で本
発明を実施できることを理解できるだろう。たとえば、
上記の本発明はソフトウェアによって選択的に再構成ま
たは活動化される汎用コンピュータで都合よく実施する
ことができるが、当業者は、上記の発明を実行するため
に特別に設計された専用装置を含む、ハードウェア、フ
ァームウェア、またはソフトウェアとファームウェアと
ハードウェアの組合せで本発明を実施できることに留意
されたい。したがって、特許請求の範囲に記載する本発
明の精神および範囲を逸脱せずに、形式および細部の変
更を行うことができる。
Although the present invention has been shown and described with respect to particular embodiments, those skilled in the art will recognize that the invention can be modified and practiced in other environments. For example,
While the present invention described above may be conveniently implemented on a general-purpose computer that is selectively reconfigured or activated by software, those skilled in the art will include specialized devices specifically designed to carry out the invention. It should be noted that the present invention can be implemented in hardware, firmware, or a combination of software, firmware and hardware. Therefore, changes in form and detail may be made without departing from the spirit and scope of the invention as claimed.

【0202】まとめとして、本発明の構成に関して以下
の事項を開示する。
As a summary, the following matters will be disclosed regarding the configuration of the present invention.

【0203】(1)サーバ・システム内の実行ユニット
の、クライアント・プロセスとサーバ・プロセスとの間
の通信プロセス専用のプールを動的に管理するための方
法において、通信プロセス・プール内に、典型的なクラ
イアント・ロードをサポートするのに必要な数である最
小数、およびサーバ・システムにとって過負荷にならず
にピーク・クライアント・ロードをサポートするための
上限である最大数の実行ユニットを割り振るステップ
と、クライアントによるサービス要求をサーバ・システ
ムが受信するステップとを含み、受信した各クライアン
ト要求ごとに、受信したクライアント要求に実行ユニッ
トを割り当てると、通信プロセス・プール内の現行数の
実行ユニットが最大数の実行ユニットを上回ることにな
るかどうかを判定し、上回る場合にクライアント要求を
拒否するステップと、受信したクライアント要求に実行
ユニットを割り当てると、その要求を行うクライアント
・タスクに割り当てられた現行数の実行ユニットがクラ
イアント・タスク用の割り当てられた実行ユニットの数
を上回ることになるかどうかを判定し、上回る場合にク
ライアント要求を拒否するステップと、判定ステップが
否定であればクライアント要求を許可し、その結果、通
信プロセス・プール内の実行ユニットがクライアント要
求に割り当てられるステップとを含むことを特徴とする
方法。 (2)サーバ・システム内の実行ユニットの、クライア
ント・プロセスとサーバ・プロセスとの間の通信プロセ
ス専用のプールを動的に管理するためのシステムにおい
て、通信プロセス・プール内に、典型的なクライアント
・ロードをサポートするのに必要な数である最小数、お
よびサーバ・システムにとって過負荷にならずにピーク
・クライアント・ロードをサポートするための上限であ
る最大数の実行ユニットを割り振る手段と、クライアン
トによるサービス要求をサーバ・システムが受信する手
段と、受信したクライアント要求に実行ユニットを割り
当てると、通信プロセス・プール内の現行数の実行ユニ
ットが最大数の実行ユニットを上回ることになるかどう
かを判定する手段と、受信したクライアント要求に実行
ユニットを割り当てると、その要求を行うクライアント
・タスクに割り当てられた現行数の実行ユニットがクラ
イアント・タスク用の割り当てられた実行ユニットの数
を上回ることになるかどうかを判定する手段と、通信プ
ロセス・プール内の実行ユニットをクライアント要求に
割り当てることができると判定手段が確認した場合にク
ライアント要求を許可する手段とを含むことを特徴とす
るシステム。 (3)サーバ・システム内の実行ユニットの、クライア
ント・プロセスとサーバ・プロセスとの間の通信プロセ
ス専用のプールを動的に管理するためのコンピュータが
読取り可能な媒体上のコンピュータ・プログラム製品に
おいて、通信プロセス・プール内に、典型的なクライア
ント・ロードをサポートするのに必要な数である最小
数、およびサーバ・システムにとって過負荷にならずに
ピーク・クライアント・ロードをサポートするための上
限である最大数の実行ユニットを割り振るようにシステ
ムに指示する手段と、クライアントによるサービス要求
をサーバ・システムが受信するようにシステムに指示す
る手段と、受信したクライアント要求に実行ユニットを
割り当てると、通信プロセス・プール内の現行数の実行
ユニットが最大数の実行ユニットを上回ることになるか
どうかを判定するようにシステムに指示する手段と、受
信したクライアント要求に実行ユニットを割り当てる
と、その要求を行うクライアント・タスクに割り当てら
れた現行数の実行ユニットがクライアント・タスク用の
割り当てられた実行ユニットの数を上回ることになるか
どうかを判定するようにシステムに指示する手段と、通
信プロセス・プール内の実行ユニットをクライアント要
求に割り当てることができるという判定に応答してクラ
イアント要求を許可するようにシステムに指示する手段
とを含むことを特徴とするコンピュータ・プログラム製
品。
(1) In a method for dynamically managing a pool dedicated to a communication process between a client process and a server process in an execution unit in a server system, a method typically used in the communication process pool Allocating the minimum number of execution units needed to support a typical client load, and the maximum number to support peak client loads without overloading the server system And a step in which the server system receives a service request by a client, and for each client request received, assigning an execution unit to the received client request results in a maximum number of execution units in the current communication process pool. Determine whether it will exceed the number of execution units Rejecting a client request if more than, and assigning an execution unit to the received client request results in the current number of execution units assigned to the client task making the request of the assigned execution units for the client task. If the decision step is negative, the client request is accepted, so that the execution unit in the communication process pool can request the client request. And a step assigned to. (2) In a system for dynamically managing a pool dedicated to a communication process between a client process and a server process in an execution unit in the server system, a typical client is included in the communication process pool. A minimum number of execution units needed to support the load, and a maximum number of execution units to support the peak client load without overloading the server system, and the client Of how the server system receives service requests by and how the execution units assigned to the received client requests determine whether the current number of execution units in the communication process pool will exceed the maximum number of execution units. And the execution unit assigned to the received client request. Means for determining whether the current number of execution units assigned to the requesting client task will exceed the number of assigned execution units for the client task, and in the communication process pool. And a means for permitting the client request when the determining means confirms that the execution unit of the above can be assigned to the client request. (3) In a computer program product on a computer-readable medium for dynamically managing a pool of execution units in a server system dedicated to a communication process between a client process and a server process, The minimum number needed to support a typical client load in the communication process pool, and an upper limit to support a peak client load without overloading the server system. Means for instructing the system to allocate the maximum number of execution units, means for instructing the system to receive service requests by clients from the server system, and assigning execution units to received client requests, The maximum number of current execution units in the pool A means of instructing the system to determine if there will be more than a line unit, and assigning an execution unit to a received client request will result in the client having the current number of execution units assigned to the requesting client task. Means to instruct the system to determine if the number of assigned execution units for the task will be exceeded, and to respond to the determination that execution units in the communication process pool can be assigned to client requests. And means for instructing the system to authorize the client request.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の教示により構成されたコンピュータ・
システムを示す図である。
FIG. 1 is a computer constructed in accordance with the teachings of the present invention.
It is a figure showing a system.

【図2】ネットワーク定義オブジェクト用のクラス階層
を示す図である。
FIG. 2 illustrates a class hierarchy for network definition objects.

【図3】ネットワーク・アドレス・クラス用のクラス階
層を示す図である。
FIG. 3 shows a class hierarchy for network address classes.

【図4】プロトコル・インタフェース・クラス用のクラ
ス階層を示す図である。
FIG. 4 is a diagram showing a class hierarchy for protocol interface classes.

【図5】プロトコル層クラス用のクラス階層を示す図で
ある。
FIG. 5 illustrates a class hierarchy for protocol layer classes.

【図6】接続指向遷移の状態図である。FIG. 6 is a state diagram of connection-oriented transition.

【図7】無接続状態遷移の状態図である。FIG. 7 is a state diagram of a non-connection state transition.

【図8】本発明のTCP/IP実施例のクラス関係を示
す図である。
FIG. 8 is a diagram showing class relationships in a TCP / IP embodiment of the present invention.

【図9】本発明によりネットワーク接続をセットアップ
するためのプロセスの流れ図である。
FIG. 9 is a flow chart of a process for setting up a network connection according to the present invention.

【図10】図9に示すネットワーク接続プロセスの専用
ネットワーク層にある様々なオブジェクトの体系図であ
る。
10 is a systematic diagram of various objects in the dedicated network layer of the network connection process shown in FIG.

【図11】ネットワーク事象オブジェクト用のクラス階
層を示す図である。
FIG. 11 shows a class hierarchy for network event objects.

【図12】単一の通信端点から事象を収集するためのプ
ロセスの流れ図である。
FIG. 12 is a flow diagram of a process for collecting events from a single communication endpoint.

【図13】複数の通信端点から事象を収集するためのプ
ロセスの流れ図である。
FIG. 13 is a flow diagram of a process for collecting events from multiple communication endpoints.

【図14】ネットワーク・プロトコル・サーバのクライ
アント要求を処理するために通信スレッドのプールを管
理するための第1および第2の実施例の体系図である。
FIG. 14 is a systematic diagram of first and second embodiments for managing a pool of communication threads for processing network protocol server client requests.

【図15】ネットワーク・プロトコル・サーバのクライ
アント要求を処理するために通信スレッドのプールを管
理するための第1および第2の実施例の体系図である。
FIG. 15 is a systematic diagram of first and second embodiments for managing a pool of communication threads for processing client requests of a network protocol server.

【図16】通信スレッドのプール用の管理プロセスの流
れ図である。
FIG. 16 is a flow diagram of a management process for a pool of communication threads.

【図17】通信スレッドのプール用の管理プロセスの流
れ図である。
FIG. 17 is a flow diagram of a management process for a pool of communication threads.

【図18】通信スレッドのプール用の管理プロセスの流
れ図である。
FIG. 18 is a flow diagram of a management process for a pool of communication threads.

【図19】通信スレッドのプール用の管理プロセスの流
れ図である。
FIG. 19 is a flow diagram of a management process for a pool of communication threads.

【図20】ネットワーク操作オブジェクト用のクラス階
層図である。
FIG. 20 is a class hierarchy diagram for a network operation object.

【図21】ネットワーク操作オブジェクト用のクラス階
層図である。
FIG. 21 is a class hierarchy diagram for a network operation object.

【図22】本発明の様々なクラス間のクラス関係を示す
図である。
FIG. 22 is a diagram showing class relationships between various classes of the present invention.

【図23】本発明によるネットワーク内の様々なオブジ
ェクト間のメッセージの流れを示す図である。
FIG. 23 shows a message flow between various objects in a network according to the present invention.

【図24】ネットワーク操作オブジェクトでネットワー
ク・プロトコル要求を渡すための流れ図である。
FIG. 24 is a flow chart for passing a network protocol request in a network operation object.

【符号の説明】[Explanation of symbols]

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 サーバ・アプリケーション 11 system unit 12 keyboard 13 mouse 14 graphic display 15A speaker 15B speaker 21 system bus 22 microprocessor 23 ROM 24 RAM 25 memory management chip 26 hard disk drive 27 floppy disk drive 28 keyboard controller 29 mouse control Device 30 Video controller 31 Audio controller 32 CD-ROM 33 Digital signal processor 40 Input / output controller 46 Network 48 Operating system 49 Client application 50 Client interface 51 Protocol object 52 Server application

───────────────────────────────────────────────────── フロントページの続き (72)発明者 レオ・ユエ・タク・ユング アメリカ合衆国78759 テキサス州オース チン ディーケイ・ラーンチ・ロード 11714 ─────────────────────────────────────────────────── —————————————————————————————————————————————————— Inventor Leo Yue Tak Jung United States 78759 Austin, Texas Decay Ranch Road 11714

Claims (3)

【特許請求の範囲】[Claims] 【請求項1】サーバ・システム内の実行ユニットの、ク
ライアント・プロセスとサーバ・プロセスとの間の通信
プロセス専用のプールを動的に管理するための方法にお
いて、 通信プロセス・プール内に、典型的なクライアント・ロ
ードをサポートするのに必要な数である最小数、および
サーバ・システムにとって過負荷にならずにピーク・ク
ライアント・ロードをサポートするための上限である最
大数の実行ユニットを割り振るステップと、 クライアントによるサービス要求をサーバ・システムが
受信するステップとを含み、 受信した各クライアント要求ごとに、 受信したクライアント要求に実行ユニットを割り当てる
と、通信プロセス・プール内の現行数の実行ユニットが
最大数の実行ユニットを上回ることになるかどうかを判
定し、上回る場合にクライアント要求を拒否するステッ
プと、 受信したクライアント要求に実行ユニットを割り当てる
と、その要求を行うクライアント・タスクに割り当てら
れた現行数の実行ユニットがクライアント・タスク用の
割り当てられた実行ユニットの数を上回ることになるか
どうかを判定し、上回る場合にクライアント要求を拒否
するステップと、 判定ステップが否定であればクライアント要求を許可
し、その結果、通信プロセス・プール内の実行ユニット
がクライアント要求に割り当てられるステップとを含む
ことを特徴とする方法。
1. A method for dynamically managing a pool of execution units in a server system dedicated to a communication process between a client process and a server process, the method comprising: Allocating the minimum number of execution units required to support a large client load, and the maximum number of execution units to support a peak client load without overloading the server system. , The server system receiving service requests by the client, and for each client request received, assigning an execution unit to the received client request, the maximum number of execution units currently in the communication process pool is reached. Determine whether the number of execution units Rejecting a client request when spinning and assigning an execution unit to a received client request causes the current number of execution units assigned to the client task making the request to be the number of assigned execution units for the client task. If the decision step is negative, the client request is accepted, so that the execution unit in the communication process pool can request the client request. And a step assigned to.
【請求項2】サーバ・システム内の実行ユニットの、ク
ライアント・プロセスとサーバ・プロセスとの間の通信
プロセス専用のプールを動的に管理するためのシステム
において、 通信プロセス・プール内に、典型的なクライアント・ロ
ードをサポートするのに必要な数である最小数、および
サーバ・システムにとって過負荷にならずにピーク・ク
ライアント・ロードをサポートするための上限である最
大数の実行ユニットを割り振る手段と、 クライアントによるサービス要求をサーバ・システムが
受信する手段と、 受信したクライアント要求に実行ユニットを割り当てる
と、通信プロセス・プール内の現行数の実行ユニットが
最大数の実行ユニットを上回ることになるかどうかを判
定する手段と、 受信したクライアント要求に実行ユニットを割り当てる
と、その要求を行うクライアント・タスクに割り当てら
れた現行数の実行ユニットがクライアント・タスク用の
割り当てられた実行ユニットの数を上回ることになるか
どうかを判定する手段と、 通信プロセス・プール内の実行ユニットをクライアント
要求に割り当てることができると判定手段が確認した場
合にクライアント要求を許可する手段とを含むことを特
徴とするシステム。
2. A system for dynamically managing a pool of execution units in a server system dedicated to a communication process between a client process and a server process, typically in the communication process pool. A minimum number of execution units needed to support a large client load, and a maximum number of execution units to support a peak client load without overloading the server system. , The means by which the server system receives service requests by clients, and whether assigning an execution unit to a received client request causes the current number of execution units in the communication process pool to exceed the maximum number of execution units. Means for determining the execution unit for the received client request Means to determine whether the current number of execution units assigned to the requesting client task exceeds the number of assigned execution units for the client task, and a communication process pool. And a means for permitting the client request when the determining means confirms that the execution unit in the can be assigned to the client request.
【請求項3】サーバ・システム内の実行ユニットの、ク
ライアント・プロセスとサーバ・プロセスとの間の通信
プロセス専用のプールを動的に管理するためのコンピュ
ータが読取り可能な媒体上のコンピュータ・プログラム
製品において、 通信プロセス・プール内に、典型的なクライアント・ロ
ードをサポートするのに必要な数である最小数、および
サーバ・システムにとって過負荷にならずにピーク・ク
ライアント・ロードをサポートするための上限である最
大数の実行ユニットを割り振るようにシステムに指示す
る手段と、 クライアントによるサービス要求をサーバ・システムが
受信するようにシステムに指示する手段と、 受信したクライアント要求に実行ユニットを割り当てる
と、通信プロセス・プール内の現行数の実行ユニットが
最大数の実行ユニットを上回ることになるかどうかを判
定するようにシステムに指示する手段と、 受信したクライアント要求に実行ユニットを割り当てる
と、その要求を行うクライアント・タスクに割り当てら
れた現行数の実行ユニットがクライアント・タスク用の
割り当てられた実行ユニットの数を上回ることになるか
どうかを判定するようにシステムに指示する手段と、 通信プロセス・プール内の実行ユニットをクライアント
要求に割り当てることができるという判定に応答してク
ライアント要求を許可するようにシステムに指示する手
段とを含むことを特徴とするコンピュータ・プログラム
製品。
3. A computer program product on a computer readable medium for dynamically managing a pool of execution units in a server system dedicated to a communication process between a client process and a server process. , The minimum number needed to support a typical client load in the communication process pool, and an upper limit to support a peak client load without overloading the server system. A means to instruct the system to allocate a maximum number of execution units, a system to instruct the server system to receive a service request by the client, and an allocation of execution units to the received client request The current number of execution units in the process pool A means of instructing the system to determine if it will exceed a large number of execution units, and assigning an execution unit to a received client request will result in the current number of executions assigned to the client task making the request. A means to instruct the system to determine if a unit will exceed the number of assigned execution units for a client task, and that execution units in the communication process pool can be assigned to client requests. Means for instructing the system to authorize the client request in response to the determination.
JP04071397A 1996-03-08 1997-02-25 Method for dynamically managing execution units in a communication process pool Expired - Fee Related JP3229237B2 (en)

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 true JPH09265409A (en) 1997-10-07
JP3229237B2 JP3229237B2 (en) 2001-11-19

Family

ID=24455880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04071397A Expired - Fee Related JP3229237B2 (en) 1996-03-08 1997-02-25 Method for dynamically managing execution units in a communication process pool

Country Status (4)

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

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000511321A (en) * 1997-05-02 2000-08-29 ライブピクチャー,インコーポレイテッド Method and system for improving online interactivity via a server-client network
JP2004501548A (en) * 2000-05-17 2004-01-15 ユニバーシティ オブ サリー Protocol stack
JP2005276175A (en) * 2004-02-13 2005-10-06 Microsoft Corp Scalable print spooler
JP2006216018A (en) * 2005-02-01 2006-08-17 Microsoft Corp Dispatching network connections in user mode
JP2008090578A (en) * 2006-10-02 2008-04-17 Seiko Epson Corp Application performance system, computer, and application performance method for application performance system and program
US7467390B2 (en) 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
JP2010252328A (en) * 2009-04-14 2010-11-04 Avid Technology Inc Rendering in multi-user video editing system
US9329902B2 (en) 2012-09-05 2016-05-03 Fujitsu Limited Information processing method of controlling variation in a number of processes, storage medium, and information processing device
JP2019102064A (en) * 2017-11-30 2019-06-24 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド Method and apparatus for processing task in smart device

Families Citing this family (102)

* 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
US6189023B1 (en) * 1997-09-30 2001-02-13 Tandem Computers Incorporated Simulating shared code thread modules with shared code fibers
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
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
US6779030B1 (en) 1997-10-06 2004-08-17 Worldcom, Inc. 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
DE19802364A1 (en) * 1998-01-22 1999-07-29 Siemens Ag Computer system with parallel processing
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
WO2000050969A2 (en) * 1999-02-26 2000-08-31 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
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
WO2001022273A1 (en) 1999-09-24 2001-03-29 Sun Microsystems, Inc. Mechanism for enabling session information to be shared across multiple processes
US6629142B1 (en) 1999-09-24 2003-09-30 Sun Microsystems, Inc. Mechanism for optimizing processing of client requests
US6701367B1 (en) * 1999-09-24 2004-03-02 Sun Microsystems, Inc. Mechanism for enabling customized session managers to interact with a network server
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
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
KR100476649B1 (en) * 1999-10-12 2005-03-18 주식회사 케이티 Dynamic load control method for ensuring QoS in IP networks
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 (en) * 2000-01-07 2007-04-03 엘지엔시스(주) Application program interface system with common interface
JP2001197119A (en) * 2000-01-13 2001-07-19 Nec Corp Server device, network system and receiving load control method therefor
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
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
US7487152B1 (en) 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
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
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
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
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
US7457302B1 (en) * 2002-12-31 2008-11-25 Apple Inc. Enhancement to loop healing for malconfigured bus prevention
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
TWI349204B (en) * 2003-01-10 2011-09-21 Panasonic Corp Group admission system and server and client therefor
JP4614664B2 (en) * 2003-01-10 2011-01-19 パナソニック株式会社 Group subscription authorization system, server equipment and client equipment
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
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
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
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
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
JP4117299B2 (en) * 2005-02-28 2008-07-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Method, control server, server, and program for controlling upper limit value of server multiplicity
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
US20070083525A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava JDBC debugging enhancements
US20070083526A1 (en) * 2005-10-11 2007-04-12 Rahul Srivastava Monitoring statistics and profile information for JDBC resources
US7823136B2 (en) * 2005-10-11 2010-10-26 Bea Systems, Inc. Callbacks for monitoring driver-level statistics
US7921084B2 (en) * 2005-10-11 2011-04-05 Oracle International Corporation Timer-driven diagnostic image inhibition for statement cache/connection pool
US7784033B2 (en) * 2005-10-11 2010-08-24 Bea Systems, Inc. JDBC monitoring and diagnostics enhancements
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
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
EP2254054A4 (en) * 2008-06-17 2013-06-05 Panasonic Corp Server device, server processing method, and program
JP5509564B2 (en) * 2008-09-30 2014-06-04 富士通株式会社 Message transmission method and program
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
US9323438B2 (en) 2010-07-15 2016-04-26 Apple Inc. Media-editing application with live dragging and live editing capabilities
US20120198319A1 (en) * 2011-01-28 2012-08-02 Giovanni Agnoli Media-Editing Application with Video Segmentation and Caching Capabilities
US8886015B2 (en) 2011-01-28 2014-11-11 Apple Inc. Efficient media import
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
US9264338B1 (en) 2013-04-08 2016-02-16 Sprint Communications Company L.P. Detecting upset conditions in application instances
CN103440578A (en) * 2013-08-07 2013-12-11 四川盛世宝典科技有限公司 Electronic commerce management system based on VR
US10885023B1 (en) * 2014-09-08 2021-01-05 Amazon Technologies, Inc. Asynchronous processing for synchronous requests in a database
CN106095590B (en) * 2016-07-21 2019-05-03 联动优势科技有限公司 A kind of method for allocating tasks and device based on thread pool
US20200257558A1 (en) * 2017-10-09 2020-08-13 Huawei Technologies Co., Ltd. Processing Method and Apparatus
WO2019132330A1 (en) * 2017-12-26 2019-07-04 Samsung Electronics Co., Ltd. Method and system for predicting optimal number of threads for application running on electronic device
US11467877B2 (en) 2020-01-31 2022-10-11 Salesforce, Inc. Throttling and limiting thread resources of service computing platform
CN111654480B (en) * 2020-05-24 2022-05-20 中信银行股份有限公司 RPC connection establishment method, device and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332833A (en) * 1993-05-25 1994-12-02 Nec Corp Server operation system
JPH0844576A (en) * 1994-07-25 1996-02-16 Internatl Business Mach Corp <Ibm> Dynamic workload balancing

Family Cites Families (18)

* 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 (en) * 1985-05-02 1986-11-11 Hitachi Ltd Load distributing system for loose coupling multi-processor system
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
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
ATE151183T1 (en) 1989-02-24 1997-04-15 Digital Equipment Corp BROKER FOR SELECTING COMPUTER NETWORK SERVERS
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 (en) * 1992-08-10 1994-03-04 Hitachi Ltd Method for controlling execution of parallel
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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332833A (en) * 1993-05-25 1994-12-02 Nec Corp Server operation system
JPH0844576A (en) * 1994-07-25 1996-02-16 Internatl Business Mach Corp <Ibm> Dynamic workload balancing

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000511321A (en) * 1997-05-02 2000-08-29 ライブピクチャー,インコーポレイテッド Method and system for improving online interactivity via a server-client network
JP2004501548A (en) * 2000-05-17 2004-01-15 ユニバーシティ オブ サリー Protocol stack
JP4777587B2 (en) * 2000-05-17 2011-09-21 ユニバーシティ オブ サリー Protocol stack
US7467390B2 (en) 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
JP2005276175A (en) * 2004-02-13 2005-10-06 Microsoft Corp Scalable print spooler
JP2006216018A (en) * 2005-02-01 2006-08-17 Microsoft Corp Dispatching network connections in user mode
JP2008090578A (en) * 2006-10-02 2008-04-17 Seiko Epson Corp Application performance system, computer, and application performance method for application performance system and program
JP2010252328A (en) * 2009-04-14 2010-11-04 Avid Technology Inc Rendering in multi-user video editing system
US9329902B2 (en) 2012-09-05 2016-05-03 Fujitsu Limited Information processing method of controlling variation in a number of processes, storage medium, and information processing device
JP2019102064A (en) * 2017-11-30 2019-06-24 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド Method and apparatus for processing task in smart device
US11188380B2 (en) 2017-11-30 2021-11-30 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for processing task in smart device

Also Published As

Publication number Publication date
US6182109B1 (en) 2001-01-30
JP3229237B2 (en) 2001-11-19
EP0794490A2 (en) 1997-09-10
EP0794490A3 (en) 1999-04-21
KR100253930B1 (en) 2000-04-15

Similar Documents

Publication Publication Date Title
JP3229237B2 (en) Method for dynamically managing execution units in a communication process pool
US5809235A (en) Object oriented network event management framework
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
US5938733A (en) Object oriented representation of network requests in a client server model
Schmidt et al. An overview of the real-time CORBA specification
US8010968B2 (en) Method and system for dynamic configuration of interceptors in a client-server environment
EP1170909B1 (en) Quality of service definition for data streams
US6633923B1 (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
O’Ryan et al. The design and performance of a pluggable protocols framework for real-time distributed object computing middleware
AU730088B2 (en) A system, method and article of manufacture for seamless, server application support of network and non-network client terminals
US5548723A (en) Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US6111894A (en) Hardware interface between a switch adapter and a communications subsystem in a data processing system
Dixon System support for multi-service traffic
US6141689A (en) Method and mechanism for allocating switched communications ports in a heterogeneous data processing network gateway
US20030174731A1 (en) Protocol stacks
US7536688B2 (en) Segmented virtual machine
WO1995017060A1 (en) Object-oriented polymorphic communication system
JPH10116193A (en) Speech control unit and method for controlling speech
EP0978976A2 (en) An application dispatcher for server application
Lo et al. The implementation of a high-performance ORB over multiple network transports
US6393494B1 (en) Method, computer program product, and system for managing connection-oriented media
Coulson et al. A CORBA compliant real-time multimedia platform for broadband networks
Waddington et al. A distributed multimedia component architecture
JP2001517835A (en) Compatible processor system

Legal Events

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