JPH0477938B2 - - Google Patents

Info

Publication number
JPH0477938B2
JPH0477938B2 JP63501886A JP50188688A JPH0477938B2 JP H0477938 B2 JPH0477938 B2 JP H0477938B2 JP 63501886 A JP63501886 A JP 63501886A JP 50188688 A JP50188688 A JP 50188688A JP H0477938 B2 JPH0477938 B2 JP H0477938B2
Authority
JP
Japan
Prior art keywords
port
request
operating system
computer
routine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
JP63501886A
Other languages
English (en)
Other versions
JPH03501784A (ja
Inventor
Jooji Ii Rajisu
Hooru Efu Meiya
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.)
AT&T Corp
Original Assignee
AT&T 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 AT&T Corp filed Critical AT&T Corp
Publication of JPH03501784A publication Critical patent/JPH03501784A/ja
Publication of JPH0477938B2 publication Critical patent/JPH0477938B2/ja
Granted 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/959Network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

請求の範囲 1 サービス要求に応答するオペレーテイングシ
ステム手段20を含み、そのオペレーテイングシ
ステム手段へアクセス可能なサービスをユーザに
提供するための第1コンピユータ10と、 第1コンピユータに通信接続された第2コンピ
ユータ11と、 第2コンピユータに通信接続された少なくとも
1つの第3コンピユータ12と、 サービス要求をトラツプし、第1手段21から
第2コンピユータの第4手段31へのトラツプさ
れたサービス要求の通知をオペレーテイングシス
テム手段によつて通信するオペレーテイングシス
テム・カーネルレベル・プロセス手段22を含
み、オペレーテイングシステム手段に対するユー
ザのサービス要求をトラツプし、ユーザの介入な
くその要求を第2コンピユータに通知する、第1
コンピユータ内の第1手段と、 第1手段からの要求通知を受信しおよび収集
し、受信された要求を第3手段33,34へ引き
渡す、オペレーテイングシステム・カーネルレベ
ル・ドライバ第4手段を含み、要求通知の受信に
応答して、第2および第3コンピユータと協力し
て、ユーザの介入なくオペレーテイングシステム
手段へのサービスのアクセス可能性を確保する、
第2コンピユータ内の第2手段32と、 第2および第3コンピユータのうちのいずれが
要求されたサービスを有するかを判定し、第2コ
ンピユータによつて、要求されたサービスを有す
るコンピユータから第2コンピユータを通してオ
ペレーテイングシステム手段へ、要求されたサー
ビスをアクセス可能にし、第4手段にアクセス可
能性を通知する、アプリケーシヨンレベル・プロ
セス第3手段と、 それぞれ対応する要求に応答するサービス・ア
クセス可能性の通知を第3手段から受信し、アク
セス可能性を第1手段に通知するために、受信し
たサービス・アクセス可能性の通知を第1手段に
引き渡す第4手段からなり、 第1手段は、アクセス可能性の通知の受信に応
答して、ユーザの介入なく、トラツプされた要求
をオペレーテイングシステム手段に引き渡し、 オペレーテイングシステム・カーネルレベル・
プロセス手段は、オペレーテイングシステム手段
によつてサービス・アクセス可能性の通知を第4
手段から第1手段へ通信し、オペレーテイングシ
ステム手段がサービス要求を満たすように、オペ
レーテイングシステム手段へサービス要求を引き
渡し、 オペレーテイングシステム手段は、引き渡され
た、トラツプされた要求の受信に応答して、要求
されたサービスが、第2手段の動作前にすでにオ
ペレーテイングシステム手段へアクセス可能であ
つたか、または、第2手段の動作によつてはじめ
てオペレーテイングシステム手段へアクセス可能
になつたかに関わらず同一の方法で、ユーザに、
要求されたサービスを提供することを特徴とする
装置。
2 サービス要求はフアイルに対する要求を含
み、 第3手段は、第2および第3コンピユータのう
ちのいずれに要求されたフアイルが存在するかを
判定し、フアイルが第3コンピユータに存在する
と判定された場合、要求されたフアイルを第3コ
ンピユータから第2コンピユータへ転送し、第2
コンピユータ上でそのフアイルをオペレーテイン
グシステム手段へアクセス可能にする手段を有す
ることを特徴とする請求項1の装置。
3 サービス要求はリソースに対する要求を含
み、 第3手段は、第2および第3コンピユータのう
ちのいずれに要求されたリソースが存在するかを
判定し、リソースが第2コンピユータに存在する
と判定された場合、第2コンピユータ上でそのリ
ソースをオペレーテイングシステム手段へアクセ
ス可能にし、リソースが第3コンピユータに存在
すると判定された場合、第3コンピユータ上でそ
のリソースを第2コンピユータを通してオペレー
テイングシステム手段へアクセス可能にする手段
を有することを特徴とする請求項1の装置。
4 第2コンピユータは動作環境を有し、 第3コンピユータは、 第2コンピユータに含まれる動作環境と等しい
動作環境を有するコンピユータと、 第2コンピユータに含まれる動作環境とは異な
る動作環境を有するコンピユータからなり、 第3手段は、 第2コンピユータが要求されたサービスを有す
るかどうかを判定する手段と、 第2コンピユータが要求されたサービスを有し
ないとの判定に応答して、第2コンピユータと等
しい動作環境を有する第3コンピユータが要求さ
れたサービスを有するかどうかを判定する手段
と、 第2コンピユータと等しい動作環境を有する第
3コンピユータが要求されたサービスを有しない
との判定に応答して、第2コンピユータとは異な
る動作環境を有する第3コンピユータが要求され
たサービスを有するかどうかを判定する手段から
なることを特徴とする請求項1の装置。
5 複数の第1コンピユータと、 互いに通信接続され、それぞれ第1コンピユー
タの相異なる群に通信接続された複数の第2コン
ピユータからなり、 各第1コンピユータの第1手段は、トラツプさ
れたユーザ要求を、接続された第2コンピユータ
のみに通知し、 各第2コンピユータの第2手段は、その第2コ
ンピユータが接続されている群の第1コンピユー
タのオペレーテイングシステム手段への、要求さ
れたサービスのアクセス可能性を確保することを
特徴とする請求項1の装置。
6 サービス要求に応答して、オペレーテイング
システム手段へアクセス可能なサービスをユーザ
に提供するオペレーテイングシステム手段をそれ
ぞれ有する複数の第1コンピユータを有し、 第2コンピユータは第1コンピユータに通信接
続され、 各第1コンピユータに存在する第1手段は、そ
れぞれ、ユーザの要求をトラツプし、その要求を
第2コンピユータに通知し、アクセス可能性の通
知の受信にそれぞれ応答して、トラツプされた要
求をオペレーテイングシステム手段に引き渡し、 第4手段は、複数の第1コンピユータの第1手
段からの要求通知を受信しおよび収集し、受信し
た要求を第3手段に引き渡し、受信した要求に対
応する各第1手段へのサービス・アクセス可能性
の受信された通知を分配することを特徴とする請
求項1の装置。
7 第1コンピユータ10のアプリケーシヨンレ
ベルに存在するユーザプログラム200のサービ
ス要求を、要求中のプログラムに対し透過的な、
第1コンピユータのオペレーテイングシステム・
カーネルレベルに存在する第1配置21によつ
て、トラツプするステツプと、 第1コンピユータに接続された第2コンピユー
タ11のオペレーテイングシステム・カーネルレ
ベルに存在する第2配置31にその要求を通知す
るステツプと、 要求通知を、第2配置から、第2コンピユータ
のアプリケーシヨンレベルに存在する第3配置3
2に引き渡すステツプと、 要求通知の受信に応答して、要求中のプログラ
ムに対して透過的な第3配置の作用によつて、オ
ペレーテイングシステム手段20へのサービスの
アクセス可能性を確保するステツプと、 第2配置から第1配置へアクセス可能性の通知
を引き渡すステツプと、 アクセス可能性の通知の受信に応答して、ユー
ザプログラムの介入なく、第1配置からオペレー
テイングシステム手段へ、トラツプされた要求を
引き渡すステツプと、 引き渡された、トラツプされた要求の、オペレ
ーテイングシステム手段による受信に応答して、
オペレーテイングシステム手段の動作によつて、
要求されたサービスをユーザプログラムに提供す
るステツプからなり、 アクセス可能性確保ステツプは、 第2コンピユータ上の要求されたサービスのア
クセス可能性を判定するステツプと、 第2コンピユータ上のサービスのアクセス不可
能の判定に応答して、第2コンピユータに接続さ
れた第3コンピユータ上の要求されたサービスの
アクセス可能性を判定するステツプと、 第2コンピユータを通してオペレーテイングシ
ステム手段へ、要求されたサービスのアクセス可
能性を調整するステツプと、 第3配置によつて第2配置に、要求されたサー
ビスのアクセス可能性を通知するステツプからな
り、 オペレーテイングシステム手段は、要求された
サービスが、第3配置の動作前にすでにオペレー
テイングシステム手段へアクセス可能であつた
か、または、第3配置の動作によつてはじめてオ
ペレーテイングシステム手段へアクセス可能にな
つたかに関わらず同一の方法で、ユーザプログラ
ムに、要求されたサービスを提供することを特徴
とする、サービス要求に応答してオペレーテイン
グシステム手段へアクセス可能なサービスを提供
するオペレーテイングシステム手段を有する第1
コンピユータ上のユーザプログラムにサービスを
提供する方法。
8 第3コンピユータ上の要求されたサービスの
アクセス可能性を判定するステツプが、 第2コンピユータ上のサービスのアクセス不可
能の判定に応答して、第2コンピユータに含まれ
る動作環境と等しい動作環境を有する第3コンピ
ユータ上の要求されたサービスのアクセス可能性
を判定するステツプと、 第2コンピユータに含まれる動作環境と等しい
動作環境を有する第3コンピユータ上のサービス
のアクセス不可能の判定に応答して、第2コンピ
ユータに含まれる動作環境とは異なる動作環境を
有する第3コンピユータ上の要求されたサービス
のアクセス可能性を判定するステツプからなるこ
とを特徴とする請求項7の方法。
9 第3コンピユータ上の要求されたサービスの
アクセス可能性を判定するステツプが、 第2コンピユータ上のサービスのアクセス不可
能の判定に応答して、その不可能性を第1コンピ
ユータに通知するステツプと、 アクセス不可能の通知に応答して、ユーザの介
入なく、第1コンピユータから第2コンピユータ
に対し、第3コンピユータ上のサービスのアクセ
ス可能性を判定することを要求するステツプから
なることを特徴とする請求項7の方法。
10 第1コンピユータ上で、オペレーテイング
システム手段に対するユーザのサービス要求を、
ユーザの介入なくトラツプするステツプと、 その要求を、第1コンピユータに接続された第
2コンピユータに通知するステツプと、 その通知に応答して、ユーザの介入なく、第2
コンピユータの作用によつて、オペレーテイング
システム手段へのサービスのアクセス可能性を確
保するステツプと、 サービスが第2および第3コンピユータのうち
のいずれかの上でアクセス可能であることの判定
に応答して、サービスのアクセス可能性を第1コ
ンピユータに通知するステツプと、 アクセス可能性の通知に応答して、ユーザの介
入なく、トラツプされた要求をオペレーテイング
システム手段へ引き渡すステツプと、 引き渡された、トラツプされた要求の、オペレ
ーテイングシステム手段による受信に応答して、
オペレーテイングシステム手段の動作によつて、
要求されたサービスをユーザに提供するステツプ
からなり、 アクセス可能性を確保するステツプは、 第2コンピユータ上の要求されたサービスのア
クセス可能性を判定するステツプと、 第2コンピユータ上の要求されたサービスのア
クセス不可能の判定に応答して、その不可能性を
第1コンピユータに通知する第1通知ステツプ
と、 アクセス不可能の第1通知に応答して、ユーザ
の介入なく、第2コンピユータに含まれる動作環
境と等しい動作環境を有する第3コンピユータ上
のサービスのアクセス可能性を判定することを、
第1コンピユータから第2コンピユータに対して
要求する第1要求ステツプと、 第1要求に応答して、第2コンピユータに接続
され、第2コンピユータに含まれる動作環境を有
する第3コンピユータ上の要求されたサービスの
アクセス可能性を判定するステツプと、 第3コンピユータ上の要求されたサービスのア
クセス不可能の判定に応答して、そのアクセス不
可能性を第1コンピユータに通知する第2通知ス
テツプと、 アクセス不可能の第2通知に応答して、ユーザ
の介入なく、第2コンピユータに含まれる動作環
境とは異なる動作環境を有する第3コンピユータ
上のサービスのアクセス可能性を判定すること
を、第1コンピユータから第2コンピユータに対
して要求する第2要求ステツプと、 第2要求に応答して、第2コンピユータに接続
され、第2コンピユータに含まれる動作環境とは
異なる動作環境を有する第3コンピユータ上の要
求されたサービスのアクセス可能性を判定するス
テツプと、 第2コンピユータを通じて、オペレーテイング
システム手段への要求されたサービスのアクセス
可能性を調整するステツプからなり、 オペレーテイングシステム手段は、要求された
サービスが、第2コンピユータの動作前にすでに
オペレーテイングシステム手段にアクセス可能で
あつたか、または、第2コンピユータの動作によ
つてはじめてオペレーテイングシステム手段にア
クセス可能になつたかに関わらず同一の方法で、
要求されたサービスをユーザに提供することを特
徴とする、サービス要求に応答してオペレーテイ
ングシステム手段にアクセス可能なサービスを提
供するオペレーテイングシステム手段を有する第
1コンピユータ上のユーザにサービスを提供する
方法。
[技術分野] 本発明は、概してコンピユータに関し、具体的
には通信網内のコンピユータのインタフエースに
関する。
[背景技術と問題点] ユーザ、つまりアプリケーシヨン・レベルのプ
ログラムにサービスの提供するのがコンピユータ
のオペレーテイング・システムの役割である。し
かし、コンピユータのオペレーテイング・システ
ムは、それが提供可能なサービスの種類が限られ
ることがしばしばある。例えば、小型のハーソナ
ル・コンピユータ(PC)では、そのPC自体の上
で直接利用できないサービスをユーザに提供でき
ないことが多い。このようなサービスの例として
は、資源を共有するような通信網に関するサービ
スである。
局所的に利用できないサービスも、2つの方法
のいずれかによれば、PCユーザに利用できるよ
うにすることが可能な場合も従来からあつた。
第1の方法は、サービスを得るためにとるべき
手続きをユーザがオペレーテイング・システムに
指示するものである。この方法では、ユーザ・プ
ログラムは、オペレーテイング・システムに必要
な指示を与えることができるように、そのPCの
環境と、その環境へのインタフエースとを知る必
要がある。この方法の大きな欠点は、ユーザ・プ
ログラムが可搬性を失い、環境やインタフエース
が代わるたびに、その変化を保証するためにプロ
グラムを変更する必要があることである。もう一
つの重大な欠点は、それ自体のサービスを提供す
る責任の所在である。ユーザをこの責任から解放
することがオペレーテイング・システムの第1の
目的であるにもかかわらず、現在はこれをユーザ
が負つていることである。
第2の方法は、局所的に利用できないサービス
の幾つかを提供することができる「付属物」をオ
ペレーテイング・システムに接続することであ
る。この付属物は、局所的に利用できないサービ
スに対するユーザの要求を受けて、オペレーテイ
ング・システムに代わつてそれを満足させるもの
である。つまり、その利用できないサービスに対
して、その付属物は、ユーザの観点からは別のオ
ペレーテイング・システムとして動作する。しか
し、この方法の欠点は、従来の付属物は、それが
あることを知つた上で、オペレーテイング・シス
テムとは別個に、そして恐らくは異なつたふうに
それと相互利用することをユーザに要求し、従つ
て最初にのべた方法と同様の負担を少なくとも幾
らかはユーザに負わせることである。もう一つの
欠点は、局所的に利用できないサービスを与える
目的で、この付属物がオペレーテイング・システ
ムの代わりを務めるため、オペレーテイング・シ
ステムの機能のかなりの部分を重複する必要があ
り、概して不足がちなPCのメモリ空間を浪費す
る一つの事情となることである。この方法がさら
に不利なのは、従来の付属物は提供可能なサービ
スの種類が限られていることである。例えば、そ
のPCに直接接続された単一のコンピユータ上で
局所的に利用可能なプリンタ・サービスしか提供
できない付属物もある。
最後に述べた欠点は、PCが通信網を構成する
ことを許さないので、重大である。コンピユータ
を通信網に相互接続することは、多くの利点があ
る。そうすることで、個々のコンピユータのユー
ザが、互いに通信することができるようになり、
また個々のコンピユータが、他のコンピユータと
の共用が可能な特殊化された資源及び能力を提供
できるようになる。
しかし、いかなる態様であれ通信網形成能力さ
え与えれば万能の策となるというわけではない。
特に、PCが大きな「メインフレーム」コンピユ
ータとのインタフエースをとることは、両方の性
能にとつて一般に損失となる。PCは、一般にシ
ングル・ユーザ用であり、従つて、早いユーザ応
答を有する傾向があるが、他方、メインフレーム
は、高い処理能力とスピードを持つ傾向がある。
しかし、多数のPCがメインフレーム・コンピユ
ータにインタフエースをとると、一般的に、メイ
ンフレームの限られた数のI/O(入力及び出力
の)ポートへの入出力アクセスをめぐる競合にお
いてPC間に起こる衝突と、その結果の待ち時間
のためにPC応答時間は低下する。同様に、多数
のPCがメインフレーム・コンピユータにインタ
フエースをとると、PCに要求されるI/O転送
によつて消費される処理能力及び時間のために、
メインフレームの処理能力も低下する。
この問題は、単にユーザにウインドウ環境を与
えるだけでは一般に解決されない。なぜなら、人
間であるユーザは、必要とする資源を得ようとす
ると、PCとメインフレームのどちらと対話しな
ければならないかを決めるためには、やはり、そ
の両方と対話しなければならないからである。人
間であれ、プログラムであれ、ユーザが、PCと
メインフレーム・コンピユータの両方と対話する
必要があると言うことは、ユーザがメインフレー
ムとの対話方法を知るだけでなく、PCを介して
間接的にそれを行う方法も知る必要があるという
点で、さらに不便である。
[解決法] 本発明は、従来の技術の問題点及び不便を解消
することを目的とする。本発明によれば、ユーザ
に対しアプリケーシヨン・プログラム等のサービ
スを提供するオペレーテイング・システム手段
(実例としては、MS−DOSにPCインタフエース
を加えたもの)を含む装置において、そのオペレ
ーテイング・システム手段とは区別され、(a)その
オペレーテイング・システム手段に向けられたサ
ービスに対するユーザの要求をとらえ、(b)有意義
な点としてユーザの介在なく、そのサービスのオ
ペレーテイング・システム手段へのアクセス可能
性を保証し、さらに(c)とらえた要求をオペレーテ
イング・システムに渡すための手段が、提供され
る。そこで、オペレーテイング・システム手段
は、その要求に従来のように応答し、それを満た
す。
この手段は、求められたサービスのオペレーテ
イング・システムへのアクセス可能性を保証する
ので、サービスが利用できない場合はOS手段へ
のサービスの利用可能性を獲得して、オペレーテ
イング・システム手段が提供するように設計され
ていないサービスをOS手段が提供することを可
能にし、それによつて、ユーザが利用できるサー
ビスを広げることを可能にする。この性質のサー
ビスの例としては、資源及びフアイルの共有、及
ひロツキング・サービスなどの通信網関連のサー
ビスがある。
この手段は、ユーザの介入のない動作を約束す
るので、必要とされるサービスは、ユーザに透過
的に提供される。つまり、要求されたサービスの
提供においてユーザがその手段の介在に気付く必
要なく、ユーザの動作環境を変えることなく、さ
らにその、オペレーテイング・システム手段が提
供するように設計され、手段の介在なしに提供す
ることができるサービスを得るために必要な種類
の作業以外に、別な種類の作業がユーザに求めら
れることもなく提供される。
この手段は、要求されたサービスをユーザに直
接提供するわけではなく、単にオペレーテイン
グ・システム手段がサービスを提供できるように
するだけであるから、この手段は、ユーザの動作
環境を変えず、また、オペレーテイング・システ
ム手段の機能の重複を避ける。むしろ、この手段
は、オペレーテイング・システム手段の機能を補
足するのみである。
実際に説明すると、この手段は、オペレーテイ
ング・システム手段を備えた第1のコンピユータ
(例えば、パーソナル・コンピユータ)と、第1
のコンピユータに通信できるように接続された第
2のコンピユータ(例えば、UNIX(登録商標)
オペレーテイング・システムを基本としたコンピ
ユータ)とを有する。第1の手段(例えば、第1
のコンピユータのオペレーテイング・システムに
おけるパツチ(部分的な修正))により、プログ
ラムの行うオペレーテイング・システム手段への
サービス要求をとらえ、その要求を第2のコンピ
ユータに知らせる。第2の手段は(例えば、第2
のコンピユータにおけるデイバイス・ドライバ、
リクエスト・サーバ、及びサービスを行う個々の
プロセス)は、その通知の受信に応じて、要求し
ているプログラムの介入はやはり必要とすること
なくオペレーテイング・システム手段のサービス
へ確実にアクセスできるようにし、第1の手段に
アクセスできることを知らせる。第1の手段は、
その知らせを受けると、今度はこれに応じて、と
らえた要求をオペレーテイング・システム手段に
渡す。第1のコンピユータに要求をとらえる仕組
みのみを含めることは、第1のコンピユータに施
さなければならない変更は最小限で済むので、比
較的簡単で費用もそれ程かからない上に、その手
段の機能及び装備の大部分、従つて複雑で高価な
部分を、別個のコンピユータに含めることが可能
となる。よつて、複数のコンピユータの第1の手
段からの要求通知を受信し、それらをアクセス可
能性を保証する実体(例えば、リクエスト・サー
バ及びサービスを行う個々のプロセス)に渡し、
さらに、要求されたサービスのアクセス可能性の
通知をそのアクセス可能性を保証する実体から受
信して、それを要求している第1の手段に渡す実
体を、第2の手段に含めることによつて、手段の
主な費用及び機能を複数の第1のコンピユータ間
で共有することが可能になり、従つて、この機能
を提供するコンピユータ1台当たりの費用をかな
り低くすることが可能となる。
具体的には、第2のコンピユータは、複数の構
成要素からなり、そのうちの1つは、第2の手段
を備え、他の構成要素に通信できるように接続さ
れている。従つて、この手段の便宜は、通信網全
体のコンピユータ及び、それによつて通信網関連
のサービスが、第1のコンピユータ・ユーザに提
供される。
説明するために開示した本発明の実施例によれ
ば、メインフレーム・コンピユータからPCの
I/Oリクエストの負担を取り除くと共に、メイ
ンフレームのためにPCの速度が低下しないよう
に、PCとメインフレームとの間に、両者の相互
作用を緩衝するインタフエースが与えられる。こ
のインタフエースは、PCとメインフレーム・コ
ンピユータとの間にあり、少なくとも1台のコン
ピユータを備えたコンピユータ媒体の3番目の層
である。第3層のコンピユータは、通信網に接続
されて、フアイル及び資源を提供すると共に、ロ
ツキング・サービスも提供する。第3層のコンピ
ユータは、PCのために、メインフレームのデー
タベースからフアイルをダウンロードし、PCユ
ーザによつて要求されたフアイルの格納場所を求
めてその中間層を探索し、第3層内部にあるその
フアイルを要求中のPCユーザがそれらをアクセ
ス可能な場所まで移動させ、いずれのPCユーザ
も第3層のいずれの点に接続されたいかなる資源
にもアクセスできるようにし、さらに一PCユー
ザによるアクセス排他性を資源またはフアイルに
与える。フアイル提供サービスによつて、各ユー
ザがメインフレームへのポートを持つ必要性が回
避される。資源提供サービスによつて、各ユーザ
は、資源を共有することが可能となる。また、ロ
ツキング・サービスによつて1つのフアイルまた
は資源にアクセスしようとする二人以上のユーザ
が衝突することが防止される。このインタフエー
スは、これらのサービスをユーザに透過的に提供
する、つまり人であるPCユーザもPCのアプリケ
ーシヨン・プログラムも、単にPCと対話するの
みであり、それらPC環境を変えることなく通常
どうりに対話するところに意義がある。
本発明の前記及びその他の利点及び特徴は、本
発明の具体的な実施例に関する以下の説明を添付
図面と共に参照すれば明らかとなる。
【図面の簡単な説明】
第1図は、本発明の具体的な実施例を含むコン
ピユータのシステムのブロツク図、 第2図は、第1図のパーソナル・コンピユータ
のメモリのブロツク図、 第3〜4図は、第1図のパーソナル・コンピユ
ータのパツチの流れ図、 第5図は、第1図の中間コンピユータのドライ
バのブロツク図、 第6〜8図は、それぞれ第5図のドライバのポ
ート制御、ポート・マスク、及びグローバル・マ
スク・レジスタのブロツク図、 第9〜12図は、それぞれ第5図のドライバの
オープン、クローズ、リード、及びライトのルー
チンの流れ図、 第13〜15図は、第5図のドライバの
IOCTLルーチンの流れ図、 第16図は、第1図の中間コンピユータのリク
エスト・サーバのブロツク図、 第17〜20図は、第16図のリクエスト・サ
ーバのリクエスト・スケジユーラの流れ図、 第21図は、第16図のリクエスト・サーバの
スケジユール管理サポート関数のRUNQルーチ
ンの流れ図、 第22図は、第16図のリクエスト・サーバの
ユーザ関数のLOCKREQの流れ図、 第23図は、第16図のリクエスト・サーバの
ユーザ関数のNETGET関数及びSNAGET関数
の流れ図、 第24図は、第16図のリクエスト・サーバの
ユーザ関数のRESRCGET関数の流れ図、 第25図は、第16図のリクエスト・サーバの
ユーザ関数の一般資源クラス関数の流れ図、 第26〜27図は、第1図のNETSVRのリク
エスタ部の流れ図、 第28〜31図は、RASSISTプロセスを含
む、第1図のNETSVRのアクセプタ部の流れ
図、 第32図は、第1図の中間コンピユータのメモ
リのAPISVRに関する部分のブロツク図、 第33〜36図は、第1図のAPISVERブロツ
ク図である。
[詳細な説明] システムの概要(第1図) 第1図に、コンピユータ網を示す。これは、複
数のパーソナル・コンピユータ10、複数の中間
または「部門サーバ」型のコンピユータ11、及
びデータベース13を備えたメインフレーム・コ
ンピユータ12からなる。パーソナル・コンピユ
ータと中間コンピユータとは通信媒体14によつ
て相互に接続されて、網を成している。各中間コ
ンピユータ11は、複数のPC10に接続され、
それらのPC10にサービスを行う。中間コンピ
ユータ11は、プリンタ16またはその他の装
置、または通信網リンクへのアクセス等をユーザ
にそのPCによつて提供する。1つ以上の中間コ
ンピユータ11が、それぞれ通信媒体15によつ
てメインフレーム・コンピユータ12に接続され
ている。
前記のようにする代わりに、それぞれが1つ以
上の中間コンピユータに接続された複数のメイン
フレーム・コンピユータを網に含めてもよい。
前記のコンピユータ網は、所望の任意の装置で
構成することが可能であつて、例えば、PC10
は、MS−DOSオペレーテイング・システム20
の下で動作するAT&T6300PCであり、中間コン
ピユータ11は、UNIXオペレーテイング・シス
テムの下で動作するAT&T3B2コンピユータで
あり、メインフレーム・コンピユータ12は、
IBM(登録商標)System/370のようなIBM機ま
たはIBM互換機であり、網通信媒体14は、AT
&T3BNET網であり、中間コンピユータ11と
メインフレーム・コンピユータ12とを相互接続
する媒体15は、システムズ・ネツトワーク・ア
ーキテクチヤ(SNA)リンクである。具体的に
は、PC10及び中間コンピユータ11は、
3BNETを介してルーカス(Locus)コンピユー
テイング・コーポレーシヨンのPCインターフエ
ース22によつて互いに通信しあう。PCインタ
フエース22は、オペレーテイング・システムの
カーネル・レベルで動作して、MS−DOSオペレ
ーテイング・システム20が提供できないオペレ
ーテイング・システム型のサービスを提供するの
で、PCインタフエースは、MS−DOSオペレー
テイング・システムと共に、PC10のオペレー
テイング・システム手段を構成していると考える
ことができる。
また、媒体14は、STARLAN網であり、イ
ンタフエース22は、AT&TのSTARLANク
ライアント/サーバソフトウエアである。
中間コンピユータ11は、網のフアイル及び資
源のサービス、網の資源及びフアイルのロツク、
及びメインフレーム・データベース・サービスを
複数の各PC及び相互に提供する。データベー
ス・サービスはメイン・フレーム・コンピユータ
12からフアイルを検索し、それらを中間コンピ
ユータ11に分配してデータベース13をフラツ
ト・フアイルに分割することによつて提供され
る。そして、それらのフアイルは、中間コンピユ
ータ11の間を移動させられて、メインフレー
ム・コンピユータ12との対話を必要とすること
なくアクセスされる。フアイル提供サービスは、
要求されたフアイルを求めて中間コンピユータを
全て探し、見付かつた場合、要求中のユーザがそ
のフアイルを使用できるように、要求中のPC1
0のサービスを行う中間コンピユータ11にフア
イルを移動させることによつて与えられる。この
ように、フアイルは、ユーザがメインフレーム・
コンピユータ12と対話することなくユーザから
ユーザへと渡される。資源提供サービスも、同様
に与えられる。即ち、要求された資源を求めて中
間コンピユータ11を全て探し、要求側のサービ
スを行う中間コンピユータ11から資源を保有し
ている中間コンピユータ11に要求がて転送さ
れ、そこで満足されるように、両方の中間コンピ
ユータ11間に論理的リンクを与える。PC10
同志の間の資源の共有が可能となるため、各PC
が、プリンタ、保存用記憶装置、及びメインフレ
ーム・コンピユータ12へのポート等を独自に持
つ必要がない。ロツキング・サービスは2人以上
のユーザが競合することがないように、フアイル
の使用を一度に一人のユーザのみに制限するため
に提供される。
UNIXオペレーテイング・システム30は、そ
れによつて制限された資源に対する順序だつた排
他的なアクセスを自動的に提供するので、資源の
ロツキングをわざわざ行う必要はない。しかし、
資源のアクセスの排他性が自動的には提供されな
いシステムにおいては、資源ロツキング・サービ
スをフアイル・ロツキング・サービスと同じ要領
で提供することができる。
前記のサービスをユーザに対し透過的に提供す
る主な構成要素は、各PC上のPCオペレーテイン
グ・システム(MS−DOS)のパツチ21、並び
に各中間コンピユータ11上にある、中間コンピ
ユータのオペレーテイング・システム(UNIX)
のドライバ31、アプリケーシヨン水準のリクエ
スト・サーバ32、及びアプリケーシヨン水準の
NETSVR33及びAPISVR34である。パツチ
21はオペレーテイング・システム20に対する
フアイル・サービスまたは資源・サービスの要求
を捕らえ、それらをインタフエース22を介して
関係する中間コンピユータ11に転送する。ドラ
イバ31は、複数のPC10のパツチ21をリク
エスト・サーバ32に橋渡しする。即ち、ドライ
バ31は、PC10から集めた要求をリクエス
ト・サーバ32に渡し、リクエスト・サーバ32
の応答を要求中のPC10に送り返す。そして、
リクエスト・サーバ32は要求されたサービスを
提供するために、要求されたフアイルまたは資源
を求めて中間コンピユータを探査して、他の中間
コンピユータ11やメインフレーム・コンピユー
タ12からPC上で利用できないフアイル及び資
源を獲得し、さらにフアイル及び資源のロツクや
アンロツクを行う。明確に言えば、リクエスト・
サーバ32、NETSVR33、及びAPISVR34
によつて、要求されたフアイル及び資源がオペレ
ーテイング・システム20及びインタフエース2
2にアクセスできることが保証されるのである。
パツチ(第2図〜4図) インタフエース22及び、それを介した中間コ
ンピユータ11は、通常のように追加デイスク・
ドライブとしてPC10に登録される。具体的に
は、PCのオペレーテイング・システム20は、
インタフエース22及び、それを介した中間コン
ピユータ11を仮想的な補助デイスク・ドライブ
とみなす。従つて、第2図に示したように、中間
コンピユータ11によつて提供されるべきサービ
スに対するPC10上のユーザ・プログラム20
0によるコールは、オペレーテイング・システム
20におけるEXIT及びデイスクのサービス・ル
ーチン202(本実施例では、DOS BIOSサー
ビス・ルーチン)を指し示すPCオペレーテイン
グ・システム割り込みベクトル201に写像され
る。
このように、フアイル・サービス及び資源サー
ビスに対するコールは、サービス・ルーチン20
2に写像されるが、これは、本実施例において、
プリンタ16以外の資源は、PC10上てフアイ
ルとして扱われるからである。しかし、プリン
タ・サービスに対するコールは、PC10上でPC
インタフエース22によつて処理される。
前記の割り込みベクトルの1つで、フアイル
(これにより、以降、資源も示すものとする)の
「open」コール及び「exit」コールの写像先のベ
クトルは、初期化の際に、これらのコールのサー
ビスを行うPCオペレーテイング・システムのル
ーチン202の1つではなくパツチ21を示すよ
うに、指示先が変更される。このようにして、パ
ツチ21は、サービス要求を捕らえることができ
るようになる。
パツチ21はPCメモリ210に駐在するプロ
グラムである。PC10のオペレーテイング・シ
ステム20が起動されたときのPC10の初期化
の際に、DOSのautoexec.batフアイルの自動実
行によつて、ユーザ・プログラム200と同様に
パツチ21のプログラム・テキストがユーザのメ
モリ空間にロードされる。第3図に移ると、
DOSのautoexec.batフアイルよつて始動された
パツチ21の初期実行によつてオペレーテイン
グ・システム20は、ステツプ298において
「open」及び「exit」コール・ベクトル201の
指示先を、PCメモリのパツチ21を示すように
変更する。また、パツチ21により、オペレーテ
イング・システム20は、ステツプ299において、
パツチ21が占めるメモリ空間を「終了/駐在続
行」システム・コールによつてオペレーテイン
グ・システム20のカーネル空間に写像する。こ
れにより、パツチ21のプロセスが、メモリ21
0に駐在し、その空間がオペレーテイング・シス
テム20により他の用途のために明け渡しを要求
されることがないことが保証される。
第3図及び第4図を考察すると、サービスに対
するユーザ(つまり、アプリケーシヨン水準の)
プログラム200の要求に応じて、ステツプ300
において、「open」及び「exit」コール・ベクト
ルがパツチ21を呼び出すと、パツチ21は、3
01〜303において、それが所定の補助デイス
ク・ドライブに向けられた「open」コールか、
または「exit」コールかを判定するために、その
要求を調べる。それらのいずれでもない場合、ス
テツプ331において、パツチ21は、パツチ21
が存在しない場合にベクトルによつて呼び出され
ていたはずのオペレーテイング・システム20の
サービス処理ルーチンを呼び出すのみで、とらえ
た要求を通常どうりに処理を行うルーチンに、そ
のまま渡す。
ステツプ301及び302において、とらえた要求が
補助デイスク・ドライブへの「open」コールで
あると判断された場合、パツチ21はステツプ
304において内部のスラグを調べ、関係付けられ
た中間コンピユータ11上のドライブ31が既に
開かれているかどうかを判定する。開かれていな
い場合、パツチ21は、ステツプ305で、そのフ
ラグをセツトし、次に、ステツプ306において、
オペレーテイング・システム20のシステム・コ
ールを行う。このシステム・コールは、パツチ2
1を呼び出した「open」コールと同じであるが、
唯一の違いは、ユーザ・プロセス200によつて
要求されたフアイルのフアイル名が、関係付けら
れた中間コンピユータ11のドライバ31のフア
イル名で置き換えられていることだけである。こ
の実施例においては、このフアイル名は/
DEV/PCである。このコールは、ドライバ31
を通常どうりに開くように作用する。
オペレーテイング・システム20は、このコー
ルに対して通常どうりに応答する。インタフエー
ス22を介して「open」を実行し、ドライバ3
1のアクセスの際に使用するフアイル・デイスク
リプタを返す。次に、パツチ21は、ステツプ
307において、ドライバのフアイル・デイスクリ
プタを用いてドライバ31を読む。オペレーテイ
ング・システム20に対し、フアイル・デイスク
リプタを引数として渡して「read」のオペレー
テイング・システム・コールを行う。オペレーテ
イング・システム20は、インタフエース22を
介して通常どうりに「read」を実行し、読んだ
データをパツチ21に返す。この情報は、ドライ
バ31が要求中のPC10に割り当てた、ドライ
バ31のポートのフアイル名(マイナー番号)で
ある。
ステツプ307において、ポート番号を得ると、
パツチ21は、ステツプ308において、オペレー
テイング・システム20に対し「close」のオペ
レーテイング・システム・コールを行い、そのド
ライバのフアイル・デイスクリプタを引数として
渡すことにより、ドライバ31を閉じる。オペレ
ーテイング・システム20は、このコールに対し
通常どうりに応答する。
また、PC10が中間コンピユータ11にログ
インしたときに、ポート番号が自動的にPC10
に割り当てられ、PC10が、ドライバ31にア
クセスする間中、そのポート番号を維持するなら
は、前記のステツプ304〜308は省くことができ
る。
パツチ21がステツプ304においてドライバ3
1は開いていると判断した場合に、またはステツ
プ308に続き、パツチ21は、ステツプ309におい
て、オペレーテイング・システム20に対し
「open」のオペレーテイング・システム・コール
を行い、割り当てられたポートのフアイル名を引
数として渡すことにより、割り当てられたポート
を開く。オペレーテイング・システム20は、通
常どうりに応答する。即ち、開く動作を行い、割
り当てられたポートのアクセスに使用するフアイ
ル・デイスクリプタを返す。
次に、パツチ21は、ステツプ310において、
オペレーテイング・システム20に対し、
「write」のオペレーテイング・システム・コール
を行い、引数として、ポートのフアイル・デイス
クリプタ、LOCKREQ要求、及びユーザが開く
ことを要求したフアイルのフアイル名を渡す。こ
の場合も、オペレーテイング・システム20は、
「write」動作を通常どうりに行い、その要求をイ
ンタフエース22を介してドライバ・ポートに書
き込む。ドライバ31が要求に応じると、オペレ
ーテイング・システム20は、完了コードをパツ
チ21に返す。ステツプ311において、パツチ2
1は、この完了コードを調べる。このコードによ
り、パツチ21は、要求の成否を知ることができ
る。
その要求がかなつた場合、ユーザの要求したフ
アイルが、いずれかの中間コンピユータ11に存
在し、かつ要求中のユーザにロツクされたことを
意味する。ステツプ319において、パツチ21の
指示により、オペレーテイング・システム20
は、この情報をPC画面上に表示する。次にパツ
チ21は、ステツプ320で、このユーザ・プロセ
ツサ200が開いた全てのフアイル名のリストに
追加することによつて、ロツクされたフアイルの
フアイル名を保存する。
ステツプ322において、パツチ21はそのポー
トを閉じるために、オペレーテイング・システム
20に対し「close」オペレーテイング・システ
ム・コールを行い、引数としてポートのフアイル
名を渡す。このコールに対し、オペレーテイン
グ・システム20は、通常どうりに応答する。
最後に、ステツプ331において、パツチ21は、
割り込みベクトル20によつて呼び出されていた
はずの、オペレーテイング・システム20のサー
ビス処理ルーチンを呼び出し、本来のユーザ・プ
ログラム200の要求をオペレーテイング・シス
テム20に渡した後、ステツプ333において終了
(exit)する。このユーザ要求に対して、オペレ
ーテイング・システム20は、通常どうりに応じ
て、補助デイスク・ドライブ上の要求されたフア
イルをインタフエース22によつて開く。
ステツプ311において、要求されたフアイルが
他のいずれかのユーザにロツクされていたために
要求が受け入れられなかつたことが、戻された終
了コードに示されている場合パツチ21は、ステ
ツプ314において、この情報をPC画面上に表示さ
せる。そして、パツチ21は、ドライバ・ポート
を閉じるために、ステツプ315において、オペレ
ーテイング・システム20に「close」オペレー
テイング・システム・コールを行い、引数として
そのポートのフアイル名を渡す。オペレーテイン
グ・システム20は、このコールに通常どうりに
応答する。次に、パツチ21は、ステツプ316に
おいて、ユーザにエラーを強制的に返す。即ち、
要求中のユーザにエラー・コードを送り、ユーザ
の要求を破棄する。そして、パツチ21は、ステ
ツプ333において終了する。
ステツプ311において、フアイルが中間コンピ
ユータ11上で発見されなかつたために要求が受
け入れられなかつたことが、戻された終了コード
に示されている場合、ステツプ312において、パ
ツチ21は、そのポートの新たな要求を書き込
む。つまり、オペレーテイング・システム20に
「write」オペレーテイング・システム・コールを
行い、引数として、ポートのフアイル・デイスク
リプタ、NETGET要求、及ひユーザによつて要
求されたフアイル名を渡す。オペレーテイング・
システム20は、再び、「write」動作を通常どう
りに実行する。
NETGET要求によつて、中間コンピユータ1
1のリクエスト・サーバ32は、網14全体の指
名されたフアイルまたは資源を求めるコールを、
NETGET33を介して全ての中間コンピユータ
に11に発する。リクエスト・サーバ32が、
NETGET要求に応答すると、オペレーテイン
グ・システム20は、パツチ21に終了コードを
返す。ステツプ313において、パツチ21は、こ
の終了コードを調べる。この終了コードによつ
て、NETGET要求の正否が示される。
要求がなかつた場合、フアイルまたは資源が、
いずれかの中間コンピユータ11上で発見され、
フアイルの場合であれば、それが要求中のユーザ
にロツクされたことを意味する。フアイルの場
合、そのフアイルは、中間コンピユータ11に送
られることになる。パツチ21は、ステツプ319
において、再びこの情報を表示させ、ステツプ
320において、資源またはロツクされたフアイル
のフアイル名を保存し、ステツプ322において、
ポートを閉じるために、オペレーテイング・シス
テム20に「close」オペレーテイング・システ
ム・コールを行い、引数として、ポートのフアイ
ル名を渡し、ステツプ331において、サービス処
理ルーチンを呼び出して本来のユーザの要求をオ
ペレーテイング・システム20に伝え、そして、
ステツプ333において終了する。
ステツプ313において、フアイルが発見されて
も、それが他の者にロツクされていることが、戻
された終了コードに示されている場合、ステツプ
314〜316において、パツチ21は、フアイルがロ
ツクされている事実に関する情報及び現在のフア
イルの所有者の識別情報を表示し、オペレーテイ
ング・システム20に「close」コールを行つて
ドライバ・ポートを閉じ、ユーザにエラーを返し
た後、ステツプ333において終了する。
ステツプ313において、フアイルまたは資源が
いずれかの中間コンピユータ11上でも発見され
なかつたために要求が果たされなかつたことが、
戻された終了コードに示されている場合、パツチ
21は、ステツプ317において、再びポートに新
たな要求を書き込む。即ち、オペレーテイング・
システム20に「write」コールを行い、引数と
して、ポートのフアイル・デイスクリプタ、
SNAGET要求、及ひユーザが要求したフアイル
名を渡す。オペレーテイング・システム20は・
再度、「write」動作を従来どうりに行う。
このSNAGET要求の結果、リクエスト・サー
バ32は、メインフレーム・コンピユータ12の
データベース13からAPISVR34を介して要
求されたフアイルを得ようとする。リクエスト・
サーバ32がSNAGET要求に応答を返すと、オ
ペレーテイング・システム20は、終了コードを
返すが、この終了コードにより、ステツプ318に
おいて、SNAGET要求の正否がパツチ21に再
び示される。
要求がフアイルに対してであり、それが果たさ
れた場合、これは、ロツクされていないフアイル
または対応するデーターベースの記録が、メイン
フレーム・コンピユータ12のデーターベース1
3において発見され、そこから取り出されて、中
間コンピユータ11に送られ、要求しているユー
ザにロツクされることを意味する。要求が資源に
対してであり、それが果たされた場合、その資源
がメインフレーム・コンピユータ12上で発見さ
れたことになる。パツチ21は、ステツプ319に
おいて、この情報を表示し、ステツプ322におい
て、オペレーテイング・システム20に「close」
コールを行うことによつてポートを閉じ、ステツ
プ331において、サービス処理ルーチンを呼び出
して本来の要求をオペレーテイング・システム2
0に送つた後、ステツプ333において終了する。
ステツプ318において、要求されたフアイルま
たはデーターベースの記録が発見されても、メイ
ンフレーム・コンピユータ12によつてロツクさ
れていることが、戻された終了コードに示されて
いる場合、パツチ21は、ステツプ314〜316にお
いて、フアイルがロツクされている事実に関する
情報を表示し、ドライバ・ポートを閉じ、さらに
ユーザにエラーを強制的に送つた後、ステツプ
333において終了する。
ステツプ318において、SNAGET要求がかな
えられなかつたことが、戻された終了コードに示
されている場合、資源、フアイル、またはデータ
ーベースの記録が、発見されなかつたことを意味
する。この場合、パツチ21はステツプ321にお
いて、この情報をPC画面に表示し、ステツプ322
において、オペレーテイング・システム20に
「close」コールを行うことによつてドライバ・ポ
ートを閉じ、ステツプ331において、サービス処
理ルーチンを呼び出して、本来の要求をオペレー
テイング・システム20に送つた後、ステツプ
333において終了する。オペレーテイング・シス
テム20が、その要求を満足させようとすると、
失敗する。換言すれば、フアイルまたは資源が利
用できないことを発見する。そこで、これをユー
ザに知らせる。
ユーザの要求が「exit」コールであるとわかつ
た場合、パツチ21は、ステツプ334において、
要求しているプロセス200について記憶した情
報を調べ、要求しているプロセスが開いているフ
アイルがあるかどうかを判定する。ない場合、パ
ツチ21はステツプ335において、単に終了する。
要求中のプロセスが開いているフアイルがあれ
ば、パツチ21は、それらの開いているフアイル
を閉じ、ロツクを解除する。最初に、ステツプ
323において、パツチ21は、割り当てられたド
ライバ・ポートを開くために、オペレーテイン
グ・システム20に「open」オペレーテイン
グ・システム・コールを行い、引数として、ドラ
イバ・ポートのフアイル・デイスクリプタを渡
す。オペレーテイング・システム20が復帰する
とき、これらのフアイルを他のユーザが使用でき
るように解放するために、ステツプ324において、
パツチ21は、オペレーテイング・システム20
に「write」コールを行い、引数として、
UNLOCKREQコマンド及びロツクされているフ
アイルのフアイル名を渡すことによつて、要求中
のユーザにロツクされている全てのフアイルの名
前と共に「unlock」要求をポートに書き込む。
オペレーテイング・システム20が終了コードと
共に復帰するとき、パツチ21は、ステツプ325
において、フアイルのロツクが解除されたことを
示す情報をPC画面上に表示する。次に、パツチ
21は、ステツプ326において、ドライバ・ポー
トを閉じるために、オペレーテイング・システム
20に「close」コールを行い、引数としてポー
トのフアイル・デイスクリプタを渡す。次に、パ
ツチ21は、ステツプ327において、ステツプ306
の場合と同様にしてドライバ31を開く。そし
て、ステツプ328において、割り当てられたポー
トのポート番号をドライバ31に書き込み、割り
当てられたポートを解放する。オペレーテイン
グ・システム20に「write」オペレーテイン
グ・システム・コールを行い、引数として、ドラ
イバのデイスクリプタ、及び割り当てられたドラ
イバ・ポートのフアイル名を渡す。次に、パツチ
21はステツプ329において、ステツプ308と同様
にしてドライバ31を閉じる。また、ステツプ
330らおいて、パツチ21は、ステツプ304でセツ
トしたフラグを解除する。最後に、パツチ21
は、サービス処理ルーチンを呼び出し、ユーザの
exit要求をオペレーテイング・システム20に送
り、ステツプ333において終了する。オペレーテ
イング・システム20は、このユーザのexit要求
を通常どうりに処理する。
また、パツチ21の機能は、インタフエース2
2とオペレーテイング・システム20との間のパ
ツチとして実現する代わりに、インタフエース2
2のPCに駐在する部分に実現することもできる。
プリンタ16のサービスに対するユーザ・プロ
グラム200の要求の場合、その要求は、PC1
0上のPCインタフエース22によつてとらえら
れ、これによつて、中間コンピユータ11上の
PCインタフエース22に送られる。中間コンピ
ユータ11上では、インタフエース22が、ライ
ン・プリンタ・プロセス(LPT)を呼び出し、
それに引数として印字されるべきフアイルのフア
イル名を渡す。そして、ライン・プリンタ・プロ
セスは、中間コンピユータ11上のプリンタ16
の有無の検査に移り、プリンタを見付けた場合
は、その要求に応える。ライン・プリンタ・プロ
セスが、中間コンピユータ11上でプリンタ16
を見つけられない場合、ブロツク304〜322
においてパツチ20に対して図解した要領とほぼ
同様の要領で、要求されたサービスをドライバ3
1及びリクエスト・サーバ32を介して獲得する
ことになる。LPTプロセスは、「RESRC 1
LPT 1 FILENAME」の書式の要求をドライ
バ31に書き込む。しかし、パツチ21とは異な
り、ライン・プリンタ・プロセスは、ドライバ3
1との通信を、オペレーテイング・システム20
を介して直接行うのであり、オペレーテイング・
システム20及びインタフエース22を介して間
接的に行うのではない。
ドライバ(第5図〜15図) 中間コンピユータ11が、PC10のオペレー
テイング・システム20にとつて、追加のデイス
ク・ドライブ、即ち仮想的なデイスク・ドライブ
「D」のような補助ドライブとして見えるのに対
し、PC10は、インタフエース22を介して中
間コンピユータ11に登録され、中間コンピユー
タ11のオペレーテイング・システムにとつて
は、普通のユーザ・プロセスとして映る。
ドライバ31は、複数のPC10ユーザ・プロ
グラム200とリクエスト・サーバ32との間
で、媒体として、即ち、通信のための多重化され
たパイプとして動作する。また、ドライバ31
は、リクエスト・サーバ32によつて提供される
サービスを利用するライン・プリンタ・プロセス
のような、中間コンピユータ11のリクエスト・
サーバ32のプロセスへの橋渡しを行う。PC1
0は、PCインタフエース22を介して中間コン
ピユータ11のオペレーテイング・システム30
と通信を行い、このオペレーテイング・システム
30が、さらにドライバ31と通信を行う。ま
た、リクエスト・サーバ32は、アプリケーシヨ
ン水準のプロセスであるが、これも、オペレーテ
イング・システム30を介してドライバ31と通
信を行う。
ドライバ31は、中間コンピユータ11のオペ
レーテイング・システム30にとつては、UNIX
システムの通常のキヤラクタ・デイバイス・ドラ
イバとして映る。このようなドライバは、1986年
プレンテイス・ホール社発行のモーリス・J・バ
ークス(Maurice J.Bach)による「UNIXオペ
レーテイング・システムの設計」の第10章に説明
されている。
第5図に示すように、ドライバ31は、多重ポ
ートのドライバである。番号付きのデバイス・ポ
ート501は、中間コンピユータ11のプロセス
及びPC10にとつてドライバ31への入り口点
の役を果たす一方、制御/状態ポート502は、
リクエスト・サーバ32のための入り口点の役を
果たす。番号のないデイバイス・ポート500
は、プロセス及びPC10がリクエスト・サーバ
32との通信に使用するために番号付きデイバイ
ス・ポートを獲得するために使用するという点
で、特殊である。デイバイス・ポート500及び
501は、プロセス及びPC10にとつて普通の
シーケンシヤル・フアイルのように見える。従つ
て、PCインタフエース22は、そのフアイル操
作能力によつてポート500及び501を読んだ
り書いたりすることができる。しかし、番号付き
ポート501は、制御/状態ポートを介してリク
エスト・サーバ32によつて定義されるプロトコ
ルの下で動作するFIFO(先入れ先出し)バツフア
のように動作する。
ドライバ31は、キヤラクタ・デイバイス・ド
ライバに対する標準UNIXシステムのリード、ラ
イト、オープン、クローズ、及び入出力制御
(IOCTL)のコールを処理するオペレーテイン
グ・システム・カーネル(核)のルーチンの集ま
りを含んでいる。ドライバ31は、複数のプロセ
スやPC10が複数の資源要求をリクエスト・サ
ーバ32に送ることを可能にし、さらに、バツフ
ア、UNIXオペレーテイング・システムの基本構
成、及び制御/状態ポート502を通して順序性
を実現しながら、戻されるべき要求に応答する。
また、制御/状態ポート502は、番号付きのデ
イバイス・ポート501からの刺激に対するドラ
イバ31の反応をプログラムするためにも使用さ
れる。
「未使用ポート」のデータ構造体(未使用ポー
ト・リスト)503は、プロセスにもPC10に
も割り当てられていない番号付きポート501の
リストを含む。番号のないポート500を介して
ドライバ31にアクセスを行うには、この構造体
(未使用ポート・リスト)503を利用する。
バツフア・プール520は、番号付きポート5
01によつて使用される複数のバツフアを含む。
これらのバツフアは、プロセス、PC10、及び
リクエスト・サーバ32によつて番号付きポート
501に書き込まれた情報を格納するために使用
される。
各番号付きポート501は、ポート関連の情報
を含むポート別データ構造体504に関係付けら
れている。入力バツフア・ポインタ505は、
PC10からリクエスト・サーバ32に渡す要求
を保持する入力バツフア521として使用される
プール520内部のバツフアを指し示す。出力バ
ツフア・ポインタ506は、リクエスト・サーバ
32からPC10に渡す要求応答を保持する出力
バツフア522として使用されるプール520内
部のバツフアを指し示す。PC10は、入力バツ
フア521が空になるより早く書き込もうとする
と、一般に、バツフアが溢れないように休止させ
られる。また、バツフア521が一杯になるより
早くバツフアを読むプロセスも、一般に休止させ
られる。出力バツフア522も、同様にに動作す
る。即ち、バツフア522が一杯になるより早く
読むPC10は、一般に休止させられ、またバツ
フア522をPC10が読むより早く、これに書
き込むプロセスも、一般に休止させられる。PC
及びプロセスは、番号付きポート501に対し、
首尾よくリードやライトを行うと、オペレーテイ
ング・システム30の標準的なリターン・コード
を受け取る。
入力バツフア521に収容可能な最大のデータ
量は、ある調節可能なパラメータによつて制御さ
れる。出力バツフア522に収容可能な最大のデ
ータ量を制御する調節可能なパラメータもある。
これらの調節可能なパラメータは、システムの初
期化の際にマスター・フアイルによつて変更する
か、またはIOCTLシステム・コールによつて動
的に変更することができる。
ポート制御レジスタ507には、PC10から
来るいろいろな作用によりPC10に対し取るべ
き動作が記述されている。レジスタ507のフラ
グ領域を第6図に示す。フラグの意味は次のとう
りである。
RTN600:セツトされている場合は、リード
及びライトのシステム・コール時に、リター
ン・コード・レジスタ510に指定されたリタ
ーン・コードを使用し、セツトされていない場
合は、標準のUNIXシステム・リターン・コー
ドを送る。
A−WRT601:セツトされている場合は、ポ
ート501のライト時に入力バツフア521が
一杯になると、PC10を休止(スリーブ)さ
せ、セツトされていない場合は、失敗コードを
返す。
A−RD602:セツトされている場合は、ポー
ト501のリード時に入力バツフアが一杯にな
ると、PC10を休止させ、セツトされていな
い場合は、失敗コードを返す。
WRT603:セツトされている場合は、ポート
501のライト時に、PC10を休止させ、セ
ツトされていない場合は、休止させない。
RD604:セットされている場合は、ポート5
01のリード時に、PC10を休止させ、セツ
トされていない場合は、休止させない。
CLS605:セツトされている場合は、ポート5
01のクローズ時に、PC10を休止させ、セ
ツトされていない場合は、休止させない。
OPN606:セツトされている場合は、ポート
501のオープン時に、PC10を休止させ、
セツトされていない場合は、休止させない。
ポート・マスク・レジスタ508は、番号付き
ポート上で行われる動作のうちの何によつて、制
御/状態ポート502で休止しているもの(例え
ば、リクエスト・サーバ32)に、休止を終了さ
せる(復活させる)ものを送るべきかを指定す
る。レジスタ508のフラグ領域を第7図に示
す。フラグの意味は、次の通りである。
A−WRT700:セツトされている場合は、出
力バツフア522が一杯のときにリクエスト・
サーバ32がポート501に書き込む場合、リ
クエスト・サーバ32を休止させ、セツトされ
ていない場合は、休止させない。
A−RD701:セツトされている場合は、入力
バツフア521が空のときにリクエスト・サー
バ32がポート501を読み出す場合、リクエ
スト・サーバ32を休止させ、セツトされてい
ない場合は、休止させない。
WRT702:セツトされている場合は、PC10
のポート501へのライト時にリクエスト・サ
ーバ32を復活(の休止を終了)させ、セツト
されていない場合は、復活させない。
RD703:セツトされている場合は、PC10の
ポート501からのリード時にリクエスト・サ
ーバ32を復活させ、セツトされていない場合
は、復活させない。
CLS704:セツトされている場合は、PC10
によるポート501のクローズ時にリクエス
ト・サーバ32を復活させ、セツトされていな
い場合は、復活させない。
OPN705:セツトされている場合は、PC10
によるポート501のオープン時にリクエス
ト・サーバ32を復活させ、セツトされていな
い場合は、復活させない。
グローバル・マスク・レジスタ509に設定さ
れたビツトによつて、番号付きポート501で行
われる動作に対し全般的に作用する応答が制御さ
れる。グローバル・マスク・レジスタ509は、
個々のポート・マスク・レジスタ508に優先す
る。レジスタ509のフラグ領域を第8図に示
す。フラグの意味は次のとおりである。
A−WRT800:ゼロの場合は、制御にポー
ト・マスク・レジスタ508を使用する。01の
場合は、入力バツフア522が一杯ならばリク
エスト・サーバ32によるポート501のライ
ト時にリクエスト・サーバ32を休止させ、10
の場合は、休止させない。
A−RD801:ゼロの場合は、制御にポート・
マスク・レジスタ508を使用する。01の場合
は、入力バツフア521が空ならばリクエス
ト・サーバ32によるポート501のリード時
にリクエスト・サーバ32を休止させ、10の場
合は、休止させない。
WRT802:ゼロの場合は、制御にポート・マ
スク・レジスタ508を使用する。01の場合
は、PC10によるポート501のライト時に
リクエスト・サーバ32を復活させ、10の場合
は、復活させない。
RD803:ゼロの場合は。制御にポート・マス
ク・レジスタ508を使用する。01の場合は、
PC10によるポート501のリード時にリク
エスト・サーバ32を復活させ、10の場合は、
復活させない。
CLS804:ゼロの場合は、制御にポート・マス
ク・レジスタ508を使用する。01の場合は、
PC10によるポート501のクローズ時にリ
クエスト・サーバ32を復活させ、10の場合
は、復活させない。
OPN805:ゼロの場合は、ポート・マスク・
レジスタ508を使用する。01の場合は、PC
10によるポート501のオープン時にリクエ
スト・サーバ32を復活させ、10の場合は、復
活させない。
リターン・コード・レジスタ510は、リード
動作及びライト動作に対して標準UNIXシステム
のリターン・コード以外のリターン・コードが望
ましいときに関数が返すべき値を保持するもので
ある。
サービス・キユー530には、リクエスト・サ
ーバ32からのサービスを待機中の番号付きポー
ト501のリストが保存されている。リクエス
ト・サーバ32によつて行われる種々のIOCTL
コール(後述)によつて、サービス・キユー53
0の内容がリクエスト・サーバ32に返される。
パツチ21との関係において論じると、PC1
0が最初にするべきことは、リクエスト・サーバ
32との通信に使用する番号付きポート501を
獲得することであるが、この割り当てられた番号
付きポート501は、ユーザ、プログラムの出口
で、放棄しなければならない。同様に、中間コン
ピユータ11のプロセスも、ドライバ31を介し
てリクエスト・サーバ32へのアクセスを獲得す
ることから始める必要がある。ドライバ31は、
中間コンピユータ11のプロセスとPC10とを
区別しない。従つて、以下の議論は、PC10に
言及している限り、中間コンピユータ11のプロ
セスのような、ドライバ31のいかなるユーザに
対しても等しく当てはまるものとする。
PC10は、番号付きポート501の獲得また
は放棄のためには、特殊な番号無しポート500
を介してドライバ31に入る必要がある。番号無
しポート500を介した番号付きポート501の
獲得及び放棄のために使用されるシステム・コー
ルは、標準UNIXシステムのオープン、クロー
ズ、リード及びライトのコールである。
これらのコールは、PC10が番号付きポート
501でリクエスト・サーバ32からサービスを
得るために利用することもできる。オープン・コ
ール及びクローズ・コールは、同様にリクエス
ト・サーバ32も、制御/状態ポート502にお
いて利用することができる。しかし、リクエス
ト・サーバ32は、制御/状態ポート502では
リードまたはライトのコールは利用できないの
で、ドライバ31に関する全ての動作を、いろい
ろな種類のIOCTLコールによつて行う必要があ
る。
オープン、クローズ、リード、ライト及び
IOCTLのコールを処理する、ドライバ31のル
ーチンは、第9図〜15図に図示する。
第9図に示すように、ステツプ900において、
オペレーテイング・システム30の「open」コ
ール処理ルーチンによつて呼び出されると、ドラ
イバ31のopenルーチンは、呼び出しの一部と
して受け取つた引数を調べて、開かれたドライバ
31ポートの種類を判定する。番号無しポート5
00が開かれた場合、ステツプ901において、オ
ペレーテイング・システム30は、要求中のPC
10を番号無しポート500に自動的に接続する
ので、ドライバ31は何もする必要がない。従つ
て、ドライバ31は、ステツプ914において、単
にオペレーテイング・システム30に終了コード
を返すのみである。
制御/状態ポート502が開かれた場合、ステ
ツプ902において、そのオープン・ルーチンは、
内部でドライバ31に実行中として印を付け、ス
テツプ914において、オペレーテイング・システ
ム30に終了コードを返す。
番号付きポートが開かれた場合、ステツプ904
において、オープン・ルーチンは、そのポート番
号が有効か否か、即ち、ポート番号が存在するポ
ート501の番号であり、かつそのポート501
が割り当てられているかどうかを調べる。有効で
ない場合、オープン・ルーチンは、ステツプ909
において、オペレーテイング・システム30にエ
ラーのリターン・コードを返す。ポート番号が有
効である場合、ステツプ905において、オープ
ン・ルーチンは、ドライバ31に実行中の印が付
いているか否か(ステツプ903を参照)を調べる。
印がない場合、オープン・ルーチンは、ステツプ
909において、レジスタ507のRTN領域600に
よつて指定されたエラー・リターン・コードをオ
ペレーテイング・システム30に返す。ドライバ
31が実行中の場合、オープン・ルーチンは、ス
テツプ906において、具体的には、そのPC10の
識別符号を、そのポートのポート別データ構造体
504に入れることによつて、そのポート501
をそれを開いている特定のPC10に結合する。
次に、オープン・ルーチンは、ステツプ907に
おいて、ポート501を開いたことに応じてリク
エスト・サーバ32の休止状態を終了させるべき
か否かを調べる。オープ・ルーチンは、初めにグ
ローバル・マスク・レジスタ509のOPN領域
805を調べ、その値がゼロである場合に限り、ポ
ート・マスク・レジスタのOPN領域を調べて、
前記の判断を行う。リクエスト・サーバ32を復
活させるべきでない場合、オープン・ルーチン
は、ステツプ911において、開かれたポートのポ
ート制御レジスタ507のOPNビツト606を
調べて、要求中のPC10がオープン・コール時
に休止させるべきか否かを判断する。休止させる
必要がない場合、オープン・ルーチンは、ステツ
プ914において、単に、成功終了コードをオペレ
ーテイング・システム30に返す。コール時に
PC10を休止させる必要がある場合、オープ
ン・ルーチンは、ステツプ912において、オペレ
ーテイング・システム30のsleep関数を依頼し、
このオープン・ルーチンも含めたPC10に関す
る状況を休止させ、このルーチン自体がその一部
である前記の状況がステツプ913でリクエスト・
サーバ32の動作によつて復活させられるまで休
止し、ステツプ914において、オペレーテイン
グ・システム30に終了コードを返す。
ステツプ907においてリクエスト・サーバ32
を復活させることになつている場合、オープン・
ルーチンは、ステツプ908において、開かれてい
るポートのポート番号をサービス・キユーに入れ
る。次に、オープン・ルーチンは、ステツプ910
において、オペレーテイング・システム30の復
活(wakeup)関数を呼び出すことによつてリク
エスト・サーバ32を復活させた後、ステツプ
911に進む。
「close」システム・コールによつて、ポート
500〜502は閉じた状態になる。第10図に
示すように、ステツプ1000においてオペレーテイ
ング・システム30の「close」コール処理ルー
チンによつて呼び出されると、ドライバ31のク
ローズ・ルーチンは、その呼び出しの一部として
受け取つた引数を調べて、ドライバ31のポート
が開かれているか否かを判断する。番号無しポー
ト500が開かれている場合、ステツプ1001にお
いて、オペレーテイング・システム30の
「close」コール処理ルーチンが、必要な全ての作
業を行うので、ドライバ31は、何もする必要が
ない。従つて、ドライバ31は、ステツプ1016に
おいて、単に終了コードをオペレーテイング・シ
ステム30に返すのみである。
ステツプ1002において制御/状態ポート502
が閉じられている場合、クローズ・ルーチンは、
ステツプ1003において、ドライバ31に関する全
般的な情報を含むデータ構造体(図示せず)にお
いてドライバ31に非実行中の印を付け、さらに
ステツプ1016において、オペレーテイング・シス
テム30に終了コードを返す。
番号付きポート501が閉じられている場合、
クローズ・ルーチンは、ステツプ1004において、
そのポート番号が有効か否かを調べる。有効でな
い場合、クローズ・ルーチンは、ステツプ1008に
おいて、オペレーテイング・システム30にエラ
ー・コードを返す。
そのポート番号が有効である場合、クローズ・
ルーチンは、ステツプ1009において、ポート50
1の番号とPC10との結合、(第9図のステツプ
906を参照)を取り消す。次に、クローズ・ルー
チンは、ステツプ1010において、ポートを閉じる
時にリクエスト・サーバ32を復活させる必要が
あるか否かを調べる。クローズ・ルーチンは、初
めに、グローバル・マスク・レジスタ509の
CLS領域804を調べ、その値がゼロである場合に
限り、ポート・マスク・レジスタ508のCLS領
域704を調べて、前記の判断を行う。リクエスソ
ト・サーバ32を復活させる必要がない場合、ク
ローズ・ルーチンは、ステツプ1013において、閉
じられたポートのポート制御レジスタ507の
CLSビツト605を調べて、クローズ・コールの
際に要求中のPC10を休止させるか否かを判断
する。休止させない場合、クローズ・ルーチン
は、ステツプ1016において、単にオペレーテイン
グ・システム30に終了コードを返す。クローズ
時にPC10を休止させる場合、クローズ・ルー
チンは、ステツプ1014において、オペレーテイン
グ・システム30のスリープ関数を依頼して、こ
のクローズ・ルーチンを含めたPC10に関する
状況を休止させ、このルーチン自体がその一部で
ある前記の状況がステツプ1015でリクエススト・
サーバ32の動作によつて復活されるまで、休止
した後、ステツプ1016において、オペレーテイン
グ・システム30に終了コードを返す。
ステツプ1010においてリクエスト・サーバ32
を復活させることになつた場合、クローズ・ルー
チンは、ステツプ1011において、閉じているポー
トのポート番号をサービス・キユー530に入れ
る。次に、クローズ・ルーチンは、ステツプ1012
において、オペレーテイング・システム30の復
活関数を呼び出すことによつてリクエスト・サー
バ32を復活させた後、ステツプ1013に進む。
第11図に示すように、ステツプ1100におい
て、オペレーテイング・システム30の「read」
処理ルーチンによつて呼び出されると、ドライバ
31のリード処理ルーチンは、受け取つた引数を
調べて、ドライバ31のいずれのポートが読まれ
ているかを判断する。読まれているのが番号無し
ポート500の場合、リード・ルーチンは、ステ
ツプ1101において、未使用ポート・リスト503
にアクセスを行い、そこから未使用のポート50
1の番号を得る。ステツプ1103において、使用可
能なポート501がないと判断した場合、ステツ
プ1108において、オペレーテイング・システム3
0にエラー・コードを返す。未使用のポート50
1を得た場合、ステツプ1104において、そのポー
ト501を割り当てる。具体的には、未使用ポー
ト・リスト503において、そのポートに割り当
てた印を付ける。次に、ステツプ1105において、
そのポートの番号をオペレーテイング・システム
30に返す。この番号は、割り当てられたポート
501のマイナー・デイバイス番号の役を果た
し、オペレーテイング・システム30は、この番
号を要求中のPC10に返す。
ステツプ1106において、読まれているのが制
御/状態ポートである場合、リード・ルーチン
は、ステツプ1108において、オペレーテイング・
システム30にエラー・コードを返す。ポート5
02を読むことのできるのは、IOCTLコールだ
けである。
読まれているのが番号付きポートである場合、
リード・ルーチンは、ステツプ1107において、そ
のポート番号が有効であるか否かを調べる。有効
でない場合、リード・ルーチンは、ステツプ1108
において、エラー・コードを返す。
ポート番号が有効である場合、リード・ルーチ
ンは、ステツプ1122において、ポート501の読
み出しに応じてリクエスト・サーバ32を復活さ
せるべきか否かを調べる。リード・ルーチンは、
まずグローバル・マスク・レジスタ509のRD
領域803を調べ、その値がゼロの場合に限り、ポ
ート・マスク・レジスタ508のRD領域703を
調べて、前記の判断を行う。リクエスト・サーバ
32を復活させないことになつた場合、リード・
ルーチンは、ステツプ1125において、レジスタ
507のRDビツト604を調べて、要求中のPC1
0を全てのリード時に休止させるか否かを判断す
る。しかし、ステツプ1122においてリクエスト・
サーバ32を復活させることになつている場合、
リード・ルーチンは、ステツプ1123において、読
まれているポート501の番号をサービス・キユー
530に入れた後、ステツプ1124において、オペ
レーテイング・システム30の復活関数を呼び出
すことによつて、リクエスト・サーバ32を復活
させる。そして、リード・ルーチンは、ステツプ
1125に進む。
ステツプ1125において、要求中のPC10を休
止させることになつている場合、リード・ルーチ
ンは、ステツプ1126において、オペレーテイン
グ・システム30のスリープ関数を呼び出して、
このリード・ルーチンを含めたPC10に関する
状況を休止させ、そして、このルーチン自体がそ
の一部となつている前記の状況がステツプ1127で
リクエスト・サーバ32の動作によつて復活させ
られるまで、休止する。
ステツプ1125で、要求中のPC10を休止させ
ないことになつた場合、またはステツプ1127に続
いて、リード・ルーチンは、ステツプ1110におい
て、ポート出力バツフア522が空であるか否か
を判断するために、そのバツフアを調べる。空の
場合、読むことができるデーヘタがないことにな
るので、リード・ルーチンは、ステツプ1111にお
いて、ポートの制御レジスタ507のA−RDビ
ツト602を調べて、行うべき動作を決定する。
ビツト602がセツトされていない場合、リー
ド・ルーチンは、ステツプ1112において、読んだ
データが皆無であつたことの指示をオペレーテイ
ング・システム30に返す。ビツト602がセツ
トされている場合、リード・ルーチンは、ステツ
プ1114において、オペレーテイング・システム3
0のスリープ関数を呼び出して、PC10の状況
を休止させ、さらに、ステツプ1115においてポー
トの出力バツフア522にデータを書き込むリク
エスト・サーバ32の動作によつて前記の状況が
復活されるまで休止する。
リード・ルーチンが、ステツプ1115において、
復活するか、またはステツプ1110でポートの出力
バツフア522が空でないことがわかつた場合、
リード・ルーチンは、ステツプ1116において、要
求中のPC10に関係付けられ、かつリード・ル
ーチンへのコールの引数として指定されたバツフ
アに出力バツフア522からデータをコピーす
る。このコピーは、リード・ルーチンへのコール
の引数によつて指定された数に達するまで、可能
な限りのバイト数だけ行われる。次に。リード・
ルーチンは、ステツプ1121において、ステツプ
1116でコピーしたデータのバイト数をオペレーテ
イング・システム30に返す。
第12図に示すように、ステツプ1200におい
て、オペレーテイング・システム30の「write」
コール処理ルーチンによつて呼び出されると、ド
ライバ31のライト・ルーチンは受け取つた引数
を調べて、ドライバ31のポートが書かれつつあ
るか否かを判断する。書かれるのが番号無しポー
ト500であるとステツプ1201でわかつた場合、
ライト・ルーチンは、ステツプ1202において、引
数として渡されたポート501の番号を調べてそ
の有効性を判断する。有効ならば、ライト・ルー
チンは、ステツプ1203において、PC10への割
り当てに利用できる未使用のポート501として
印を付けることによつて、そのポートの番号への
割当を解除する。次に、ライト、ルーチンは、ス
テツプ1204において、オペレーテイング・システ
ム30に終了コードを返す。ステツプ1202におい
て、そのポート番号が有効でないとわかつた場
合、ライト・ルーチンは、ステツプ1207におい
て、エラー・リターン・コードを返す。
制御/状態ポート502が書かれつつある場
合、ライト・ルーチンは、ステツプ1207におい
て、オペレーテイング・システム30にエラー・
コードを返す。ポート502は、IOCTLコール
を介してのみ書き込むことができる。
番号無しポートが書かれつつある場合、ライ
ト・ルーチンは、ステツプ1206において、ポート
番号の有効性を判断する。有効でない場合、ライ
ト・ルーチンは、ステツプ1207において、エラ
ー・コードを返す。
ポート番号が有効である場合、ライト・ルーチ
ンは、ステツプ1222において、ポートの書き込み
に応じてリクエスト・サーバ32を復活させるべ
きか否かを判断する。ライト・ルーチンは、まず
グローバル・マスク・レジスタ509のWRT領
域802を調べ、その値がゼロの場合に限り、ポ
ート・マスク・レジスタ508のWRT領域70
2を調べて、前記の判断を行う。リクエスト・サ
ーバ32を復活させないことになつた場合、ライ
ト・ルーチンは、ステツプ1225において、レジス
タ507のWRTビツト603を調べて、要求中
のPC10を全てのライト時に休止させるべきか
否かを判断する。しかし、ステツプ1222でリクエ
スト・サーバ32を復活させることになつた場
合、ライト・ルーチンは、ステツプ1223におい
て、書き込まれつつあるポート501の番号をサ
ービス・キユー530に入れ、さらに、オペレー
テイング・システム30の復活関数を呼び出すこ
とによつて、リクエスト・サーバ32を復活させ
る。そして、ライト・ルーチンは、ステツプ1225
に進む。
ステツプ1225で要求中のPZ10を休止させる
ことになつた場合、ライト・ルーチンは、ステツ
プ1226において、オペレーテイング・システム3
0のスリープ関数を呼び出して、ライト・ルーチ
ンを含めたPC10に関する状況を休止させ、こ
のルーチン自体がその一部である前記の状況がス
テツプ1227でリクエスト・サーバ32の動作によ
つて復活させられるまで、休止する。
ステツプ1225で要求中のPC10を休止させな
いことになつた場合、またはステツプ1227に続い
て、ライト・ルーチンは、ステツプ1209におい
て、ポートの入力バツフア521が一杯か否かを
判断するために、このバツフアを調べる。一杯の
場合、書き込まれるデータを収容する記憶空間が
ないので、ライト・ルーチンはステツプ1201にお
いて、ポートの制御レジスタ508のA−WRT
ビツト601を調べて、行うべき動作を決定す
る。ビツト601がセツトされていない場合、ラ
イト・ルーチンは、ステツプ1211において、書き
込まれたデータがゼロバイトであることの指示を
オペレーテイング・システム30に返す。ビツト
601がセツトされている場合、ライト・ルーチ
ンは、ステツプ1213において、オペレーテイン
グ・システム30のスリープ関数を呼び出して、
PC10の状況を休止させ、ステツプ1214でポー
トの入力バツフア512からデータを読むリクエ
スト・サーバ32の動作によつて前記の状況が復
活されるまで休止する。
ステツプ1214においてライト・ルーチンが復活
するか、またはステツプ1209においてポートの入
力バツフア521が空でないとわかつた場合、ラ
イト・ルーチンは、ステツプ1215において、要求
中のPC10に関係付けられ、かつライト・ルー
チンへのコールの引数として指定されたバツフア
から入力バツフア521にデータをコピーする。
ライト・ルーチンは、入力バツフア521の空間
が利用できる限りのバイト数のコピーを、このル
ーチンへのコールの引数によつて指定されたバイ
ト数に達するまで行う。次に、ライト・ルーチン
は、ステツプ1220において、ステツプ1215でコピ
ーしたデータのバイト数をオペレーテイング・シ
ステム30に返す。
ドライバ31とリクエスト・サーバ32との間
のインターフエースは、制御/状態ポート502
の標準の「open」コールおよび「close」コール、
およびポート502の複数のIOCTLシステム・
コールからなる。IOCTLコールを第13図〜1
5図に示す。
ドライバ31のIOCTLルーチンは、ステツプ
1300においてオペレーテイング・システム30の
IOCTLコール処理ルーチンによつて呼び出され
ると、ステツプ1301において、その呼び出しの一
部として受け取つた引数を調べ、開かれているド
ライバ31のポートの種類を判定する。それが制
御/状態ポート502でない場合、IOCTLルー
チンは、ステツプ1379において、オペレーテイン
グ・システム30にエラー・コードを返す。制
御/状態ポート502である場合、IOCTLルー
チンは、ステツプ1302において、引数として受け
取つたコマンドを調べ、それがいかなる種類の
IOCTLコールかを判断し、それを相応に処理す
る。そのコマンドが、認識済みのコールに含まれ
ていない場合、IOCTLルーチンは、ステツプ
1380において、エラー・コードを返す。
IOCTL(sleep)コールは、呼び出しているプ
ロセス(通常は、リクエスト・サーバ32であ
る)を休止させる。休止させられたプロセスは、
後に行われるグローバル・マスク・レジスタ50
9に従う動作によつて復活させられる。IOCTL
コールには、空の準備済みプロセスの構造体が引
数として含まれる。戻る時に、サービス・キユー
530の内容が、この構造体に入れられる。サー
ビス・キユー530には、リクエスト・サーバ3
2を復活させる全ポート501のリストが含まれ
る。このリストに含まれる各ポート501には、
原因領域が関係付けられている。原因領域は、リ
クエスト・サーバ32が復活させられた原因(即
ち、ポート501上で行われたオープン、クロー
ズ、リード、またはライトのシステム・コール)
を指定するビツト領域である。リターン・コード
によつて、その構造体の項目数が指定される。
IOCTLルーチンは、コールに応じて、ステツプ
1303において、サービス・キユー530を調べ、
リクエスト・サーバ32を復活させる原因となる
新たなポート501活動の存在を判断する。新た
なポート活動がある場合、リクエスト・サーバ3
2を休止させず、ステツプ1304において、準備済
みプロセスの構造体にサービス・キユー530の
内容をロードした後、ステツプ1305において、そ
の構造体の項目数を指定するコードを返す。ステ
ツプ1303において、新たなポート501の活動が
示されなかつた場合、IOCTLルーチンは、オペ
レーテイング・システム30のカーネルのスリー
プ関数を呼び出して、そのスーリプ・ルーチンを
含めたリクエスト・サーバ32に関する状況を休
止させ、ステツプ1307で新たなポート活動によつ
て前記の状況が復活させられるまで、休止する。
そして、スリープ関数は、1304に進み、サービ
ス・キユー530の内容を返す。
IOCTL(poll)コールは、空の準備済みプロセ
ス構造体へのポインタを引数として含み、リクエ
スト・サーバ32を復活させる原因となるポート
501のリストをその構造体に入れて返す。リク
エスト・サーバ32が既に実行中である場合、普
通であれば、それを復活させるようなポート50
1の活動もあり得るが、リクエスト・サーバ32
は、既に復活しているので、リクエスト・サーバ
32を復活させることはできない。このシステ
ム・コールは、これらのポート501のリストを
得るために提供されているのである。IOCTLル
ーチンは、このコールに応じて、ステツプ1310に
おいて、準備済みプロセス構造体にサービス・キ
ユー530の内容をロードした後、ステツプ1311
において、この構造体内の項目数を指定するコー
ドを返す。
IOCTL(PCUID)コールにより、リクエス
ト・サーバ32がポート501の所有者を判定す
ることが可能となる。このコールにより、
IOCTLルーチンは、ステツプ1313において、指
定されたポート501のポート別情報504にア
クセスし、ステツプ1314において、そこから、ポ
ートの所有者の一義的なユーザIDを抽出して、
ステツプ1315において、そのIDをリクエスト・
サーバ32に返す。
IOCTL(wakeup)コールは、番号付きポート
501または制御/状態ポート502で休止中
で、引数により指定された喪のを復活させる。こ
のコールにより、IOCTLルーチンは、ステツプ
1316において、オペレーテイング・システム30
のカーネルの復活関数を呼び出して、復活させ
る。次に、このルーチンは、ステツプ1317におい
て、リクエスト・サーバ32に戻る。
IOCTL(set qisize)コールは、ポートの入力
バツフア521の大きさを変化させる。ポート番
号およびバツフアの大きさは、コールによつて指
定する。このIOCTLルーチンは、ステツプ1319
において、指定されたポート501のポート別情
報504にアクセスし、ステツプ1320において、
そこにおける入力バツフア・サイズの項目を指定
した値に設定した後、ステツプ1321において、戻
る。
IOCTL(set qosize)コールは、ポートの出力
バツフアの大きさを変化させる。ポート番号およ
びバツフアの大きさは、コールによつて指定す
る。このIOCTLルーチンは、ステツプ1323にお
いて、指定されたポート501のポート別情報5
04にアクセスし、ステツプ1324において、そこ
における出力バツフア・サイズの項目を指定され
た値に設定した後、ステツプ1325において、戻
る。
IOCTL(set retcode)コールは、ポート50
1に対するリターン・コード・レジスタ(図示せ
ず)を設定する。ポート制御レジスタ507にお
けるRTNビツト600がセツトされている場合、
コノリターン・コード・レジスタの値は、リード
時およびライト時にPC10に返される。このコ
ールにより、そのリターン・コード・レジスタの
値が設定されるべきポート501、およびそのリ
ターン・コード自体が識別される。このIOCTL
ルーチンは、ステツプ1327において、指定された
ポート501のポート別情報504にアクセス
し、ステツプ1328において、そこにおけるリター
ン・コードを指定された値に設定した後、ステツ
プ1329において、戻る。
IOCTL(write)コールは、指定されたポート
501にデータを書き込む。このコールには、ポ
ートIDを含むリード/ライト構造体へのポイン
タ、データへのポインタ、およびデータのバイト
数が引数として含まれる。IOCTLルーチンは、
ステツプ1331において、指定されたポート501
の出力バツフア522にアクセスし、それを、ス
テツプ1332において、調べる。出力バツフア52
2が一杯の場合、IOCTLルーチンは、ステツプ
1333において、バツフア・プール520の使用さ
れていないメモリ空間の利用可能性を調べて、出
力バツフア522の大きさ拡張可能性を判断す
る。出力バツフア522が拡張できない場合、
IOCTLルーチンは、ステツプ1336において、エ
ラー・コードを返す。出力バツフアが522が拡
張可能な場合、このルーチンは、ステツプ1334に
おいて、メモリ空間を割り当てて、サイズを大き
くする。
ステツプ1332で出力バツフアが一杯でないこと
がわかつた場合、またはステツプ1334に続いて、
IOCTLルーチンは、ステツプ1337において、ポ
インタによつて指定されたデータを出力バツフア
522にコピーする。次に、このルーチンは、ス
テツプ1338において、ポート制御レジスタ507
を調べて、PC10が、このポートから読み出す
ために持ちながら休止している可能性を判定す
る。休止している場合、ルーチンは、ステツプ
1339において、オペレーテイング・システム30
の復活関数を呼び出すことによつて、休止中の
PC10を復活させる。休止する可能性がない場
合、またはステツプ1339に続いて、このルーチン
は、ステツプ1340において、出力バツフア522
へコピーしたバイト数を返す。
IOCTL(read)コールは、指定されたポート5
01からデータを読む。このコールも、リード/
ライト構造体へのポインタを引数として含む。こ
のIOCTLルーチンは、ステツプ1341において、
指定されたポート501の入力バツフア521に
アクセスして、ステツプ1342において、それを調
べる。入力バツフア521が空の場合、IOCTL
ルーチンは、ステツプ1346において、「ゼロ・バ
イト分コピーした」ことを示すリターン・コード
を返す。
ステツプ1342において、入力バツフア521が
空でないことがわかつた場合、IOCTLルーチン
は、ステツプ1347において、入力バツフア521
からポインタによつて示されたメモリ領域にデー
タをコピーする。次に、このルーチンは、ステツ
プ1348において、ポート制御レジスタ507を調
べて、PC10がこのポートに書き込むために待
ちながら休止している可能性を判断する。休止し
ている場合、このルーチンは、ステツプ1349にお
いて、オペレーテイング・システム30の復活関
数を呼び出すことによつて、休止中のPC10を
復活させる。休止している可能性がない場合、ま
たはステツプ1349に続いて、このルーチンは、ス
テツプ1350において、入力バツフア521にコピ
ーしたバイト数を返す。
IOCTL(flush)コールは、ポート501を他
のPC10が使用できるように、ポート501を
解放する。このコールにより、IOCTLルーチン
は、ステツプ1380において、引数として指定され
たポート501のポート別情報504にアクセス
する。このルーチンは、ステツプ1381において、
ポインタ505および506を用いて、そのポー
トの入力バツフア521および出力バツフア52
2にアクセスして、それらの内容をクリアする。
また、このルーチンは、ステツプ1382において、
そのポートのポート制御レジスタ507およびポ
ート・マスク・レジスタ508の内容をデフオル
ト値に設定する。次に、このルーチンは、ステツ
プ1383において、そのポート501とPC10と
の結合(第9図のステツプ906において成立した)
を断つことによつて、そのポートを解放し、さら
にその番号を使用されていないポートのリスト5
03に返すことによつて、そのポートの割り当て
を解除する。その後、このルーチンは、ステツプ
1384において、戻る。
ポート制御レジスタ507は、PCがポート5
01に働きかけた場合に、PC10に対して行う
べき動作を指定する手段を提供する。レジスタ5
07は、IOCTL(set−port−control)コールに
よつて設定される。このコールには、ポート制御
データ構造体へのポインタが引数として含まれ
る。ポート制御データ構造体には、影響されるポ
ート501のポートID、およびポートの制御レ
ジスタ507の新たな値が含まる。このコールに
よつて、IOCTLルーチンは、ステツプ1355にお
いて、指定されたポート501の制御レジスタ5
07へアクセスし、さらにステツプ1356におい
て、そのレジスタの内容を指定された新たな値に
指定する。そして、ステツプ1357において、戻
る。
ポート・マスク・レジスタ508は、PCがポ
ート501に働きかけた場合に、リクエスト・サ
ーバ32に対して行うべき動作を指定する手段を
提供する。レジスタ508は、IOCTL(set−
port−mask)コールによつて設定される。この
コールには、ポート・マスク・データ構造体への
ポインタが引数として含まれる。この構造体に
は、影響されるポート501のポートID、およ
びそのポートのマスク・レジスタ508の新たな
値が含まれる。このコールによつて、IOCTLル
ーチンは、ステツプ1358において、指定されたポ
ート501のマスク・レジスタ508へアクセス
し、さらにステツプ1359において、そのレジスタ
の内容を指定された新たな値に設定する。そし
て、ステツプ1360において、戻る。
グローバル・マスク・レジスタ509は、ポー
ト・マスク・レジスタ508に優先する手段を提
供する。レジスタ509は、実行すべき動作を決
定するために、先に参照される。レジスタ509
は、IOCTL(set−glbl−mask)コールによつて
設定される。このコールは、引数として、新たな
レジスタ509の内容を含んでいる。このコール
によつて、IOCTLルーチンは、ステツプ1362に
おいて、グローバル・マスク・レジスタ509に
アクセスし、さらにステツプ1363において、その
内容を指定された新たな値に設定する。そして、
ステツプ1364において、戻る。レジスタ509
は、IOCTL(get−glbl−mask)コールによつて
読み出される。このコールには、レジスタ509
の内容が返されるバツフアへのポインタが引数と
して含まれる。このコールによつて、IOCTLル
ーチンは、ステツプ1366において、グローバル・
マスク・レジスタ509にアクセスし、ステツプ
1367において、レジスタ509の内容を指定され
たバツフアにコピーする。そして、ステツプ1368
において、戻る。
IOCTL(get−port−status)システム・コール
によつて、リクエスト・サーバ32は、そのポー
ト501の状態についてドライバ31に問い合わ
せることが可能となる。このコールに引数として
含まれるものは、問い合わせを受けるポート50
1のポート番号、ポート501の状態、ポート制
御エジスタ507の内容、ポート・マスク・レジ
スタ508の内容、そのポートの入力バツフア5
21内のデータのバイト数、およびそのポートの
出力バツフア522内のデータのバイト数を、収
容する領域を備えたポート状態データの構造体へ
のポインタである。ポート番号は、リクエスト・
サーバ32によつて書き込まれる。IOCTLルー
チンは、このコールに応じて、ステツプ1369にお
いて、指定されたポート501のポート別情報5
04にアクセスし、ステツプ1370において、その
中の関係する内容をポート状態データ構造体にコ
ピーした後、ステツプ1371において、戻る。
IOCTL(get−global−status)システム・コー
ルにより、リクエスト・サーバ32は、ドライバ
31に、そのドライバの全体的状態について問い
合わせることが可能となる。このコールに引数と
して含まれるものは、自由になるバツフア・プー
ル520の大きさ、自由なポート501の数、入
力バツフア521の大きさおよび出力バツフア5
22の大きさを、収容するための領域を備えた
glbl−statusデータ構造体へのポインタである。
IOCTLルーチンは、このコールに応じて、ステ
ツプ1373において、そのドライバの全体的情報に
アクセスし、ステツプ1374において、その情報を
glbl−statusデータ構造体にコピーした後、ステ
ツプ1375において、戻る。
リクエスト・サーバ(第16図〜25図) リクエスト・サーバ32は、コンピユータ11
および12の網全体に要求されたサービスを提供
するNETSVR33およびAPISVR34のような
プロセスとドライバ31との間のアプリケーシヨ
ン・レベルのインタフエースである。リクエス
ト・サーバ32は、ユーザ・レベルで実行する
が、内部的にはオペレーテンイング・システムの
ような構造となつている。リクエスト・サーバ3
2は、ドライバ31を介して、sleep(休止)や
wakeup(復活)などのオペレーテイング・シス
テム30のカーネル関数に直接アクセスを行う
が、これは、ユーザ・レベルのプロセスには一般
にできないことである。リクエスト・サーバ32
によつて、UNIXオペレーテイング・システム・
コールは、フアイルおよび資源のサービスをサポ
ートする他の関数ので増加する。リクエスト・サ
ーバ32の役割は、ドライバ31によつて向けら
れたPC10(及び他のプロセス)からのサービ
ス要求を受理し、これらの要求の結果として取る
べき処置を判断・計画し、さらにPC10のため
にそれらの処理を予定し、実行する。
第16図に示すように、リクエスト・サーバ3
2には、次のものが含まれる。即ち、受理した要
求をそれを構成する要素領域まで規格どうりに分
析するパーサ(parser)1600、到来する分析
された要求を格納するためのジヨブ・シーケンス
1608の中を循環し、さらに格納したジヨブの
実行を計画するリクエスト・スケジユラ160
1、リクエスト・スケジユラ1601が呼び出
し・参照できるように種々の関数のアドレスを格
納する関数テーブル1602、PCによつて要求
された実際の仕事を行うユーザ関数1603、リ
クエスト・サーバ32からPC10へ状態情報を
返すためのPCリータン・コード・サポート関数
1604、ユーザ関数1603が新たなプロセス
を開始することを可能にするプロセス・サポート
関数1605、リクエスト・サーバ32とそれ以
外のNETSVR33およびAPISVR34などのプ
ロセスとの間のプロセス間通信を行うためのメツ
セージ・サポート関数1606、ならびに、時間
を延長してシステム内部に留まる必要があるか、
またはアプリケーシヨン・レベルで周期的な呼び
出しを必要とするユーザ関数1603のためのス
ケジユール・サポート関数1607が、含まれ
る。
関数テーブル1602は、関数名1630、な
らびにユーザ関数およびサポート関数の関数アド
レス1631を1対1に関係付けて含む。パーサ
1600から受け取つた要求の関数名は、リクエ
スト・スケジユラ1601によつてテーブル16
02で参照され、それに関係付けられた関数アド
レスが、ジヨブ・キユー1608に格納される。
テーブル1602は、ヌル・ネーム・ポインタに
よつて最後となる。これには、要求された関数が
テーブル1602にない場合に呼び出されるエラ
ー・ルーチンが結合されている。このエラー・ル
ーチンによつて、エラー・メツセージが要求中の
PC10に返される。
PCリターン・コード・サポート関数1604
により、状態を末端501に返すことが可能とな
る。PCRETURNルーチンは、番号付きポート
501の出力バツフア522に情報を返し、サー
ビス要求によつて指定された文字数が出力バツフ
アにロードされた文字数と一致しない場合、それ
に関係付けられたPC10を復活させる。この呼
び出しには、番号付きポート501、およびポー
トの出力バツフア522にロードされるデータ文
字列へのポインタを、指定する引数を付ける。ル
ーチンPCWAKEUPは、PC10を復活させ、さ
らに、出力バツフア522の内容の文字数がサー
ビス要求によつて指定された数に一致する/しな
いに関わらず、前者を返す。この呼び出しは、番
号付きポート501を指定する引数を付けて行
う。
プロセス・サポート関数1605は、
STARTPROCルーチンを備えている。これによ
つて、ユーザ関数は、オペレーテイング・システ
ム30の下で実行する他のプロセスを通常どうり
作成(fork)、起動(exec)することが可能であ
る。STARTPROCルーチンは、引数として、
PROC−NAEM、NUM−ARGS、(NO)
WAIT、AND ARG(複数可)を付けて呼び出
す。PROC−NAMEは、通常のオペレーテイン
グ・システム30環境におけるPATH変数の中
で見つけられて、実行される。NUM−ARGSに
よつて、そのコマンドに渡されるARGの総数が
与えられる。ARGは、所望の数だけ渡すことが
できる。(NO)WAITにより、そのプロセスが
実行を終了するのを持つかどうかを指定する。
WAITは、そのプロセスが終了するまで待つこ
とを意味し、NOWAITは、プロセスを生成する
と、直ちに戻ることを示す。WAITとした場合、
終了したプロセスからリターン・コードが返され
る。NOWAITを設定した場合、戻る際に、その
新たなプロセスのプロセス番号、または失敗コー
ドのいずれかが、呼び出し中の関数に返される。
さらに、STARTPROCのために、オペレーテイ
ング・システム30の通常のSIGCLD信号は無視
されるので、このコールによつてゾンビ・プロセ
ス(終了したにも関わらずプロセス・テーブルに
残るプロセス)が生成されることはない。
メツセージ・サポート関数1606は、リクエ
スト・サーバ32とそれ以外のNETSVR33お
よびAPISVR34などのプロセスとの間に、通
常のオペレーテイング・システム30のメツセー
ジ・キユーに基づくインターフエースを提供す
る。メツセージ・サポート関数1606は、
SENDMESSAGEルーチンを含む。このルーチ
ンは、チヤネル番号(後述)、およびそのチヤル
ネルを通してプロセスに送られる任意の長さのメ
ツセージを、引数として受け取る。メツセージ受
信関数は必要ない。後述のように、チヤネル・ウ
エイト・ジヨブ機構によつて受信が処理されるか
らである。
ジヨブ・キユー1608は、PC10の要求な
どのジヨブを定義する記録事項1640の結合リ
ストとして構造化されている。各記録事項164
0は、複数の領域1650〜1654からなり、
受信された各要求は、パーサ1600によつてそ
れらの領域に分析される。関数アドレス領域16
50には、テーブル1602から得たその要求に
対応する関数のアドレスが入る。引数領域165
2には、その関数に渡された引数からなる文字列
へのポインタが入る。PC領域1653により、
そのジヨブの資源である番号付きポート501が
識別される。状態領域1654により、ジヨブの
型、即ち、優先度、時間規定、またはチヤネル・
ウエイトなどが確認される。エイジ(age)領域
1651の意味は、領域1654によつて識別さ
れるようなジヨブの種類に依存する。優先度のあ
るジヨブの場合、エイジ領域1651は、そのジ
ヨブの優先度番号を保持し、時間的に規定された
(時間規定)ジヨブの場合は、エイジ領域165
1は、そのジヨブが実行される時間を保持し、チ
ヤネル・ウエイト・ジヨブの場合は、エイジ領域
1651は、対応するチヤネル番号を保持する。
優先度付きのジヨブには、PC10のパツチ21
から来るサービス要求がすべて含まれる。サービ
ス要求は、パツチ21によつて生成されるとき
に、自動的にそのように指定される。具体的に
は、パツチ21は、基本的なサービス要求に、自
動的に所定の優先度を割り当てる。この実施例に
おいては、PCのサービス要求は、1の優先度が
割り当てられている。優先度付きのジヨブは、リ
クエスト・スケジユラ1601によつて、スケジ
ユール・サポート関数1607のPUTQ関数を
呼び出すことにより、ジヨブ・キユー1608上
に置かれる。優先度付きのジヨブは、実行するた
めに優先度に基づいて選択されると、ジヨブ・キ
ユー1608から削除される。領域1650によ
つて指定された関数が、ジヨブ・キユー1608
から削除されると、領域1652および1653
を引数として受け取る。
時間規定ジヨブは、実時間を基に呼び出され
る。これらのジヨブは、ユーザ関数によつて、ス
ケジユール・サポート関数1607の
TIMEOUT関数を呼び出すことにより、ジヨ
ブ・キユー1608に置かれる。時間規定ジヨブ
が呼び出されるフオーマツトには、待ち時間、時
間終了時に呼び出される関数名、この関数を呼び
出しているポート501の番号、および呼び出し
時にその関数に渡すべきものが入つているユーザ
により初期化される文字列へのポインタが、含ま
れる。この関数は、前記の待ち時間が過ぎると、
ジヨブ・キユー1608から削除され、そして、
指定された関数が実行される。ジヨブ・キユー1
608に留まる必要のある関数は、TIMEOUT
関数の働きによつてスケジユールを組み直さなけ
ればならない。
チヤネル・ウエイト・ジヨブは、事象(通常
は、リクエスト・サーバの外部の事象)の発生を
持つジヨブである。これらは、次のように、ユー
ザ関数1603によつて、優先度付きの関数に応
答するように設定されちる。即ち、PC10の要
求を表す優先度付きのジヨブが、1つ以上のチヤ
ネル・ウエイト・ジヨブを生成可能なユーザ関数
1603を呼び出して、非同期の幾つかのタスク
の終了を待つと、非同期のタスクの終了により、
応答する部分、即ち、チヤネル・ウエイト・ジヨ
ブが呼び出される。
チヤネル・ウエイト・ジヨブが呼び出されるフ
オーマツトには、事象の発生時に呼び出される関
数名、チヤネル番号、そのジヨブについて待機
(休止)しているポート501の番号、および呼
び出し時に呼び出された関数に渡すべき情報の文
字列へのポインタが、含まれる。チヤネル番号
は、メツセージ・サポート関数1606によつて
提供される、メツセージ・キユーに基づくインタ
フエースのメツセージ・キユーにあるジヨブを一
義的に識別するのに役立つ一義的な番号に過ぎな
い。スケジユール・サポート関数1607には、
一義的なチヤネル番号を返すために呼び出すこと
ができるGETCHANNEL関数が含まれる。具体
的には、GETCHANNEL関数は、ある数から開
始して、それが呼び出されるたびに増加させなが
ら、一義的なチヤネル番号を生成する。チヤネ
ル・ウエイト・ジヨブは、ユーザ関数1603に
よつて、スケジユール・サポート関数1607の
CHANNEL関数を呼び出すことにより、ジヨ
ブ・キユー1608に置かれる。チヤネル番号
は、ジヨブ・キユー1608の記録事項1640
におけるエイジ領域1651に使用される他、メ
ツセージ・キユーにおけるメツセージ型としても
使用される。メツセージ・キユーにおいて、ある
チヤネル・ウエイト・ジヨブのチヤネル番号と型
が一致するメツセージを受け取ると、そのチヤネ
ル・ウエイト・ジヨブは、実行され、ジヨブ・キ
ユー1608から削除される。
リクエスト・スケジユラ1601の役目は、到
来する要求の優先度を整理し、適切なユーザ関数
1603を呼び出し、さらにジヨブ・キユー16
08および関係付けられた状態を処理することで
ある。リクエスト・スケジユラは、非同期の事象
の発生によつて起動されると、ドライバ31が新
たな要求を受け取つたことを確認し、その新たな
要求をジヨブ・キユー1608に置き、さらに、
特定の事象の発生に応じて、ジヨブ・キユー16
08の中から実行させるに相応しいジヨブを実行
させる。リクエスト・スケジユラ1601を第1
7図〜20図に示す。
リクエスト・スケジユラ1601は、初期化に
際し、ステツプ1701において、メツセージ・サポ
ート関数1606を用いて、通常のUNIXシステ
ムのようにリクエスト・サーバ32をメツセー
ジ・キユーに結合させる。また、スケジユラ16
01は、ステツプ1702において、ジヨブ・キユー
1608も初期化する。次に、ステツプ1703にお
いて、制御/状態ポート502を開き、さらに、
ステツプ1704において、IOCTLコールによつて、
クローバル・マスク・レジスタ509を設定し、
番号付きポート501のオープン、クローズ、お
よびライトの動作時にリクエスト・サーバ32を
復活させる。ここで行われる動作に含まれるの
は、入力バツフア521および出力バツフア52
2の大きさを設定すること、さらに、オープン時
に休止し、クローズ時に休止し、出力バツフア5
22が空の場合のリード時に休止し、入力バツフ
ア521が一杯の場合のライト時には休止せず、
かつ通常のコードを返すようにポート制御レジス
タ507を設定することである。
ステツプ1701〜1705におる初期化手続きの最中
に、スケジユラ1601がエラーを検出した時は
いかなる場合も、ステツプ1707〜1708に示したよ
うに終了する。
初期化の後、スケジユラ1601は、ステツプ
1709において、スケジユール・サポート関数16
07を用いて、ジヨブ・キユー1608における
時間規定ジヨブの存在を調べる。ジヨブ・キユー
1608にそのようなジヨブがある場合、リクエ
スト・サーバ32は、ステツプ1710において、通
常のUNIXシステムの信号処理方法で、アラーム
を設定する。しかし、ジヨブ・キユー1608が
初期化された直後であり、ジヨブが存在しないの
で、スケジユラ1601は、ステツプ1711におい
て、IOCTL(sleep)コールによつて、リクエス
ト・サーバ32をドライバ31上で休止させ、番
号付きポート501の動作を待たせる。
ステツプ1712において、番号付きポート501
上の動作、またはドライバ31の制御/状態ポー
ト502にwakeupコールを送ることによつて、
リクエスト・サーバ32が、復活する。復活する
と、スケジユラ1601は、ステツプ1713におい
て、スケジユール・サポート関数1607を用い
て、ジヨブ・キユー1608における時間規定ジ
ヨブの存在を調べる。時間規定ジヨブが存在する
場合、スケジユラ1601は、後の動作中に前記
のアラームが鳴り出すのを防ぐために、ステツプ
1753において、SIGALRM信号によつて標準
UNIXシステムのALARM関数をリセツトする。
ジヨブ・キユー1608に期間規定ジヨブが存在
しない場合、またはステツプ1753に続いて、スケ
ジユラ1601は、ステツプ1714において、前記
の復活の一部として戻された値を調べて、何が原
因で復活したかを判断する。
戻された値が、0を越える場合、リクエスト・
サーバ32は、番号付きポート501上の動作の
結果として復活したことになる。したがつて、ス
ケジユラ1601は、ステツプ1715において、そ
の休止に関係付けられた準備済みプロセス構造体
(ドライバ31のサービス・キユー530の内容
が入つている)の内容を調べて、それが空かどう
か、つまり要求が全てサービスされたかどうか
を、判断する。この時点では、要求のサービスは
開始されていないので、サービス済みの要求はな
いはずであるから、スケジユラ1601はステツ
プ1716に進む。
ステツプ1716において、スケジユラ1601
は、準備済みプロセス構造体の中から次のサービ
ス要求を取り出す。つぎに、スケジユラ1601
は、ステツプ1717および1721において、その要求
の原因領域を調べて、いずれのポート動作によつ
て復活したかを判断する。
ステツプ1717において、復活の原因がポート
「open」コールであるとわかつた場合、スケジユ
ラ1601は、ステツプ1718において、IOCTL
(ポート制御を参照)コールを用いて要求中のポ
ート501のポート制御レジスタ507のA−
WRTフラグ601およびA−RDフラグ602
をセツトすることにより、そのポートの入力バツ
フア521が一杯の場合ライト時と、そのポート
の出力バツフア522が空の場合のリード時に、
そのポート501に関係付けられたPC10が、
休止するようにする。また、スケジユラ1601
は、ステツプ1719において、ポート・マスク・レ
シスタ508を設定することにより、そのポート
501のリード・ライト、およびクローズ時に、
リクエスト・サーバ32を復活するようにする。
そして、スケジユラ1601は、ステツプ1732に
おいて、要求中のポート501にIOCTL
(wakeup)コールを発する。
ステツプ1721において、復活の原因がポートの
「write」コールであることがわかつた場合、スケ
ジユラ1601は、ステツプ1722において、
IOCTL(read)コールを用いて、要求中のポート
501の入力バツフア521を読み出し、それか
らPCの要求を得る。スケジユラ1601は、ス
テツプ1723において、その要求の分析をパーサ1
600に依頼し、ステツプ1724において、パーサ
1600がエラーを報告するか否かを調べる。パ
ーサ1600がエラーを報告した場合、スケジユ
ラ1601は、ステツプ1727において、IOCTL
(flush)コールを用いて、要求中のポート501
のバツフア521および522を空にし、ステツ
プ1728において、IOCTL(write)コールを用い
て、要求中のポート501の出力バツフア522
に、PC10に対するエラー・メツセージを書き
込む。
ステツプ1724でパーサ1600がエラーを報告
せずに、スケジユラ1601に分析した要求を渡
した場合、スケジユラ1601は、ステツプ1725
において、関数テーブル1602において要求さ
れたユーザ関数を探す。ステツプ1726に示したよ
うにテーブル1602において見付からなかつた
場合、スケジユラ1601は、ステツプ1727およ
び1728と進み、要求中のポート501のバツフア
を空にし、ユーザにエラー・メツセージを返す。
テーブル1602において要求されたユーザ関数
を見付けた場合、スケジユラ1601は、ステツ
プ1729において、要求の優先度が含まれている要
求のエイジ領域1651の値を調べて、その有効
性を判断する。優先度の値が、10を下回りかつ0
以上ではないならば、それは無効であるが、スケ
ジユラ1601は、ステツプ1730において、単
に、その値を最低の優先度である9に設定する。
ステツプ1729において優先度が有効である場合、
またはステツプ1730に続いて、スケジユラ160
1は、ステツプ1731において、スケジユール・サ
ポート関数PUTQを依頼して、その要求をジヨ
ブ・キユー1608に置く。
PUTQは、それに応じて、新たなキユー記録
事項のためのメモリ空間の割り当てをオペレーテ
イング・システム30に依頼し、記録事項の領域
に要求情報を書き込み、その新たな記録事項をジ
ヨブ・キユー1608を成すジヨブのリストに結
合し、さらにジヨブ・キユー1608に関係付け
られたグローバル変数を管理する。
ステツプ1717〜1720において、復活の原因がオ
ープンまたはライト以外のポート動作による(つ
まり、ポート・リードによるか、またはポート・
クローズによる)ものである場合、またはポート
のオープンおよびライトのために行われる前記の
動作に続いて、スケジユラ1601は、ステツプ
1732において、要求中のポート501にIOCTL
(wakeup)コールを発して、そのポートで休止
しているもの、例えばPC10など、を復活させ
る。次に、スケジユラ1601は、ステツプ1715
に戻り、未決の要求が全てサービスされたかどう
かを判断する。
ステツプ1715において、休止準備済みプロセス
構造体によつて示さるる未決の要求がすべてサー
ビス済みである場合、スケジユラ1601は、ス
テツプ1735において、IOCTL(poll)コールをド
ライバ31に発して、スケジユラ1601の復活
以降に新たな要求が成されたかどうかを判断す
る。IOCTL(poll)は、IOCTL(sleep)と全く同
様に、サービス・キユー530の内容を準備済み
プロセス構造体の中に入れて返す。次に、スケジ
ユラ1601は、ステツプ1736において、その構
造体の内容を調べて、新たなサービス要求がある
かどうか判断する。ある場合、スケジユラ160
1は、ステツプ1715に戻つて、それらの要求に応
える。
ステツプ1736の判定時に新たなサービス要求が
ない場合、スケジユラ1601は、ステツプ1737
において、ジヨブ・キユー1608における優先
度付きジヨブの存在を調べる。具体的には、前記
のように、PUTQによつて維持されているグロ
ーバル変数を調べることによつて行う。優先度付
きジヨブがある場合、スケジユラ1601は、ス
テツプ1738において、引数としてPRIORITYと
いうジヨブ型を渡してスケシユール・サポート関
数1607のRUNQルーチンを呼び出すことに
よつて、その優先度付きジヨブを実行させる。
RUNQルーチンは、第21図に示す。
ステツプ1737において、優先度付きジヨブがな
い場合、スケジユラ1601は、ステツプ1739におい
て、ジヨブ・キユー1608にチヤネル・ウエイ
ト・ジヨブがあるかどうかを調べる。ある場合、
スケジユラ1601は、ステツプ1740において、
メツセージ・キユーを調べて、チヤネル・ウエイ
ト・ジヨブへのメツセージがそれに入つているか
どうかを判断する。これは、具体的には、メツセ
ージ・サポート関数1606を呼び出すことによ
つて行う。呼び出されると、この関数は、メツセ
ージ・キユーを探査し、リクエスト・サーバ32
にアドレス指定されたメツセージを見付け、それ
を第1のメツセージとして返す。そのメツセー
ジ・キユーに、チヤネル・ウエイト・ジヨブへの
メツセージがある(つまり、スケジユラ1601
に返されるメツセージがある)場合、スケジユラ
1601は、ステツプ1741において、第21の
RUNQルーチンを呼び出し、CHANNELという
ジヨブ型と受信したメツセージとを引数として渡
す。RUNQが戻るときに、スケジユラ1601
は、ステツプ1740に戻つて、メツセージ・キユー
に、チヤネル・ウエイト・ジヨブに対するメツセ
ージがさらにあるかどうかを調べる。
ステツプ1739において、ジヨブ・キユー160
8に、チヤネル・ウエイト・ジヨブがないとわか
つた場合、スケジユラ1601は、ステツプ1742
において、ジヨブ・キユー1608に期間規定ジ
ヨブが入つているかどうかを調べる。ある場合、
スケジユラ1601は、ステツプ1743において、
第21図のRUNQルーチンを呼び出し、TIMER
というジヨブ型を引数として渡す。
ジヨブ・キユー1608に期間規定ジヨブがな
いか、若しくはステツプ1740でチヤネル・ウエイ
ト・ジヨブへのメツセージがメツセージ・キユー
にない場合、またはステツプ1738若しくは1748に
おけるRUNQのリターンに続いて、スケジユラ
1601は、ステツプ1709に戻つて、あるかもし
ない時間規定ジヨブに対しアラームを設定した
後、ドライバ31上で休止状態に戻る。
ステツプ1714においてリクエスト・サーバ32
の復活の一部としてスケジユラ1601に返され
た値が、0ならば、リクエスト・サーバ32は、
制御/状態ポート502で行われた「wakeup」
コールの結果として復活したことになる。リクエ
スト・サーバ32を復活させるためには、制御/
状態ポート502を識別するIOCTL(wakeup)
コールを、制御/状態ポート502に対して何時
発してもよい。そのシステム内の別なプロセス
が、リクエスト・サーバ32にメツセージ・キユ
ーを読ませたい場合、この方法を用いれば、リク
エスト・サーバ32を復活させることができる。
これによつて、非同期の事象を契機として、種々
の機能を果たすプロセスに即座にサービスを行わ
せることが可能となる。
スケジユラ1601は、wakeupコールに応じ
て、ステツプ1750において、ジヨブ・キユー16
08にチヤネル・ウエイト・ジヨブがあるかどう
かを調べる。ある場合、スケジユラ1601は、
ステツプ1751において、メツセージ・キユーを調
べて、チヤネル・ウエイト・ジヨブへのメツセー
ジがそれに含まれているかどうかを判断する。含
まれている場合、スケジユラ1601はステツプ
1752において、第21図のRUNQルーチンを呼
び出し、CHANNELのジヨブ型および発見した
メツセージを引数としてそれに渡す。RUNQが
戻るとき、スケジユラ1601はステツプ1751に
戻つて、メツセージ・キユーにチヤネル・ウエイ
ト・ジヨブへのメツセージが更にあるかどうかを
調べる。
ステツプ1750において、ジヨブ・キユー160
8にチヤネル・ウエイト・ジヨブが含まれていな
いか、またはステツプ1751において、チヤネル・
ウエイト・ジヨブへのメツセージがメツセージ・
キユーにない場合、スケジユラ1601は、ステ
ツプ1735に進み、新たなサービス要求を求めてド
ライバ31を調べる。
ステツプ1714において、リクエスト・サーバ3
2の復活の一部としてスケジユラ1601に返さ
れた値が、0を下回る場合、リクエスト・サーバ
32は、時間規定ジヨブ・アラームの満了などの
信号を受信した結果として復帰されたことにな
る。満了していれば、その結果として、
ALARM関数は、引数としてTIMERを付けて第
21図のRUNQルーチンを呼び出しており、し
たがつて、満了となつた時間規定ジヨブは、実行
させられているはずであるから、スケジユラ16
01は、するべきことがないので、結局、ステツ
プ1709において、ALARM関数を再起動するこ
とになる。しかし、ステツプ1709に戻る前に、ス
ケジユラ1601は、ステツプ1735に進み、新た
なサービス要求を求めてドライバ31を調べる。
第21図は、RUNQルーチンの流れ図である。
ステツプ1800において、引数としてジヨブ型を付
けて呼び出されると、RUNQは、要求されたジ
ヨブを求めてジヨブ・キユー1608を探査し、
見つけて、それを実行する。RUNQは、ステツ
プ1801において、ジヨブ・キユー1608の先頭
にある第1の記録事項1640からはじめて、キ
ユーの記録事項1640を順番にアクセスし、ス
テツプ1802において、その記録事項がヌル
(null)かどうか、即ち、それがジヨブ・キユー
1608の最後かどうか、を調べる。最後なら
ば、RUNQは、ステツプ1816において、戻るの
みである。
アクセスした記録事項1640が、ヌルの記録
事項でない場合、RUNQは、ステツプ1804にお
いて、その状態領域1654の内容を調べて、引
数としてRUNQに渡される型のジヨブが、そこ
に定義されているかどうかを判断する。そうでな
い場合、RUNQは、ステツプ1801に戻つて、次
の順番にキユー記録事項1640を取り出して調
べる。しかし、そのジヨブが所望の型のジヨブで
ある場合、RUNQの以降の動作は、ステツプ
1805、1808、および1810に示したようなジヨブ型
に依存する。
ジヨブが、ステツプ1805で判定されるような優
先度付きジヨブの場合、RUNQは、ステツプ
1806において、記録事項の中でジヨブの優先度が
入つているエイジ領域1651を調べて、それが
ゼロかどうか判断する。ゼロでない場合、
RUNQは、ステツプ1807において、エイジ領域
をデクリメントして、そのジヨブの優先度を高め
た後、ステツプ1801に戻つて、次の順番のキユ
ー記録事項1640を取り出して調べる。そのジ
ヨブの優先度がゼロの場合、RUNQは、そのジ
ヨブを実行させるために、ステツプ1813におい
て、キユー記録事項1640の関数アドレス領域
1650によつて特定される1つのユーザ関数1
603を、これに引数として引数領域1652お
よびPC領域1653を渡して、呼び出す。次に
RUNQは、ステツプ1814において、ジヨブ・キ
ユー1608から、その記録事項1640を削除
する。ステツプ1815に示したように、実行された
ジヨブがチヤンネル・ウエイト・ジヨブである場
合、RUNQは、ステツプ1816において、スケジ
ユラ1601に戻り、そのほかの場合は、ステツ
プ1801に戻つて、次の順番のジヨブ・キユー記録
事項1640を取り出して調べる。
ステツプ1808で判断されるように、ジヨブが、
チヤネル・ウエイト・ジヨブである場合、
RUNQは、キユー記録事項においてジヨブのチ
ヤネル番号が入つているエイジ領域1651を調
べて、引数としてRUNQが受け取つたチヤネル
番号が、それと一致するかどうかを判断する。一
致する場合、RUNQは、ステツプ1813に進み、
そのチヤネル・ウエイト・ジヨブを実行させる。
一致しない場合は、ステツプ1801に戻つて、次の
順番のジヨブ・キユー記録事項1640を取り出
して調べる。
ステツプ1810において判断されるように、ジヨ
ブが時間規定ジヨブである場合、RUNQは、ス
テツプ1811において、キユー記録事項内でジヨブ
の実行されるべき時間を示すエイジ領域1651
を調べて、これをアラーム・タイマーの現在の値
と比較する。タイマーの値がエイジ領域の値を越
えている場合、まだそのジヨブを実行する時間で
はないので、RUNQは、ステツプ1801に戻つて、
次の順番のジヨブ・キユー記録事項1640を取
り出して調べる。それ以外の場合、RUNQは、
ステツプ1813に進み、その時間規定ジヨブを実行
させる。
ジヨブが未知の型である場合、RUNQは、ス
テツプ1812において、エラーを記録して、表示コ
ンソール上に表示した後、ステツプ1816におい
て、スケジユラ1601に戻る。
ユーザ関数1603は、システムによつて異な
る。システム構成面からみた特定のシステムによ
つて異なる。システム構成面からみた特定のシス
テムと、それが適用されるアプリケーシヨンとの
要求に合うように、ユーザ関数1603が提供さ
れる。しかしながら、システムの説明を完全にす
るために、このような関数の具体例を、以下にお
いて簡単に説明する。
第22図に流れ図を示したLOCKREQユーザ
関数は、ステツプ1950において、リクエスト・ス
ケジユラ1601によつて、LOCKREQ要求に
応じて呼び出される。この関数は、ステツプ1955
において、要求されたフアイルを求めてローカ
ル・フアイル・システムを探査する。ステツプ
1956において、フアイルが見つからない場合、
LOCKREQ関数は、ステツプ1957において、要
求中のPC10に「フアイルがありません」のメ
ツセージを返すように関数1604に依頼した
後、ステツプ1962において、戻る。
ステツプ1956において、フアイルが見つかつた
場合、LOCKREQ関数は、ステツプ1958におい
て、それが、あるユーザにロツクされているかど
うかを調べる。そのフアイルがロツクされている
場合、この関数は、ステツプ1961において、要求
中のPC10に「フアイルはありますが、ロツク
されています」のメツセージを返すように関数1
604に依頼した後、ステツプ1962において、戻
る。
ステツプ1958において、フアイルがロツクされ
ていない場合、LOCKREQ関数は、ステツプ
1954において、フアイル記述情報を調べて、その
フアイルはロツク可能かどうかを判断する。可能
な場合、ステツプ1959において、それをロツクす
る。具体的には、要求中のPC10のIDをフアイ
ルシステム中のそのフアイルに関係付ける。ステ
ツプ1954においてフアイルがロツク可能でないこ
とがわかつた場合、またはステツプ1959に続い
て、LOCKREQ関数は、ステツプ1960において、
要求中のPC10に「フアイルがありました」の
メツセージを返すように関数1604に依頼した
後、ステツプ1962において、戻る。
UNLOCKREQユーザ関数(図示せず)は、リ
クエスト・スケジユラ1601によつて、
UNLOCKREQに応じて呼び出される。パツチ2
1に関連して説明したように、この要求は、PC
10のユーザ・プログラム200が終了するとき
に、パツチ21によつて発生される。現在のユー
ザ・プログラム200にロツクされたすべてのフ
アイルFILENAMESは、その要求に付随するも
のであり、UNLOCKREQ関数に引数として渡さ
れる。UNLOCKREQ関数は、それらのフアイル
を求めてローカル・フアイルシステムを探査し、
それらのロツクを解除する。これは、具体的に
は、そのフアイルから現在の所有者のIDを取り
去る代わりに、それらのフアイルの各々にデイフ
オルトの所有者IDを結合させることによつて行
われる。
NETGETユーザ関数は、これがPC10からの
NETGET要求が入つたジヨブ・キユー1608
の記録事項1640を処理する準備が整つたとき
に、RESRCGET関数(第24図)またはリクエ
スト・スケジユラ1601によつて呼び出され
る。NETGET関数の構造は、SNAGET関数の
構造とほぼ同じであり、後者は、それがPC10
からのSNAGET要求が入つたジヨブ・キユー1
608の記録事項1640を処理する準備が整つ
たときに、リクエスト・スケジユラ1601によ
つて呼び出される。従つて、SNAGET関数およ
びNETGET関数の両方を、第23図にまとめて
示す。
それが、リクエスト・サーバ32によつて処理
さるる最初のNETGET要求であり、ステツプ
1901において判断されるように、NETSVR33
を要求するプロセスが存在しない場合、ユーザ関
数はそれを生成する必要がある。まず、ユーザ関
数は、ステツプ1902において、スケジユール・サ
ポート関数1607のGETCHANNELルーチン
を呼び出すことによつて、チヤネルを割り当て
る。次に、ユーザ関数は、ステツプ1903におい
て、プロセス・サポート関数1605へのコール
によつて、サーバ・プロセス33または34を生
成し、ステツプ1904において、そのプロセスへの
引数として、メツセージ・サポート関数1606
のメツセージ・キユーのIDおよびユーザ関数が
GETCHANNELから得たチヤネルIDを渡して、
それを、リクエスト・サーバ32から外に向か
い、新たに生成されたサーバ・プロセス33また
は34に達する通信に使用できるようにする。
サーバ・プロセス33または34が、生成され
るか、ステツプ1901で存在していた場合、それに
要求が送られる。サーバ・プロセス33または3
4からの復路通信を処理できるように、ステツプ
1905において、GETCHANNELへのコールを行
つて、チヤネルをもう一つ割り当てる。次に、ユ
ーザ関数は、ステツプ1905において、その要求を
吟味・分析することにより、そこから引数を取り
出すと共に、サーバ・プロセス33または34が
その要求へのサービスを終了したときにいずれの
型の動作が必要かを判断する。そして、ユーザ関
数は、ステツプ1907において、もう一つのユーザ
関数を選択し、それより、サーバ・プロセス33
または34からの通信の戻りを待つチヤネル・ウ
エイト・ジヨブを生成する。ユーザ関数は、次に
ステツプ1908において、スケジユール・サポート
関数1607のCHANNELルーチンを呼び出し
て、前記のチヤネル・ウエイト・ジヨブをジヨ
ブ・キユー1608に置く。復路チヤネルIDは、
そのジヨブのエイジ領域1651に置かれる。ユ
ーザ関数は、ステツプ1909において、往路チヤネ
ルを介してサーバ・プロセス33または34を呼
び出し、さらに要求および復路チヤネルIDを引
数としてサーバ・プロセス33または34に渡す
ように、メツセージ・サポート関数1606に依
頼する。
サーバ・プロセス33または34は、このタス
クを終了すると、CHANNEL型のメツセージを
メツセージ・キユーに入れて返し、さらにドライ
バ31のポート502にIOCTL(wakeup)コー
ルを発して、ポート502で休止中のものを復活
させる。
wakeupコールは、ステツプ1920において、第
18図において既に説明したように、スケジユラ
1601に、そのチヤネルに結合されているチヤ
ネル・ウエイト・ジヨブを実行させ、これが、ス
テツプ1921において、そのチヤネル・ウエイト・
ジヨブによつて特定され、リターン・メツセージ
を処理するユーザ関数を呼び出す。この関数は、
終了すると、ステツプ1922において、リターン・
コード・サポート関数1604を用いて、要求中
のPC10に状態情報を返した後、ステツプ1923
において、リクエスト・スケジユラ1601に戻
る。
パツチ21との関連において説明したように、
LPTプロセスによつてドライバ31に書き込ま
れたプリンタ要求は、「RESRC 1 LPT 1
FILENAME」の形式をとる。ここで、RESRC
は、優先度1を有する優先度付きジヨブとして呼
び出されるべきユーザ関数を指定するコマンドで
あり、LPTは、優先度1を有する優先度付きジ
ヨブとして他の中間コンピユータ11上で呼び出
されるべき関数を指定するコマンドであり、そし
てFILENAMEは、印字されるフアイルの名前で
ある。プリンタ要求は、資源要求の具体例であ
る。資源要求は、PC10または中間コンピユー
タ11上で実行中のプロセスから発することがで
きる。これらの要求は、資源要求識別子RESRC
と優先度の後に、資源クラス識別子(LPTが一
例である)と優先度があり、その後に引数、さら
にオプシヨンでサブクラス識別子があるという形
式をとる。
リクエスト・サーバ32が、資源要求を含むジ
ョブを処理する準備ができている場合、リクエス
ト・スケジユラ1601は、ユーザ関数である
RESRCGET関数を呼び出し、その要求のサブク
ラスおよび引数部分(例えば、「LPT 1
FILENAME」の部分)を引数として渡す。
RESRCGET関数を、第24図に示す。
RESRCGET関数は、ステツプ1950において呼
び出されると、第23図のNETGETユーザ関数
に渡す変数を特定の値に設定し、これにより、ス
テツプ1951において復路チヤネル・ウエイト・ジ
ヨブを生成する元となる特定のユーザ関数を、
NETGETに選択(ステツプ1907)させる。つぎ
に、RESRCGET関数は、その要求に資源要求と
して印を付けるために、ステツプ1952において、
その要求に所定の接頭文字を加える。最後に、
RESRCGETは、ステツプ1953において、前記の
変数および要求を引数として付けてNETGET関
数を呼び出す。そして、RESRCGETは、ステツ
プ1954において、戻る。
第23図に戻る。RESRCGETの指示により
NETGETがステツプ1907においてチヤネル・ウ
エイト・ジヨブを生成する元となるユーザ関数
は、ステツプ1921において、実行される。この関
数は、単に、要求された資源がNETSVR33に
よつて発見されているかどうかを判断するだけで
ある。発見済みである場合、ステツプ1922で、
「pass」の状態情報が返されるようにし、発見済
みでない場合は、「失敗」の状態情報が返される
ようにする。
第25図の資源クラス・ユーザ関数は、第26
図〜31図のNETSVR33の説明後に述べる。
サーバ・プロセス(第26図〜36図) NETSVR33は、2つの機能部分からなる。
即ち、他の中間コンピユータ11上のNETSVR
33からの要求を受け取るアクセプタ、および他
の中間コンピユータ11上のNETSVR33への
要求を生成するリクエスタである。
第26図および27図にNETSVRのリクエス
タを示す。ステツプ2000において、最初の
NETGETコールによつて起動されると、そのリ
クエスタは、ステツプ2001において、オペレーテ
イング・システム30の3BNET媒体14のドラ
イバを通常どおり開いて初期化する。次に、ステ
ツプ2002において、媒体14に接続された
NETSVR担体(つまり、NETSVR33のコピ
ーを備えた中間コンピユータ11)をすべて載せ
たテーブルを、自ら使用するために作成する。リ
クエスタは、この情報をオペレーテイング・シス
テム30のフアイルから通常どおり入手する。次
に、ステツプ2003において、制御/状態ポート
502を指定してIOCTL(wakeup)コールをドライ
バ31のポート502に発することにより、リクエ
スト・サーバ32を復活させる。そして、リクエ
スタは、ステツプ2004において、メツセージ・キ
ユー上で休止して、リクエスタ・サーバ32から
の要求の受信を待つ。
メツセージ・キユーが・リクエスト・サーバ3
2から要求を受信すると、ステツプ1005におい
て、リクエスタが復活する。リクエスタは、ステ
ツプ2005において、メツセージ・キユーからメツ
セージを取り出し、ステツプ2007において、媒体
14に接続された、それ自体を含めた、すべての
NETSVR担体に対し、そのメツセージが媒体1
4のドライバとの通常の相互作用によつて送られ
るようにする。そして、リクエスタは、ステツプ
2008において、その要求への応答を待ちながら休
止する。
応答が受信されると、リクエスタは、ステツプ
2010において、復活させられる。リクエスタは、
ステツプ2011において、媒体14のドライバから
の受信応答を取り出し、ステツプ2012において、
その応答を調べて、要求されたフアイルまたは資
源が見つかつたかどうか判断する。見つかつてい
ない場合、リクエスタは、ステツプ2013におい
て、それが最後に待たれた応答か、つまり網の他
のすべてのNETSVR担体からの応答が既に受信
されたかどうかを判断する。そうであるなら、リ
クエスタは、ステツプ2014において、要求された
フアイルまたは資源が見つからなかつたことを示
すメツセージを、メツセージ・キユーを介してリ
クエスト・サーバ32に返した後、ステツプ2004
において、メツセージ・キユー上で休止状態に戻
り、資源サーバ32からの新たな要求を待つ。応
答が、ステツプ2013において、最後に期待された
ものでない場合、リクエスタはステツプ2008にお
いて、単に休止に戻り、さらになる応答を待つ。
ステツプ2012において、応答により、フアイル
または資源が発見されたことがわかる場合、リク
エスタは、ステツプ2015において、要求項目が、
フアイルか、資源かを判断する。資源である場
合、リクエスタは、ステツプ2016において、資源
が発見されたことを告げるメツセージをリクエス
タ・サーバ32に返す。そして、リクエスタは、
ステツプ2004において、メツセージ・キユー上で
休止する。
ステツプ2015において、要求項目がフアイルで
あると判断した場合、リクエスタは、ステツプ
2017において、その応答を調べ、それがロツクさ
れているユーザがあるかどうかを判断する。ロツ
クされている場合、ステツプ2018において、それ
を示すメツセージをリクエスト・サーバ32に返
し、ステツプ2004において、メツセージ・キユー
上で休止する。
ステツプ2017において判断した時に、フアイル
がユーザにロツクされていない場合、そのフアイ
ルは、媒体14によつて、応答の一部として送ら
れ、バツフアに置かれているはずである。従つ
て、リクエスタは、ステツプ2019において、その
バツフアからそのフアイルを取り出し、それを中
間コンピユータ11のフアイルシステムに入れ、
さらにステツプ2020において、それを要求中のユ
ーザにロツクする。次に、リクエスタは、ステツ
プ2012において、フアイルを発見しロツクしたの
で要求中のユーザが利用できる旨のメツセージ・
キユーを介してリクエスタ・サーバ32に返す。
そして、リクエスタは、ステツプ2004において、
メツセージ・キユー上で休止する。
第28図〜31図に、NETSVRのアクセプタ
を示す。アクセプタは、それが常駐する中間コン
ピユータ11の初期化時に生成・起動される。ア
クセプタは、ステツプ2100において、起動される
と、ステツプ2101において、それ自体を初期化し
て、ローカル・サーチ・パス・テーブルを設定す
る。このテーブルには、アクセプタが、所与のフ
アイル名を有するフアイルを求めて探査する場合
に、たどることができる、いくつかの選択可能な
サーチ・パスが、定義される。アクセプタは、こ
の情報を、オペレーテイング・システム30のフ
アイルから得る。また、アクセプタは、ステツプ
2102において、そのコンピユータ上で利用可能な
資源を指定するローカル資源テーブルを設定す
る。この情報も、オペレーテイング・システム3
0のフアイルから得る。次に、アクセプタは、ス
テツプ2103において、オペレーテイング・システ
ム30にある、媒体14のドライバ31を通常ど
おり開いて初期化する。そして、アクセプタは、
ステツプ2104において、休止に入り、他の中間コ
ンピユータ11のNETSVR33からの要求を媒体
14を介して受信するのを待つ。
要求が受信されると、アクセプタは、ステツプ
2105において、復活させられる。アクセプタは、
ステツプ2106において、媒体14のバツフアから
要求を取り出し、ステツプ2107および2108におい
て、それを吟味することにより、その要求がフア
イルに対するものか、資源に対するものかを、そ
れぞれ判断する。資源の要求は、RESRCGET関
数によつて追加されたそれらを識別するための接
頭文字によつて識別される。要求が、これらのい
ずれでもない場合、アクセプタは、ステツプ2109
において、エラーを記録し、ステツプ2104におい
て、新たな要求を待つために休止に入る。(要求
は、このように中断されるので、その要求を発し
たNETSVRリクエスタは、応答を受信しないこ
とになる。これにより、オペレーテイング・シス
テム30の制御下で時間満了となり、その要求を
発したPC10に失敗のリター・コードが送られ
る。これは、システムに致命的な欠陥がない限
り、起こつてはならないことである。) ステツプ2107の判断で、要求がフアイルである
場合、アクセプタは、ステツプ2110において、ロ
ーカル・サーチ・パス・テーブルの記録事項を用
いて、そのフアイルを求めてローカル・フアイル
システムを探査する。ステツプ2112において、フ
アイルが見つからない場合、ステツプ2112におい
て、否定的応答メツセージを要求発生源に送つた
後、ステツプ2104において、休止に入つた、新た
な要求を待つ。
ステツプ2113において、発見されたフアイルが
ロツクされていない場合、アクセプタは、ステツ
プ2115において、そのフアイルが実行可能か、つ
まりプログラム・フアイルかどうかを調べる。実
行可能でない場合、アクセプタは、ステツプ2116
において、そのフアイルをロツクする。ステツプ
2115において、フアイルが実行可能である場合、
またはステツプ2116において、フアイルをロツク
した後で、アクセプタは、ステツプ2117におい
て、媒体14と相互に作用し、ステツプ2117にお
いては、肯定的応答メツセージを、ステツプ2118
においては、フアイルのコピーを、媒体14を介
して要求発生源に送る。ステツプ2119の判断で、
フアイルがデータ・フアイルである(つまり、実
行可能なフアイルでない)場合、アクセプタは、
ステツプ2120において、それをローカル・フアイ
ルシステムから削除する。フアイルが実行可能な
フアイルである場合、または削除に続いて、アク
セプタは、ステツプ2104において、休止に入り、
新たな要求を持つ。
ステツプ2108においては、要求が資源に対する
ものである場合、アクセプタは、ステツプ2121に
おいて、資源テーブルを探査し、ステツプ2122に
おいて、その資源が、そのコンピユータ上で入手
可能かどうかを判断する。資源が、そのテーブル
にない場合、アクセプタは、ステツプ2123におい
て、媒体14のドライバと作用し合うことでもつ
て、その旨のメツセージを要求の資源である網構
成体に送るようにした後、ステツプ2104におい
て、休止に入り、新たな要求を待つ。資源がテー
ブルにある場合、アクセプタは、ステツプ2126に
おいて「資源あり」のメツセージを要求発生源に
送る。次に、アクセプタは、ステツプ2128におい
て、関数RASSISTを呼び出し、ドライバ31の
番号付きポート501に要求を書き込む。そし
て、ステツプ2104において、休止に戻り、新たな
要求を待つ。
パツチ21を扱つた節において既に述べたよう
に、プロセスは、番号付きポート501を獲得し
て、PC10のように、それを開き、それに書き
込むことができる。RASSIST関数は、そのよう
なプロセスである。この関数は、NETSVRアク
セプタのプロセスの拡張として機能し、アクセプ
タがドライバ31上で休止するのを防いで効率を
向上させるために別個のプロセスとして実現され
る。第31図に、RASSISTを示す。
RASSIST関数は、それが常駐する中間コンピ
ユータ11の初期化の際に、ステツプ2210におい
て、起動される。RASSISTは、ステツプ2211に
おいて、ドライバ31の番号無しポート500を
開き、さらにステツプ2212において、それを読む
ことにより。それから番号付きポート501を獲
得する。次に、RASSISTは、ステツプ2213にお
いて、番号無しポート500を閉じ、ステツプ
2214において、その割り当てられた番号付きポー
ト501を開く。通常のUNIXシステムのよう
に、RASSISTは、ステツプ2215において、
NETSVRアクセプタに対しメツセージ・キユー
を生成して開く。このキユーは、一定の識別子を
有するため、NETSVRアクセプタは、キユーの
存在を察することができるので、その存在の知ら
せを受ける必要はない。次に、RASSISTは、ス
テツプ2216において、メツセージ・キユー上で休
止に入り、入力を待つ。
NETSVRアクセプタが、要求をメツセージ・
キユーに書き込むと、ステツプ2217において、
RASSISTが、復活させられる。そして、
RASSISTは、ステツプ2218において、メツセー
ジ・キユーから要求を取り出し、ステツプ2214で
開いた番号付きポート501に要求を書き込む。
そして、ステツプ2216において、メツセージ・キ
ユー上で休止に戻る。資源要求が、RASSISTに
よつてドライバ31に書き込まれると、この要求
は、要求された資源が位置する中間コンピユータ
11で、そのコンピユータ上の要求として処理さ
れる。ドライバ31に書き込まれる要求は、本来
の資源要求の資源クラス部分および、引数部分で
ある。換言すれば、この時は、既に資源要求識別
子RESRCは、前に付いていないのである。した
がつて、リクエスト・サーバ32が、ジヨブ・キ
ユー1608から、この要求を取り出すときは、
RESRCGET関数は呼び出さず、代わりに、その
要求の資源クラス部分に相当するユーザ関数を呼
び出す。
典型的な資源クラスのユーザ関数を、第25図
に流れ図で示す。このユーザ関数は、ステツプ
2500において呼び出されると、ステツプ2501にお
いて、要求の引数部分を分析し、ステツプ2502に
おいて、要求を満たすためには、他のコンピユー
タで入手可能なデータを必要とする(例えば、要
求により、そのコンピユータ上で利用できないフ
アイルを表示することになつている場合)かどう
かを判断する。そうでない場合、ステツプ2505に
おいて、ユーザ関数は、そのクラスの資源のため
の通常のUNIXシステム・ドライバのような、
UNIXシステムをサポートするプロセスを呼び出
して、通常のUNIXシステムの要領で要求を満足
させる。要求が満たされると、ステツプ2506にお
いて、関数は、終了する。
ステツプ2502において、他のコンピユータで入
手可能なデータが必要なことがわかつた場合、ユ
ーザ関数は、ステツプ2503において、第23図の
NETGETユーザ関数を呼び出して、要求された
データが入つているフアイルを、前記のように探
して入手する。NETGET関数の実行後、ステツ
プ2504においてそのチヤネル・ウエイト・ジヨブ
が資源クラスユーザ関数に戻ると、ユーザ関数
は、ステツプ2505に進み、要求を満たす、 第32図に示すように、APISVR34は、
SNAドライバ2203からなるSNAリンク15
を介してメインフレーム・コンピユータに接続さ
れたIBMのSNA I/Oシステムへのアプリケー
シヨン・プログラム・インタフエース(API)を
提供するライブラリ2200へのコールを行うユ
ーザ・レベルのプロセスであるる。APISVRは、
SNAドライバ2203のためのプレゼンテーシ
ヨン空間2201として役立つようにリンク時に
APIライブラリ2200に結合された、中間コン
ピユータ11のメモリ37の空間を使用する。
この実施例においては、中間コンピユータ11
は、UNIXシステム・ベースの装置であるため、
ユーザのコンソール(図示せず)は、AT&Tの
Te3278端末エミユレータ2202を介してSNA
ドライバ2203と通信を行う。これによつて、
メインフレーム・コンピユータ12からは、コン
ソールが、3278端末のように見える。端末エミユ
レータ2202は、プレゼンテーシヨン空間22
01でプロトコルの変換を行い、SNA入出力フ
オーマツトからUNIXシステム・キヤラクタI/
Oフオーマツトに写像する。
第33図〜第36図に、APISVR34の流れ
図を示す。APISVR34は、ステツプ2800にお
いて生成されると、ステツプ2801において、プレ
ゼンテーシヨン空間2201を初期化し、メツセ
ージ・キユーのIDおよび生成時に渡された制御
チヤネルIDを格納する。次に、ステツプ2802に
おいて、SNAドライバ2203の実行を通常ど
おり開始し、これを通しステツプ2803〜2819にお
いて、APIライブラリ2200を用いてメインフ
レーム・コンピユータ12にログインする。次に
APISVR34は、ステツプ2820において、メツ
セージ・サポート関数1606のメツセージ・キ
ユー上で休止に入り、呼び出しているユーザ関数
からの要求の受信を待つ。
ログインの手順は、次のとおりである。まず、
APISVR34は、ステツプ2803において、「端
末」に電源が投入されたことを、メインフレー
ム・コンピユータ12に知らせる。次に、ステツ
プ2804において、ログイン要求をプレゼンテーシ
ヨン空間2201に置き、さらにステツプ2805に
おいて、端末の「enter」キーの打鍵をシミユレ
ートすることにより、メインフレーム・コンピユ
ータ12が、プレゼンテーシヨナ空間2201の
内容を受け取るようにする。そして、APISVR
34は、ステツプ2806において、プレゼンテーシ
ヨン空間2201上で休止に入る。
コンピユータ12が、応答をプレゼンテーシヨ
ン空間2201に入れて返すと、ステツプ2807に
おいて、APISVR34か、復活させられる。
APISVR34は、ステツプ2808において、応答
を調べることにより、それが正しいパスワードの
プロンプトかどうかを判断する。そうでない場
合、APISVR34は、ステツプ2819において、
呼び出し中のユーザ関数にエラーを返して、中止
する。応答が正しい場合、APISVR34はステ
ツプ2809において、パスワードをプレゼンテーシ
ヨン空間2201に置き、ステツプ2801におい
て、端末の「enter」キーをシミユレートした後、
ステツプ2811において、プレゼンテーシヨン空間
2201上で休止に入る。
これに応じて、メインフレーム・コンピユータ
12は、プレゼンテーシヨン空間2201からパ
スワードを受け取る。コンピユータ12が、応答
をプレゼンテーシヨン空間2201に入れて返す
と、ステツプ2812において、APISVR34が、
復活させられる。APISVR34は、ステツプ
2513において、応答を調べることにより、それが
正しい外部パスワードのプロンプトかどうかを判
断する。そうでない場合、APISVR34は、ス
テツプ2819において、呼び出し中のユーザ関数に
エラーを返して、中止する。応答が正しい場合、
APISVR34は、ステツプ2814において、その
外部(保護)パスワードをプレゼンテーシヨン空
間2201に置き、ステツプ2815において、端末
「enter」キーをシミユレートした後、ステツプ
2816において、プレゼンテーシヨン空間2201
上で休止に入る。
コンピユータ12は、パスワードを受け取り、
応答をプレゼンテーシヨン空間2201に入れて
返す。これに応じて、APISVR34は、ステツ
プ2817において復活させられ、ステツプ2818にお
いて、その応答を調べることにより、それが、ロ
グインによつて起動することを意図したアプリケ
ーシヨンからの正しいプロンプトかどうかを判断
する。そうでない場合、APISVR34は、ステ
ツプ2819において、呼び出し中のユーザ関数にエ
ラーを返して、中止する。応答が正しい場合、
APISVR34は、ステツプ2820において、メツ
セージ・キユー上で休止する。
要求が、(例えば、リクエスト・サーバ32か
ら)メツセージ・キユーに届くと、APISVR3
4は、ステツプ2821において、復活させられる。
APISVR34は、ステツプ2822において、その
要求を取り出し、その要求の種類を判断する。
ログイン要求の場合、APISVR34は、単に
ステツプ2803に戻る。
メインフレーム・コンピユータ12のデーター
ベース13からの指名されたフアイルのダウンロ
ードに対する要求である場合、APISVR34は、
ステツプ2823〜2836において、APIライブラリを
通常どおり使用して、要求されたフアイルを得
る。
APISVR34は、ダウンロード要求に応じて、
ステツプ2823において、「クリア・スクリーン」
および「ホーム・カーソル」の端末動作をシミユ
レートし、プレゼンテーシヨン空間2201の特
定の領域のみでなく、その全体を受け取る必要が
あることを、メインフレーム・コンピユータ12
に知らせる。次に、APISVR34は、ステツプ
2824において、フアイルの検索を要求するコマン
ド、および要求されたフアイルのフアイル名を、
プレゼンテーシヨン空間2201に置き、さら
に、ステツプ2825において、端末の「enter」キ
ーの打鍵をシミユレートする。そして、
APISVR34は、ステツプ2826において、要求
されたフアイルのフアイル名を有するフアイルを
ローカル・フアイル・システムにおいて、開いた
後、ステツプ2827において、プレゼンテーシヨン
空間2201上で休止に入る。
コンピユータ12が、プレゼンテーシヨン空間
2201の内容を受け取り、それに応答を返す
と、ステツプ2828において、APISVR34が、
復活させられる。APISVR34は、ステツプ
2829において、その応答が、エラー・コードか、
またはフアイル・データかを判断する。エラー・
コードの場合、APISVR34は、ステツプ2836
において、呼び出しているユーザ関数にエラー・
コードを返す。応答が、フアイル・データの場
合、APISVR34は、ステツプ2830において、
プレゼンテーシヨン空間2201の内容をバツフ
アにコピーし、ステツプ2831において、そのデー
タを、コンピユータ12で使用される形式からコ
ンピユータ11で使用される形式に変換する。次
に、ステツプ2823において、APISVR34は、
変換したフアイル・データを、バツフアからステ
ツプ2826でAPISVR34が開いたフアイルにコ
ピーする。
コンピユータ12が最後のフアイル・データで
返した情報の一部は、「エンド・オブ・データ」
コマンドである。APISVR34は、ステツプ
2833において、この返された情報を調べることに
より、それが、このコマンドを含むかどうか、ま
たは受け取るべきバツフア分のデータが、まだあ
るかどうか、を判断する。受け取るべきデータ量
を越えるデータがある場合、APISVR34は、
ステツプ2834において、端末の「クリア・スクリ
ーン」キーの打鍵をシミユレートすることによ
り、コンピユータ12が次のバツフア分のフアイ
ルデータを返すようにし、さらにステツプ2835に
おいて、端末の「enter」キーの打鍵をシミユレ
ートする。そして、APISVR34は、ステツプ
2827に戻る。
ダウンロード関数は、PC10の要求の結果と
して直接呼び出すことのできる唯一のAPISVR
34関数である。しかし、APISVR34は、ロ
グイン関数およびダウンロード関数のみならず、
ログオフ関数およびアツプロード関数も、中間コ
ンピユータ11のプロセスに提供している。いず
れの場合も、APISVR34は、APIライブラリ2
200を通常どおり使用して、これらの機能を果
たす。
アツプロード関数をステツプ2850〜2869に示
す。この関数により、中間コンピユータ11のフ
アイル・システムからメインフレーム・コンピユ
ータ12のデータベース13に、フアイルが転送
される。APISVR34は、アツプロード要求に
応じて、ステツプ2850において、ローカル・フア
イル・システムにあるアツプロードするべきフア
イルを開く。次に、ステツプ2851において、「ク
リア・スクリーン」および「ホーム・カーソル」
の端末動作をシミユレートし、ステツプ2852にお
いて、フアイルの格納を要求するコマンド、その
フアイルの名前、およびそのフアイルの大きさ
を、プレゼンテーシヨン空間2201に置き、さ
らにステツプ2853において、端末の「enter」キ
ーの打鍵をシミユレートする。そして、
APISVR34は、ステツプ2854において、プレ
ゼンテーシヨン空間2201上で休止する。
コンピユータ12が、プレゼンテーシヨン空間
2201の内容を受け取り、それに応答を返す
と、APISVR34は、ステツプ2855において、
復活させられる。APISVR34は、ステツプ
2856において、応答を調べて、それが、エラーの
応答か、またはフアイル・データのための正しい
プロンプトか、を判断する。それが、エラー応答
である場合、APISVR34は、ステツプ2869に
おいて、呼び出しているユーザ関数にエラー・コ
ードを返す。応答が正しいプロンプトである場
合、APISVR34は、ステツプ2857において、
プレゼンテーシヨン空間2201に見合うだけの
フアイルをバツフアにコピーし、ステツプ2858に
おいて、中間コンピユータ11で使用される形式
からメインフレーム・コンピユータ12で使用去
れる形式に、データを変換する。つぎに、
APISVR34では、ステツプ2859において、「ク
リア・スクリーン」および「ホーム・カーソル」
の端末動作をシミユレートし、ステツプ2860にお
いて、変換したフアイル・データをバツフアから
プレゼンテーシヨン空間2201にコピーし、ス
テツプ2861において、端末の「enter」キーの打
鍵をシミユレートし、さらにステツプ2826におい
て、プレゼンテーシヨン空間2201上で休止す
る。
コンピユータ12が、プレゼンテーシヨン空間
2201からデータを受け取り、受信通知を返す
と、APISVR34は、ステツプ2863において、
復活させられる。APISVR34は、ステツプ
2864において、その通知を調べ、エラーがあつた
かどうかを判断する。エラーがある場合、
APISVR34は、ステツプ2869において、呼び
出しているユーザ関数にエラー・コードを返す。
エラーがない場合、ステツプ2865において、すべ
てのフアイル・データがコンピユータ12に送ら
れたかどうか、またはバツフア分送るだけのデー
タが、まだあるかどうか、を判断する。送る量以
上のデータがある場合、APISVR34は、ステ
ツプ2857に戻る。すべてのデータが送られた場
合、APISVR34は、ステツプ2866において、
「クリア・スクリーン」および「ホーム・カーソ
ル」の端末動作をシミユレートし、ステツプ2867
において、終了コマンドをプレゼンテーシヨン空
間2201において、フアイル全体を受信したこ
とをコンピユータ12に通知し、ステツプ2868に
おいて、端末の「enter」キーの打鍵をシミユレ
ートした後、ステツプ2820に戻り、他の要求を待
つ。
ログオフ関数をステツプ2881〜2888に示す。こ
の関数により、中間コンピユータ11のメインフ
レーム・コンピユータ12との対話期間が終了す
る。ログオフ要求があると、APISVR34は、
ステツプ2881において、「クリア・スクリーン」
および「ホーム・カーソル」の端末動作をシミユ
レートする。次に、ステツプ2882において、exit
コマンドをプレゼンテーシヨン空間2201に置
き、ステツプ2883に置いて、端末の「enter」キ
ーの打鍵をシミユレートした後、ステツプ2884に
おいて、プレゼンテーシヨン空間2201上で休
止する。
コンピユータ12は、プレゼンテーシヨン空間
2201の内容を受け取ると、それに受信通知に
よつて応答する。これによつて、APISVR34
は、ステツプ2885において、復活させられ、ステ
ツプ2886において、その通知を調べて、コンピユ
ータ12が対話を適切に終わらせたかを判断す
る。そうでない場合、APISVR34は、ステツ
プ2888において、エラー・コードを呼び出し元に
返す。対話を適切に終わつた場合、APISVR3
4は、ステツプ2887において、成功コードを呼び
出し元に返す。
JP63501886A 1987-09-28 1988-01-26 コンピュータのインタフェース・アーキテクチャ Granted JPH03501784A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US101,391 1987-09-28
US07/101,391 US5109515A (en) 1987-09-28 1987-09-28 User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services

