(57)【特許請求の範囲】
【請求項１】
中央処理装置（ＣＰＵ）と、メモリと、入力／出力手段、オペレーティングシステム及びこのオペレーティングシステム上で実行されるウインドウシステムとを有するコンピュータシステムで、所定の時間内に活動を行うことを要求する時間的に厳しいプロシージャと、時間的に厳しくないプロシージャとを含むアプリケーションプログラムを実行する方法において、
前記アプリケーションプログラムを形成する第１のプロセス及び第２のプロセスであって、所定の時間内に活動を行うことを要求するプロシージャを含む前記第１のプロセスと、ユーザー入力と前記ウィンドウシステムを介する出力を要求するプロシージャを含む前記第２のプロセスとを含む少なくとも２つのプロセスを発生する過程と、
前記第１のプロセスについては前記ウインドウシステムがその実行を停止させることがないよう前記ウインドウシステムを介さず直接前記オペレーティングシステムと通信し、前記第２のプロセスについては前記ウインドウシステムがその実行を停止することができるよう前記ウインドウシステムと直接通信してそれぞれのプロセスを一緒に実行する過程とから成り、
前記第１のプロセスが前記第２のプロセスと、共用メモリを含む少なくとも１つのプロセス間通信機構を介して、直接通信して、前記第１のプロセスと前記第２のプロセス間でのデータ交換を可能にする構成を備え、
これにより、前記第１、第２のプロセスは相互に協力して動作するとともに前記第２のプロセスの停止が前記第１のプロセスの実行に影響を及ぼすことなく、時間的に厳しいプロシージャの停止が避けられることを特徴とする時間的に厳しいプロシージャを含むアプリケーションプログラムを実行する方法。
【請求項２】
中央処理装置（ＣＰＵ）と、メモリと、入力／出力手段、オペレーティングシステム及びこのオペレーティングシステム上で実行されるウインドウシステムとを有するコンピュータシステムであって、所定の時間内に活動を行うことを要求する時間的に厳しいプロシージャと、時間的に厳しくないプロシージャとを含むアプリケーションプログラムを実行するコンピュータシステムにおいて、
前記アプリケーションプログラムを形成する第１のプロセス及び第２のプロセスであって、所定の時間内に活動を行うことを要求するプロシージャを含む前記第１のプロセスと、ユーザー入力と前記ウィンドウシステムを介する出力を要求するプロシージャを含む前記第２のプロセスとを含む少なくとも２つのプロセスを発生する手段と、
前記第１のプロセスについては前記ウインドウシステムがその実行を停止させることがないよう前記ウインドウシステムを介さず直接前記オペレーティングシステムと通信し、前記第２のプロセスについては前記ウインドウシステムがその実行を停止することができるよう前記ウインドウシステムと直接通信してそれぞれのプロセスを一緒に実行する手段と、
共用メモリを含み、前記第１のプロセスと前記第２のプロセス間でのデータ交換を可能にする少なくとも１つのプロセス間通信機構とを備え、
これにより、前記第１、第２のプロセスは相互に協力して動作するとともに前記第２のプロセスの停止が前記第１のプロセスの実行に影響を及ぼすことなく、時間的に厳しいプロシージャの停止が避けられることを特徴とする時間的に厳しいプロシージャを含むアプリケーションプログラムを実行するシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は計算環境における時間的に厳しいプロセスの実行に関するものである。更に詳しくいえば、本発明はウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置に関するものである。
【０００２】
【従来の技術】
計算機産業においては、Ｓｕｎ  ＶｉｅｗまたはＮｅＷＳ  ＸＶＩＥＷ（ＯＰＥＮ  ＷＩＮＤＯＷＳ）（いずれも、アメリカ合衆国カリフォルニア州マウンテン・ビュー（Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ）所在のサン・マイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ）の商標である）を利用して、アプリケーションプログラムへのユーザー入力および出力を表示および制御することが一般的である。ウィンドウシステムによりメニュー、およびその他の図形オブジェクトのような視覚的ユーザーインターフェイスを発生する手段が得られる。多数のアプリケーションプログラムを、ウィンドウ化されている表示器を用いて示し、実行することを同時に行うことができる。たとえば、第１のウィンドウにおいては、会計プログラムを動作させ、その間に第２のウィンドウに作図プログラムを走らせることができる。コンピュータのユーザーは、カーソルを１つのウィンドウから別のウィンドウへ移動させることにより、別々のプログラムを動作させるためにウィンドウからウィンドウへ切換えることができる。更に、ウィンドウシステムは表示されるシステム情報と、ウィンドウシステムを介して実行するプロセスと、種々のウィンドウおよび実行中のプロセスへのユーザー入力とを制御する。
【０００３】
ウィンドウシステムは、それを介して実行するプログラム（以降「アプリケーションプログラム」と記す）に対する完全な制御を行う。たとえば、ウィンドウシステムはビデオ表示器、プリンタ等のようなハードウェア出力装置に対するアクセスを制御する。アプリケーションプログラムは、ユーザーウィンドウ事象のアプリケーションプログラムを通知するためにウィンドウシステムに依存する。更に、種々のアプリケーションプログラムがマルチタスク環境で動作できるように、ウィンドウシステムはアプリケーションプログラムを制御する。また、アプリケーションプログラムのどのプロセスがＣＰＵをアクセスできるかということ、およびそのアクセスの優先順位とを制御する。
【０００４】
典型的には、マルチタスク計算環境においては、実行する各プロセスにはＣＰＵを利用するための「タイムスライス」（すなわち、所定の時間区間）が割当てられる。プロセスはそれぞれのタイムスライス中に実行することによりＣＰＵを共用する。あるプロセスがそれのタイムスライス中に実行を終わっていないとすると、プロセスはそれの次のタイムスライスまで「眠りに入る」（すなわち、プロセスは停止させられる）。更に、ユーザー事象がブロッキング動作である、たとえば、データをディスクから読出す、と考えられるとすると、その動作が終わるまで対応するプロセスが保留させられる。
【０００５】
ウィンドウシステム環境においては、ウィンドウシステムはタイムスライスの割当てに関与でき、したがってプロセスを停止させることができる。したがって、ウィンドウシステムで動作する、アプリケーションプログラムのプロセスは所定の時間内にＣＰＵをアクセスすることを保障されない。その理由は、ウィンドウシステムによりプロセスを中間の長さの時間だけ停止させることができるからである。
【０００６】
たとえば、ウィンドウを動かすとか、図形またはテキストを表するというような、ウィンドウシステムの一般的なオペレーションを行うためにＣＰＵタイムスライスのプロセスへの割当てをウィンドウシステムは変える必要はない。一般に、ウィンドウシステムによって実行するアプリケーションプログラムに対してはそれは問題ではない。具体的にいえば、アプリケーションプロセスを停止しても、プロセスの実行が少し遅れることを除き、何の問題も生じさせない。たとえば、ユーザーが未知の指令に入ると、ウィンドウシステムは誤りメッセージを表示し、続行するためにユーザーが「承認」またはそれに類似の確認応答指令に入ることを求める。ユーザーが応答することをウィンドウプロセスが待っている間に、それはウィンドウシステムの下で現在実行している他の全てのウィンドウプロセスを凍結すなわち停止する。（ウィンドウシステムについては、たとえばゴスリング（Ｇｏｓｌｉｎｇ）、ローゼンタール（Ｒｏｓｅｎｔｈａｌ）、アーデン（Ａｒｄｅｎ）著「ＮｅＷＳブック（Ｔｈｅ  ＮｅＷＳ  Ｂｏｏｋ）」（１９８９年）２３〜５２ページを参照されたい。）
【０００７】
ブロッキングオペレーション等のためにウィンドウシステムによるプロセスの停止によって、ウィンドウシステムによるアプリケーションプログラム実行の時間的に厳しいプロセスに問題が起こる。それらの時間的に厳しいプロセスは指定された時間フレーム内で応答し、活動することを要求する。たとえば、あるアプリケーションプログラムがデータをモデムを介して受けるとすると、ある時間依存性を指令するあるボー速度で送るべきデータをモデムは受けねばならない。時間的に厳しいアプリケーションプログラムがウィンドウシステムにより停止させられるとすると、モデムは利用されているボー速度でデータを受けることができず、モデムは正しく動作することができない。更に詳しくいえば、Ｕｎｉｘ（商標）をベースとするシステムへモデムが接続され、時間的に厳しいアプリケーションプログラムがデータを受けるためにモデムを現在アクセスしており、かつ時間的に厳しいアプリケーションがウィンドウシステムにより停止させられるものとすると、モデムを介して受けられるデータは、オペレーティングシステムの中心部にあるバッファへ行く。そうするとオペレーティングシステムはモデムから受けた情報をアプリケーションプログラムへ転送することを試みる。しかし、アプリケーションプログラムが停止されたとすると、データを転送できないから、データはバッファ内に留まる。停止が継続するものとすると、最終的にはバッファは一杯になり、直列オーバランのためにデータは失われる。（ＵｎｉｘシステムおよびＵｎｉｘ中枢部については、バック（Ｂａｃｋ）著「Ｕｎｉｘオペレーティング・システムの設計（Ｔｈｅ  Ｄｅｓｉｇｎ  ｏｆ  ｔｈｅ  Ｕｎｉｘ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）」（１９８６年）を参照されたい。）
【０００８】
この問題は、時間的に厳しいプロセスを停止させないようにウィンドウシステムを変更することにより、避けることができる。しかし、ウィンドウシステムを変更できず、かつウィンドウシステムとともに動作するために書かれたアプリケーションプログラムを厳密なウィンドウシステムインターフェイスへ付着せねばならないように、ほとんどのウィンドウシステムは標準化される。
【０００９】
【発明が解決しようとする課題】
したがって、本発明の目的は、ウィンドウシステムの下で実行する時間的に厳しいアプリケーションプログラムがＣＰＵを共用でき、かつ、ウィンドウシステムを変更するこなく、およびウィンドウシステムインターフェイスを乱すことなしに、それぞれのタイムスライス中に実行できるよにすることである。
本発明の別の目的は、ブロッキングオペレーションを含む時間的に厳しいアプリケーションプログラムが、ブロッキングオペレーションにより阻止されることなしに、ＣＰＵをタイミング良く利用できるようにすることである。
【００１０】
【課題を解決するための手段】
時間的に厳しいアプリケーションプログラムは少なくとも２つのプロセスへ機能的に分けられる。第１のプロセスはタイムスライスに敏感なＣＰＵプロシージャ、すなわち時間的に厳しいＣＰＵプロシージャの全てを含む。このプロセスはウィンドウシステムインターフェイスとは独立に動作し、オペレーティングシステムと直接通信する。第２のプロセスは、ウィンドウシステムでユーザー入力と出力を必要とするそれらの手順はもちろんブロッキングオペレーションを含むが、時間的に厳しいプロシージャは含まない残りのプロシージャの全てを実現する。このプロセスはウィンドウインターフェイスと典型的に通信し、かつ動作する。２つまたはそれ以上のプロセスが動作し、かつ１つのプログラムとしてユーザーに見えるように、共用されるメモリのようなプロセス間通信機構を介してデータを交換し、実行を同期させる。
【００１１】
記法および用語
以下に行う詳細な説明を、コンピュータメモリ内のデータビットのオペレーションのアルゴリズム表現および記号表現で主として行う。それらのアルゴリズムによる説明および表現は、データ処理の分野における専門家が自己の業績を最も効果的に伝えるために、それらの専門家が用いる手段である。
アルゴリズムというのはここでは、および一般的には、希望の結果へ導く自己無盾のない一連の過程であると考えられる。それらの過程は物理量の物理的取扱いを要する過程である。通常は、必然的なものではないが、それらの量は、記憶、転送、組合わせ、比較その他の処理を行うことができる電気信号または磁気信号の形をとる。主として一般的に用いられているという理由で、それらの信号をビット、値、素子、記号、オブジェクト、キャラクタ、項、番号等と呼ぶことが時には便利であることが判明している。しかし、それら全ての項および類似の項には適切な物理量に関連づけること、およびそれらの量へ取付けられる単なる便利なラベルであることを記憶すべきである。
【００１２】
更に、行われる操作は、人の精神活動に一般的に関連づけられる加算または比較のような表現でしばしば呼ばれる。本発明の一部を成す、ここで説明するオペレーションのいずれにおいても人のそのような能力は、ほとんどの場合に不必要であり、あるいは望ましくない。オペレーションはマシンオペレーションである。本発明のオペレーションを行うために有用なマシンは汎用デジタルコンピュータまたはそれに類似の装置を含む。あらゆる場合に、コンピュータを動作させることにおける方法オペレーションと計算自体の方法の違いを記憶しておくべきである。本発明は、コンピュータを動作させるため、および他の希望の物理的信号を発生するために電気的信号またはその他の物理的信号を処理する方法過程に関するものである。
本発明はそれらのオペレーションを行うための装置にも関するものである。この装置は求められている目的のためにとくに構成でき、またはコンピュータに内蔵されているコンピュータプログラムにより選択的に動作させられ、または再構成されるものとしての汎用コンピュータを含むことができる。ここで提示するアルゴリズムは任意の特定のコンピュータまたはその他の装置に完全に関連するものではない。とくに、種々の汎用機を、本発明の教示に従って書かれたプログラムで使用でき、あるいは要求されている方法過程を実行するために一層特殊化された装置を構成するためにそれらの汎用機は一層便利であることを証明できる。それらの種々の装置のために要求される構造は以下の説明から明らかとなるであろう。
【００１３】
【実施例】
図１は、ウィンドウシステム環境において時間的に厳しいプロセスを実行する、コンピュータをベースとする本発明の典型的なシステムを示す。この図にはコンピュータ１０１が示されている。このコンピュータは３つの主な部品を有する。第１の部品は、適切な構造のフォームで情報をコンピュータ１０１の他の部品とやりとりするために用いられる入力／出力（Ｉ／Ｏ）回路１０２である。他の主の部品は中央処理装置（ＣＰＵ）１０３とメモリ１０４である。後の２つの部品はほとんどの汎用コンピュータおよびほとんど全ての専用コンピュータに典型的に見られるものである。実際に、コンピュータに含まれているいくつかの部品は、この広い種類のデータプロセッサを表すことを意図するものである。コンピュータ１０１の役割を果たすために適当なデータプロセッサの特定の例には、前記サン・マイクロシステムズ社（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．）により製造される装置が含まれる。同様な性能を有する他のコンピュータは、下記の諸機能を直線的なやり方で実行するように構成できることはもちろんである。
【００１４】
図１には入力装置１０５も示されている。典型的な実施例では、入力装置１０５はキーボードである。しかし、入力装置は実際にはカード読取機、磁気テープまたは紙テープの読取機、その他周知の入力装置（もちろん別のコンピュータも含む）とすることができることを理解すべきである。大容量メモリ１０６がＩ／Ｏ回路１０２へ結合されて、コンピュータ１０１のために追加の記憶性能を提供する。この大容量メモリは他のプログラム等を含むことができ、磁気テープまたは紙テープの読取機、あるいはその他周知の装置の態様をとることができる。大容量メモリ１０６に保持されるデータは、適切な場合には、メモリ１０４の一部としてコンピュータ１０１に標準的なやり方で組込むことができる。
【００１５】
また、図１には、メッセージその他の通信をユーザーへ表示するために用いられる表示モニタ１０７も示されている。その表示モニタはＣＲＴ、表示器、プラズマ表示器、ＬＣＤ表示器のようないくつかの周知の表示器のうちの任意のものとすることができる。カーソル制御器１０８が指令モードの選択と入力データの編集のために用いられ、システムへ情報を入力するための一層便利な手段を提供する。
【００１６】
プロセスについての説明
本発明の好適な実施例についての以下の説明は、ウィンドウシステム環境において、時間的に厳しいプログラムを動かす方法についてのものである。とくに、時間的に厳しいプログラムを動かすための本発明の方法の実現を、分布ウィンドウシステム環境（「サーバをベースとするシステム」ともここでは呼ぶ）に関して説明する。しかし、時間的に厳しいプロセスを処理するこの方法を、異なるコンピュータアーキテクチャおよび異なるウィンドウシステムを有する異なるコンピュータシステムへ適用できることが、以下の説明から等業者には明らかであろう。更に、以下の説明は、Ｕｎｉｘオペレーティングシステムで動作するウィンドウシステム環境で、時間的に厳しいプログラムを動作させる方法についてのものである。しかし、この方法はそれに限定されるものではなく、任意のマルチタスクおよびマルチプロセッサオペレーティングシステムで実現できる。
【００１７】
ウィンドウシステムは、スクリーンを、ウィンドウと呼ばれる、重なり合う、または重なり合わない多数の視覚的領域に分割することが普通である。異なるアプリケーションプログラムを各ウィンドウにおいて実行できる。ウィンドウというのは、ウィンドウ内で動作するアプリケーションプログラムに関して情報を表示するために用いられるスクリーンの可視部分であって、特定のウィンドウ内で実行しているアプリケーションプログラムと対話する手段をユーザーに提供するものである。ウィンドウシステムは、ほとんどのオペレーション、とくにユーザー入力および出力に対して、アプリケーションプログラムとオペレーティングシステムの間のインターフェイスとして作用することにより、オペレーティングシステムに対するアプリケーションプログラムのアクセスを制御する。ウィンドウシステムは、ウィンドウの寸法と位置を指定し、ウィンドウ上で作図し、メニューの出現を選択的に定めるためのプロシージャ（手段）をアプリケーションプログラムに提供するものである。
【００１８】
図２に示すように、表示器２６０と、キーボード２７０およびマウス１８０は入力／出力をウィンドウシステムへ供給し、かつウィンドウシステムで動作しているアプリケーションプログラムへ入力／出力をオペレーティングシステム２５５を介して供給する。サーバーをベースとするウィンドウシステムは、ウィンドウセーバー、ウィンドウマネジャーおよびツールキットと呼ばれるいくつかのプロセスで構成される。
【００１９】
ウィンドウセーバー２５０は表示器と、この表示器へのアプリケーションプログラムのアクセスの優先度とを制御する。ウィンドウサーバーの例には、Ｘ１１（マサチューセッツ工科大学所有の商標）プロトコルをサポートするＸ１１と、Ｘ１１／ＮｅＷｓウィンドウセーバープロトコルとを含む。Ｘ１１については、「ＡＣＭ  トランザクション・オン・グラフィックス（ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎ  ｏｎ  Ｇｒａｐｈｉｃｓ）」第５巻第２号、１９８６年４月号の７９〜１０９ページ所載のシェイフラー・ゲッティス（Ｓｈｅｉｆｌｅｒ  Ｇｅｔｔｙｓ）の「Ｘウィンドウズ・システム（Ｔｈｅ  Ｘ  Ｗｉｎｄｏｗ  Ｓｙｓｔｅｍ）」を参照されたい。Ｘ１１／ＮｅＷｓウィンドウセーバープロトコルについては、１９８８年夏季ユーザー会議議事録（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｓｕｍｍｅｒ  １９８８  Ｕｓｅｒ  Ｃｏｎｆｅｒｅｎｃｅ）」（１９８８年、２３〜２５ページ所定の前記シャウフラーの「Ｘ１１／ＮｅＷｓ設計の概観（Ｘ１１／ＮｅＷｓ  Ｄｅｓｉｇｎ  Ｏｖｅｒｖｉｅｒ）」と題する論文を参照されたい。
【００２０】
ウィンドウマネジャーは、スクリーンを占めるウィンドウの作業域を制御し、メニューウィンドウの作業域を決定する。ウィンドウマネジャーは、Ｘ１１プロトコルの場合に典型的であるように別々のプロセスにでき、または、ウィンドウマネジャーがウィンドウサーバー中に存在するプロセスの集まりであるようなＸ１１／ＮｅＷｓウィンドウシステムの場合にウィンドウサーバーの一部とすることができる。
ツールキット２１０，２３０は、ウィンドウシステムメニューがどのようにして出現するか、ユーザーが制御区域とどのようにして対話するか、制御域がどのように編成されるかを決定する。ツールキット２１０，２３０は、ツールキットがアプリケーションプログラムをウィンドウシステムに対してインターフェイスするために参照する機能のライブラリイより成るツールキットライブラリイ２４０を含むことが好ましい。アプリケーションプログラムは、ツールキットおよびツールキットライブラリイで利用できるプロセスを介して、ウィンドウシステム内で通信および動作する。ツールキットおよびツールキットライブラリイの例はＸ  Ｖｉｅｗ（商標）ツールキットである。このＸ  ＶｉｅｗツールキットはＸ１１／ＮｅＷｓ（商標）ウィンドウシステムで用いられる。Ｘ  Ｖｉｅｗツールキットについては、第３回年次技術会議（３ｒｄ  Ａｎｎｕａｌ  Ｔｅｃｈｎｉｃａｌ  Ｃｏｎｆｅｒｅｎｃｅ）、１９８９年、におけるヤコブス（Ｊａｃｏｂｓ）著「Ｘ  Ｖｉｅｗ  ツールキット、アーキテクチャの概観（Ｔｈｅ  Ｘ  Ｖｉｅｗ  Ｔｏｏｌｋｉｔ，  Ａｒｃｈｉｔｅｃｔｕａｌ  Ｏｖｅｒｖｉｅｗ）」を参照されたい。
ウィンドウシステム環境において時間的に厳しいアプリケーションプログラムを動作させる本発明の方法においては、アプリケーションプログラムは２つまたはそれ以上のプロセスへ機能的に分割される。この場合に１つのプロセスは時間的に厳しいプロシージャを含む。時間的に厳しいプロシージャというのは、所定の時間内に応答し、活動を行うことを要するプロシージャを意味する。図３を参照して、アプリケーションプログラム３０５は第１のプロセス３５０と第２のプロセス３００へ分割される。
【００２１】
第１のプロセス３５０は、正しく実行するために所定の応答時間を要する、時間的に厳しいプロシージャと指令を含むアプリケーションプログラムのプロシージャを含む。この問題は、ハードウェアというのは動作時に遅れがほとんど、または全くないという本質的に実時間の装置であるから、ハードウェアをソフトウェアでエミュレートするような場合に起こる。更に、割込みのようなシステムサービスルーチンのソフトウェアエミュレーションはタイミング良く動作せねばならない。したがって、時間的に厳しいアプリケーションプロセスの例は、ディスクドライブ制御器のエミュレーション、割込み制御器のエミュレーション、キーボード制御器のエミュレーション、直列Ｉ／Ｏインターフェイスのエミュレーション、クロックエミュレータのエミュレーションのような入力／出力エミュレーション手順と、ハードウェアをエミュレートする別のプロセスとを含むが、それらに限定されるものではない。第１のプロセス３５０はウィンドウシステムでは動作しないが、その代わりにオペレーティングシステムと直接通信する。第１のプロセスはウィンドウシステムをバイパスするから、ウィンドウシステムによっては制御されず、どのような時間もウィンドウシステムにより停止させることはできない。更に、ブロッキングオペレーションを他のプロセスに置くことにより、時間的に厳しいプロシージャのブロッキングオペレーションによる停止は避けられる。
【００２２】
第２のプロセス３００は、ウィンドウシステムとの対話を要するが、時間的に厳しくない手順と、実行された時にプログラム／プロセスを停止させるブロッキングプロシージャとを実現する。ウィンドウシステムプロシージャの例は、データをスクリーンの別々の部分に表示するため、または特定のウィンドウのサイズを定め直すためのプロシージャを含む。第２のプロセス３００は、アプリケーションのメニュー性能、制御域性能、作図性能を提供するツールキット３１０へリンクされる。ウィンドウサーバー３２０は表示を制御し、アプリケーションプログラムの表示をアクセスする。したがって、この第２のプロセスはウィンドウシステムの要求と制約を受ける。ブロッキングオペレーションはディスクからの読出しおよびその他のファイルオペレーションのような、実行に長い時間を要し、実行された時に、ブロッキングオペレーションの実行が終わるまで、オペレーションシステムによりプログラムを停止させるプロシージャである。
【００２３】
アプリケーションに対するブロッキングオペレーションの影響を最小にするために、アプリケーションを追加のサブプログラムに分離することもできる。追加プロセスを作成できる。各追加プロセスは１つまたは複数のブロッキングプロシージャを含む。ＵＮＩＸ（商標）オペレーティングシステム環境においては、１つのブロッキングプロシージャに遭遇した時にプログラムの実行を続行できるようにするためのＵＮＩＸオペレーティングシステムの性能を利用するために、各プロセスはただ１つのブロッキングプロシージャを含むことが好ましい。（しかし、２つ以上のブロッキングプロシージャを実行するならば、プログラム／プロセスは阻止される。）したがって、アプリケーションを停止できるプロシージャにより第１のプロセスは影響を受けない。
【００２４】
アプリケーションプログラムは２つまたはそれ以上のプロセスに分けられるが、それらのプロセスは互いに一緒に動作し、ユーザーにとっては１つのプログラムとして見える。これはプロセス間通信と共用メモリの少なくとも一方により行われる。
プロセス間通信性能の一例を図４を参照して説明する。しかし、他のプロセス間通信機能を使用できることが当業者には明らかである。更に、以下の説明は２つまたはそれ以上のプロセスの間のプロセス間通信についてのものである。しかし、上記のように、本発明は２つのプロセスに限定されるものではなく、アプリケーションプログラムを表す３つまたはそれ以上のプロセスで実現することもできる。
【００２５】
図４を参照して、ＵＮＩＸをベースとするシステムにおいては、ＵＮＩＸシステムＶ  ＩＰＣパッケージに設けられるメッセージ機構を用いることにより、プロセスは他のプロセスと通信できる。オペレーティングシステム５１０は、プロセス間メッセージを格納するメッセージ待ち行列５３０を維持する。通信するために、第１のプロセス５００はＭＳＧＧＥＴ（ＭＳＧＣＲＥＡＴ）システムコールを送って、メッセージ待ち行列５３０を指定するメッセージ記述を作成する。オペレーティングシステム５００は待ち行列構造を割当て、識別子を第１のプロセス５００へ戻す。そうすると第１のプロセス５００はＭＳＧＳＮＤシステムコールを実行してメッセージを送る。オペレーティングシステム５１０は、第１のプロセス５００がメッセージ記述に従って書くことを許されているか、どうかを調べる。もし許されておれば、オペレーティングシステム５１０はメッセージをメッセージ待ち行列に置く。第２のプロセス５２０は、ＭＳＧＧＥＴシステムコールを実行することにより、オペレーティングシステム５１０内のメッセージ待ち行列５３０からの第１のプロセスから送られたそれのメッセージを受ける。Ｕｎｉｘシステムの詳細については、バック（Ｂａｃｋ）著「Ｕｎｉｘオペレーティングシステムの設計（Ｔｈｅ  Ｄｅｓｉｇｎ  ｏｆ  ｔｈｅ  Ｕｎｉｘ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）」（１９８６年、プレンティス・ホール（Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ）発行を参照されたい。
【００２６】
プロセスはＳｏｃｋｅｔｓ（商標）を介して互いに通信できる。そのＳｏｃｋｅｔｓもＵＮＩＸオペレーティングシステムにより供給される。Ｓｏｃｋｅｔシステムは通信リンクの１つの端部点を定める。ＵＮＩＸオペレーティングシステムにおけるプロセス間通信の流れ図の一例が図５に示されている。プロセスが互いに通信できる前に、それらのプロセスは通信リンクを設定せねばならない。図５を参照して、通信するために、サーバープロセスは流れＳｏｃｋｅｔ６１０を作成し、Ｓｏｃｋｅｔ接続６２０に名を付け、入来メッセージ６３０のための内部待ち行列長さをセットし、依頼人プロセス６４０からの任意の接続要求を検査する。接続要求は通信したいというプロセスの希望を示す。要求があるとすると、サーバープロセスは入来要求６５０を受け、依頼人プロセス６７０と通信する。依頼人プロセスは、流れＳｏｃｋｅｔ６８０を作成することにより通信の用意を行い、名づけられたサーバーＳｏｃｋｅｔへ接続することを中枢部に要求し、サーバープロセスと通信する。
【００２７】
各プロセスはそれ自身の仮想アドレス空間およびメモリ内を走り、オペレーティングシステムは他のプロセスがそのメモリ領域をアクセスすることを阻止する。しかし、種々のプロセスは、それらのプロセスの仮想アドレス空間の部分を共用し、それから、共用されているメモリに対して読出しおよび書込みを行うことにより、互いに通信できる。これについてのこれ以上の詳細については、前掲バック（Ｂａｃｋ）著「Ｕｎｉｘオペレーティングシステムの設計」を参照されたい。
【００２８】
プロセス間の大量のデータの通信は共用メモリを利用して行うことが好ましい。たとえば共用メモリを用いることにより、第１のサブプログラムがデータをメモリへ書込むことができ、第２のサブプログラムが、第１のサブプログラムによりメモリへ書込まれているデータを読出すことができる。
【００２９】
次に図６を参照して、第１のサブプログラムは、システムコールを実行し共用メモリの新しい領域を作成することにより第２のサブプログラムと通信でき、それからその新しい領域をそれのプロセスの仮想アドレスへ取付ける。そうすると、共用メモリを用いて２つまたはそれ以上のサブプログラムを読出すことにより、共用メモリに記憶されているデータを共用できる。
【００３０】
メモリに対するアクセスを共用するプロセスは、機能的なシステム挙動を確実にするために、それらのプロセスによるメモリの使用を統合せねばならない。たとえば、２つのプロセスが共用メモリ場所へ同時に書込まないようにするために、プロセスに順位をつけて置くことができる。
共用メモリに対するプロセスのアクセスを制御する１つの方法は、セマフォを用いることである。共用メモリ領域をアクセスすることを望むプロセスは、ある指定されたセマフォオペレーションの実行に成功することにより、アクセスの許可を得なければならない。セマフォがプロセスによりセットされるものとすると、対応するメモリ領域がロックされることにより、他のプロセスがそのメモリ領域をアクセスすることを阻止する。セマフォ実現は、それがセットされる時は零にセットでき、それがフリーの時は１にセットされる。フリーな（セットされていない）セマフォはメモリ場所を利用できることを示す。
ユニプロセッサＵｎｉｘシステムにおいてプロセスのアクセスを制御するセマフォの例を図７を参照して説明する。しかし、他の共用メモリ法を使用できることが当業者には明らかである。
【００３１】
図７を参照して、セマフォは最初はセットされず、共用メモリを使用できることを示す。７００において、セマフォがセットされているかどうかを第１のプロセスは調べる。セマフォがセットされていないと、第１のプロセスはセマフォをセット（７１０）、メモリを用いる（７２０）。同様に、セマフォがセットされているかどうかを第２のプロセスが調べる（７４０）。セマフォが第１のプロセスによりセットされているとすると、セマフォがフリーにされるまで第２のプロセスは眠る（７６０）。セマフォがフリーになると、第２のプロセスはセマフォをセットし（７５０）、メモリを用いる（７７０）。
【００３２】
データを共用するために共用メモリ機構を利用できる。たとえば、アプリケーションプログラムはモデムから送られたデータを受け、それをウィンドウ上に表示する。本発明に従って、第１のプロセスのＩ／Ｏプロセスがモデムポートを介してデータを受け、共用メモリ領域にそのデータを書込む。第１のプロセスがデータを共用メモリ領域に書込んでいる間に、セマフォは第１のプロセスによりセットされる。第１のプロセスが書込みを終わって、セマフォをフリーにした後で、第２のプロセスはデータを共用メモリ領域から読出し、ウィンドウシステムを介して書込んで、対応するウィンドウ内に表示する。プロセス間通信は共用メモリを介して行い、「Ｓｉｇｎａｌ」システムコールをＵＮＩＸオペレーティングで利用できることが好ましい。信号が発生された時に通知すべきプロセスを識別する信号番号で名Ｓｉｇｎａｌは識別される。中枢部へは発生できるそれらのＳｉｇｎａｌについて最初に知らされ、特定のＳｉｇｎａｌ番号のＳｉｇｎａｌが発生された時に通知されるべきプロセスも最初に知らされる。プロセスによりあるＳｉｇｎａｌが発生されると、中枢部はＳｉｇｎａｌ番号に対応するプロセスに、Ｓｉｇｎａｌにサービスする所定のルーチン／プロシージャを実行させる。Ｓｉｇｎａｌについての詳細は前掲書「ＵＮＩＸオペレーティングシステムの設計」２００〜２１２ページを参照されたい。本発明の好適な実施例においては、アプリケーションプログラムは２つのプロセスを有する。第１のプロセスは時間的に厳しいプロシージャを含み、第２のプロセスは、ウィンドウシステムプロシージャを実行するプロシージャを含んでいる残りのプロシージャを含む。それらのプロセスはマスタ＝スレイブ関係で機能し、第１のプロセスがマスタとして機能し、第２のプロセスがスレイブとして機能する。共用メモリが設定され、そのメモリは両方のプロセスでアクセスできる。アプリケーションを開始するために、第１のプロセスの実行を開始させるための指令をユーザーは実行する。第１のプロセスはアプリケーションを構成するためのスタートコードを実行し、それから第２のプロセスへ渡す。たとえば、第１のプロセスはプロセス間通信機構を初期化でき、または共用メモリの区間を設定できる。アプリケーションプログラムの実行中に、第２のプロセスにおけるあるプロシージャを実行すべき時に、たとえば、ウィンドウシステムプロシージャを実行すべき時に、第１のプロセスは、実行すべきプロシージャを識別する指令と、そのプロシージャを実行するために必要なパラメータとを共用メモリ内に置く。それから第１のプロセスは、第２のプロセスが共用メモリをアクセスし、共用メモリに記憶されている指令を実行することを指示する、所定の信号番号を有するＳｉｇｎａｌを生ずる。第２のプロセスの実行中に、第１のプロセスはそれの実行を続けることにより、第１のプロセスはウィンドウシステムプロシージャと、ウィンドウシステムプロシージャの実行中に生ずることがあるプロセスの停止とにより影響を受けることはない。第１のプロセスは共用メモリを定期的にポーリングして、第２のプロセスにより実行されるプロシージャにより戻すことができる情報を探す。共用メモリ中で何らかの情報が見つかったら、第１のプロセスはその情報を取出すだけである。このようにして、第１のプロセスは第２のプロセスから自身を更に絶縁して、ユーザーにとって単一アプリケーションプログラムとして明らかに動作させるために、完全双方向通信を維持する。
【００３３】
時間的に厳しいプロシージャを含んでいるプロセスと、ウィンドウシステムインターフェイス特定プロシージャおよびブロッキングプロシージャを含むプロセスとにアプリケーションプログラムを分離することにより、時間的に厳しいプロシージャは、時間的に厳しいプロシージャを停止させることができ、プロシージャから絶縁され、その間にプロセスは互いに一緒に実行し、プロセス間通信により相互に通信し、ユーザーにとって１つのアプリケーションプログラムとして見えるようにできる。
【図面の簡単な説明】
【図１】時間的に厳しいプログラムを実行するための本発明の好適な実施例の典型的なコンピュータシステムのブロック図表現である。
【図２】サーバをベースとするウィンドウシステムのブロック図表現である。
【図３】ウィンドウシステム環境において時間的に厳しいプログラムを動作させる方法のブロック図表現である。
【図４】メッセージを介する他のプロセスと通信する１つのプロセスのブロック図表現である。
【図５】ソケットを用いるプロセス間通信を示す流れ図である。
【図６】プロセスの間の共用されるメモリを示す流れ図である。
【図７】セマフォを用いるプロセスの間のアクセスを示す流れ図である。
【符号の説明】
１０２  Ｉ／Ｏ回路
１０３  ＣＰＵ
１０４  メモリ
１０６  大容量メモリ
１０７  表示モニタ
１０８  カーソル制御器
２６０  表示装置
２７０  キーボード
２８０  マウス
【図１】
0003547011.tif 000002
【図２】
0003547011.tif 000003
【図３】
0003547011.tif 000004
【図４】
0003547011.tif 000005
【図５】
0003547011.tif 000006
【図６】
0003547011.tif 000007
【図７】
0003547011.tif 000008