JP3547011B6 - ウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置 - Google Patents
ウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置 Download PDFInfo
- Publication number
- JP3547011B6 JP3547011B6 JP1991351789A JP35178991A JP3547011B6 JP 3547011 B6 JP3547011 B6 JP 3547011B6 JP 1991351789 A JP1991351789 A JP 1991351789A JP 35178991 A JP35178991 A JP 35178991A JP 3547011 B6 JP3547011 B6 JP 3547011B6
- Authority
- JP
- Japan
- Prior art keywords
- window system
- window
- processes
- time
- procedure
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 241
- 230000008569 process Effects 0.000 title claims description 165
- 238000004891 communication Methods 0.000 claims description 18
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 description 16
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000007958 sleep Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Description
【0001】
【産業上の利用分野】
本発明は計算環境における時間的に厳しいプロセスの実行に関するものである。更に詳しくいえば、本発明はウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置に関するものである。
【0002】
【従来の技術】
計算機産業においては、Sun ViewまたはNeWS XVIEW(OPEN WINDOWS)(いずれも、アメリカ合衆国カリフォルニア州マウンテン・ビュー(Mountain View)所在のサン・マイクロシステムズ(Sun Microsystems)の商標である)を利用して、アプリケーションプログラムへのユーザー入力および出力を表示および制御することが一般的である。ウィンドウシステムによりメニュー、およびその他の図形オブジェクトのような視覚的ユーザーインターフェイスを発生する手段が得られる。多数のアプリケーションプログラムを、ウィンドウ化されている表示器を用いて示し、実行することを同時に行うことができる。たとえば、第1のウィンドウにおいては、会計プログラムを動作させ、その間に第2のウィンドウに作図プログラムを走らせることができる。コンピュータのユーザーは、カーソルを1つのウィンドウから別のウィンドウへ移動させることにより、別々のプログラムを動作させるためにウィンドウからウィンドウへ切換えることができる。更に、ウィンドウシステムは表示されるシステム情報と、ウィンドウシステムを介して実行するプロセスと、種々のウィンドウおよび実行中のプロセスへのユーザー入力とを制御する。
【0003】
ウィンドウシステムは、それを介して実行するプログラム(以降「アプリケーションプログラム」と記す)に対する完全な制御を行う。たとえば、ウィンドウシステムはビデオ表示器、プリンタ等のようなハードウェア出力装置に対するアクセスを制御する。アプリケーションプログラムは、ユーザーウィンドウ事象のアプリケーションプログラムを通知するためにウィンドウシステムに依存する。更に、種々のアプリケーションプログラムがマルチタスク環境で動作できるように、ウィンドウシステムはアプリケーションプログラムを制御する。また、アプリケーションプログラムのどのプロセスがCPUをアクセスできるかということ、およびそのアクセスの優先順位とを制御する。
【0004】
典型的には、マルチタスク計算環境においては、実行する各プロセスにはCPUを利用するための「タイムスライス」(すなわち、所定の時間区間)が割当てられる。プロセスはそれぞれのタイムスライス中に実行することによりCPUを共用する。あるプロセスがそれのタイムスライス中に実行を終わっていないとすると、プロセスはそれの次のタイムスライスまで「眠りに入る」(すなわち、プロセスは停止させられる)。更に、ユーザー事象がブロッキング動作である、たとえば、データをディスクから読出す、と考えられるとすると、その動作が終わるまで対応するプロセスが保留させられる。
【0005】
ウィンドウシステム環境においては、ウィンドウシステムはタイムスライスの割当てに関与でき、したがってプロセスを停止させることができる。したがって、ウィンドウシステムで動作する、アプリケーションプログラムのプロセスは所定の時間内にCPUをアクセスすることを保障されない。その理由は、ウィンドウシステムによりプロセスを中間の長さの時間だけ停止させることができるからである。
【0006】
たとえば、ウィンドウを動かすとか、図形またはテキストを表するというような、ウィンドウシステムの一般的なオペレーションを行うためにCPUタイムスライスのプロセスへの割当てをウィンドウシステムは変える必要はない。一般に、ウィンドウシステムによって実行するアプリケーションプログラムに対してはそれは問題ではない。具体的にいえば、アプリケーションプロセスを停止しても、プロセスの実行が少し遅れることを除き、何の問題も生じさせない。たとえば、ユーザーが未知の指令に入ると、ウィンドウシステムは誤りメッセージを表示し、続行するためにユーザーが「承認」またはそれに類似の確認応答指令に入ることを求める。ユーザーが応答することをウィンドウプロセスが待っている間に、それはウィンドウシステムの下で現在実行している他の全てのウィンドウプロセスを凍結すなわち停止する。(ウィンドウシステムについては、たとえばゴスリング(Gosling)、ローゼンタール(Rosenthal)、アーデン(Arden)著「NeWSブック(The NeWS Book)」(1989年)23〜52ページを参照されたい。)
【0007】
ブロッキングオペレーション等のためにウィンドウシステムによるプロセスの停止によって、ウィンドウシステムによるアプリケーションプログラム実行の時間的に厳しいプロセスに問題が起こる。それらの時間的に厳しいプロセスは指定された時間フレーム内で応答し、活動することを要求する。たとえば、あるアプリケーションプログラムがデータをモデムを介して受けるとすると、ある時間依存性を指令するあるボー速度で送るべきデータをモデムは受けねばならない。時間的に厳しいアプリケーションプログラムがウィンドウシステムにより停止させられるとすると、モデムは利用されているボー速度でデータを受けることができず、モデムは正しく動作することができない。更に詳しくいえば、Unix(商標)をベースとするシステムへモデムが接続され、時間的に厳しいアプリケーションプログラムがデータを受けるためにモデムを現在アクセスしており、かつ時間的に厳しいアプリケーションがウィンドウシステムにより停止させられるものとすると、モデムを介して受けられるデータは、オペレーティングシステムの中心部にあるバッファへ行く。そうするとオペレーティングシステムはモデムから受けた情報をアプリケーションプログラムへ転送することを試みる。しかし、アプリケーションプログラムが停止されたとすると、データを転送できないから、データはバッファ内に留まる。停止が継続するものとすると、最終的にはバッファは一杯になり、直列オーバランのためにデータは失われる。(UnixシステムおよびUnix中枢部については、バック(Back)著「Unixオペレーティング・システムの設計(The Design of the Unix Operating System)」(1986年)を参照されたい。)
【0008】
この問題は、時間的に厳しいプロセスを停止させないようにウィンドウシステムを変更することにより、避けることができる。しかし、ウィンドウシステムを変更できず、かつウィンドウシステムとともに動作するために書かれたアプリケーションプログラムを厳密なウィンドウシステムインターフェイスへ付着せねばならないように、ほとんどのウィンドウシステムは標準化される。
【0009】
【発明が解決しようとする課題】
したがって、本発明の目的は、ウィンドウシステムの下で実行する時間的に厳しいアプリケーションプログラムがCPUを共用でき、かつ、ウィンドウシステムを変更するこなく、およびウィンドウシステムインターフェイスを乱すことなしに、それぞれのタイムスライス中に実行できるよにすることである。
本発明の別の目的は、ブロッキングオペレーションを含む時間的に厳しいアプリケーションプログラムが、ブロッキングオペレーションにより阻止されることなしに、CPUをタイミング良く利用できるようにすることである。
【0010】
【課題を解決するための手段】
時間的に厳しいアプリケーションプログラムは少なくとも2つのプロセスへ機能的に分けられる。第1のプロセスはタイムスライスに敏感なCPUプロシージャ、すなわち時間的に厳しいCPUプロシージャの全てを含む。このプロセスはウィンドウシステムインターフェイスとは独立に動作し、オペレーティングシステムと直接通信する。第2のプロセスは、ウィンドウシステムでユーザー入力と出力を必要とするそれらの手順はもちろんブロッキングオペレーションを含むが、時間的に厳しいプロシージャは含まない残りのプロシージャの全てを実現する。このプロセスはウィンドウインターフェイスと典型的に通信し、かつ動作する。2つまたはそれ以上のプロセスが動作し、かつ1つのプログラムとしてユーザーに見えるように、共用されるメモリのようなプロセス間通信機構を介してデータを交換し、実行を同期させる。
【0011】
記法および用語
以下に行う詳細な説明を、コンピュータメモリ内のデータビットのオペレーションのアルゴリズム表現および記号表現で主として行う。それらのアルゴリズムによる説明および表現は、データ処理の分野における専門家が自己の業績を最も効果的に伝えるために、それらの専門家が用いる手段である。
アルゴリズムというのはここでは、および一般的には、希望の結果へ導く自己無盾のない一連の過程であると考えられる。それらの過程は物理量の物理的取扱いを要する過程である。通常は、必然的なものではないが、それらの量は、記憶、転送、組合わせ、比較その他の処理を行うことができる電気信号または磁気信号の形をとる。主として一般的に用いられているという理由で、それらの信号をビット、値、素子、記号、オブジェクト、キャラクタ、項、番号等と呼ぶことが時には便利であることが判明している。しかし、それら全ての項および類似の項には適切な物理量に関連づけること、およびそれらの量へ取付けられる単なる便利なラベルであることを記憶すべきである。
【0012】
更に、行われる操作は、人の精神活動に一般的に関連づけられる加算または比較のような表現でしばしば呼ばれる。本発明の一部を成す、ここで説明するオペレーションのいずれにおいても人のそのような能力は、ほとんどの場合に不必要であり、あるいは望ましくない。オペレーションはマシンオペレーションである。本発明のオペレーションを行うために有用なマシンは汎用デジタルコンピュータまたはそれに類似の装置を含む。あらゆる場合に、コンピュータを動作させることにおける方法オペレーションと計算自体の方法の違いを記憶しておくべきである。本発明は、コンピュータを動作させるため、および他の希望の物理的信号を発生するために電気的信号またはその他の物理的信号を処理する方法過程に関するものである。
本発明はそれらのオペレーションを行うための装置にも関するものである。この装置は求められている目的のためにとくに構成でき、またはコンピュータに内蔵されているコンピュータプログラムにより選択的に動作させられ、または再構成されるものとしての汎用コンピュータを含むことができる。ここで提示するアルゴリズムは任意の特定のコンピュータまたはその他の装置に完全に関連するものではない。とくに、種々の汎用機を、本発明の教示に従って書かれたプログラムで使用でき、あるいは要求されている方法過程を実行するために一層特殊化された装置を構成するためにそれらの汎用機は一層便利であることを証明できる。それらの種々の装置のために要求される構造は以下の説明から明らかとなるであろう。
【0013】
【実施例】
図1は、ウィンドウシステム環境において時間的に厳しいプロセスを実行する、コンピュータをベースとする本発明の典型的なシステムを示す。この図にはコンピュータ101が示されている。このコンピュータは3つの主な部品を有する。第1の部品は、適切な構造のフォームで情報をコンピュータ101の他の部品とやりとりするために用いられる入力/出力(I/O)回路102である。他の主の部品は中央処理装置(CPU)103とメモリ104である。後の2つの部品はほとんどの汎用コンピュータおよびほとんど全ての専用コンピュータに典型的に見られるものである。実際に、コンピュータに含まれているいくつかの部品は、この広い種類のデータプロセッサを表すことを意図するものである。コンピュータ101の役割を果たすために適当なデータプロセッサの特定の例には、前記サン・マイクロシステムズ社(Sun Microsystems,Inc.)により製造される装置が含まれる。同様な性能を有する他のコンピュータは、下記の諸機能を直線的なやり方で実行するように構成できることはもちろんである。
【0014】
図1には入力装置105も示されている。典型的な実施例では、入力装置105はキーボードである。しかし、入力装置は実際にはカード読取機、磁気テープまたは紙テープの読取機、その他周知の入力装置(もちろん別のコンピュータも含む)とすることができることを理解すべきである。大容量メモリ106がI/O回路102へ結合されて、コンピュータ101のために追加の記憶性能を提供する。この大容量メモリは他のプログラム等を含むことができ、磁気テープまたは紙テープの読取機、あるいはその他周知の装置の態様をとることができる。大容量メモリ106に保持されるデータは、適切な場合には、メモリ104の一部としてコンピュータ101に標準的なやり方で組込むことができる。
【0015】
また、図1には、メッセージその他の通信をユーザーへ表示するために用いられる表示モニタ107も示されている。その表示モニタはCRT、表示器、プラズマ表示器、LCD表示器のようないくつかの周知の表示器のうちの任意のものとすることができる。カーソル制御器108が指令モードの選択と入力データの編集のために用いられ、システムへ情報を入力するための一層便利な手段を提供する。
【0016】
プロセスについての説明
本発明の好適な実施例についての以下の説明は、ウィンドウシステム環境において、時間的に厳しいプログラムを動かす方法についてのものである。とくに、時間的に厳しいプログラムを動かすための本発明の方法の実現を、分布ウィンドウシステム環境(「サーバをベースとするシステム」ともここでは呼ぶ)に関して説明する。しかし、時間的に厳しいプロセスを処理するこの方法を、異なるコンピュータアーキテクチャおよび異なるウィンドウシステムを有する異なるコンピュータシステムへ適用できることが、以下の説明から等業者には明らかであろう。更に、以下の説明は、Unixオペレーティングシステムで動作するウィンドウシステム環境で、時間的に厳しいプログラムを動作させる方法についてのものである。しかし、この方法はそれに限定されるものではなく、任意のマルチタスクおよびマルチプロセッサオペレーティングシステムで実現できる。
【0017】
ウィンドウシステムは、スクリーンを、ウィンドウと呼ばれる、重なり合う、または重なり合わない多数の視覚的領域に分割することが普通である。異なるアプリケーションプログラムを各ウィンドウにおいて実行できる。ウィンドウというのは、ウィンドウ内で動作するアプリケーションプログラムに関して情報を表示するために用いられるスクリーンの可視部分であって、特定のウィンドウ内で実行しているアプリケーションプログラムと対話する手段をユーザーに提供するものである。ウィンドウシステムは、ほとんどのオペレーション、とくにユーザー入力および出力に対して、アプリケーションプログラムとオペレーティングシステムの間のインターフェイスとして作用することにより、オペレーティングシステムに対するアプリケーションプログラムのアクセスを制御する。ウィンドウシステムは、ウィンドウの寸法と位置を指定し、ウィンドウ上で作図し、メニューの出現を選択的に定めるためのプロシージャ(手段)をアプリケーションプログラムに提供するものである。
【0018】
図2に示すように、表示器260と、キーボード270およびマウス180は入力/出力をウィンドウシステムへ供給し、かつウィンドウシステムで動作しているアプリケーションプログラムへ入力/出力をオペレーティングシステム255を介して供給する。サーバーをベースとするウィンドウシステムは、ウィンドウセーバー、ウィンドウマネジャーおよびツールキットと呼ばれるいくつかのプロセスで構成される。
【0019】
ウィンドウセーバー250は表示器と、この表示器へのアプリケーションプログラムのアクセスの優先度とを制御する。ウィンドウサーバーの例には、X11(マサチューセッツ工科大学所有の商標)プロトコルをサポートするX11と、X11/NeWsウィンドウセーバープロトコルとを含む。X11については、「ACM トランザクション・オン・グラフィックス(ACM Transaction on Graphics)」第5巻第2号、1986年4月号の79〜109ページ所載のシェイフラー・ゲッティス(Sheifler Gettys)の「Xウィンドウズ・システム(The X Window System)」を参照されたい。X11/NeWsウィンドウセーバープロトコルについては、1988年夏季ユーザー会議議事録(Proceedings of the Summer 1988 User Conference)」(1988年、23〜25ページ所定の前記シャウフラーの「X11/NeWs設計の概観(X11/NeWs Design Overvier)」と題する論文を参照されたい。
【0020】
ウィンドウマネジャーは、スクリーンを占めるウィンドウの作業域を制御し、メニューウィンドウの作業域を決定する。ウィンドウマネジャーは、X11プロトコルの場合に典型的であるように別々のプロセスにでき、または、ウィンドウマネジャーがウィンドウサーバー中に存在するプロセスの集まりであるようなX11/NeWsウィンドウシステムの場合にウィンドウサーバーの一部とすることができる。
ツールキット210,230は、ウィンドウシステムメニューがどのようにして出現するか、ユーザーが制御区域とどのようにして対話するか、制御域がどのように編成されるかを決定する。ツールキット210,230は、ツールキットがアプリケーションプログラムをウィンドウシステムに対してインターフェイスするために参照する機能のライブラリイより成るツールキットライブラリイ240を含むことが好ましい。アプリケーションプログラムは、ツールキットおよびツールキットライブラリイで利用できるプロセスを介して、ウィンドウシステム内で通信および動作する。ツールキットおよびツールキットライブラリイの例はX View(商標)ツールキットである。このX ViewツールキットはX11/NeWs(商標)ウィンドウシステムで用いられる。X Viewツールキットについては、第3回年次技術会議(3rd Annual Technical Conference)、1989年、におけるヤコブス(Jacobs)著「X View ツールキット、アーキテクチャの概観(The X View Toolkit, Architectual Overview)」を参照されたい。
ウィンドウシステム環境において時間的に厳しいアプリケーションプログラムを動作させる本発明の方法においては、アプリケーションプログラムは2つまたはそれ以上のプロセスへ機能的に分割される。この場合に1つのプロセスは時間的に厳しいプロシージャを含む。時間的に厳しいプロシージャというのは、所定の時間内に応答し、活動を行うことを要するプロシージャを意味する。図3を参照して、アプリケーションプログラム305は第1のプロセス350と第2のプロセス300へ分割される。
【0021】
第1のプロセス350は、正しく実行するために所定の応答時間を要する、時間的に厳しいプロシージャと指令を含むアプリケーションプログラムのプロシージャを含む。この問題は、ハードウェアというのは動作時に遅れがほとんど、または全くないという本質的に実時間の装置であるから、ハードウェアをソフトウェアでエミュレートするような場合に起こる。更に、割込みのようなシステムサービスルーチンのソフトウェアエミュレーションはタイミング良く動作せねばならない。したがって、時間的に厳しいアプリケーションプロセスの例は、ディスクドライブ制御器のエミュレーション、割込み制御器のエミュレーション、キーボード制御器のエミュレーション、直列I/Oインターフェイスのエミュレーション、クロックエミュレータのエミュレーションのような入力/出力エミュレーション手順と、ハードウェアをエミュレートする別のプロセスとを含むが、それらに限定されるものではない。第1のプロセス350はウィンドウシステムでは動作しないが、その代わりにオペレーティングシステムと直接通信する。第1のプロセスはウィンドウシステムをバイパスするから、ウィンドウシステムによっては制御されず、どのような時間もウィンドウシステムにより停止させることはできない。更に、ブロッキングオペレーションを他のプロセスに置くことにより、時間的に厳しいプロシージャのブロッキングオペレーションによる停止は避けられる。
【0022】
第2のプロセス300は、ウィンドウシステムとの対話を要するが、時間的に厳しくない手順と、実行された時にプログラム/プロセスを停止させるブロッキングプロシージャとを実現する。ウィンドウシステムプロシージャの例は、データをスクリーンの別々の部分に表示するため、または特定のウィンドウのサイズを定め直すためのプロシージャを含む。第2のプロセス300は、アプリケーションのメニュー性能、制御域性能、作図性能を提供するツールキット310へリンクされる。ウィンドウサーバー320は表示を制御し、アプリケーションプログラムの表示をアクセスする。したがって、この第2のプロセスはウィンドウシステムの要求と制約を受ける。ブロッキングオペレーションはディスクからの読出しおよびその他のファイルオペレーションのような、実行に長い時間を要し、実行された時に、ブロッキングオペレーションの実行が終わるまで、オペレーションシステムによりプログラムを停止させるプロシージャである。
【0023】
アプリケーションに対するブロッキングオペレーションの影響を最小にするために、アプリケーションを追加のサブプログラムに分離することもできる。追加プロセスを作成できる。各追加プロセスは1つまたは複数のブロッキングプロシージャを含む。UNIX(商標)オペレーティングシステム環境においては、1つのブロッキングプロシージャに遭遇した時にプログラムの実行を続行できるようにするためのUNIXオペレーティングシステムの性能を利用するために、各プロセスはただ1つのブロッキングプロシージャを含むことが好ましい。(しかし、2つ以上のブロッキングプロシージャを実行するならば、プログラム/プロセスは阻止される。)したがって、アプリケーションを停止できるプロシージャにより第1のプロセスは影響を受けない。
【0024】
アプリケーションプログラムは2つまたはそれ以上のプロセスに分けられるが、それらのプロセスは互いに一緒に動作し、ユーザーにとっては1つのプログラムとして見える。これはプロセス間通信と共用メモリの少なくとも一方により行われる。
プロセス間通信性能の一例を図4を参照して説明する。しかし、他のプロセス間通信機能を使用できることが当業者には明らかである。更に、以下の説明は2つまたはそれ以上のプロセスの間のプロセス間通信についてのものである。しかし、上記のように、本発明は2つのプロセスに限定されるものではなく、アプリケーションプログラムを表す3つまたはそれ以上のプロセスで実現することもできる。
【0025】
図4を参照して、UNIXをベースとするシステムにおいては、UNIXシステムV IPCパッケージに設けられるメッセージ機構を用いることにより、プロセスは他のプロセスと通信できる。オペレーティングシステム510は、プロセス間メッセージを格納するメッセージ待ち行列530を維持する。通信するために、第1のプロセス500はMSGGET(MSGCREAT)システムコールを送って、メッセージ待ち行列530を指定するメッセージ記述を作成する。オペレーティングシステム500は待ち行列構造を割当て、識別子を第1のプロセス500へ戻す。そうすると第1のプロセス500はMSGSNDシステムコールを実行してメッセージを送る。オペレーティングシステム510は、第1のプロセス500がメッセージ記述に従って書くことを許されているか、どうかを調べる。もし許されておれば、オペレーティングシステム510はメッセージをメッセージ待ち行列に置く。第2のプロセス520は、MSGGETシステムコールを実行することにより、オペレーティングシステム510内のメッセージ待ち行列530からの第1のプロセスから送られたそれのメッセージを受ける。Unixシステムの詳細については、バック(Back)著「Unixオペレーティングシステムの設計(The Design of the Unix Operating System)」(1986年、プレンティス・ホール(Prentice Hall)発行を参照されたい。
【0026】
プロセスはSockets(商標)を介して互いに通信できる。そのSocketsもUNIXオペレーティングシステムにより供給される。Socketシステムは通信リンクの1つの端部点を定める。UNIXオペレーティングシステムにおけるプロセス間通信の流れ図の一例が図5に示されている。プロセスが互いに通信できる前に、それらのプロセスは通信リンクを設定せねばならない。図5を参照して、通信するために、サーバープロセスは流れSocket610を作成し、Socket接続620に名を付け、入来メッセージ630のための内部待ち行列長さをセットし、依頼人プロセス640からの任意の接続要求を検査する。接続要求は通信したいというプロセスの希望を示す。要求があるとすると、サーバープロセスは入来要求650を受け、依頼人プロセス670と通信する。依頼人プロセスは、流れSocket680を作成することにより通信の用意を行い、名づけられたサーバーSocketへ接続することを中枢部に要求し、サーバープロセスと通信する。
【0027】
各プロセスはそれ自身の仮想アドレス空間およびメモリ内を走り、オペレーティングシステムは他のプロセスがそのメモリ領域をアクセスすることを阻止する。しかし、種々のプロセスは、それらのプロセスの仮想アドレス空間の部分を共用し、それから、共用されているメモリに対して読出しおよび書込みを行うことにより、互いに通信できる。これについてのこれ以上の詳細については、前掲バック(Back)著「Unixオペレーティングシステムの設計」を参照されたい。
【0028】
プロセス間の大量のデータの通信は共用メモリを利用して行うことが好ましい。たとえば共用メモリを用いることにより、第1のサブプログラムがデータをメモリへ書込むことができ、第2のサブプログラムが、第1のサブプログラムによりメモリへ書込まれているデータを読出すことができる。
【0029】
次に図6を参照して、第1のサブプログラムは、システムコールを実行し共用メモリの新しい領域を作成することにより第2のサブプログラムと通信でき、それからその新しい領域をそれのプロセスの仮想アドレスへ取付ける。そうすると、共用メモリを用いて2つまたはそれ以上のサブプログラムを読出すことにより、共用メモリに記憶されているデータを共用できる。
【0030】
メモリに対するアクセスを共用するプロセスは、機能的なシステム挙動を確実にするために、それらのプロセスによるメモリの使用を統合せねばならない。たとえば、2つのプロセスが共用メモリ場所へ同時に書込まないようにするために、プロセスに順位をつけて置くことができる。
共用メモリに対するプロセスのアクセスを制御する1つの方法は、セマフォを用いることである。共用メモリ領域をアクセスすることを望むプロセスは、ある指定されたセマフォオペレーションの実行に成功することにより、アクセスの許可を得なければならない。セマフォがプロセスによりセットされるものとすると、対応するメモリ領域がロックされることにより、他のプロセスがそのメモリ領域をアクセスすることを阻止する。セマフォ実現は、それがセットされる時は零にセットでき、それがフリーの時は1にセットされる。フリーな(セットされていない)セマフォはメモリ場所を利用できることを示す。
ユニプロセッサUnixシステムにおいてプロセスのアクセスを制御するセマフォの例を図7を参照して説明する。しかし、他の共用メモリ法を使用できることが当業者には明らかである。
【0031】
図7を参照して、セマフォは最初はセットされず、共用メモリを使用できることを示す。700において、セマフォがセットされているかどうかを第1のプロセスは調べる。セマフォがセットされていないと、第1のプロセスはセマフォをセット(710)、メモリを用いる(720)。同様に、セマフォがセットされているかどうかを第2のプロセスが調べる(740)。セマフォが第1のプロセスによりセットされているとすると、セマフォがフリーにされるまで第2のプロセスは眠る(760)。セマフォがフリーになると、第2のプロセスはセマフォをセットし(750)、メモリを用いる(770)。
【0032】
データを共用するために共用メモリ機構を利用できる。たとえば、アプリケーションプログラムはモデムから送られたデータを受け、それをウィンドウ上に表示する。本発明に従って、第1のプロセスのI/Oプロセスがモデムポートを介してデータを受け、共用メモリ領域にそのデータを書込む。第1のプロセスがデータを共用メモリ領域に書込んでいる間に、セマフォは第1のプロセスによりセットされる。第1のプロセスが書込みを終わって、セマフォをフリーにした後で、第2のプロセスはデータを共用メモリ領域から読出し、ウィンドウシステムを介して書込んで、対応するウィンドウ内に表示する。プロセス間通信は共用メモリを介して行い、「Signal」システムコールをUNIXオペレーティングで利用できることが好ましい。信号が発生された時に通知すべきプロセスを識別する信号番号で名Signalは識別される。中枢部へは発生できるそれらのSignalについて最初に知らされ、特定のSignal番号のSignalが発生された時に通知されるべきプロセスも最初に知らされる。プロセスによりあるSignalが発生されると、中枢部はSignal番号に対応するプロセスに、Signalにサービスする所定のルーチン/プロシージャを実行させる。Signalについての詳細は前掲書「UNIXオペレーティングシステムの設計」200〜212ページを参照されたい。本発明の好適な実施例においては、アプリケーションプログラムは2つのプロセスを有する。第1のプロセスは時間的に厳しいプロシージャを含み、第2のプロセスは、ウィンドウシステムプロシージャを実行するプロシージャを含んでいる残りのプロシージャを含む。それらのプロセスはマスタ=スレイブ関係で機能し、第1のプロセスがマスタとして機能し、第2のプロセスがスレイブとして機能する。共用メモリが設定され、そのメモリは両方のプロセスでアクセスできる。アプリケーションを開始するために、第1のプロセスの実行を開始させるための指令をユーザーは実行する。第1のプロセスはアプリケーションを構成するためのスタートコードを実行し、それから第2のプロセスへ渡す。たとえば、第1のプロセスはプロセス間通信機構を初期化でき、または共用メモリの区間を設定できる。アプリケーションプログラムの実行中に、第2のプロセスにおけるあるプロシージャを実行すべき時に、たとえば、ウィンドウシステムプロシージャを実行すべき時に、第1のプロセスは、実行すべきプロシージャを識別する指令と、そのプロシージャを実行するために必要なパラメータとを共用メモリ内に置く。それから第1のプロセスは、第2のプロセスが共用メモリをアクセスし、共用メモリに記憶されている指令を実行することを指示する、所定の信号番号を有するSignalを生ずる。第2のプロセスの実行中に、第1のプロセスはそれの実行を続けることにより、第1のプロセスはウィンドウシステムプロシージャと、ウィンドウシステムプロシージャの実行中に生ずることがあるプロセスの停止とにより影響を受けることはない。第1のプロセスは共用メモリを定期的にポーリングして、第2のプロセスにより実行されるプロシージャにより戻すことができる情報を探す。共用メモリ中で何らかの情報が見つかったら、第1のプロセスはその情報を取出すだけである。このようにして、第1のプロセスは第2のプロセスから自身を更に絶縁して、ユーザーにとって単一アプリケーションプログラムとして明らかに動作させるために、完全双方向通信を維持する。
【0033】
時間的に厳しいプロシージャを含んでいるプロセスと、ウィンドウシステムインターフェイス特定プロシージャおよびブロッキングプロシージャを含むプロセスとにアプリケーションプログラムを分離することにより、時間的に厳しいプロシージャは、時間的に厳しいプロシージャを停止させることができ、プロシージャから絶縁され、その間にプロセスは互いに一緒に実行し、プロセス間通信により相互に通信し、ユーザーにとって1つのアプリケーションプログラムとして見えるようにできる。
【図面の簡単な説明】
【図1】時間的に厳しいプログラムを実行するための本発明の好適な実施例の典型的なコンピュータシステムのブロック図表現である。
【図2】サーバをベースとするウィンドウシステムのブロック図表現である。
【図3】ウィンドウシステム環境において時間的に厳しいプログラムを動作させる方法のブロック図表現である。
【図4】メッセージを介する他のプロセスと通信する1つのプロセスのブロック図表現である。
【図5】ソケットを用いるプロセス間通信を示す流れ図である。
【図6】プロセスの間の共用されるメモリを示す流れ図である。
【図7】セマフォを用いるプロセスの間のアクセスを示す流れ図である。
【符号の説明】
102 I/O回路
103 CPU
104 メモリ
106 大容量メモリ
107 表示モニタ
108 カーソル制御器
260 表示装置
270 キーボード
280 マウス
【産業上の利用分野】
本発明は計算環境における時間的に厳しいプロセスの実行に関するものである。更に詳しくいえば、本発明はウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置に関するものである。
【0002】
【従来の技術】
計算機産業においては、Sun ViewまたはNeWS XVIEW(OPEN WINDOWS)(いずれも、アメリカ合衆国カリフォルニア州マウンテン・ビュー(Mountain View)所在のサン・マイクロシステムズ(Sun Microsystems)の商標である)を利用して、アプリケーションプログラムへのユーザー入力および出力を表示および制御することが一般的である。ウィンドウシステムによりメニュー、およびその他の図形オブジェクトのような視覚的ユーザーインターフェイスを発生する手段が得られる。多数のアプリケーションプログラムを、ウィンドウ化されている表示器を用いて示し、実行することを同時に行うことができる。たとえば、第1のウィンドウにおいては、会計プログラムを動作させ、その間に第2のウィンドウに作図プログラムを走らせることができる。コンピュータのユーザーは、カーソルを1つのウィンドウから別のウィンドウへ移動させることにより、別々のプログラムを動作させるためにウィンドウからウィンドウへ切換えることができる。更に、ウィンドウシステムは表示されるシステム情報と、ウィンドウシステムを介して実行するプロセスと、種々のウィンドウおよび実行中のプロセスへのユーザー入力とを制御する。
【0003】
ウィンドウシステムは、それを介して実行するプログラム(以降「アプリケーションプログラム」と記す)に対する完全な制御を行う。たとえば、ウィンドウシステムはビデオ表示器、プリンタ等のようなハードウェア出力装置に対するアクセスを制御する。アプリケーションプログラムは、ユーザーウィンドウ事象のアプリケーションプログラムを通知するためにウィンドウシステムに依存する。更に、種々のアプリケーションプログラムがマルチタスク環境で動作できるように、ウィンドウシステムはアプリケーションプログラムを制御する。また、アプリケーションプログラムのどのプロセスがCPUをアクセスできるかということ、およびそのアクセスの優先順位とを制御する。
【0004】
典型的には、マルチタスク計算環境においては、実行する各プロセスにはCPUを利用するための「タイムスライス」(すなわち、所定の時間区間)が割当てられる。プロセスはそれぞれのタイムスライス中に実行することによりCPUを共用する。あるプロセスがそれのタイムスライス中に実行を終わっていないとすると、プロセスはそれの次のタイムスライスまで「眠りに入る」(すなわち、プロセスは停止させられる)。更に、ユーザー事象がブロッキング動作である、たとえば、データをディスクから読出す、と考えられるとすると、その動作が終わるまで対応するプロセスが保留させられる。
【0005】
ウィンドウシステム環境においては、ウィンドウシステムはタイムスライスの割当てに関与でき、したがってプロセスを停止させることができる。したがって、ウィンドウシステムで動作する、アプリケーションプログラムのプロセスは所定の時間内にCPUをアクセスすることを保障されない。その理由は、ウィンドウシステムによりプロセスを中間の長さの時間だけ停止させることができるからである。
【0006】
たとえば、ウィンドウを動かすとか、図形またはテキストを表するというような、ウィンドウシステムの一般的なオペレーションを行うためにCPUタイムスライスのプロセスへの割当てをウィンドウシステムは変える必要はない。一般に、ウィンドウシステムによって実行するアプリケーションプログラムに対してはそれは問題ではない。具体的にいえば、アプリケーションプロセスを停止しても、プロセスの実行が少し遅れることを除き、何の問題も生じさせない。たとえば、ユーザーが未知の指令に入ると、ウィンドウシステムは誤りメッセージを表示し、続行するためにユーザーが「承認」またはそれに類似の確認応答指令に入ることを求める。ユーザーが応答することをウィンドウプロセスが待っている間に、それはウィンドウシステムの下で現在実行している他の全てのウィンドウプロセスを凍結すなわち停止する。(ウィンドウシステムについては、たとえばゴスリング(Gosling)、ローゼンタール(Rosenthal)、アーデン(Arden)著「NeWSブック(The NeWS Book)」(1989年)23〜52ページを参照されたい。)
【0007】
ブロッキングオペレーション等のためにウィンドウシステムによるプロセスの停止によって、ウィンドウシステムによるアプリケーションプログラム実行の時間的に厳しいプロセスに問題が起こる。それらの時間的に厳しいプロセスは指定された時間フレーム内で応答し、活動することを要求する。たとえば、あるアプリケーションプログラムがデータをモデムを介して受けるとすると、ある時間依存性を指令するあるボー速度で送るべきデータをモデムは受けねばならない。時間的に厳しいアプリケーションプログラムがウィンドウシステムにより停止させられるとすると、モデムは利用されているボー速度でデータを受けることができず、モデムは正しく動作することができない。更に詳しくいえば、Unix(商標)をベースとするシステムへモデムが接続され、時間的に厳しいアプリケーションプログラムがデータを受けるためにモデムを現在アクセスしており、かつ時間的に厳しいアプリケーションがウィンドウシステムにより停止させられるものとすると、モデムを介して受けられるデータは、オペレーティングシステムの中心部にあるバッファへ行く。そうするとオペレーティングシステムはモデムから受けた情報をアプリケーションプログラムへ転送することを試みる。しかし、アプリケーションプログラムが停止されたとすると、データを転送できないから、データはバッファ内に留まる。停止が継続するものとすると、最終的にはバッファは一杯になり、直列オーバランのためにデータは失われる。(UnixシステムおよびUnix中枢部については、バック(Back)著「Unixオペレーティング・システムの設計(The Design of the Unix Operating System)」(1986年)を参照されたい。)
【0008】
この問題は、時間的に厳しいプロセスを停止させないようにウィンドウシステムを変更することにより、避けることができる。しかし、ウィンドウシステムを変更できず、かつウィンドウシステムとともに動作するために書かれたアプリケーションプログラムを厳密なウィンドウシステムインターフェイスへ付着せねばならないように、ほとんどのウィンドウシステムは標準化される。
【0009】
【発明が解決しようとする課題】
したがって、本発明の目的は、ウィンドウシステムの下で実行する時間的に厳しいアプリケーションプログラムがCPUを共用でき、かつ、ウィンドウシステムを変更するこなく、およびウィンドウシステムインターフェイスを乱すことなしに、それぞれのタイムスライス中に実行できるよにすることである。
本発明の別の目的は、ブロッキングオペレーションを含む時間的に厳しいアプリケーションプログラムが、ブロッキングオペレーションにより阻止されることなしに、CPUをタイミング良く利用できるようにすることである。
【0010】
【課題を解決するための手段】
時間的に厳しいアプリケーションプログラムは少なくとも2つのプロセスへ機能的に分けられる。第1のプロセスはタイムスライスに敏感なCPUプロシージャ、すなわち時間的に厳しいCPUプロシージャの全てを含む。このプロセスはウィンドウシステムインターフェイスとは独立に動作し、オペレーティングシステムと直接通信する。第2のプロセスは、ウィンドウシステムでユーザー入力と出力を必要とするそれらの手順はもちろんブロッキングオペレーションを含むが、時間的に厳しいプロシージャは含まない残りのプロシージャの全てを実現する。このプロセスはウィンドウインターフェイスと典型的に通信し、かつ動作する。2つまたはそれ以上のプロセスが動作し、かつ1つのプログラムとしてユーザーに見えるように、共用されるメモリのようなプロセス間通信機構を介してデータを交換し、実行を同期させる。
【0011】
記法および用語
以下に行う詳細な説明を、コンピュータメモリ内のデータビットのオペレーションのアルゴリズム表現および記号表現で主として行う。それらのアルゴリズムによる説明および表現は、データ処理の分野における専門家が自己の業績を最も効果的に伝えるために、それらの専門家が用いる手段である。
アルゴリズムというのはここでは、および一般的には、希望の結果へ導く自己無盾のない一連の過程であると考えられる。それらの過程は物理量の物理的取扱いを要する過程である。通常は、必然的なものではないが、それらの量は、記憶、転送、組合わせ、比較その他の処理を行うことができる電気信号または磁気信号の形をとる。主として一般的に用いられているという理由で、それらの信号をビット、値、素子、記号、オブジェクト、キャラクタ、項、番号等と呼ぶことが時には便利であることが判明している。しかし、それら全ての項および類似の項には適切な物理量に関連づけること、およびそれらの量へ取付けられる単なる便利なラベルであることを記憶すべきである。
【0012】
更に、行われる操作は、人の精神活動に一般的に関連づけられる加算または比較のような表現でしばしば呼ばれる。本発明の一部を成す、ここで説明するオペレーションのいずれにおいても人のそのような能力は、ほとんどの場合に不必要であり、あるいは望ましくない。オペレーションはマシンオペレーションである。本発明のオペレーションを行うために有用なマシンは汎用デジタルコンピュータまたはそれに類似の装置を含む。あらゆる場合に、コンピュータを動作させることにおける方法オペレーションと計算自体の方法の違いを記憶しておくべきである。本発明は、コンピュータを動作させるため、および他の希望の物理的信号を発生するために電気的信号またはその他の物理的信号を処理する方法過程に関するものである。
本発明はそれらのオペレーションを行うための装置にも関するものである。この装置は求められている目的のためにとくに構成でき、またはコンピュータに内蔵されているコンピュータプログラムにより選択的に動作させられ、または再構成されるものとしての汎用コンピュータを含むことができる。ここで提示するアルゴリズムは任意の特定のコンピュータまたはその他の装置に完全に関連するものではない。とくに、種々の汎用機を、本発明の教示に従って書かれたプログラムで使用でき、あるいは要求されている方法過程を実行するために一層特殊化された装置を構成するためにそれらの汎用機は一層便利であることを証明できる。それらの種々の装置のために要求される構造は以下の説明から明らかとなるであろう。
【0013】
【実施例】
図1は、ウィンドウシステム環境において時間的に厳しいプロセスを実行する、コンピュータをベースとする本発明の典型的なシステムを示す。この図にはコンピュータ101が示されている。このコンピュータは3つの主な部品を有する。第1の部品は、適切な構造のフォームで情報をコンピュータ101の他の部品とやりとりするために用いられる入力/出力(I/O)回路102である。他の主の部品は中央処理装置(CPU)103とメモリ104である。後の2つの部品はほとんどの汎用コンピュータおよびほとんど全ての専用コンピュータに典型的に見られるものである。実際に、コンピュータに含まれているいくつかの部品は、この広い種類のデータプロセッサを表すことを意図するものである。コンピュータ101の役割を果たすために適当なデータプロセッサの特定の例には、前記サン・マイクロシステムズ社(Sun Microsystems,Inc.)により製造される装置が含まれる。同様な性能を有する他のコンピュータは、下記の諸機能を直線的なやり方で実行するように構成できることはもちろんである。
【0014】
図1には入力装置105も示されている。典型的な実施例では、入力装置105はキーボードである。しかし、入力装置は実際にはカード読取機、磁気テープまたは紙テープの読取機、その他周知の入力装置(もちろん別のコンピュータも含む)とすることができることを理解すべきである。大容量メモリ106がI/O回路102へ結合されて、コンピュータ101のために追加の記憶性能を提供する。この大容量メモリは他のプログラム等を含むことができ、磁気テープまたは紙テープの読取機、あるいはその他周知の装置の態様をとることができる。大容量メモリ106に保持されるデータは、適切な場合には、メモリ104の一部としてコンピュータ101に標準的なやり方で組込むことができる。
【0015】
また、図1には、メッセージその他の通信をユーザーへ表示するために用いられる表示モニタ107も示されている。その表示モニタはCRT、表示器、プラズマ表示器、LCD表示器のようないくつかの周知の表示器のうちの任意のものとすることができる。カーソル制御器108が指令モードの選択と入力データの編集のために用いられ、システムへ情報を入力するための一層便利な手段を提供する。
【0016】
プロセスについての説明
本発明の好適な実施例についての以下の説明は、ウィンドウシステム環境において、時間的に厳しいプログラムを動かす方法についてのものである。とくに、時間的に厳しいプログラムを動かすための本発明の方法の実現を、分布ウィンドウシステム環境(「サーバをベースとするシステム」ともここでは呼ぶ)に関して説明する。しかし、時間的に厳しいプロセスを処理するこの方法を、異なるコンピュータアーキテクチャおよび異なるウィンドウシステムを有する異なるコンピュータシステムへ適用できることが、以下の説明から等業者には明らかであろう。更に、以下の説明は、Unixオペレーティングシステムで動作するウィンドウシステム環境で、時間的に厳しいプログラムを動作させる方法についてのものである。しかし、この方法はそれに限定されるものではなく、任意のマルチタスクおよびマルチプロセッサオペレーティングシステムで実現できる。
【0017】
ウィンドウシステムは、スクリーンを、ウィンドウと呼ばれる、重なり合う、または重なり合わない多数の視覚的領域に分割することが普通である。異なるアプリケーションプログラムを各ウィンドウにおいて実行できる。ウィンドウというのは、ウィンドウ内で動作するアプリケーションプログラムに関して情報を表示するために用いられるスクリーンの可視部分であって、特定のウィンドウ内で実行しているアプリケーションプログラムと対話する手段をユーザーに提供するものである。ウィンドウシステムは、ほとんどのオペレーション、とくにユーザー入力および出力に対して、アプリケーションプログラムとオペレーティングシステムの間のインターフェイスとして作用することにより、オペレーティングシステムに対するアプリケーションプログラムのアクセスを制御する。ウィンドウシステムは、ウィンドウの寸法と位置を指定し、ウィンドウ上で作図し、メニューの出現を選択的に定めるためのプロシージャ(手段)をアプリケーションプログラムに提供するものである。
【0018】
図2に示すように、表示器260と、キーボード270およびマウス180は入力/出力をウィンドウシステムへ供給し、かつウィンドウシステムで動作しているアプリケーションプログラムへ入力/出力をオペレーティングシステム255を介して供給する。サーバーをベースとするウィンドウシステムは、ウィンドウセーバー、ウィンドウマネジャーおよびツールキットと呼ばれるいくつかのプロセスで構成される。
【0019】
ウィンドウセーバー250は表示器と、この表示器へのアプリケーションプログラムのアクセスの優先度とを制御する。ウィンドウサーバーの例には、X11(マサチューセッツ工科大学所有の商標)プロトコルをサポートするX11と、X11/NeWsウィンドウセーバープロトコルとを含む。X11については、「ACM トランザクション・オン・グラフィックス(ACM Transaction on Graphics)」第5巻第2号、1986年4月号の79〜109ページ所載のシェイフラー・ゲッティス(Sheifler Gettys)の「Xウィンドウズ・システム(The X Window System)」を参照されたい。X11/NeWsウィンドウセーバープロトコルについては、1988年夏季ユーザー会議議事録(Proceedings of the Summer 1988 User Conference)」(1988年、23〜25ページ所定の前記シャウフラーの「X11/NeWs設計の概観(X11/NeWs Design Overvier)」と題する論文を参照されたい。
【0020】
ウィンドウマネジャーは、スクリーンを占めるウィンドウの作業域を制御し、メニューウィンドウの作業域を決定する。ウィンドウマネジャーは、X11プロトコルの場合に典型的であるように別々のプロセスにでき、または、ウィンドウマネジャーがウィンドウサーバー中に存在するプロセスの集まりであるようなX11/NeWsウィンドウシステムの場合にウィンドウサーバーの一部とすることができる。
ツールキット210,230は、ウィンドウシステムメニューがどのようにして出現するか、ユーザーが制御区域とどのようにして対話するか、制御域がどのように編成されるかを決定する。ツールキット210,230は、ツールキットがアプリケーションプログラムをウィンドウシステムに対してインターフェイスするために参照する機能のライブラリイより成るツールキットライブラリイ240を含むことが好ましい。アプリケーションプログラムは、ツールキットおよびツールキットライブラリイで利用できるプロセスを介して、ウィンドウシステム内で通信および動作する。ツールキットおよびツールキットライブラリイの例はX View(商標)ツールキットである。このX ViewツールキットはX11/NeWs(商標)ウィンドウシステムで用いられる。X Viewツールキットについては、第3回年次技術会議(3rd Annual Technical Conference)、1989年、におけるヤコブス(Jacobs)著「X View ツールキット、アーキテクチャの概観(The X View Toolkit, Architectual Overview)」を参照されたい。
ウィンドウシステム環境において時間的に厳しいアプリケーションプログラムを動作させる本発明の方法においては、アプリケーションプログラムは2つまたはそれ以上のプロセスへ機能的に分割される。この場合に1つのプロセスは時間的に厳しいプロシージャを含む。時間的に厳しいプロシージャというのは、所定の時間内に応答し、活動を行うことを要するプロシージャを意味する。図3を参照して、アプリケーションプログラム305は第1のプロセス350と第2のプロセス300へ分割される。
【0021】
第1のプロセス350は、正しく実行するために所定の応答時間を要する、時間的に厳しいプロシージャと指令を含むアプリケーションプログラムのプロシージャを含む。この問題は、ハードウェアというのは動作時に遅れがほとんど、または全くないという本質的に実時間の装置であるから、ハードウェアをソフトウェアでエミュレートするような場合に起こる。更に、割込みのようなシステムサービスルーチンのソフトウェアエミュレーションはタイミング良く動作せねばならない。したがって、時間的に厳しいアプリケーションプロセスの例は、ディスクドライブ制御器のエミュレーション、割込み制御器のエミュレーション、キーボード制御器のエミュレーション、直列I/Oインターフェイスのエミュレーション、クロックエミュレータのエミュレーションのような入力/出力エミュレーション手順と、ハードウェアをエミュレートする別のプロセスとを含むが、それらに限定されるものではない。第1のプロセス350はウィンドウシステムでは動作しないが、その代わりにオペレーティングシステムと直接通信する。第1のプロセスはウィンドウシステムをバイパスするから、ウィンドウシステムによっては制御されず、どのような時間もウィンドウシステムにより停止させることはできない。更に、ブロッキングオペレーションを他のプロセスに置くことにより、時間的に厳しいプロシージャのブロッキングオペレーションによる停止は避けられる。
【0022】
第2のプロセス300は、ウィンドウシステムとの対話を要するが、時間的に厳しくない手順と、実行された時にプログラム/プロセスを停止させるブロッキングプロシージャとを実現する。ウィンドウシステムプロシージャの例は、データをスクリーンの別々の部分に表示するため、または特定のウィンドウのサイズを定め直すためのプロシージャを含む。第2のプロセス300は、アプリケーションのメニュー性能、制御域性能、作図性能を提供するツールキット310へリンクされる。ウィンドウサーバー320は表示を制御し、アプリケーションプログラムの表示をアクセスする。したがって、この第2のプロセスはウィンドウシステムの要求と制約を受ける。ブロッキングオペレーションはディスクからの読出しおよびその他のファイルオペレーションのような、実行に長い時間を要し、実行された時に、ブロッキングオペレーションの実行が終わるまで、オペレーションシステムによりプログラムを停止させるプロシージャである。
【0023】
アプリケーションに対するブロッキングオペレーションの影響を最小にするために、アプリケーションを追加のサブプログラムに分離することもできる。追加プロセスを作成できる。各追加プロセスは1つまたは複数のブロッキングプロシージャを含む。UNIX(商標)オペレーティングシステム環境においては、1つのブロッキングプロシージャに遭遇した時にプログラムの実行を続行できるようにするためのUNIXオペレーティングシステムの性能を利用するために、各プロセスはただ1つのブロッキングプロシージャを含むことが好ましい。(しかし、2つ以上のブロッキングプロシージャを実行するならば、プログラム/プロセスは阻止される。)したがって、アプリケーションを停止できるプロシージャにより第1のプロセスは影響を受けない。
【0024】
アプリケーションプログラムは2つまたはそれ以上のプロセスに分けられるが、それらのプロセスは互いに一緒に動作し、ユーザーにとっては1つのプログラムとして見える。これはプロセス間通信と共用メモリの少なくとも一方により行われる。
プロセス間通信性能の一例を図4を参照して説明する。しかし、他のプロセス間通信機能を使用できることが当業者には明らかである。更に、以下の説明は2つまたはそれ以上のプロセスの間のプロセス間通信についてのものである。しかし、上記のように、本発明は2つのプロセスに限定されるものではなく、アプリケーションプログラムを表す3つまたはそれ以上のプロセスで実現することもできる。
【0025】
図4を参照して、UNIXをベースとするシステムにおいては、UNIXシステムV IPCパッケージに設けられるメッセージ機構を用いることにより、プロセスは他のプロセスと通信できる。オペレーティングシステム510は、プロセス間メッセージを格納するメッセージ待ち行列530を維持する。通信するために、第1のプロセス500はMSGGET(MSGCREAT)システムコールを送って、メッセージ待ち行列530を指定するメッセージ記述を作成する。オペレーティングシステム500は待ち行列構造を割当て、識別子を第1のプロセス500へ戻す。そうすると第1のプロセス500はMSGSNDシステムコールを実行してメッセージを送る。オペレーティングシステム510は、第1のプロセス500がメッセージ記述に従って書くことを許されているか、どうかを調べる。もし許されておれば、オペレーティングシステム510はメッセージをメッセージ待ち行列に置く。第2のプロセス520は、MSGGETシステムコールを実行することにより、オペレーティングシステム510内のメッセージ待ち行列530からの第1のプロセスから送られたそれのメッセージを受ける。Unixシステムの詳細については、バック(Back)著「Unixオペレーティングシステムの設計(The Design of the Unix Operating System)」(1986年、プレンティス・ホール(Prentice Hall)発行を参照されたい。
【0026】
プロセスはSockets(商標)を介して互いに通信できる。そのSocketsもUNIXオペレーティングシステムにより供給される。Socketシステムは通信リンクの1つの端部点を定める。UNIXオペレーティングシステムにおけるプロセス間通信の流れ図の一例が図5に示されている。プロセスが互いに通信できる前に、それらのプロセスは通信リンクを設定せねばならない。図5を参照して、通信するために、サーバープロセスは流れSocket610を作成し、Socket接続620に名を付け、入来メッセージ630のための内部待ち行列長さをセットし、依頼人プロセス640からの任意の接続要求を検査する。接続要求は通信したいというプロセスの希望を示す。要求があるとすると、サーバープロセスは入来要求650を受け、依頼人プロセス670と通信する。依頼人プロセスは、流れSocket680を作成することにより通信の用意を行い、名づけられたサーバーSocketへ接続することを中枢部に要求し、サーバープロセスと通信する。
【0027】
各プロセスはそれ自身の仮想アドレス空間およびメモリ内を走り、オペレーティングシステムは他のプロセスがそのメモリ領域をアクセスすることを阻止する。しかし、種々のプロセスは、それらのプロセスの仮想アドレス空間の部分を共用し、それから、共用されているメモリに対して読出しおよび書込みを行うことにより、互いに通信できる。これについてのこれ以上の詳細については、前掲バック(Back)著「Unixオペレーティングシステムの設計」を参照されたい。
【0028】
プロセス間の大量のデータの通信は共用メモリを利用して行うことが好ましい。たとえば共用メモリを用いることにより、第1のサブプログラムがデータをメモリへ書込むことができ、第2のサブプログラムが、第1のサブプログラムによりメモリへ書込まれているデータを読出すことができる。
【0029】
次に図6を参照して、第1のサブプログラムは、システムコールを実行し共用メモリの新しい領域を作成することにより第2のサブプログラムと通信でき、それからその新しい領域をそれのプロセスの仮想アドレスへ取付ける。そうすると、共用メモリを用いて2つまたはそれ以上のサブプログラムを読出すことにより、共用メモリに記憶されているデータを共用できる。
【0030】
メモリに対するアクセスを共用するプロセスは、機能的なシステム挙動を確実にするために、それらのプロセスによるメモリの使用を統合せねばならない。たとえば、2つのプロセスが共用メモリ場所へ同時に書込まないようにするために、プロセスに順位をつけて置くことができる。
共用メモリに対するプロセスのアクセスを制御する1つの方法は、セマフォを用いることである。共用メモリ領域をアクセスすることを望むプロセスは、ある指定されたセマフォオペレーションの実行に成功することにより、アクセスの許可を得なければならない。セマフォがプロセスによりセットされるものとすると、対応するメモリ領域がロックされることにより、他のプロセスがそのメモリ領域をアクセスすることを阻止する。セマフォ実現は、それがセットされる時は零にセットでき、それがフリーの時は1にセットされる。フリーな(セットされていない)セマフォはメモリ場所を利用できることを示す。
ユニプロセッサUnixシステムにおいてプロセスのアクセスを制御するセマフォの例を図7を参照して説明する。しかし、他の共用メモリ法を使用できることが当業者には明らかである。
【0031】
図7を参照して、セマフォは最初はセットされず、共用メモリを使用できることを示す。700において、セマフォがセットされているかどうかを第1のプロセスは調べる。セマフォがセットされていないと、第1のプロセスはセマフォをセット(710)、メモリを用いる(720)。同様に、セマフォがセットされているかどうかを第2のプロセスが調べる(740)。セマフォが第1のプロセスによりセットされているとすると、セマフォがフリーにされるまで第2のプロセスは眠る(760)。セマフォがフリーになると、第2のプロセスはセマフォをセットし(750)、メモリを用いる(770)。
【0032】
データを共用するために共用メモリ機構を利用できる。たとえば、アプリケーションプログラムはモデムから送られたデータを受け、それをウィンドウ上に表示する。本発明に従って、第1のプロセスのI/Oプロセスがモデムポートを介してデータを受け、共用メモリ領域にそのデータを書込む。第1のプロセスがデータを共用メモリ領域に書込んでいる間に、セマフォは第1のプロセスによりセットされる。第1のプロセスが書込みを終わって、セマフォをフリーにした後で、第2のプロセスはデータを共用メモリ領域から読出し、ウィンドウシステムを介して書込んで、対応するウィンドウ内に表示する。プロセス間通信は共用メモリを介して行い、「Signal」システムコールをUNIXオペレーティングで利用できることが好ましい。信号が発生された時に通知すべきプロセスを識別する信号番号で名Signalは識別される。中枢部へは発生できるそれらのSignalについて最初に知らされ、特定のSignal番号のSignalが発生された時に通知されるべきプロセスも最初に知らされる。プロセスによりあるSignalが発生されると、中枢部はSignal番号に対応するプロセスに、Signalにサービスする所定のルーチン/プロシージャを実行させる。Signalについての詳細は前掲書「UNIXオペレーティングシステムの設計」200〜212ページを参照されたい。本発明の好適な実施例においては、アプリケーションプログラムは2つのプロセスを有する。第1のプロセスは時間的に厳しいプロシージャを含み、第2のプロセスは、ウィンドウシステムプロシージャを実行するプロシージャを含んでいる残りのプロシージャを含む。それらのプロセスはマスタ=スレイブ関係で機能し、第1のプロセスがマスタとして機能し、第2のプロセスがスレイブとして機能する。共用メモリが設定され、そのメモリは両方のプロセスでアクセスできる。アプリケーションを開始するために、第1のプロセスの実行を開始させるための指令をユーザーは実行する。第1のプロセスはアプリケーションを構成するためのスタートコードを実行し、それから第2のプロセスへ渡す。たとえば、第1のプロセスはプロセス間通信機構を初期化でき、または共用メモリの区間を設定できる。アプリケーションプログラムの実行中に、第2のプロセスにおけるあるプロシージャを実行すべき時に、たとえば、ウィンドウシステムプロシージャを実行すべき時に、第1のプロセスは、実行すべきプロシージャを識別する指令と、そのプロシージャを実行するために必要なパラメータとを共用メモリ内に置く。それから第1のプロセスは、第2のプロセスが共用メモリをアクセスし、共用メモリに記憶されている指令を実行することを指示する、所定の信号番号を有するSignalを生ずる。第2のプロセスの実行中に、第1のプロセスはそれの実行を続けることにより、第1のプロセスはウィンドウシステムプロシージャと、ウィンドウシステムプロシージャの実行中に生ずることがあるプロセスの停止とにより影響を受けることはない。第1のプロセスは共用メモリを定期的にポーリングして、第2のプロセスにより実行されるプロシージャにより戻すことができる情報を探す。共用メモリ中で何らかの情報が見つかったら、第1のプロセスはその情報を取出すだけである。このようにして、第1のプロセスは第2のプロセスから自身を更に絶縁して、ユーザーにとって単一アプリケーションプログラムとして明らかに動作させるために、完全双方向通信を維持する。
【0033】
時間的に厳しいプロシージャを含んでいるプロセスと、ウィンドウシステムインターフェイス特定プロシージャおよびブロッキングプロシージャを含むプロセスとにアプリケーションプログラムを分離することにより、時間的に厳しいプロシージャは、時間的に厳しいプロシージャを停止させることができ、プロシージャから絶縁され、その間にプロセスは互いに一緒に実行し、プロセス間通信により相互に通信し、ユーザーにとって1つのアプリケーションプログラムとして見えるようにできる。
【図面の簡単な説明】
【図1】時間的に厳しいプログラムを実行するための本発明の好適な実施例の典型的なコンピュータシステムのブロック図表現である。
【図2】サーバをベースとするウィンドウシステムのブロック図表現である。
【図3】ウィンドウシステム環境において時間的に厳しいプログラムを動作させる方法のブロック図表現である。
【図4】メッセージを介する他のプロセスと通信する1つのプロセスのブロック図表現である。
【図5】ソケットを用いるプロセス間通信を示す流れ図である。
【図6】プロセスの間の共用されるメモリを示す流れ図である。
【図7】セマフォを用いるプロセスの間のアクセスを示す流れ図である。
【符号の説明】
102 I/O回路
103 CPU
104 メモリ
106 大容量メモリ
107 表示モニタ
108 カーソル制御器
260 表示装置
270 キーボード
280 マウス
Claims (2)
- 中央処理装置(CPU)と、メモリと、入力/出力手段、オペレーティングシステム及びこのオペレーティングシステム上で実行されるウインドウシステムとを有するコンピュータシステムで、所定の時間内に活動を行うことを要求する時間的に厳しいプロシージャと、時間的に厳しくないプロシージャとを含むアプリケーションプログラムを実行する方法において、
前記アプリケーションプログラムを形成する第1のプロセス及び第2のプロセスであって、所定の時間内に活動を行うことを要求するプロシージャを含む前記第1のプロセスと、ユーザー入力と前記ウィンドウシステムを介する出力を要求するプロシージャを含む前記第2のプロセスとを含む少なくとも2つのプロセスを発生する過程と、
前記第1のプロセスについては前記ウインドウシステムがその実行を停止させることがないよう前記ウインドウシステムを介さず直接前記オペレーティングシステムと通信し、前記第2のプロセスについては前記ウインドウシステムがその実行を停止することができるよう前記ウインドウシステムと直接通信してそれぞれのプロセスを一緒に実行する過程とから成り、
前記第1のプロセスが前記第2のプロセスと、共用メモリを含む少なくとも1つのプロセス間通信機構を介して、直接通信して、前記第1のプロセスと前記第2のプロセス間でのデータ交換を可能にする構成を備え、
これにより、前記第1、第2のプロセスは相互に協力して動作するとともに前記第2のプロセスの停止が前記第1のプロセスの実行に影響を及ぼすことなく、時間的に厳しいプロシージャの停止が避けられることを特徴とする時間的に厳しいプロシージャを含むアプリケーションプログラムを実行する方法。 - 中央処理装置(CPU)と、メモリと、入力/出力手段、オペレーティングシステム及びこのオペレーティングシステム上で実行されるウインドウシステムとを有するコンピュータシステムであって、所定の時間内に活動を行うことを要求する時間的に厳しいプロシージャと、時間的に厳しくないプロシージャとを含むアプリケーションプログラムを実行するコンピュータシステムにおいて、
前記アプリケーションプログラムを形成する第1のプロセス及び第2のプロセスであって、所定の時間内に活動を行うことを要求するプロシージャを含む前記第1のプロセスと、ユーザー入力と前記ウィンドウシステムを介する出力を要求するプロシージャを含む前記第2のプロセスとを含む少なくとも2つのプロセスを発生する手段と、
前記第1のプロセスについては前記ウインドウシステムがその実行を停止させることがないよう前記ウインドウシステムを介さず直接前記オペレーティングシステムと通信し、前記第2のプロセスについては前記ウインドウシステムがその実行を停止することができるよう前記ウインドウシステムと直接通信してそれぞれのプロセスを一緒に実行する手段と、
共用メモリを含み、前記第1のプロセスと前記第2のプロセス間でのデータ交換を可能にする少なくとも1つのプロセス間通信機構とを備え、
これにより、前記第1、第2のプロセスは相互に協力して動作するとともに前記第2のプロセスの停止が前記第1のプロセスの実行に影響を及ぼすことなく、時間的に厳しいプロシージャの停止が避けられることを特徴とする時間的に厳しいプロシージャを含むアプリケーションプログラムを実行するシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US628342 | 1984-09-19 | ||
US62834290A | 1990-12-14 | 1990-12-14 |
Publications (3)
Publication Number | Publication Date |
---|---|
JPH06214951A JPH06214951A (ja) | 1994-08-05 |
JP3547011B2 JP3547011B2 (ja) | 2004-07-28 |
JP3547011B6 true JP3547011B6 (ja) | 2004-11-24 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0490595B1 (en) | Method for operating time critical processes in a window system environment | |
US10073711B2 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
JP3659062B2 (ja) | 計算機システム | |
US7631316B2 (en) | Method and apparatus for providing and integrating high-performance message queues in a user interface environment | |
US9128736B1 (en) | Common scheduling and synchronization primitives | |
US6560626B1 (en) | Thread interruption with minimal resource usage using an asynchronous procedure call | |
US6732138B1 (en) | Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process | |
US7971205B2 (en) | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status | |
US20060277551A1 (en) | Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions | |
EP0834808A1 (en) | Method and apparatus for user-level support for multiple event synchronization | |
US20050132121A1 (en) | Partitioned operating system tool | |
JP3938343B2 (ja) | タスク管理システム、プログラム、及び制御方法 | |
CA1304513C (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
JP3547011B6 (ja) | ウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置 | |
CN108958904B (zh) | 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架 | |
WO1998029807A1 (en) | Real time services in backwardly compatible operating systems | |
JP2002014827A (ja) | プロセスの制御及び可視化方法 | |
Jackson et al. | The proposed IEEE 855 microprocessor operating systems interface standard | |
JP3764282B2 (ja) | プログラム制御システムの制御装置 | |
WO1996018953A1 (en) | Cpu-cycle stealing for multi-tasking operating system | |
Schaffer et al. | The joy of scheduling | |
JPH0695895A (ja) | アプリケーシヨンプログラム装置及びその方法 | |
Lang et al. | The virtual resource manager | |
Bruno | A comparative study of real-time operating systems | |
Slanina et al. | Real-time process monitoring in operating system Linux [articol] |