Publications (2)

Publication Number Publication Date
JPH03501784A JPH03501784A (ja) 1991-04-18
JPH0477938B2 true JPH0477938B2 (ja) 1992-12-09

Family

ID=22284410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63501886A Granted JPH03501784A (ja) 1987-09-28 1988-01-26 コンピュータのインタフェース・アーキテクチャ

Country Status (6)

Country Link
US (1) US5109515A (ja)
EP (1) EP0370008B1 (ja)
JP (1) JPH03501784A (ja)
CA (1) CA1308200C (ja)
DE (1) DE3879947T2 (ja)
WO (1) WO1989003086A1 (ja)

Families Citing this family (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475836A (en) * 1987-04-01 1995-12-12 Lotus Development Corporation Interface for providing access to external data sources/sinks
US5239643A (en) * 1987-11-30 1993-08-24 International Business Machines Corporation Method for reducing disk I/O accesses in a multi-processor clustered type data processing system
US5124909A (en) * 1988-10-31 1992-06-23 Hewlett-Packard Company Software program for providing cooperative processing between personal computers and a host computer
KR920008461B1 (ko) * 1989-05-15 1992-09-30 인터내셔널 비지네스 머신즈 코포레이션 프로세스 인터럽팅 시스템 및 그 방법
JPH0362257A (ja) * 1989-07-31 1991-03-18 Toshiba Corp ネットワークモニタリングシステム
WO1991002314A1 (en) * 1989-08-03 1991-02-21 International Business Machines Corporation Data processing network
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
CA2066566C (en) * 1989-09-08 2001-12-25 David Hitz Multiple facility operating system architecture
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
EP0424715A3 (en) * 1989-10-23 1993-08-18 International Business Machines Corporation Computer system
DE69126223T2 (de) * 1990-02-14 1997-09-18 Fujitsu Ltd System zur Erstellung eines Übertragungsweges in einem eng gekoppelten Rechnersystem
US5361199A (en) * 1990-07-31 1994-11-01 Texas Instruments Incorporated Automated procurement system with multi-system data access
US5390302A (en) * 1991-02-21 1995-02-14 Digital Equipment Corporation Transaction control
US5265239A (en) * 1991-04-08 1993-11-23 Ardolino Anthony A Method for remotely accessing service programs of a local processing system supporting multiple protocol stacks and multiple device drivers
US5303375A (en) * 1991-04-26 1994-04-12 Hewlett-Packard Company System and method for facilitating selection of running functional process in object-oriented environments
CA2067633C (en) * 1991-07-24 1996-10-01 Eric Jonathan Bauer Method and apparatus for accessing a computer-based file system
US5257384A (en) * 1991-09-09 1993-10-26 Compaq Computer Corporation Asynchronous protocol for computer system manager
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
US5313638A (en) * 1992-03-24 1994-05-17 International Business Machines Corp. Method using semaphores for synchronizing communication between programs or processes resident in a computer system
US6026452A (en) 1997-02-26 2000-02-15 Pitts; William Michael Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
WO1993024890A1 (en) * 1992-06-03 1993-12-09 Pitts William R System for accessing distributed data cache channel at each network node to pass requests and data
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5371852A (en) * 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
GB2272084B (en) * 1992-10-28 1996-01-31 Northern Telecom Ltd Distributed computer system
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5784622A (en) * 1992-11-18 1998-07-21 Canon Kabushiki Kaisha Method and apparatus for multiprotocol operation of a networked peripheral
CA2103297A1 (en) * 1992-12-07 1994-06-08 Donald J. Kennedy Interception system and method including user interface
EP0601860B1 (en) * 1992-12-10 1999-10-27 Matsushita Electric Industrial Co., Ltd. Server and client
US5428730A (en) * 1992-12-15 1995-06-27 International Business Machines Corporation Multimedia system having software mechanism providing standardized interfaces and controls for the operation of multimedia devices
GB2273800A (en) * 1992-12-24 1994-06-29 Ibm Distributed data processing system
US5404527A (en) * 1992-12-31 1995-04-04 Unisys Corporation System and method for remote program load
US5758157A (en) * 1992-12-31 1998-05-26 International Business Machines Corporation Method and system for providing service processor capability in a data processing by transmitting service processor requests between processing complexes
JPH06301555A (ja) * 1993-02-26 1994-10-28 Internatl Business Mach Corp <Ibm> マイクロカーネル上の複数の共存オペレーティング・システム・パーソナリティ用のシステム
FR2702578B1 (fr) * 1993-03-12 1995-04-14 Bull Sa Système de communication avec un réseau.
US5631935A (en) * 1993-05-06 1997-05-20 Run-Rad Unlimited Networking, Ltd. Method and apparatus for governing information transfer using an efficient transport protocol
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
JP3862274B2 (ja) * 1993-06-03 2006-12-27 ネットワーク・アプライアンス・インコーポレイテッド Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法
DE69434381T2 (de) * 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
US5572709A (en) * 1993-06-18 1996-11-05 Lucent Technologies Inc. Using dynamically-linked libraries to add side effects to operations
CA2126740A1 (en) * 1993-07-06 1995-01-07 Naveen Jain Method and system for incorporation of a utility function into an operating system
US5566326A (en) * 1993-09-28 1996-10-15 Bull Hn Information Systems Inc. Copy file mechanism for transferring files between a host system and an emulated file system
US6594688B2 (en) * 1993-10-01 2003-07-15 Collaboration Properties, Inc. Dedicated echo canceler for a workstation
US7080051B1 (en) 1993-11-04 2006-07-18 Crawford Christopher M Internet download systems and methods providing software to internet computer users for local execution
US5771354A (en) 1993-11-04 1998-06-23 Crawford; Christopher M. Internet online backup system provides remote storage for customers using IDs and passwords which were interactively established when signing up for backup services
US6026454A (en) * 1993-12-17 2000-02-15 Packard Bell Nec, Inc. Interface for multiplexing and reformatting information transfer between device driver programs and a network application program which only accepts information in a predetermined format
WO1995019010A1 (en) * 1994-01-06 1995-07-13 Cfi Proservices, Inc. Home banking system
US5706429A (en) * 1994-03-21 1998-01-06 International Business Machines Corporation Transaction processing system and method
US5765155A (en) * 1994-05-11 1998-06-09 Nec Corporation Master data managing method
JPH07311749A (ja) * 1994-05-19 1995-11-28 Toshiba Corp マルチプロセッサシステム及びカーネル置換方法
US5701463A (en) * 1994-09-09 1997-12-23 Cheyenne Advanced Technology Limited Method of replacing the identity of a file with another as part of a file open request in a computer system
US6085234A (en) * 1994-11-28 2000-07-04 Inca Technology, Inc. Remote file services network-infrastructure cache
US5850518A (en) * 1994-12-12 1998-12-15 Northrup; Charles J. Access-method-independent exchange
US5805809A (en) * 1995-04-26 1998-09-08 Shiva Corporation Installable performance accelerator for maintaining a local cache storing data residing on a server computer
US5694556A (en) * 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
JPH096706A (ja) * 1995-06-22 1997-01-10 Hitachi Ltd 疎結合計算機システム
US6732138B1 (en) 1995-07-26 2004-05-04 International Business Machines Corporation Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US5909576A (en) * 1995-08-16 1999-06-01 International Business Machines Corporation Method and apparatus for using device drivers of a first operating system, under the control of a second operating system
US5845280A (en) * 1995-09-25 1998-12-01 Microsoft Corporation Method and apparatus for transmitting a file in a network using a single transmit request from a user-mode process to a kernel-mode process
US5890165A (en) * 1996-03-29 1999-03-30 Emc Corporation Method and apparatus for automatic discovery of databases
US6016402A (en) * 1996-05-21 2000-01-18 Iomega Corporation Method for integrating removable media disk drive into operating system recognized as fixed disk type and modifying operating system to recognize as floppy disk type
US6662205B1 (en) 1996-10-01 2003-12-09 International Business Machines Corporation Scaleable and extensible system management architecture with dataless endpoints
US5946690A (en) * 1996-12-17 1999-08-31 Inca Technology, Inc. NDC consistency reconnect mechanism
JPH11122242A (ja) * 1997-10-17 1999-04-30 Fujitsu Ltd 通信監視制御装置
WO1999023571A1 (en) * 1997-11-03 1999-05-14 Inca Technology, Inc. Automatically configuring network-name-services
US6816904B1 (en) * 1997-11-04 2004-11-09 Collaboration Properties, Inc. Networked video multimedia storage server environment
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6477143B1 (en) 1998-01-25 2002-11-05 Dror Ginossar Method and apparatus for packet network congestion avoidance and control
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6415316B1 (en) 1998-09-01 2002-07-02 Aidministrator Nederland B.V. Method and apparatus for implementing a web page diary
US6289362B1 (en) 1998-09-01 2001-09-11 Aidministrator Nederland B.V. System and method for generating, transferring and using an annotated universal address
US6295639B1 (en) * 1998-09-01 2001-09-25 Aidministrator Nederland B.V. Securely accessing a file system of a remote server computer
US6405224B1 (en) 1998-09-01 2002-06-11 Aidministrator Nederland B.V. Method and apparatus for HTML control
US6356863B1 (en) 1998-09-08 2002-03-12 Metaphorics Llc Virtual network file server
US7386551B1 (en) * 1998-11-09 2008-06-10 Unisys Corporation Method and apparatus for providing an availability message to a remote user
US6801943B1 (en) * 1999-04-30 2004-10-05 Honeywell International Inc. Network scheduler for real time applications
JP5220974B2 (ja) 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6876991B1 (en) 1999-11-08 2005-04-05 Collaborative Decision Platforms, Llc. System, method and computer program product for a collaborative decision platform
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US7194504B2 (en) * 2000-02-18 2007-03-20 Avamar Technologies, Inc. System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7509420B2 (en) 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
CA2381189A1 (en) * 2000-06-02 2001-12-13 Inrange Technologies Corporation Message queue server system
US6665867B1 (en) * 2000-07-06 2003-12-16 International Business Machines Corporation Self-propagating software objects and applications
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US6886160B1 (en) * 2000-11-29 2005-04-26 Hyung Sup Lee Distribution of mainframe data in the PC environment
US20020120716A1 (en) * 2000-12-22 2002-08-29 Balaji Raghunathan Server frame work for a database server
US20040233910A1 (en) * 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US7571445B2 (en) * 2001-11-29 2009-08-04 Dell Products L.P. System and method for dynamic device driver support in an open source operating system
US20040243845A1 (en) * 2002-02-01 2004-12-02 Larsen Vincent Alan System and method for process-based security in a network device
US20040158734A1 (en) * 2002-02-01 2004-08-12 Larsen Vincent Alan System and method for process-based security in a portable electronic device
US20040093525A1 (en) * 2002-02-01 2004-05-13 Larnen Vincent Alan Process based security tai building
US7249379B2 (en) * 2002-02-01 2007-07-24 Systems Advisory Group Enterprises, Inc. Method and apparatus for implementing process-based security in a computer system
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US20040172412A1 (en) * 2002-07-19 2004-09-02 Kirby Files Automated configuration of packet routed networks
US7457822B1 (en) * 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7265193B2 (en) * 2003-01-31 2007-09-04 Exxonmobil Chemical Patents Inc. Polymerization process
US8225234B2 (en) * 2003-02-28 2012-07-17 Oracle International Corporation Method for utilizing look and feel in a graphical user interface
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
US7606916B1 (en) * 2003-11-10 2009-10-20 Cisco Technology, Inc. Method and apparatus for load balancing within a computer system
US8996455B2 (en) * 2004-04-30 2015-03-31 Netapp, Inc. System and method for configuring a storage network utilizing a multi-protocol storage appliance
US20050267892A1 (en) * 2004-05-21 2005-12-01 Patrick Paul B Service proxy definition
US20050278374A1 (en) * 2004-05-21 2005-12-15 Bea Systems, Inc. Dynamic program modification
US20060031353A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Dynamic publishing in a service oriented architecture
US20060031481A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Service oriented architecture with monitoring
US20050270970A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Failsafe service oriented architecture
US7774485B2 (en) * 2004-05-21 2010-08-10 Bea Systems, Inc. Dynamic service composition and orchestration
US20050273516A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamic routing in a service oriented architecture
US20060031432A1 (en) * 2004-05-21 2006-02-09 Bea Systens, Inc. Service oriented architecture with message processing pipelines
US20060031354A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Service oriented architecture
US20050264581A1 (en) * 2004-05-21 2005-12-01 Bea Systems, Inc. Dynamic program modification
US20050273497A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Service oriented architecture with electronic mail transport protocol
US20060031930A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Dynamically configurable service oriented architecture
US20050273520A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Service oriented architecture with file transport protocol
US20050273517A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Service oriented architecture with credential management
US20060069791A1 (en) * 2004-05-21 2006-03-30 Bea Systems, Inc. Service oriented architecture with interchangeable transport protocols
US20050273502A1 (en) * 2004-05-21 2005-12-08 Patrick Paul B Service oriented architecture with message processing stages
US20060005063A1 (en) * 2004-05-21 2006-01-05 Bea Systems, Inc. Error handling for a service oriented architecture
US20050267947A1 (en) * 2004-05-21 2005-12-01 Bea Systems, Inc. Service oriented architecture with message processing pipelines
US20060031433A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Batch updating for a service oriented architecture
US7310684B2 (en) * 2004-05-21 2007-12-18 Bea Systems, Inc. Message processing in a service oriented architecture
US20060031355A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Programmable service oriented architecture
US20050273847A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Programmable message processing stage for a service oriented architecture
US20050273521A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamically configurable service oriented architecture
US20060136555A1 (en) * 2004-05-21 2006-06-22 Bea Systems, Inc. Secure service oriented architecture
US20060031431A1 (en) * 2004-05-21 2006-02-09 Bea Systems, Inc. Reliable updating for a service oriented architecture
WO2006031723A2 (en) * 2004-09-13 2006-03-23 Coretrace Corporation Method and system for license management
US7427826B2 (en) * 2005-01-25 2008-09-23 Canon Kabushiki Kaisha Electron beam apparatus
US20070056033A1 (en) * 2005-03-31 2007-03-08 Grawrock David W Platform configuration apparatus, systems, and methods
US7707629B2 (en) * 2005-03-31 2010-04-27 Intel Corporation Platform configuration register virtualization apparatus, systems, and methods
JP5204099B2 (ja) 2006-05-05 2013-06-05 ハイバー インコーポレイテッド グループ・ベースの完全および増分コンピュータ・ファイル・バックアップ・システム、処理および装置
US7743039B2 (en) * 2006-12-11 2010-06-22 Simdesk Technologies, Inc. File operations with multiple level file locking techniques
US8996394B2 (en) * 2007-05-18 2015-03-31 Oracle International Corporation System and method for enabling decision activities in a process management and design environment
US8185916B2 (en) * 2007-06-28 2012-05-22 Oracle International Corporation System and method for integrating a business process management system with an enterprise service bus
KR100909955B1 (ko) * 2007-12-17 2009-07-30 한국전자통신연구원 이기종 단말기를 이용한 인터넷 서비스 제공 시스템 및 그방법
US10417051B2 (en) * 2008-05-23 2019-09-17 International Business Machines Corporation Synchronizing shared resources in an order processing environment using a synchronization component
US8301687B2 (en) * 2009-03-31 2012-10-30 Software Ag Systems and/or methods for standards-based messaging
US20100306005A1 (en) * 2009-05-29 2010-12-02 Perceptive Software, Inc. Workflow Management System and Method
US9081616B2 (en) * 2009-05-29 2015-07-14 Lexmark International Technology, SA System and method for adjusting a number of processing modules based on processing load
JP2014199659A (ja) * 2013-03-15 2014-10-23 株式会社リコー データ形式変換システム、情報管理システム及び情報システム、並びに、データ形式変換方法、情報システムの制御方法、それらの方法のプログラム及びそのプログラムを記録した記録媒体
US9654999B2 (en) 2014-06-20 2017-05-16 Blackberry Limited Apparatus and method to reduce a rate of receiving data
KR101586976B1 (ko) * 2015-05-19 2016-01-21 주식회사 티맥스 소프트 조기 수신 메시지에 대한 코릴레이션 매칭을 수행하는 컴퓨터 프로그램 및 컴퓨팅 장치
US11429564B2 (en) 2019-06-18 2022-08-30 Bank Of America Corporation File transferring using artificial intelligence

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004277A (en) * 1974-05-29 1977-01-18 Gavril Bruce D Switching system for non-symmetrical sharing of computer peripheral equipment
US4363094A (en) * 1977-12-29 1982-12-07 M/A-COM DDC, Inc. Communications processor
GB2023314B (en) * 1978-06-15 1982-10-06 Ibm Digital data processing systems
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
JPS5917628A (ja) * 1982-07-20 1984-01-28 Hitachi Ltd 端末操作代行制御方法
FR2531827A1 (fr) * 1982-08-13 1984-02-17 Irlande Jean Paul Dispositif pour commander des transferts de fichiers entre des ordinateurs
US4530051A (en) * 1982-09-10 1985-07-16 At&T Bell Laboratories Program process execution in a distributed multiprocessor system
SE448919B (sv) * 1983-03-04 1987-03-23 Ibm Svenska Ab Metod for att overfora informationsenheter i ett datornetsystem, samt datornetsystem for genomforande av metoden
US4547880A (en) * 1983-05-13 1985-10-15 Able Computer Communication control apparatus for digital devices
US4577272A (en) * 1983-06-27 1986-03-18 E-Systems, Inc. Fault tolerant and load sharing processing system
US4575793A (en) * 1983-08-19 1986-03-11 Cxi, Inc. Personal-computer to 3270 system interfacing apparatus
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
US4608663A (en) * 1983-08-31 1986-08-26 Wolsten's Computer Devices, Inc. Computer network for using a common peripheral device
US4677588A (en) * 1983-11-14 1987-06-30 International Business Machines Corp. Network interconnection without integration
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
US4633245A (en) * 1983-12-30 1986-12-30 International Business Machines Corporation Local area network interconnect switching system
US4604686A (en) * 1984-01-27 1986-08-05 Martin Marietta Corporation Associative data access method (ADAM) and its means of implementation
US4635189A (en) * 1984-03-01 1987-01-06 Measurex Corporation Real-time distributed data-base management system
US4660168A (en) * 1984-03-14 1987-04-21 Grant Elwyn E Apparatus for completing a customer initiated ATM transaction
US4644468A (en) * 1984-07-20 1987-02-17 International Business Machines Corp. Name usage support through distributed processing networks linked by bridges and/or gateways
US4882674A (en) * 1985-03-05 1989-11-21 Wang Laboratories, Inc. Apparatus and method for control of one computer system by another computer system
US4754395A (en) * 1985-05-06 1988-06-28 Computer X, Inc. Network interface module with minimized data paths
US4868738A (en) * 1985-08-15 1989-09-19 Lanier Business Products, Inc. Operating system independent virtual memory computer system
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4835674A (en) * 1986-07-28 1989-05-30 Bull Hn Information Systems Inc. Computer network system for multiple processing elements
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4849877A (en) * 1986-12-22 1989-07-18 American Telephone And Telegraph Company Virtual execution of programs on a multiprocessor system
US4901231A (en) * 1986-12-22 1990-02-13 American Telephone And Telegraph Company Extended process for a multiprocessor system
US4811216A (en) * 1986-12-22 1989-03-07 American Telephone And Telegraph Company Multiprocessor memory management method

Also Published As

Publication number Publication date
EP0370008A1 (en) 1990-05-30
JPH03501784A (ja) 1991-04-18
WO1989003086A1 (en) 1989-04-06
US5109515A (en) 1992-04-28
CA1308200C (en) 1992-09-29
DE3879947D1 (de) 1993-05-06
EP0370008B1 (en) 1993-03-31
DE3879947T2 (de) 1993-10-07

Similar Documents

Publication Publication Date Title
JPH0477938B2 (ja)
US5146568A (en) Remote bootstrapping a node over communication link by initially requesting remote storage access program which emulates local disk to load other programs
EP0426323B1 (en) Portable, resource sharing file server using co-routines
US7051330B1 (en) Generic application server and method of operation therefor
US4972368A (en) Intelligent serial I/O subsystem
US5483647A (en) System for switching between two different operating systems by invoking the server to determine physical conditions to initiate a physical connection transparent to the user
US5884077A (en) Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
US5638517A (en) Method and apparatus for transmitting a message from a computer system over a network adapter to the network by performing format conversion and memory verification
US5958003A (en) Method and computer system for improving the response time of a computer system to a user request
US5687372A (en) Customer information control system and method in a loosely coupled parallel processing environment
EP0794491A2 (en) Client/server architecture supporting concurrent servers
JP2008015888A (ja) 負荷分散制御システム及び負荷分散制御方法
JPH0668729B2 (ja) マルチプロセッサシステムの新規プログラムの実行を開始する方法
JPH0589061A (ja) バージヨンアツプ方法
JPH06222931A (ja) パーソナルコンピュータのための制御プログラム及びプログラム間連絡提供方法
CA1304513C (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
EP0747813A2 (en) Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment
CA2176905A1 (en) Customer information control system and method with api start and cancel transaction functions in a loosely coupled parallel processing environment
US5734918A (en) Computer system with an input/output processor which enables direct file transfers between a storage medium and a network
US7320044B1 (en) System, method, and computer program product for interrupt scheduling in processing communication
Fagg et al. Taskers and general resource managers: PVM supporting DCE process management
JP2003005987A (ja) エミュレーション装置
JP3884239B2 (ja) サーバ計算機
JPH08212090A (ja) サーバシステム
JP2856154B2 (ja) 非並行型パラレルトランザクションシステムにおける優先制御負荷分散方式