JP3406983B2 - プロセス間メッセージ通信方法 - Google Patents
プロセス間メッセージ通信方法Info
- Publication number
- JP3406983B2 JP3406983B2 JP22152094A JP22152094A JP3406983B2 JP 3406983 B2 JP3406983 B2 JP 3406983B2 JP 22152094 A JP22152094 A JP 22152094A JP 22152094 A JP22152094 A JP 22152094A JP 3406983 B2 JP3406983 B2 JP 3406983B2
- Authority
- JP
- Japan
- Prior art keywords
- message
- page
- buffer
- logical
- logical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の論理アドレス空
間を制御し、これらの論理アドレス空間内で動作する複
数のプロセスを制御する計算機システムにおいて、任意
のプロセス間で任意の長さのメッセージを、高信頼性を
保持しながら通信し、かつ計算機のオーバヘッドを小さ
くすることが可能なプロセス間メッセージ通信方法に関
する。 【0002】 【従来の技術】従来より、厳しい実時間性と高多重処理
能力とが要求される通信網ノードの制御プログラムにお
いては、プログラムの構成要素をプロセスとすることに
より、プログラムを容易に変更することができるととも
に、プログラムの構造を良質なものに変化させることが
できた。例えば、発信側の呼制御と着信側の呼制御をプ
ロセスとした場合には、マルチメディア通信等の高機能
通信サービスを実現するために必要となる柔軟な呼制御
プログラムを生成することができる。また、検索、管理
の機能を専門的に行う回線データ検索プロセスとする場
合には、数万から数十万個に至る多数の回線データの検
索および管理を効率よく行うことができた。このような
構成の通信網ノード制御プログラムにおいては、呼制御
プロセス間、または呼制御プロセスと回線データ検索プ
ロセスとの間で、1秒当り合計、数千から数万程度のメ
ッセージ通信が行われることになる。いま、実時間性と
高多重性の両方が要求されるプログラムに対して、従来
用いられているオペレーティングシステム、例えばUN
IXを適用した場合を想定する。UNIXのプロセス
は、1つの論理アドレス空間を有している。この場合、
各論理アドレス空間は、互いに独立しており、かつ完全
に分離しているので、他のプロセスとの間でプロセス内
のメモリを共有することは不可能である。そのため、プ
ロセス間でメッセージ通信を行う場合、通信用のコネク
ションをプロセス間で設定して、そのコネクション上で
メッセージ通信を行っている。 【0003】 【発明が解決しようとする課題】しかし、上記通信用コ
ネクション上でメッセージ通信を行う方法では、次のよ
うな問題がある。 メッセージ通信に先立って、先ず通信しようとするプ
ロセス間でコネクションを設定し、メッセージ通信の終
了後にはコネクションを解放する処理が必要となるた
め、コネクションの設定、解放を行うためのオーバヘッ
ドが大きくなる。 また、送信プロセスが受信プロセスの論理アドレス空
間内にメッセージを直接書き込むことができないため、
一旦、メッセージをオペレーティングシステム内の領域
にコピーした後、オペレーティングシステム内の領域か
ら受信プロセスの論理アドレス空間内にコピーする必要
がある。その結果、送信するメッセージが大きくなるほ
ど、コピーのオーバヘッドが大きくなる。 このように、多数のプロセスが互いにメッセージを通信
し、処理を進めるアプリケーションプログラムをUNI
X上で構築した場合には、メッセージ通信のオーバヘッ
ドのため、高い処理能力を発揮することは不可能であっ
た。本発明の目的は、これら従来の課題を解決し、複数
の論理アドレス空間を制御し、その上で動作する複数の
プロセスを制御する計算機システムにおいて、計算機シ
ステム上の任意のプロセス間で任意の長さのメッセージ
を通信することができるとともに、メッセージへのアク
セス競合を制御して、高信頼性を保持しながらメッセー
ジ通信処理のオーバヘッドを極力小さくできるプロセス
間メッセージ通信方法を提供することにある。 【0004】 【課題を解決するための手段】上記目的を達成するた
め、本発明のプロセス間メッセージ通信方法は、 実行モードとして特権モードと非特権モードを持ち、
論理アドレスと物理アドレスとの変換処理を行う複数の
プロセッサ、および該プロセッサにより読み書きされる
メモリ装置とを有し、かつ物理メモリを固定長ブロック
(以下、物理ページ)単位に管理し、論理アドレス空間
を固定長ブロック(以下、論理ページ)単位に管理し、
任意の論理ページに物理ページの割り付けと解放を行
い、論理ページ単位に書き込みに対する保護を設定し、
同時に複数の論理アドレス空間を制御し、並列実行の主
体となる複数のプロセスを同時に制御する計算機システ
ムにおいて、 上記非特権モードでアプリケーションプログラムが動
作する論理アドレス空間からプロセッサの実行モードの
変更なしにアクセス可能な論理アドレス空間で、上記計
算機システム上に唯一の共有空間を配置し、 上記プロセス間で送受信される通信データ(以下、メ
ッセージ)に関して、該メッセージの制御に必要な情報
を格納するフィールド(以下、ヘッダ部)と、該メッセ
ージの先頭の論理アドレスおよびその大きさとを格納す
るフィールド(以下、データ指示部)と、該メッセージ
を格納するための領域(以下、データ部)の、3つの領
域を含む固定長の格納領域(以下、メッセージバッフ
ァ)を、上記共有空間上に連続して配置し、 各プロセスはメッセージバッファの先頭の論理アドレ
スを持つポインタにより上記メッセージバッファにアク
セスし、 該メッセージを送信するプロセスは、該メッセージバ
ッファを捕捉して、送信するメッセージを該メッセージ
バッファのデータ部に直接配置するか、または上記共有
空間上あるいは上記送信プロセスの存在する論理アドレ
ス空間上の任意の位置に該メッセージを設定し、受信プ
ロセスの識別子と該メッセージバッファへのポインタと
送信後も該メッセージにアクセスするか否かを示すフラ
グ(以下、送信側解放フラグ)を指定して、メッセージ
送信処理を行い、 メッセージを受信するプロセスは、該メッセージバッ
ファのデータ指示部のメッセージの存在する論理アドレ
スの位置と送信側解放フラグの値に応じて、該メッセー
ジを送信側で配置した論理アドレス位置を変更すること
なく、送信されてきたメッセージバッファをそのまま受
信するか、あるいは該メッセージの存在する物理ページ
の送信プロセスの論理ページへの割り付けを解放し、該
メッセージの存在する物理ページを受信プロセスからア
クセス可能な空き論理ページ位置に再配置し、再配置さ
れたメッセージの先頭の論理アドレスと大きさをデータ
指示部に設定したメッセージバッファを受信するか、あ
るいは送信プロセス側での割り付け解放を行うことな
く、該メッセージの存在する物理ページを受信プロセス
からアクセス可能な空き論理ページ位置に再配置し、送
信プロセス、受信プロセスで該メッセージの存在する物
理ページを共有し、受信プロセス側での再配置されたメ
ッセージの先頭の論理アドレスと大きさをデータ指示部
に設定したメッセージバッファを受信し、 各プロセスは、ポインタにより指示されたメッセージ
バッファのデータ指示部にあるメッセージの先頭の論理
アドレスの値を参照して、該メッセージの先頭の論理ア
ドレスと先頭からのオフセットの合計により得られる論
理アドレスを用いて該メッセージにアクセスし、オフセ
ットが該メッセージバッファのデータ指示部のメッセー
ジの大きさを示すフィールドの値を越えていないか否
か、また該メッセージにアクセスしたプロセスが、該メ
ッセージバッファを捕捉中のプロセスか否かを、該メッ
セージへのアクセスのための論理アドレスの計算時にチ
ェックすることを特徴としている。 【0005】 【作用】本発明においては、送受信プロセス間は、共有
空間上のメッセージバッファへのポインタのみを通信す
ればよい。そして、各プロセスは、メッセージバッファ
のデータ指示部を経た間接参照によってメッセージにア
クセスするので、メッセージバッファのデータ指示部に
指定された以外へのアクセスを防止することができる。
送信プロセスは、メッセージが短く、メッセージバッフ
ァのデータ部に格納できるときには、メッセージバッフ
ァのデータ部にメッセージを書き込み、そのメッセージ
バッファへのポインタを受信プロセスが受信する。従っ
て、プロセス間でメッセージのコピーを行う必要がな
い。送信プロセスは、メッセージが共有空間またはユー
ザ空間に存在し、送信側解放フラグがセットされている
とき(送信後もメッセージにアクセスすることがある)
には、メッセージの存在する物理ページの送信プロセス
ユーザ空間から解放され、受信プロセスのユーザ空間に
再配置される。従って、物理ページの再配置により、メ
ッセージのコピーを行う必要がない。送信プロセスは、
メッセージが共有空間またはユーザ空間に存在し、送信
側解放フラグがクリアされているとき(送信後はメッセ
ージにアクセスしない)には、メッセージの存在する物
理ページが受信プロセスのユーザ空間に再配置され、送
信プロセスと受信プロセスとでそのページを書き込み禁
止として共有する。次に、送信プロセスか受信プロセス
が送信完了後、最初に書き込みを行った時点で、プロセ
ッサの例外処理を行い、新しい物理ページが捕捉され、
そこにメッセージがコピーされて、新たに割り付けられ
る。メッセージバッファは、カーネルのメッセージバッ
ファ管理表により管理され、メッセージバッファ毎に空
塞情報と捕捉中のプロセス識別子が記録される。メモリ
アクセス時、カーネルのメッセージバッファ管理表を参
照することにより、誤ったアクセスを防止することがで
きる。これにより、メッセージへのアクセス競合を制御
して、高信頼性を保ちながらメッセージ通信処理のオー
バヘッドを極めて小さく抑えることができる。 【0006】 【実施例】以下、本発明の原理および実施例を、図面に
より詳細に説明する。本発明の動作原理を説明する。 計算機システムを制御するオペレーティングシステム
は、その核となるカーネルとカーネルの機能を用いて各
種サービスを提供するプログラム群とから構成されてい
る。カーネルは、特権モードで動作するとともに、特権
モードでのみアクセス可能なカーネル空間に配置されて
いる。アプリケーションプログラムは、オペレーティン
グシステムにサービスの実行を要求する場合、システム
コールを発行する。 計算機システム上の非特権モードで動作するアプリケ
ーションプログラムは、実行モードの変更なしにアクセ
ス可能な論理アドレス空間(以下、共有空間と呼ぶ)を
構成する。共有空間は、計算機システム上で1つだけ存
在し、非特権モードでアクセス可能な空間である。共有
空間のメモリ管理は、カーネルにより実行される。非特
権モードで動作するプロセスは、計算機システム内でユ
ニークなプロセス識別子が付与され、その実行はカーネ
ルにより制御される。 メッセージ通信のためには、共有空間上に配置された
メッセージバッファが使用される。メッセージバッファ
は、メッセージ通信の制御に必要な情報を格納するヘッ
ダ部、メッセージの先頭の論理アドレスとメッセージの
大きさを格納するデータ指示部、短いメッセージを格納
するデータ部、の3つのフィールドを含む固定長の構造
体である。メッセージバッファは、適用するアプリケー
ションプログラムが動作するために必要十分な個数だ
け、共有空間に連続して配置される。プロセスは、メッ
セージバッファの先頭を指示するポインタによりメッセ
ージバッファにアクセスする。メッセージ通信において
は、メッセージバッファのポインタが送信プロセスから
受信プロセスに渡される。 【0007】メッセージバッファは、唯一のプロセス
に属している。このプロセスは、このメッセージバッフ
ァを捕捉中であるとするものである。メッセージバッフ
ァは、カーネルにより管理される。カーネルは、メッセ
ージバッファ単位に空塞情報と捕捉中のプロセス識別子
とを記録する管理表(以下、メッセージ管理表と呼ぶ)
を持っている。メッセージバッファを捕捉し、解放する
ために、アプリケーションプログラムはシステムコール
を発行する。メッセージバッファ捕捉要求システムコー
ルは、メッセージバッファ管理表を検索して、空きのメ
ッセージバッファの先頭の論理アドレスを返却する。こ
の時、メッセージバッファ管理表中の捕捉されたメッセ
ージバッファに対応するエントリには、捕捉したプロセ
スのプロセス識別子が記録される。また、メッセージバ
ッファ解放システムコールは、メッセージバッファ管理
表を検索し、引数に指定されたメッセージバッファの捕
捉中のプロセス識別子がシステムコールを発行したプロ
セスの識別子と一致すると、メッセージバッファに対応
したメッセージバッファ管理表のエントリを空きにす
る。プロセス識別子が一致しない場合には、メッセージ
バッファは解放されない。 カーネル内には、現在プロセッサを占拠して実行中の
プロセスの識別子を記録するレジスタ(以下、実行中の
プロセス識別子レジスタと呼ぶ)があり、カーネルが実
行中のプロセスを切替える時に、実行中プロセス識別子
レジスタの値を次に実行するプロセスの識別子に変更す
る。メッセージバッファへのアクセスが発生した時に
は、アクセスしたメッセージバッファに対応するメッセ
ージバッファ管理表中の捕捉中のプロセス識別子の欄の
値と実行中プロセス識別子レジスタの値が比較されて、
捕捉中のプロセスからのアクセスであるか否かがチェッ
クされる。固定長のメッセージバッファを共有空間上に
連続して配置することにより、プロセスが発行したメッ
セージバッファへのアクセスのための論理アドレスか
ら、どのメッセージバッファへのアクセスであるかを容
易に計算できる。その結果により、メッセージバッファ
管理表を検索して、アクセスされたメッセージバッファ
を捕捉中のプロセス識別子を得ることができる。 【0008】プロセスは、メッセージバッファ内のデ
ータ指示部のメッセージの先頭の論理アドレスを参照
し、メッセージの先頭の論理アドレスとそこからのオフ
セット値によりメッセージにアクセスする。メッセージ
のアクセスと同時に、メッセージの先頭からのオフセッ
ト値がメッセージバッファ内のデータ指示部にあるメッ
セージの大きさを示すフィールドの値と比較され、メッ
セージとして有効なメモリ領域以外へのアクセスを防止
する。 カーネルは、プロセス制御構造体を用いて、非特権モ
ードで動作するプロセスを制御する。プロセス制御構造
体は、プロセス識別子を示すフィールド、プロセスの実
行コンテキストをセーブするフィールドメッセージの受
信キューのフィールド、を含む構造体である。プロセス
に到着したメッセージに関する情報は、メッセージ制御
構造体に記録され、プロセスのメッセージ受信キューに
到着順にキューイングされる。 プロセスがメッセージ送信要求のシステムコールを発
行すると、システムコールのパラメータに基づき、メッ
セージ受信に必要な情報がメッセージ制御構造体に記録
され、受信プロセスの受信キューにキューイングされ
る。プロセスがメッセージ受信要求のシステムコールを
発行すると、自プロセス制御構造体のメッセージキュー
の先頭にあるメッセージ制御構造体を取り出し、受信処
理が行われる。 メッセージ制御構造体は、受信方式を格納するフィー
ルド、メッセージ送信に使用されているメッセージバッ
ファへのポインタを格納するフィールド、メッセージの
存在する物理ページのアドレスと保護情報のリストを格
納するフィールド、物理ページの先頭からのメッセージ
の先頭位置のオフセットを格納するフィールド、を含ん
でいる。 【0009】メッセージ制御構造体に格納された情報を
基に、受信プロセスは以下に示すように、メッセージを
受信してアクセスする。 (ア)メッセージバッファ直接アクセス メッセージバッファのデータ部に、メッセージが存在す
る場合である。この場合には、受信プロセスは送信プロ
セスから送られたメッセージバッファをそのまま受信す
る。 (イ)ページ操作のないメッセージバッファ間接アクセ
ス メッセージバッファのデータ指示部に示された論理アド
レスにメッセージが存在し、その論理アドレスに受信プ
ロセスがアクセス可能な場合である。受信プロセスは、
送信プロセスから送られたメッセージバッファをそのま
ま受信する。 (ウ)物理ページ再配置によるメッセージバッファ間接
アクセス メッセージが存在する物理ページを受信プロセスの存在
する論理アドレス空間の空きページに再配置し、保護属
性を設定する。この時、メッセージの存在する物理ペー
ジを送信プロセスと受信プロセスで共有しない。メッセ
ージの新しい論理アドレス位置を、送信プロセスから送
られたメッセージバッファのデータ指示部に設定する。 (エ)物理ページ共有によるメッセージバッファ間接ア
クセス メッセージが存在する物理ページを受信プロセスの存在
する論理アドレス空間の空きページに再配置し、送信プ
ロセスの論理アドレス空間と受信プロセスの論理アドレ
ス空間でメッセージの存在する物理ページを共有する。
受信側では、メッセージの新しい論理アドレス位置をメ
ッセージバッファのデータ指示部に設定して受信する。 【0010】メッセージを送信するプロセスは、メッセ
ージバッファ捕捉要求システムコールを発行し、メッセ
ージバッファを1つ捕捉する。送信するメッセージをメ
ッセージバッファのデータ部に配置するか、共有空間上
あるいは送信プロセスの存在する論理アドレス空間上の
任意の空き領域に配置し、メッセージの先頭の論理アド
レスとアクセス可能な大きさをメッセージバッファのデ
ータ指示部に設定し、受信プロセスの識別子、メッセー
ジバッファへのポインタ、送信側解放フラグをパラメー
タとしてメッセージ送信要求システムコールを発行す
る。送信側解放フラグがセットされてメッセージ送信要
求システムコールが発行された時、送信プロセスはメッ
セージ送信後にはそのメッセージにアクセスしないこと
を示している。そのために、送信側のメッセージの存在
するメモリ領域がメッセージの編集のために捕捉された
領域である場合には、送信側のメッセージの存在するメ
モリ領域は解放される。また、送信側のメッセージの存
在するメモリ領域がプロセスのスタック領域、テキスト
領域、ヒープ領域等にある場合には、メッセージのメモ
リ領域は解放されない。一方、送信側解放フラグがクリ
アされていた場合には、送信プロセスはメッセージ送信
後もメッセージにアクセスすることを示す。そのため、
メッセージの存在する送信側のメモリ領域を解放しな
い。送信側解放フラグは、メッセージがメッセージバッ
ファのデータ部以外に存在する場合にのみ有効となる。 【0011】次に、メッセージ送信要求システムコール
は、カーネルにおいては下記のように処理が行われる。 (a)メッセージがメッセージバッファ内のデータ部に
存在する場合、受信方式をメッセージバッファ直接とし
たメッセージ制御構造体を、受信プロセスの受信キュー
にキューイングする。 (b)メッセージがメッセージバッファ外の共有空間に
存在する場合、 (b−1)送信側解放フラグがセットされている場合、
受信方式をメッセージバッファ直接としたメッセージ制
御構造体を、受信プロセスの受信キューにキューイング
する。 (b−2)送信側解放フラグがクリアされている場合、
メッセージの存在する送信側の論理ページに対して、書
き込み禁止を設定し、物理ページを共有状態にする。メ
ッセージの存在する物理ページのアドレスのリスト、メ
ッセージの物理ページの先頭からのオフセット、メッセ
ージ送信に使用したメッセージバッファのポインタを持
ち、受信方式をページ共有のメッセージバッファ間接と
したメッセージ制御構造体を作成し、受信メッセージの
受信キューにキューイングする。 【0012】(c)メッセージが送信プロセスの存在す
る論理アドレス空間に存在する場合、 (c−1)送信側解放フラグがセットされている場合、
メッセージの存在する物理ページのアドレスのリスト、
論理ページの状態情報、メッセージの物理ページの先頭
からのオフセット、メッセージバッファのポインタを含
み、ページを再配置するメッセージバッファ間接の受信
方式としたメッセージ制御構造体を作成し、受信メッセ
ージの受信メッセージキューにつなぐ。送信プロセスの
存在する論理アドレス空間におけるメッセージの存在す
る論理ページを解放する。 (c−2)送信側解放フラグがクリアされている場合、
メッセージの存在する送信側の論理ページに対して、書
き込み禁止を設定し、物理ページを共有状態にする。メ
ッセージの存在する物理ページのアドレスのリスト、メ
ッセージの物理ページの先頭からのオフセット、メッセ
ージバッファのポインタを含み、受信方式をページ共有
のメッセージバッファ間接に指示したメッセージ制御構
造体を作成し、受信メッセージの受信キューにキューイ
ングする。 【0013】このように、いずれの場合にも、メッセー
ジ送信要求システムコールが正常に完了した場合、メッ
セージバッファ管理表中のメッセージバッファに対応し
た捕捉中プロセス識別子の欄は、カーネルの表示に変更
される。メッセージ送信要求システムコールが終了した
後、送信プロセスはメッセージバッファを経由してメッ
セージにアクセスすることはできない。メッセージ受信
プロセスはメッセージ受信要求システムコールを発行
し、メッセージ受信キューから到着済みのメッセージ制
御構造体を取り出し、メッセージを受信するための処理
を行う。もし、到着メッセージがない場合には、メッセ
ージが到着するまで待ち状態に入る。メッセージ受信キ
ューから得られたメッセージ制御構造体の受信方式を示
すフィールドの値により、メッセージ受信システムコー
ルはカーネルにより下記のように処理される。 (ア)メッセージバッファ直接アクセス、メッセージ制
御構造体のメッセージバッファのポインタを返送する。 (イ)ページ操作のないメッセージバッファ間接アクセ
ス、メッセージ制御構造体のメッセージバッファのポイ
ンタを返送する。 (ウ)ページを再配置するメッセージバッファ間接アク
セス、メッセージ制御構造体中の物理ページリスト中の
物理ページを、受信プロセスの論理アドレス空間内の物
理ページを再配置するに必要な大きさを持った空き論理
ページに再配置し、書き込み禁止等のページ保護情報を
設定する。再配置した後のメッセージの先頭の論理アド
レスを計算し、それをメッセージバッファのデータ指示
部に設定し、メッセージバッファのポインタを返送す
る。 (エ)ページを共有するメッセージバッファ間接アクセ
ス、メッセージ制御構造体の物理ページリスト中の物理
ページを、受信プロセスの存在する論理アドレス空間内
の物理ページを再配置するに必要な大きさを持った空き
論理ページに再配置し、書き込み禁止を設定して共有状
態にする。再配置後のメッセージの先頭の論理アドレス
を計算し、それをメッセージバッファのデータ指示部に
設定し、メッセージバッファのポインタを返送する。 【0014】いずれの場合にも、メッセージ受信システ
ムコールの正常完了時に、メッセージバッファ管理表中
のメッセージバッファ捕捉中プロセス識別子は受信プロ
セスの識別子に変更する。メッセージ受信システムコー
ルの完了後、受信プロセスは、受信したメッセージバッ
ファを用いてメッセージにアクセスすることが可能にな
る。メッセージの存在する物理ページを送信側プロセ
ス、受信側プロセスで共有し、メッセージの存在する論
理ページに書き込み禁止が設定されている時に、送信ま
たは受信のプロセスがメッセージに書き込みを行った場
合には例外処理が起動される。例外処理プログラムは、
書き込みを起こした側のメッセージの存在する論理ペー
ジ位置に新しい物理ページを割り付け、論理ページの書
き込み禁止を解除して、メッセージの存在する物理ペー
ジから新しい物理ページにコピーを行い、書き込みを行
った命令の再実行を指示して終了する。例外処理の終了
により、プロセスの制御が戻されるとともに、書き込み
の命令から実行が再開され、書き込み禁止が解除された
新しい論理ページに対して書き込みが完了し、実行が継
続される。例外処理の終了以降、送信側プロセスと受信
側プロセスは別々の物理ページを参照する。この例外処
理により、ページコピーを行う機構により、ページを共
有してから始めての書き込みが起こるまで、メッセージ
のコピーが遅延される。 【0015】次に、図面により本発明の実施例を説明す
る。本実施例では、プロセッサは32ビット幅のアドレ
スを取り扱い、バイト単位にアドレスされ、特権モード
であるカーネルモードと非特権モードであるユーザモー
ドの2つの実行モードを持つ。なお、論理アドレスの表
記は16進表記を用いる。その場合、10進表記と区別
するために、16進表記は先頭に‘0x’を付加する。
従って、32ビット幅で表わされる論理アドレスの範囲
は、0x00000000から0xFFFFFFFFま
でである。 【0016】〔論理アドレス空間の構成〕図7は、通常
の論理アドレス空間の構成を示す図である。図7におい
て、10はカーネル空間であって、論理アドレスが0x
00000000から0x3FFFFFFFまでの1ギ
ガバイトの大きさを持つ。カーネル空間は、カーネルモ
ードでのみアクセス可能な空間である。カーネル空間は
計算機システム上唯一の空間で、計算機システムの制御
を行うオペレーティングシステムのプログラムが動作す
る。また、11は共有空間、12,13,14はそれぞ
れユーザ空間である。ユーザ空間はユーザモードでアク
セス可能な論理アドレス空間であって、論理アドレスが
0xC0000000から0xFFFFFFFFまでの
大きさの2ギガバイトのアドレスを持ち、アプリケーシ
ョンプログラムはユーザ空間上で動作する。ユーザ空間
は、計算機システム上で同時に複数存在することができ
る。共有空間11は、計算機システム上唯一の空間であ
って、論理アドレス0x40000000から0x8F
FFFFFFまでの大きさの1ギガバイトの論理アドレ
スを持ち、ユーザモードでアクセス可能である。つま
り、共有空間11は、ユーザ空間12,13,14にお
いてユーザモードで動作するアプリケーションプログラ
ムから、プロセッサのモード変更なしでアクセスが可能
である。 【0017】〔論理アドレス空間制御機能の構成〕図7
に示したカーネル空間、共有空間、およびユーザ空間の
論理アドレス空間構成は、図8に示すような3段の論理
/物理アドレス変換表により変換することにより実現さ
れる。なお、論理ページ、物理ページともに、4Kバイ
トの大きさとする。先ず、本実施例における論理アドレ
スのフィールド構成は、20に示すように、第一段ディ
スクリプタテーブル検索フィールド、第二段ディスクリ
プタテーブル検索フィールド、ページテーブル検索フィ
ールド、および論理ページ内オフセット用フィールドか
らなる。すなわち、論理アドレスの最上位2ビット(ビ
ット31,30)が第一段ディスクリプタテーブル22
の検索に使用され、次の9ビット(ビット29〜21)
が第二段ディスクリプタテーブル23〜26の検索に、
また次の9ビット(ビット20〜12)がページテーブ
ル27〜31の検索に使用され、最下位の12ビット
(ビット11〜0)は論理ページ内でのオフセットとし
て使用される。第一段、第二段のディスクリプタテーブ
ルを構成するエントリは、次段のテーブルへのポインタ
と、そのポインタが有効であるか否かを示すVビットか
ら構成される(ここでは、1が有効、0が無効)。Vビ
ットが1にセットされているとき、エントリ内の次段の
テーブルへのポインタが有効である。 【0018】第三段のページテーブルを構成するページ
テーブルエントリは、物理ページのアドレスと、このエ
ントリが有効か否かを示すVビット、論理ページがカー
ネルモードでのみアクセス可能であるか否かを示すSビ
ット、論理ページが書き込み禁止であるか否かを示すP
ビットから構成される。Vビットは、ディスクリプタテ
ーブルの場合と同じように、物理ページのアドレスを示
すフィールドの値が有効か否かを示している。Sビット
がセットされていると、この論理ページがカーネルモー
ドでのみアクセス可能であることを示す。さらに、Pビ
ットがセットされていると、この論理ページには書き込
み禁止が設定される。Pビットがセットされた論理ペー
ジに対する書き込み命令が実行された場合、その命令は
フォールトとなり、プロセッサは特権モードに遷移し
て、カーネルの一部である例外処理プログラムを起動す
る。第一段ディスクリプタテーブルディスクリプタリン
グディスクリプタリングは4つのエントリを持ったテー
ブルであり、論理アドレスの上位2ビットの値により索
引されて、第二段ディスクリプタテーブル23〜26の
いずれかが選択される。第二段ディスクリプタテーブル
23〜26は512エントリを持つテーブルであって、
論理アドレスの次の9ビットにより索引されて、次段の
ページテーブル27〜31が選択される。ページテーブ
ル27〜31は512エントリを持つテーブルであり、
論理アドレスの次の9ビットで索引されて、物理ページ
のアドレスが得られる。得られた物理ページのアドレス
と論理アドレスの下位12ビットの合計により得られる
物理アドレスにより、実メモリへのアクセスが実行され
る。 【0019】第二段ディスクリプタテーブル23、ペー
ジテーブル27,28が、カーネル空間のアドレス変換
表である。同じように、第二段ディスクリプタテーブル
24、ページテーブル29が共有空間、第二段ディスク
リプタテーブル25,26、ページテーブル30,31
がユーザ空間である。個々のユーザ空間毎に、ユーザ空
間部分の論理/物理アドレス変換表が存在する。この場
合、カーネル空間の論理/物理アドレス変換表である第
二段ディスクリプタテーブル23、ページテーブル2
7,28、および共有空間の論理/物理アドレス変換表
である第二段ディスクリプタテーブルディスクリプタリ
ング24、ページテーブル27は、システムで唯一であ
って、ユーザ空間から共有される。論理/物理アドレス
変換機構をハードウェアとして備える計算機システムに
おいては、論理/物理アドレス変換機能ハードウェアの
レジスタに20で示す論理アドレスをセットすることに
より、変換動作が自動的に行われる。 【0020】〔論理アドレス空間とプロセスの制御〕図
9,図10および図11は、論理アドレス空間制御およ
びプロセスの制御を説明するための図である。ユーザ空
間12は、カーネル空間内のユーザ空間制御構造体40
によって管理されている。このユーザ空間制御構造体4
0は、自空間の論理/物理アドレス変換表を指すルート
ディスクリプタ、自空間の論理ページに関する情報を持
つ論理ページ制御構造体のリスト、および自空間で動作
するプロセスのプロセス制御構造体のリストを具備して
いる。論理/物理アドレス変換表を指すルートディスク
リプタは、テーブル22,25,26,30,31から
なる論理/物理アドレス変換表を指している。なお、図
9〜11では、全てのユーザ空間で共有されるカーネル
空間、共有空間の論理/物理アドレス変換表を記載する
スペースがないので、記載が省略されている。 【0021】ユーザ空間制御構造体40の論理ページリ
ストから指示される論理ページ制御構造体45,46,
47は、ユーザ空間に割り当てられた論理ページに関す
る情報を保持するものである。ユーザ空間に割り当てら
れた論理ページは、この論理ページ制御構造体45,4
6,47により論理ページ単位に管理される。ユーザ空
間制御構造体40が持っている論理ページ構造体のリス
トは、論理ページアドレスの昇順にソートされて管理さ
れている。論理ページ制御構造体は、45で示すよう
に、論理ページのアドレスを示すフィールド、物理ペー
ジのアドレスを示すフィールド、書き込み禁止等の論理
ページの状態情報(ステータス情報)を示すフィール
ド、およびリストを構成するためのフィールドから構成
される。いま、ユーザ空間12上では、識別子P、R、
S、Tの各プロセス50,33,34,35が動作して
いるものとする。動作するプロセス50は、カーネル空
間にあるプロセス制御構造体41により管理されてい
る。プロセス制御構造体41には、計算機システム上で
プロセスを識別するためのプロセス識別子、プロセスが
動作しているユーザ空間の識別子、プロセスのコンテキ
スト、メッセージ受信キュー、等のプロセス制御情報が
記録されている。同じようにして、プロセス制御構造体
42,43,44は、ユーザ空間上で動作するプロセス
33,34,35をそれぞれ管理する。各プロセス制御
構造体41〜44は、動作するユーザ空間を制御するユ
ーザ空間制御構造体40のプロセスリストにキューイン
グされる。また、プロセス制御構造体41〜44は、カ
ーネルのプロセス制御プログラム中にある実行待ちキュ
ーにもキューイングされ、実行プロセスの切替え等のプ
ロセスの実行制御にも使用される。 【0022】ユーザ空間12のユーザ空間制御構造体4
0のプロセスリストには、ユーザ空間12上で動作して
いるプロセス50,33,34,35を表わすプロセス
制御構造体41,42,43,44がつながっている。
各プロセスは、プロセス制御構造体41〜44中にそれ
ぞれメッセージ受信キューを具備しており、そこにメッ
セージ制御構造体82,83をつなげることにより到着
済みのメッセージを管理する。図示されていないが、プ
ロセス制御構造体42,43,44中のメッセージ受信
キューにも、到着済みのメッセージを管理するメッセー
ジ制御構造体がつながっている。メッセージ制御構造体
82,83は、1つの到着済みメッセージを表わし、メ
ッセージ受信キューには到着順にキューイングされる。
メッセージ制御構造体82,83は、メッセージバッフ
ァへのポインタを示すフィールドと、通信データがユー
ザ空間内にある場合には、通信データが存在するページ
の物理アドレスのリストと、通信データのページの先頭
からのオフセットと、通信データの長さのフィールドか
ら構成される。識別子Pのプロセス50には、メッセー
ジ制御構造体82,83で表わされる2つのメッセージ
が到着しており、プロセス50のプロセス制御構造体4
1のメッセージ受信キューにつながれている。 【0023】〔メッセージバッファ〕図12および図1
3は、図9〜図11のメッセージ制御構造体のポインタ
により指示されるメッセージバッファの構造図と管理方
法の説明図である。メッセージバッファ61は、図12
に示すように、512バイトの固定長の大きさを有する
構造体であって、ヘッダ部、データ指示部、およびデー
タ部から構成される。さらに、ヘッダ部には、キューを
構成するためのリンクフィールド、メッセージの優先
度、送信プロセスの識別子、受信プロセスの識別子等の
メッセージ通信制御に必要なフィールドを含んでいる。
データ指示部は、メッセージの先頭の論理アドレスを持
つアドレスフィールドと、メッセージの大きさを有する
サイズフィールドとから構成されている。これらのヘッ
ダ部とデータ指示部以外の残りの領域は、データ部の領
域となる。メッセージバッファ61は、図13(a)に
示すように、共有空間11上に連続して配置されてい
る。用意されるメッセージバッファの数は、適用するア
プリケーションプログラムとシステムの規模により決定
される。従って、メッセージバッファの配置される領域
の上限アドレス(mb up)と下限アドレス(mbl
ow)は、システム毎に固定アドレスとして設定されて
いる。図13(a)では、8個のメッセージバッファ6
1〜68が配置されており、下限アドレスの値を0x4
0000000とすると、上限アドレス値は0x400
1000となる。 【0024】メッセージバッフアの空き塞りおよびメッ
セージバッファを捕捉しているプロセス識別子を記録す
るために、図13(b)に示すようなメッセージバッフ
ァ管理表79が用いられる。このメッセージバッファ管
理表79は、カーネル空間に配置される。メッセージバ
ッファ管理表79の1つのエントリ71〜78は、1つ
のメッセージバッファに対応している。メッセージバッ
ファ管理表79のi番目のエントリが、下位アドレスに
配置された方からi番目のメッセージバッファに対応し
ている。図13(a)に示すメッセージバッファ64の
エントリは、3番目のエントリ74である(iは0を起
点とする)。メッセージバッファ管理表79のエントリ
の1つは、空塞ビットと捕捉中のプロセス識別子を格納
するフィールドから構成されている。空塞りビットは、
そのメッセージバッファが使用中か否かを示しており、
0ならば未使用、1ならば使用中であることを示してい
る。プロセス識別子のフィールドには、メッセージバッ
ファを捕捉しているプロセスの識別子を記録する。メッ
セージバッファの存在する領域の上下限アドレス(mb
low,mbup)を用いて、メッセージバッファア
クセスのための論理アドレスから、メッセージバッファ
管理表中、何番目のメッセージバッファへのアクセスで
あるかを計算することが可能である。すなわち、メッセ
ージバッファの大きさをmb sizeとした時、mb
low以上、mb up未満の範囲のアドレスmb
addrについて、次式(1)が成立する。 (mb addr−mb low)/mb size・・・・・・・(1) 上式(1)によりメッセージバッファ管理表の何番目の
メッセージバッファへのアクセスであるかを判別するこ
とができる。プロセスはメッセージバッファ捕捉要求を
カーネルに対して発行し、メッセージ通信に必要なメッ
セージバッファを捕捉する。識別子Pのプロセスからの
捕捉要求に対して、メッセージバッファ管理表79が検
索され、未使用であるメッセージバッファ64に対応す
るエントリ74の空塞りビットが未使用(0)から使用
中(1)に変更されて、プロセス識別子フィールドに識
別子Pが記録される。メッセージ通信により、識別子P
のプロセスから識別子Qのプロセスにメッセージバッフ
ァ64が通信された時、メッセージバッファ64に対応
するメッセージバッファ管理表79のエントリ74のプ
ロセス識別子フィールドは、PからQに変更される。 【0025】プロセスは、使用を終了したメッセージバ
ッファを返却するために、メッセージバッファ解放シス
テムコールを発行する。識別子Pのプロセスがメッセー
ジバッファ64へのポインタを指定して解放要求を行っ
た場合には、メッセージバッファ管理表79が検索され
て、メッセージバッファ64に対応したエントリ74の
プロセス識別子のフィールドの値が、システムコールを
発行したプロセスの識別子Pであるか否かが検査され
る。一致した場合には、メッセージバッファ64に対応
したエントリ74の空塞りビットが未使用(0)に変更
されて、解放要求は完了する。これに対して一致しない
場合には、捕捉中でないプロセスからの解放要求として
エラーが返却されるとともに、メッセージバッファは解
放しない。プロセスがメッセージバッファにアクセスす
る場合には、メッセージバッファの先頭の論理アドレス
を持つポインタを用いる。次に、プロセスがメッセージ
にアクセスするには、メッセージバッファのデータ指示
部にあるアドレスフィールドの値と、メッセージの先頭
からのオフセットを合計して得られる論理アドレスを用
いる。カーネルは、プロセッサを占有している実行中の
プロセスのプロセス識別子を、カーネル空間にあるレジ
スタ80(図1〜図6参照)に設定する。プロセスがメ
ッセージにアクセスするための論理アドレスを計算する
過程では、論理アドレス計算に必要なメッセージバッフ
ァのデータ指示部を参照するプロセスが、そのメッセー
ジバッファを捕捉中のプロセスか否かをレジスタ80の
表示する識別子とメッセージバッファ管理表79上の捕
捉中のプロセス識別子を比較することによりチェックす
る。この機能は、論理アドレスがある範囲に存在するか
否かをチェックする機能を持ったメモリ装置によって行
うことができる。 【0026】〔メッセージ送信処理〕図14,図15
は、本発明の一実施例を示すメッセージ送信要求システ
ムコールの処理フローチャートである。プロセスがメッ
セージ送信要求を発行すると、最初、ステップS10
で、メッセージ送信要求を発行したプロセスがメッセー
ジバッファを捕捉しているプロセスであるか否かを、メ
ッセージバッファ管理表と比較して判定する。つまり、
メッセージバッファが、送信プロセスにアクセス権があ
るか否かを判定する。正しくなければ、つまりアクセス
権がなければ、メッセージ送信要求はステップS27で
エラーとして処理され、システムコールのリターン値と
してエラーの値が返送される。次に、ステップS11で
は、受信プロセスの識別子から受信プロセスのプロセス
制御構造体を求める。この結果、既に受信プロセスが存
在しない等、受信プロセスのプロセス制御構造体が得ら
れないときには、ステップS12からステップS27
で、エラーとして処理され、システムコールのリターン
値としてエラーの値が返送される。次に、ステップS1
3では、メッセージバッファのデータ指示部のアドレス
フィールドの値を、メッセージバッファの存在するアド
レス範囲である下限アドレスと上限アドレスと比較する
ことにより、メッセージがメッセージバッファ内のデー
タ部に存在するか否かを判断する。 【0027】メッセージがメッセージバッファ内のデー
タ部に存在すると、ステップS16で、メッセージバッ
ファ直接の受信方式を指定し、メッセージバッファのポ
インタを含むメッセージ制御構造体を作成する。このメ
ッセージ制御構造体は、ステップS23で、受信プロセ
スのプロセス制御構造体のメッセージ受信キューにキュ
ーイングされる。次に、ステップS24では、メッセー
ジバッファ管理表のメッセージバッファを捕捉中のプロ
セス識別子をカーネルに変更する。ステップS25で
は、受信プロセスのプロセス制御構造体がチェックされ
て、受信プロセスが待ち状態であるか否かが判定され
る。受信プロセスが待ち状態であれば、ステップS26
で受信プロセスを実行可能状態にする。そして、メッセ
ージ送信要求が正常に処理されて、システムコールがリ
ターンされる。一方、ステップS13でNoと判断され
た場合、ステップS14で、メッセージが共有空間上に
存在するか否かを判定するため、メッセージバッファの
データ指示部のアドレスフィールドの値と共有空間の上
下限アドレスとを比較する。メッセージが共有空間上に
存在する場合には、ステップS17で、送信側解放フラ
グがチェックされる。メッセージが共有空間上にあり、
かつ送信側解放フラグがセットされていた場合には、ス
テップS19で、ページ操作のないメッセージバッファ
間接の受信方式を指定し、メッセージバッファのポイン
タを含むメッセージ制御構造体を作成する。このメッセ
ージ制御構造体は、ステップS23で、受信プロセスの
プロセス制御構造体のメッセージ受信キューにキューイ
ングされる。以下、ステップS24を経由して、システ
ムコールが正常に処理される。 【0028】一方、ステップS14では、共有空間上に
メッセージがあると判定されたが、ステップS17で送
信側解放フラグがクリアされていた場合には、ステップ
S20で、メッセージの受信方式として、物理ページ共
有によるメッセージバッファ間接を行うために、メッセ
ージの存在する論理ページを書き込み禁止に設定し、論
理ページを共有状態とする。そして、ステップS22で
は、物理ページ共有によるメッセージバッファ間接を受
信方式に指定し、メッセージが存在する論理ページの物
理ページアドレス、物理ページの先頭からメッセージの
先頭へのオフセット、メッセージバッファへのポインタ
を含むメッセージ制御構造体を作成する。このメッセー
ジ制御構造体は、ステップS23で、受信プロセスのプ
ロセス制御構造体のメッセージ受信キューにキューイン
グされる。以下、ステップS24を経由して、システム
コールが正常に処理される。 【0029】なおステップS14において、Noと判定
された場合には、メッセージが共有空間にないので、ス
テップS15で、メッセージはユーザ論理アドレス空間
に配置されているか否か、メッセージバッファのデータ
指示部のアドレスフィールドの値とユーザ論理アドレス
空間の上下限アドレスとを比較する。この場合にもNo
と判断されたならば、メッセージの位置が不適切である
のであるため、メッセージ送信要求はステップS27で
エラーとして処理され、システムコールのリターン値と
してエラーの値が返送される。ステップS15で、メッ
セージがユーザ論理アドレス空間に配置されていると判
定された場合には、ステップS18で送信側解放フラグ
がチェックされる。すなわち、ステップS18では、送
信側解放フラグがセットされていた場合、ステップS2
1で物理ページ再配置によるメッセージバッファ間接の
受信方式を指定し、メッセージの存在するページの物理
ページアドレスと、メッセージの先頭の物理ページの先
頭からのオフセットの情報を含むメッセージ制御構造体
を作成する。このメッセージ制御構造体は、ステップS
23で、受信プロセスのプロセス制御構造体のメッセー
ジ受信キューにキューイングされる。以下、ステップS
24を経由して、システムコールは正常に処理される。
一方、ステップS18で、送信側解放フラグがクリアさ
れていた場合には、ステップS20以降、ページ共有に
よるメッセージバッファ間接による受信のための処理が
行われる。 【0030】〔メッセージ受信処理〕図16は、本発明
の一実施例を示すメッセージ受信要求システムコールの
処理フローチャートである。プロセスがメッセージ受信
要求を発行すると、最初、ステップS30で、自プロセ
スのプロセス制御構造体のメッセージ受信キューを調べ
る。次に、到着しているメッセージがなければ、メッセ
ージが到着するまでステップS31で待機状態となる。
ステップS32では、到着済みメッセージのメッセージ
制御構造体が取り出される。ステップS33では、メッ
セージ制御構造体の受信方式を格納するフィールドがチ
ェックされ、受信方式としてメッセージバッファ直接
か、ページ操作のないメッセージバッファ間接の場合に
は、メッセージバッファをそのまま受信するため、ステ
ップS39でメッセージバッファ管理表に受信プロセス
の識別子を設定する。つまり、メッセージバッファ管理
表の受信するメッセージバッファに対応したメッセージ
バッファ捕捉中のプロセス識別子を示すフィールドを受
信プロセスの識別子に変更する。次に、ステップS40
では、システムコールのリターン値として、メッセージ
バッファのポインタを返送することにより、正常なメッ
セージ受信処理を完了する。 【0031】ステップS33でNOの場合には、ステッ
プS34で、受信方式が物理ページ再配置によるメッセ
ージバッファ間接の受信方式かを判定する。ステップS
34でYesの場合には、ステップS36で、メッセー
ジ制御構造体の物理ページを受信プロセスがアクセス可
能な位置に再配置し、ページの保護情報も設定する。次
に、ステップS38では、メッセージの先頭の新しい論
理アドレスを計算し、その結果をメッセージバッファの
データ指示部に書き込む。以下、ステップS39を経由
して、正常なメッセージ受信処理を完了する。ステップ
S34でNoの場合、ステップS35で、受信方式が物
理ページ共有によるメッセージバッファ間接の受信方式
であるか否かを調べる。ステップS35でNoの場合に
は、処理できない受信方式であるので、ステップS41
でエラーとして処理し、システムコールのリターン値と
してエラーを示し、処理を終了する。ステップS35
で、受信方式が物理ページ共有によるメッセージバッフ
ァ間接の受信方式である場合には、ステップS37で、
メッセージ制御構造体中の物理ページを受信プロセスが
アクセス可能な論理ページに再配置し、論理ページに書
き込み禁止を設定して、共有状態とする。次に、ステッ
プS38では、メッセージの先頭の新しい論理アドレス
を計算し、それをメッセージバッファのデータ指示部に
書き込む。以降、ステップS39を経由して、正常なメ
ッセージ受信処理を完了する。 【0032】〔メッセージがユーザ空間にあり、メッセ
ージを共有する場合〕図1、図2は、本発明の第1の実
施例を示す処理動作説明図であって、ユーザ空間上にメ
ッセージが配置され、メッセージの存在するページを送
信側と受信側で共有する場合の処理を示す。いま、メッ
セージバッファ64を用いてユーザ空間12上のプロセ
ス50(プロセス識別子P)からユーザ空間13上のプ
ロセス51(プロセス識別子Q)に、ユーザ空間12の
アドレスaddr2から始まる大きさS1の領域に配置
されたメッセージを通信し、送信プロセス50は送信後
もメッセージにアクセスして、受信プロセス51のメッ
セージへのアクセス方法がページ共有によるメッセージ
バッファ間接アクセスの場合を説明する。送信プロセス
50は、先ずメッセージバッファ64を得る。この時点
で、メッセージバッファ管理表79において、メッセー
ジバッファ64に対応したi番目の空塞りビットに1
が、捕捉中のプロセス識別子には送信プロセス50の識
別子Pが、それぞれ設定される。送信プロセス50は、
メッセージの先頭アドレスaddr1、大きさS1を、
メッセージバッファ64のデータ指示部に設定し、受信
プロセス51の識別子Qを指定して、送信側解放フラグ
をクリアしてメッセージ送信要求を発行する。 【0033】メッセージ送信要求の処理により、ユーザ
空間12の論理ページリストを検索し、メッセージの存
在するページに対応した論理ページ制御構造体45を得
る。論理ページ制御構造体45からは、メッセージの存
在するページの論理ページアドレスがpage1、物理
ページアドレスがppaddrであることが明らかとな
る。次に、論理/物理アドレス変換表のページ表30の
論理ページpage1に対応したエントリのPビットが
セットされ、書き込み禁止が設定される。次に、論理ペ
ージ制御構造体45のステータスが、書き込み禁止に変
更される。次に、受信プロセス51のプロセス制御構造
体の受信メッセージキューには、メッセージバッファ6
4のアドレス、メッセージの存在する物理ページアドレ
スppaddr、メッセージのページ先頭からのオフセ
ット、大きさS1の各情報を持つメッセージ制御構造体
82がキューイングされる。次に、実行プロセスの切替
えにより、カーネル中の実行中のプロセスの識別子を示
すレジスタ80が、PからQに変更される。 【0034】受信プロセス51はメッセージ受信要求を
発行し、メッセージバッファ64のアドレス、メッセー
ジの存在する物理ページアドレスppaddr、メッセ
ージのページ先頭からのオフセット、大きさS1の情報
を持つメッセージ制御構造体82を得る。次に、ユーザ
空間13内の空き領域において、メッセージの存在する
ページを配置することが可能な空き論理ページが検索さ
れ、論理ページアドレスpage2を得る。次に、論理
ページアドレスpage2を表わす論理ページ制御構造
体55が作成されるので、そこに物理ページアドレスp
paddr、書き込み禁止のステータスを設定する。次
に、ユーザ空間13の論理/物理アドレス変換表内のペ
ージ表60の論理ページアドレスpage2に対応する
エントリに対して、ページアドレスをppaddrに、
Pビットを1に、それぞれセットする。次に、メッセー
ジのページ先頭からのオフセットと、論理ページアドレ
スpage2からメッセージの先頭の論理アドレスを再
計算し、addr2を得る。このaddr2をメッセー
ジバッファ64のデータ指示部に設定する。次に、メッ
セージ受信要求の完了により、メッセージバッファ64
へのポインタ101を得る。この時点で、カーネル空間
内のメッセージバッファ管理表79のメッセージバッフ
ァ64に対応するi番目のエントリにおいて、捕捉中の
プロセス識別子がPからQに変更される。 【0035】以上のメッセージ通信処理により、送信プ
ロセスおよび受信プロセスともに、プロセスの存在する
ユーザ空間の論理ページにメッセージの存在する物理ペ
ージを書き込み禁止の状態で割り当てることにより、メ
ッセージを共有する。この状態において、送信または受
信のプロセスがメッセージに書き込みを行った時点で、
書き込み禁止が設定されているため書き込みの命令がフ
ォールトとなり、例外処理が起動される。例外処理プロ
グラムは、フォールトした論理アドレスと実行中のプロ
セス識別子の情報からメッセージの存在する共有ページ
への書き込みであることを確認し、メッセージの存在す
る物理ページの論理ページへの割り当てを外し、新たに
捕捉した物理ページを同じ論理ページに割り当て、論理
ページの書き込み禁止を解除する。次に、メッセージの
存在する物理ページから新しい物理ページにメッセージ
をコピーし、フォールトとなった書き込み命令を再実行
することを指示した後、終了する。例外処理プログラム
の終了により、書き込みを行ったプロセスに制御が戻る
ことになる。次に、フォールトとなった書き込み命令か
ら再実行され、メッセージがコピーされて、書き込み可
能となった論理ページへの書き込みが完了し、プロセス
の実行が継続される。 【0036】〔メッセージがユーザ空間にあり、メッセ
ージを再配置する場合〕図3、図4は、本発明の第2の
実施例を示す処理動作の説明図であって、ユーザ空間上
にメッセージが配置され、メッセージの存在するページ
を送信側から受信側に再配置する場合の処理を示す。い
ま、メッセージバッファ64を用いて、ユーザ空間12
上のプロセス50(プロセス識別子P)からユーザ空間
13上のプロセス51(プロセス識別子Q)に、ユーザ
空間12のアドレスaddr3から始まる大きさS2の
領域に配置されたメッセージを通信する場合を仮定す
る。その場合、送信プロセス50は送信後はメッセージ
にアクセスしないので、受信方式としてはページ再配置
によるメッセージバッファ間接の場合を述べる。先ず、
送信プロセス50は、メッセージバッファ64を得る。
この時点で、メッセージバッファ管理表79では、メッ
セージバッファ64に対応したi番目の空塞ビットに1
が、また捕捉中のプロセス識別子には送信プロセス50
の識別子Pが、それぞれ設定される。送信プロセス50
は、メッセージの先頭アドレスaddr3、および大き
さS2をメッセージバッファ64のデータ指示部に設定
し、受信プロセス51の識別子Qを指定し、送信側解放
フラグをセットしてメッセージ送信要求を発行する。 【0037】メッセージ送信要求の処理を行って、ユー
ザ空間12の論理ページリストを検索することにより、
メッセージの存在するページに対応した論理ページ制御
構造体45が得られる。この論理ページ制御構造体45
から、メッセージの存在するページの論理ページアドレ
スpage3、物理ページアドレスがppaddrであ
ることがわかる。この時点で、論理ページ制御構造体4
5の状態フィールドを検査し、テキスト等の領域でない
場合、論理/物理アドレス変換表のページ表30の論理
ページpage3に対応したエントリのVビットがクリ
アされ、論理ページ制御構造体45もリストから削除さ
れる。これ以降、プロセス50は、メッセージにアクセ
スできなくなる。次に、受信プロセス51のプロセス制
御構造体54の受信メッセージキューには、メッセージ
バッファ64のアドレス、メッセージの存在する物理ペ
ージアドレスppaddr、メッセージのページ先頭か
らのオフセット、大きさS2の情報を持つメッセージ制
御構造体82がキューイングされる。実行プロセスの切
替えにより、カーネルにおける実行中プロセスの識別子
を示すレジスタ80が、PからQに変更される。 【0038】受信プロセス51がメッセージ受信要求を
発行し、メッセージバッファ64のアドレス、メッセー
ジの存在する物理ページアドレスppaddr、メッセ
ージのページ先頭からのオフセット、大きさS2の情報
を持つメッセージ制御構造体82を得る。次に、ユーザ
空間13内の空き領域において、メッセージの存在する
ページを配置することが可能な空き論理ページが検索さ
れ、論理ページアドレスpage4を得る。次に、論理
ページアドレスpage4を表わす論理ページ制御構造
体55が作成されて、論理ページ構造体リストに加えら
れる。ユーザ空間13の論理/物理アドレス変換表内の
ページ表60の論理ページアドレスpage4に対応す
るエントリに、ページアドレスをppaddrをセット
し、Vビットを1にする。次に、メッセージのページ先
頭からのオフセットと論理ページアドレスpageか
ら、再配置後のメッセージの先頭の論理アドレスadd
r4を計算し、メッセージバッファ64のデータ指示部
に設定する。次に、メッセージ受信要求の完了により、
受信プロセス51は、メッセージバッファ64へのポイ
ンタ101を得る。この時点で、カーネル空間内のメッ
セージバッファ管理表79のメッセージバッファ64に
対応したi番目のエントリでは、捕捉中のプロセス識別
子がPからQに変更される。 【0039】〔メッセージがメッセージバッファ内にあ
る場合〕図5は、本発明の第3の実施例を示す処理動作
の説明図であって、メッセージバッファ上にメッセージ
が格納された場合の処理を示している。いま、ユーザ空
間12上のプロセス50(識別子P)からユーザ空間1
3上のプロセス51(識別子Q)へのメッセージ通信に
おいて、メッセージバッファ64上にメッセージがある
場合を仮定する。プロセス50は、メッセージバッファ
捕捉要求を行った結果、メッセージバッファ64へのポ
インタ100を得る。この時点で、カーネル空間内のメ
ッセージバッファ管理表79において、メッセージバッ
ファ64に対応したi番目のエントリの空塞ビットが使
用中(1)となり、捕捉中のプロセス識別子Pが記録さ
れる。プロセス50は、メッセージバッファ64のデー
タ部にメッセージを書き込み、データ指示部を通信デー
タの先頭アドレスaddr5、大きさS3に設定して、
受信プロセス51の識別子Qを指定して、メッセージ送
信要求を発行する。メッセージ送信要求の処理により、
受信プロセス51のプロセス制御構造体54にメッセー
ジバッファ64のポインタを持ったメッセージ制御構造
体81がキューイングされる。カーネルの実行プロセス
の切替え制御により、実行プロセスがプロセス50から
プロセス51に切り替わるとともに、カーネル内で実行
中のプロセスの識別子を示すレジスタ80がPからQに
変更される。受信プロセス51はメッセージ受信要求を
発行することにより、受信済みのメッセージ制御構造体
81からメッセージバッファ64へのポインタ101を
得る。この時点で、カーネル空間内のメッセージバッフ
ァ管理表79のメッセージバッファ64に対応したi番
目のエントリでは、捕捉中のプロセス識別子がPからQ
に変更される。これ以降、プロセス51はメッセージバ
ッファ64上のメッセージにアクセスできることにな
る。 【0040】〔メッセージが共有空間にある場合〕図6
は、本発明の第4の実施例を示す処理動作説明図であっ
て、共有空間上にメッセージが配置された場合を示す。
いま、共有空間上に配置されたメッセージ110を、メ
ッセージバッファ64を用いて通信する場合を想定す
る。ユーザ空間12上のプロセス50(識別子P)から
ユーザ空間13上のプロセス51(識別子Q)に、メッ
セージ110を送信する。送信プロセス50は、メッセ
ージバッファの捕捉要求によりメッセージバッファ64
を得る。この時点で、カーネル空間内のメッセージバッ
ファ管理表79において、メッセージバッファ64に対
応したi番目のエントリの空塞ビットが使用中(1)と
なり、捕捉中のプロセス識別子Pが記録される。送信プ
ロセス50は、データレコード110の先頭アドレスa
ddr6、大きさS4をメッセージバッファ64のデー
タ指示部に設定し、受信プロセス51の識別子Qを指定
して、送信側解放フラグをセットし、メッセージ送信要
求を発行する。メッセージ送信要求の処理により、受信
プロセス51のプロセス制御構造体54にメッセージバ
ッファ64の情報を載せたメッセージ制御構造体81が
キューイングされる。カーネルの実行プロセスの切替え
制御により、実行プロセスがプロセス50からプロセス
51に切り替わるとともに、カーネル内の実行中のプロ
セスの識別子を示すレジスタ80がPからQに変更され
る。これ以降、プロセス51はメッセージバッファ64
を経由してデータ110にアクセスすることができる。 【0041】〔まとめ〕本発明においては、送受信プ
ロセス間では、共有空間上のメッセージバッファへのポ
インタのみを通信すればよい。メッセージバッファはメ
ッセージの先頭アドレスと大きさを示すデータ指示部を
備え、プロセスはメッセージバッファのデータ指示部を
経由した間接参照によって、メッセージにアクセスする
ことにより、メッセージバッファのデータ指示部に指定
された以外へのアクセスを防止することができる。 送信プロセスは、メッセージの先頭の論理アドレスと
そのサイズをメッセージバッファのデータ指示部に設定
し、メッセージバッファのポインタと受信オブジェクト
の識別子と送信側解放フラグとをパラメータとしてメッ
セージ送信を行う。 メッセージが短く、メッセージバッファのデータ部に
格納できる場合、送信プロセスはメッセージバッファの
データ部にメッセージを書き込み、そのメッセージバッ
ファへのポインタを受信プロセスが受信する。そのた
め、プロセス間では、メッセージのコピーを行う必要が
ない。この時点で、送信側解放フラグは無視される。 メッセージが共有空間またはユーザ空間に存在し、送
信側解放フラグがセットされていた場合には、メッセー
ジの存在する物理ページの送信プロセスのユーザ空間か
ら解放され、受信プロセスのユーザ空間に再配置され
る。この物理ページの再配置により、メッセージのコピ
ーを行う必要がなくなる。 【0042】メッセージが共有空間またはユーザ空間
に存在し、送信側解放フラグがクリアされていた場合、
メッセージの存在する物理ページが受信プロセスのユー
ザ空間に再配置され、送信プロセスと受信プロセスとで
そのページを書き込み禁止として共有する。次に、送信
プロセスか受信プロセスかが送信完了の後に、最初に書
き込みを行った時点で、プロセッサの例外処理におい
て、新しい物理ページが捕捉され、そこにメッセージが
コピーされて、新たに割り付けられる。これにより、送
信完了の後、共有しているメッセージに初めて書き込み
が実行されるまでメッセージのコピーを遅延させること
ができる。 メッセージバッファは、カーネルにより管理される。
カーネルのメッセージバッファ管理表には、メッセージ
バッファ毎に空塞情報と捕捉中のプロセス識別子が記録
される。メッセージバッファは、固定長であり、かつ共
有空間に連続して配置される。これにより、メッセージ
バッファの存在する上下限アドレスが決定され、メッセ
ージバッファアクセスのための論理アドレスから、どの
メッセージバッファへのアクセスであるかを容易に計算
することができる。その結果、メッセージバッファ管理
表を検索して、メッセージバッファを捕捉中のプロセス
識別子を得ることができる。メモリアクセス時には、こ
の識別子とカーネル内の実行中プロセス識別子レジスタ
の値とを比較することにより、メッセージバッファへの
誤ったアクセスを防止することができる。 【0043】 【発明の効果】以上説明したように、本発明によれば、
複数の論理アドレス空間を制御し、その上で動作する複
数のプロセスを制御する機能を具備した計算機システム
において、計算機システム上の任意のプロセス間で任意
の長さのメッセージを通信することを可能にするととも
に、メッセージへのアクセス競合を制御するので、高信
頼性を保持しながら、メッセージ通信処理のオーバヘッ
ドを極めて小さくすることが可能である。
間を制御し、これらの論理アドレス空間内で動作する複
数のプロセスを制御する計算機システムにおいて、任意
のプロセス間で任意の長さのメッセージを、高信頼性を
保持しながら通信し、かつ計算機のオーバヘッドを小さ
くすることが可能なプロセス間メッセージ通信方法に関
する。 【0002】 【従来の技術】従来より、厳しい実時間性と高多重処理
能力とが要求される通信網ノードの制御プログラムにお
いては、プログラムの構成要素をプロセスとすることに
より、プログラムを容易に変更することができるととも
に、プログラムの構造を良質なものに変化させることが
できた。例えば、発信側の呼制御と着信側の呼制御をプ
ロセスとした場合には、マルチメディア通信等の高機能
通信サービスを実現するために必要となる柔軟な呼制御
プログラムを生成することができる。また、検索、管理
の機能を専門的に行う回線データ検索プロセスとする場
合には、数万から数十万個に至る多数の回線データの検
索および管理を効率よく行うことができた。このような
構成の通信網ノード制御プログラムにおいては、呼制御
プロセス間、または呼制御プロセスと回線データ検索プ
ロセスとの間で、1秒当り合計、数千から数万程度のメ
ッセージ通信が行われることになる。いま、実時間性と
高多重性の両方が要求されるプログラムに対して、従来
用いられているオペレーティングシステム、例えばUN
IXを適用した場合を想定する。UNIXのプロセス
は、1つの論理アドレス空間を有している。この場合、
各論理アドレス空間は、互いに独立しており、かつ完全
に分離しているので、他のプロセスとの間でプロセス内
のメモリを共有することは不可能である。そのため、プ
ロセス間でメッセージ通信を行う場合、通信用のコネク
ションをプロセス間で設定して、そのコネクション上で
メッセージ通信を行っている。 【0003】 【発明が解決しようとする課題】しかし、上記通信用コ
ネクション上でメッセージ通信を行う方法では、次のよ
うな問題がある。 メッセージ通信に先立って、先ず通信しようとするプ
ロセス間でコネクションを設定し、メッセージ通信の終
了後にはコネクションを解放する処理が必要となるた
め、コネクションの設定、解放を行うためのオーバヘッ
ドが大きくなる。 また、送信プロセスが受信プロセスの論理アドレス空
間内にメッセージを直接書き込むことができないため、
一旦、メッセージをオペレーティングシステム内の領域
にコピーした後、オペレーティングシステム内の領域か
ら受信プロセスの論理アドレス空間内にコピーする必要
がある。その結果、送信するメッセージが大きくなるほ
ど、コピーのオーバヘッドが大きくなる。 このように、多数のプロセスが互いにメッセージを通信
し、処理を進めるアプリケーションプログラムをUNI
X上で構築した場合には、メッセージ通信のオーバヘッ
ドのため、高い処理能力を発揮することは不可能であっ
た。本発明の目的は、これら従来の課題を解決し、複数
の論理アドレス空間を制御し、その上で動作する複数の
プロセスを制御する計算機システムにおいて、計算機シ
ステム上の任意のプロセス間で任意の長さのメッセージ
を通信することができるとともに、メッセージへのアク
セス競合を制御して、高信頼性を保持しながらメッセー
ジ通信処理のオーバヘッドを極力小さくできるプロセス
間メッセージ通信方法を提供することにある。 【0004】 【課題を解決するための手段】上記目的を達成するた
め、本発明のプロセス間メッセージ通信方法は、 実行モードとして特権モードと非特権モードを持ち、
論理アドレスと物理アドレスとの変換処理を行う複数の
プロセッサ、および該プロセッサにより読み書きされる
メモリ装置とを有し、かつ物理メモリを固定長ブロック
(以下、物理ページ)単位に管理し、論理アドレス空間
を固定長ブロック(以下、論理ページ)単位に管理し、
任意の論理ページに物理ページの割り付けと解放を行
い、論理ページ単位に書き込みに対する保護を設定し、
同時に複数の論理アドレス空間を制御し、並列実行の主
体となる複数のプロセスを同時に制御する計算機システ
ムにおいて、 上記非特権モードでアプリケーションプログラムが動
作する論理アドレス空間からプロセッサの実行モードの
変更なしにアクセス可能な論理アドレス空間で、上記計
算機システム上に唯一の共有空間を配置し、 上記プロセス間で送受信される通信データ(以下、メ
ッセージ)に関して、該メッセージの制御に必要な情報
を格納するフィールド(以下、ヘッダ部)と、該メッセ
ージの先頭の論理アドレスおよびその大きさとを格納す
るフィールド(以下、データ指示部)と、該メッセージ
を格納するための領域(以下、データ部)の、3つの領
域を含む固定長の格納領域(以下、メッセージバッフ
ァ)を、上記共有空間上に連続して配置し、 各プロセスはメッセージバッファの先頭の論理アドレ
スを持つポインタにより上記メッセージバッファにアク
セスし、 該メッセージを送信するプロセスは、該メッセージバ
ッファを捕捉して、送信するメッセージを該メッセージ
バッファのデータ部に直接配置するか、または上記共有
空間上あるいは上記送信プロセスの存在する論理アドレ
ス空間上の任意の位置に該メッセージを設定し、受信プ
ロセスの識別子と該メッセージバッファへのポインタと
送信後も該メッセージにアクセスするか否かを示すフラ
グ(以下、送信側解放フラグ)を指定して、メッセージ
送信処理を行い、 メッセージを受信するプロセスは、該メッセージバッ
ファのデータ指示部のメッセージの存在する論理アドレ
スの位置と送信側解放フラグの値に応じて、該メッセー
ジを送信側で配置した論理アドレス位置を変更すること
なく、送信されてきたメッセージバッファをそのまま受
信するか、あるいは該メッセージの存在する物理ページ
の送信プロセスの論理ページへの割り付けを解放し、該
メッセージの存在する物理ページを受信プロセスからア
クセス可能な空き論理ページ位置に再配置し、再配置さ
れたメッセージの先頭の論理アドレスと大きさをデータ
指示部に設定したメッセージバッファを受信するか、あ
るいは送信プロセス側での割り付け解放を行うことな
く、該メッセージの存在する物理ページを受信プロセス
からアクセス可能な空き論理ページ位置に再配置し、送
信プロセス、受信プロセスで該メッセージの存在する物
理ページを共有し、受信プロセス側での再配置されたメ
ッセージの先頭の論理アドレスと大きさをデータ指示部
に設定したメッセージバッファを受信し、 各プロセスは、ポインタにより指示されたメッセージ
バッファのデータ指示部にあるメッセージの先頭の論理
アドレスの値を参照して、該メッセージの先頭の論理ア
ドレスと先頭からのオフセットの合計により得られる論
理アドレスを用いて該メッセージにアクセスし、オフセ
ットが該メッセージバッファのデータ指示部のメッセー
ジの大きさを示すフィールドの値を越えていないか否
か、また該メッセージにアクセスしたプロセスが、該メ
ッセージバッファを捕捉中のプロセスか否かを、該メッ
セージへのアクセスのための論理アドレスの計算時にチ
ェックすることを特徴としている。 【0005】 【作用】本発明においては、送受信プロセス間は、共有
空間上のメッセージバッファへのポインタのみを通信す
ればよい。そして、各プロセスは、メッセージバッファ
のデータ指示部を経た間接参照によってメッセージにア
クセスするので、メッセージバッファのデータ指示部に
指定された以外へのアクセスを防止することができる。
送信プロセスは、メッセージが短く、メッセージバッフ
ァのデータ部に格納できるときには、メッセージバッフ
ァのデータ部にメッセージを書き込み、そのメッセージ
バッファへのポインタを受信プロセスが受信する。従っ
て、プロセス間でメッセージのコピーを行う必要がな
い。送信プロセスは、メッセージが共有空間またはユー
ザ空間に存在し、送信側解放フラグがセットされている
とき(送信後もメッセージにアクセスすることがある)
には、メッセージの存在する物理ページの送信プロセス
ユーザ空間から解放され、受信プロセスのユーザ空間に
再配置される。従って、物理ページの再配置により、メ
ッセージのコピーを行う必要がない。送信プロセスは、
メッセージが共有空間またはユーザ空間に存在し、送信
側解放フラグがクリアされているとき(送信後はメッセ
ージにアクセスしない)には、メッセージの存在する物
理ページが受信プロセスのユーザ空間に再配置され、送
信プロセスと受信プロセスとでそのページを書き込み禁
止として共有する。次に、送信プロセスか受信プロセス
が送信完了後、最初に書き込みを行った時点で、プロセ
ッサの例外処理を行い、新しい物理ページが捕捉され、
そこにメッセージがコピーされて、新たに割り付けられ
る。メッセージバッファは、カーネルのメッセージバッ
ファ管理表により管理され、メッセージバッファ毎に空
塞情報と捕捉中のプロセス識別子が記録される。メモリ
アクセス時、カーネルのメッセージバッファ管理表を参
照することにより、誤ったアクセスを防止することがで
きる。これにより、メッセージへのアクセス競合を制御
して、高信頼性を保ちながらメッセージ通信処理のオー
バヘッドを極めて小さく抑えることができる。 【0006】 【実施例】以下、本発明の原理および実施例を、図面に
より詳細に説明する。本発明の動作原理を説明する。 計算機システムを制御するオペレーティングシステム
は、その核となるカーネルとカーネルの機能を用いて各
種サービスを提供するプログラム群とから構成されてい
る。カーネルは、特権モードで動作するとともに、特権
モードでのみアクセス可能なカーネル空間に配置されて
いる。アプリケーションプログラムは、オペレーティン
グシステムにサービスの実行を要求する場合、システム
コールを発行する。 計算機システム上の非特権モードで動作するアプリケ
ーションプログラムは、実行モードの変更なしにアクセ
ス可能な論理アドレス空間(以下、共有空間と呼ぶ)を
構成する。共有空間は、計算機システム上で1つだけ存
在し、非特権モードでアクセス可能な空間である。共有
空間のメモリ管理は、カーネルにより実行される。非特
権モードで動作するプロセスは、計算機システム内でユ
ニークなプロセス識別子が付与され、その実行はカーネ
ルにより制御される。 メッセージ通信のためには、共有空間上に配置された
メッセージバッファが使用される。メッセージバッファ
は、メッセージ通信の制御に必要な情報を格納するヘッ
ダ部、メッセージの先頭の論理アドレスとメッセージの
大きさを格納するデータ指示部、短いメッセージを格納
するデータ部、の3つのフィールドを含む固定長の構造
体である。メッセージバッファは、適用するアプリケー
ションプログラムが動作するために必要十分な個数だ
け、共有空間に連続して配置される。プロセスは、メッ
セージバッファの先頭を指示するポインタによりメッセ
ージバッファにアクセスする。メッセージ通信において
は、メッセージバッファのポインタが送信プロセスから
受信プロセスに渡される。 【0007】メッセージバッファは、唯一のプロセス
に属している。このプロセスは、このメッセージバッフ
ァを捕捉中であるとするものである。メッセージバッフ
ァは、カーネルにより管理される。カーネルは、メッセ
ージバッファ単位に空塞情報と捕捉中のプロセス識別子
とを記録する管理表(以下、メッセージ管理表と呼ぶ)
を持っている。メッセージバッファを捕捉し、解放する
ために、アプリケーションプログラムはシステムコール
を発行する。メッセージバッファ捕捉要求システムコー
ルは、メッセージバッファ管理表を検索して、空きのメ
ッセージバッファの先頭の論理アドレスを返却する。こ
の時、メッセージバッファ管理表中の捕捉されたメッセ
ージバッファに対応するエントリには、捕捉したプロセ
スのプロセス識別子が記録される。また、メッセージバ
ッファ解放システムコールは、メッセージバッファ管理
表を検索し、引数に指定されたメッセージバッファの捕
捉中のプロセス識別子がシステムコールを発行したプロ
セスの識別子と一致すると、メッセージバッファに対応
したメッセージバッファ管理表のエントリを空きにす
る。プロセス識別子が一致しない場合には、メッセージ
バッファは解放されない。 カーネル内には、現在プロセッサを占拠して実行中の
プロセスの識別子を記録するレジスタ(以下、実行中の
プロセス識別子レジスタと呼ぶ)があり、カーネルが実
行中のプロセスを切替える時に、実行中プロセス識別子
レジスタの値を次に実行するプロセスの識別子に変更す
る。メッセージバッファへのアクセスが発生した時に
は、アクセスしたメッセージバッファに対応するメッセ
ージバッファ管理表中の捕捉中のプロセス識別子の欄の
値と実行中プロセス識別子レジスタの値が比較されて、
捕捉中のプロセスからのアクセスであるか否かがチェッ
クされる。固定長のメッセージバッファを共有空間上に
連続して配置することにより、プロセスが発行したメッ
セージバッファへのアクセスのための論理アドレスか
ら、どのメッセージバッファへのアクセスであるかを容
易に計算できる。その結果により、メッセージバッファ
管理表を検索して、アクセスされたメッセージバッファ
を捕捉中のプロセス識別子を得ることができる。 【0008】プロセスは、メッセージバッファ内のデ
ータ指示部のメッセージの先頭の論理アドレスを参照
し、メッセージの先頭の論理アドレスとそこからのオフ
セット値によりメッセージにアクセスする。メッセージ
のアクセスと同時に、メッセージの先頭からのオフセッ
ト値がメッセージバッファ内のデータ指示部にあるメッ
セージの大きさを示すフィールドの値と比較され、メッ
セージとして有効なメモリ領域以外へのアクセスを防止
する。 カーネルは、プロセス制御構造体を用いて、非特権モ
ードで動作するプロセスを制御する。プロセス制御構造
体は、プロセス識別子を示すフィールド、プロセスの実
行コンテキストをセーブするフィールドメッセージの受
信キューのフィールド、を含む構造体である。プロセス
に到着したメッセージに関する情報は、メッセージ制御
構造体に記録され、プロセスのメッセージ受信キューに
到着順にキューイングされる。 プロセスがメッセージ送信要求のシステムコールを発
行すると、システムコールのパラメータに基づき、メッ
セージ受信に必要な情報がメッセージ制御構造体に記録
され、受信プロセスの受信キューにキューイングされ
る。プロセスがメッセージ受信要求のシステムコールを
発行すると、自プロセス制御構造体のメッセージキュー
の先頭にあるメッセージ制御構造体を取り出し、受信処
理が行われる。 メッセージ制御構造体は、受信方式を格納するフィー
ルド、メッセージ送信に使用されているメッセージバッ
ファへのポインタを格納するフィールド、メッセージの
存在する物理ページのアドレスと保護情報のリストを格
納するフィールド、物理ページの先頭からのメッセージ
の先頭位置のオフセットを格納するフィールド、を含ん
でいる。 【0009】メッセージ制御構造体に格納された情報を
基に、受信プロセスは以下に示すように、メッセージを
受信してアクセスする。 (ア)メッセージバッファ直接アクセス メッセージバッファのデータ部に、メッセージが存在す
る場合である。この場合には、受信プロセスは送信プロ
セスから送られたメッセージバッファをそのまま受信す
る。 (イ)ページ操作のないメッセージバッファ間接アクセ
ス メッセージバッファのデータ指示部に示された論理アド
レスにメッセージが存在し、その論理アドレスに受信プ
ロセスがアクセス可能な場合である。受信プロセスは、
送信プロセスから送られたメッセージバッファをそのま
ま受信する。 (ウ)物理ページ再配置によるメッセージバッファ間接
アクセス メッセージが存在する物理ページを受信プロセスの存在
する論理アドレス空間の空きページに再配置し、保護属
性を設定する。この時、メッセージの存在する物理ペー
ジを送信プロセスと受信プロセスで共有しない。メッセ
ージの新しい論理アドレス位置を、送信プロセスから送
られたメッセージバッファのデータ指示部に設定する。 (エ)物理ページ共有によるメッセージバッファ間接ア
クセス メッセージが存在する物理ページを受信プロセスの存在
する論理アドレス空間の空きページに再配置し、送信プ
ロセスの論理アドレス空間と受信プロセスの論理アドレ
ス空間でメッセージの存在する物理ページを共有する。
受信側では、メッセージの新しい論理アドレス位置をメ
ッセージバッファのデータ指示部に設定して受信する。 【0010】メッセージを送信するプロセスは、メッセ
ージバッファ捕捉要求システムコールを発行し、メッセ
ージバッファを1つ捕捉する。送信するメッセージをメ
ッセージバッファのデータ部に配置するか、共有空間上
あるいは送信プロセスの存在する論理アドレス空間上の
任意の空き領域に配置し、メッセージの先頭の論理アド
レスとアクセス可能な大きさをメッセージバッファのデ
ータ指示部に設定し、受信プロセスの識別子、メッセー
ジバッファへのポインタ、送信側解放フラグをパラメー
タとしてメッセージ送信要求システムコールを発行す
る。送信側解放フラグがセットされてメッセージ送信要
求システムコールが発行された時、送信プロセスはメッ
セージ送信後にはそのメッセージにアクセスしないこと
を示している。そのために、送信側のメッセージの存在
するメモリ領域がメッセージの編集のために捕捉された
領域である場合には、送信側のメッセージの存在するメ
モリ領域は解放される。また、送信側のメッセージの存
在するメモリ領域がプロセスのスタック領域、テキスト
領域、ヒープ領域等にある場合には、メッセージのメモ
リ領域は解放されない。一方、送信側解放フラグがクリ
アされていた場合には、送信プロセスはメッセージ送信
後もメッセージにアクセスすることを示す。そのため、
メッセージの存在する送信側のメモリ領域を解放しな
い。送信側解放フラグは、メッセージがメッセージバッ
ファのデータ部以外に存在する場合にのみ有効となる。 【0011】次に、メッセージ送信要求システムコール
は、カーネルにおいては下記のように処理が行われる。 (a)メッセージがメッセージバッファ内のデータ部に
存在する場合、受信方式をメッセージバッファ直接とし
たメッセージ制御構造体を、受信プロセスの受信キュー
にキューイングする。 (b)メッセージがメッセージバッファ外の共有空間に
存在する場合、 (b−1)送信側解放フラグがセットされている場合、
受信方式をメッセージバッファ直接としたメッセージ制
御構造体を、受信プロセスの受信キューにキューイング
する。 (b−2)送信側解放フラグがクリアされている場合、
メッセージの存在する送信側の論理ページに対して、書
き込み禁止を設定し、物理ページを共有状態にする。メ
ッセージの存在する物理ページのアドレスのリスト、メ
ッセージの物理ページの先頭からのオフセット、メッセ
ージ送信に使用したメッセージバッファのポインタを持
ち、受信方式をページ共有のメッセージバッファ間接と
したメッセージ制御構造体を作成し、受信メッセージの
受信キューにキューイングする。 【0012】(c)メッセージが送信プロセスの存在す
る論理アドレス空間に存在する場合、 (c−1)送信側解放フラグがセットされている場合、
メッセージの存在する物理ページのアドレスのリスト、
論理ページの状態情報、メッセージの物理ページの先頭
からのオフセット、メッセージバッファのポインタを含
み、ページを再配置するメッセージバッファ間接の受信
方式としたメッセージ制御構造体を作成し、受信メッセ
ージの受信メッセージキューにつなぐ。送信プロセスの
存在する論理アドレス空間におけるメッセージの存在す
る論理ページを解放する。 (c−2)送信側解放フラグがクリアされている場合、
メッセージの存在する送信側の論理ページに対して、書
き込み禁止を設定し、物理ページを共有状態にする。メ
ッセージの存在する物理ページのアドレスのリスト、メ
ッセージの物理ページの先頭からのオフセット、メッセ
ージバッファのポインタを含み、受信方式をページ共有
のメッセージバッファ間接に指示したメッセージ制御構
造体を作成し、受信メッセージの受信キューにキューイ
ングする。 【0013】このように、いずれの場合にも、メッセー
ジ送信要求システムコールが正常に完了した場合、メッ
セージバッファ管理表中のメッセージバッファに対応し
た捕捉中プロセス識別子の欄は、カーネルの表示に変更
される。メッセージ送信要求システムコールが終了した
後、送信プロセスはメッセージバッファを経由してメッ
セージにアクセスすることはできない。メッセージ受信
プロセスはメッセージ受信要求システムコールを発行
し、メッセージ受信キューから到着済みのメッセージ制
御構造体を取り出し、メッセージを受信するための処理
を行う。もし、到着メッセージがない場合には、メッセ
ージが到着するまで待ち状態に入る。メッセージ受信キ
ューから得られたメッセージ制御構造体の受信方式を示
すフィールドの値により、メッセージ受信システムコー
ルはカーネルにより下記のように処理される。 (ア)メッセージバッファ直接アクセス、メッセージ制
御構造体のメッセージバッファのポインタを返送する。 (イ)ページ操作のないメッセージバッファ間接アクセ
ス、メッセージ制御構造体のメッセージバッファのポイ
ンタを返送する。 (ウ)ページを再配置するメッセージバッファ間接アク
セス、メッセージ制御構造体中の物理ページリスト中の
物理ページを、受信プロセスの論理アドレス空間内の物
理ページを再配置するに必要な大きさを持った空き論理
ページに再配置し、書き込み禁止等のページ保護情報を
設定する。再配置した後のメッセージの先頭の論理アド
レスを計算し、それをメッセージバッファのデータ指示
部に設定し、メッセージバッファのポインタを返送す
る。 (エ)ページを共有するメッセージバッファ間接アクセ
ス、メッセージ制御構造体の物理ページリスト中の物理
ページを、受信プロセスの存在する論理アドレス空間内
の物理ページを再配置するに必要な大きさを持った空き
論理ページに再配置し、書き込み禁止を設定して共有状
態にする。再配置後のメッセージの先頭の論理アドレス
を計算し、それをメッセージバッファのデータ指示部に
設定し、メッセージバッファのポインタを返送する。 【0014】いずれの場合にも、メッセージ受信システ
ムコールの正常完了時に、メッセージバッファ管理表中
のメッセージバッファ捕捉中プロセス識別子は受信プロ
セスの識別子に変更する。メッセージ受信システムコー
ルの完了後、受信プロセスは、受信したメッセージバッ
ファを用いてメッセージにアクセスすることが可能にな
る。メッセージの存在する物理ページを送信側プロセ
ス、受信側プロセスで共有し、メッセージの存在する論
理ページに書き込み禁止が設定されている時に、送信ま
たは受信のプロセスがメッセージに書き込みを行った場
合には例外処理が起動される。例外処理プログラムは、
書き込みを起こした側のメッセージの存在する論理ペー
ジ位置に新しい物理ページを割り付け、論理ページの書
き込み禁止を解除して、メッセージの存在する物理ペー
ジから新しい物理ページにコピーを行い、書き込みを行
った命令の再実行を指示して終了する。例外処理の終了
により、プロセスの制御が戻されるとともに、書き込み
の命令から実行が再開され、書き込み禁止が解除された
新しい論理ページに対して書き込みが完了し、実行が継
続される。例外処理の終了以降、送信側プロセスと受信
側プロセスは別々の物理ページを参照する。この例外処
理により、ページコピーを行う機構により、ページを共
有してから始めての書き込みが起こるまで、メッセージ
のコピーが遅延される。 【0015】次に、図面により本発明の実施例を説明す
る。本実施例では、プロセッサは32ビット幅のアドレ
スを取り扱い、バイト単位にアドレスされ、特権モード
であるカーネルモードと非特権モードであるユーザモー
ドの2つの実行モードを持つ。なお、論理アドレスの表
記は16進表記を用いる。その場合、10進表記と区別
するために、16進表記は先頭に‘0x’を付加する。
従って、32ビット幅で表わされる論理アドレスの範囲
は、0x00000000から0xFFFFFFFFま
でである。 【0016】〔論理アドレス空間の構成〕図7は、通常
の論理アドレス空間の構成を示す図である。図7におい
て、10はカーネル空間であって、論理アドレスが0x
00000000から0x3FFFFFFFまでの1ギ
ガバイトの大きさを持つ。カーネル空間は、カーネルモ
ードでのみアクセス可能な空間である。カーネル空間は
計算機システム上唯一の空間で、計算機システムの制御
を行うオペレーティングシステムのプログラムが動作す
る。また、11は共有空間、12,13,14はそれぞ
れユーザ空間である。ユーザ空間はユーザモードでアク
セス可能な論理アドレス空間であって、論理アドレスが
0xC0000000から0xFFFFFFFFまでの
大きさの2ギガバイトのアドレスを持ち、アプリケーシ
ョンプログラムはユーザ空間上で動作する。ユーザ空間
は、計算機システム上で同時に複数存在することができ
る。共有空間11は、計算機システム上唯一の空間であ
って、論理アドレス0x40000000から0x8F
FFFFFFまでの大きさの1ギガバイトの論理アドレ
スを持ち、ユーザモードでアクセス可能である。つま
り、共有空間11は、ユーザ空間12,13,14にお
いてユーザモードで動作するアプリケーションプログラ
ムから、プロセッサのモード変更なしでアクセスが可能
である。 【0017】〔論理アドレス空間制御機能の構成〕図7
に示したカーネル空間、共有空間、およびユーザ空間の
論理アドレス空間構成は、図8に示すような3段の論理
/物理アドレス変換表により変換することにより実現さ
れる。なお、論理ページ、物理ページともに、4Kバイ
トの大きさとする。先ず、本実施例における論理アドレ
スのフィールド構成は、20に示すように、第一段ディ
スクリプタテーブル検索フィールド、第二段ディスクリ
プタテーブル検索フィールド、ページテーブル検索フィ
ールド、および論理ページ内オフセット用フィールドか
らなる。すなわち、論理アドレスの最上位2ビット(ビ
ット31,30)が第一段ディスクリプタテーブル22
の検索に使用され、次の9ビット(ビット29〜21)
が第二段ディスクリプタテーブル23〜26の検索に、
また次の9ビット(ビット20〜12)がページテーブ
ル27〜31の検索に使用され、最下位の12ビット
(ビット11〜0)は論理ページ内でのオフセットとし
て使用される。第一段、第二段のディスクリプタテーブ
ルを構成するエントリは、次段のテーブルへのポインタ
と、そのポインタが有効であるか否かを示すVビットか
ら構成される(ここでは、1が有効、0が無効)。Vビ
ットが1にセットされているとき、エントリ内の次段の
テーブルへのポインタが有効である。 【0018】第三段のページテーブルを構成するページ
テーブルエントリは、物理ページのアドレスと、このエ
ントリが有効か否かを示すVビット、論理ページがカー
ネルモードでのみアクセス可能であるか否かを示すSビ
ット、論理ページが書き込み禁止であるか否かを示すP
ビットから構成される。Vビットは、ディスクリプタテ
ーブルの場合と同じように、物理ページのアドレスを示
すフィールドの値が有効か否かを示している。Sビット
がセットされていると、この論理ページがカーネルモー
ドでのみアクセス可能であることを示す。さらに、Pビ
ットがセットされていると、この論理ページには書き込
み禁止が設定される。Pビットがセットされた論理ペー
ジに対する書き込み命令が実行された場合、その命令は
フォールトとなり、プロセッサは特権モードに遷移し
て、カーネルの一部である例外処理プログラムを起動す
る。第一段ディスクリプタテーブルディスクリプタリン
グディスクリプタリングは4つのエントリを持ったテー
ブルであり、論理アドレスの上位2ビットの値により索
引されて、第二段ディスクリプタテーブル23〜26の
いずれかが選択される。第二段ディスクリプタテーブル
23〜26は512エントリを持つテーブルであって、
論理アドレスの次の9ビットにより索引されて、次段の
ページテーブル27〜31が選択される。ページテーブ
ル27〜31は512エントリを持つテーブルであり、
論理アドレスの次の9ビットで索引されて、物理ページ
のアドレスが得られる。得られた物理ページのアドレス
と論理アドレスの下位12ビットの合計により得られる
物理アドレスにより、実メモリへのアクセスが実行され
る。 【0019】第二段ディスクリプタテーブル23、ペー
ジテーブル27,28が、カーネル空間のアドレス変換
表である。同じように、第二段ディスクリプタテーブル
24、ページテーブル29が共有空間、第二段ディスク
リプタテーブル25,26、ページテーブル30,31
がユーザ空間である。個々のユーザ空間毎に、ユーザ空
間部分の論理/物理アドレス変換表が存在する。この場
合、カーネル空間の論理/物理アドレス変換表である第
二段ディスクリプタテーブル23、ページテーブル2
7,28、および共有空間の論理/物理アドレス変換表
である第二段ディスクリプタテーブルディスクリプタリ
ング24、ページテーブル27は、システムで唯一であ
って、ユーザ空間から共有される。論理/物理アドレス
変換機構をハードウェアとして備える計算機システムに
おいては、論理/物理アドレス変換機能ハードウェアの
レジスタに20で示す論理アドレスをセットすることに
より、変換動作が自動的に行われる。 【0020】〔論理アドレス空間とプロセスの制御〕図
9,図10および図11は、論理アドレス空間制御およ
びプロセスの制御を説明するための図である。ユーザ空
間12は、カーネル空間内のユーザ空間制御構造体40
によって管理されている。このユーザ空間制御構造体4
0は、自空間の論理/物理アドレス変換表を指すルート
ディスクリプタ、自空間の論理ページに関する情報を持
つ論理ページ制御構造体のリスト、および自空間で動作
するプロセスのプロセス制御構造体のリストを具備して
いる。論理/物理アドレス変換表を指すルートディスク
リプタは、テーブル22,25,26,30,31から
なる論理/物理アドレス変換表を指している。なお、図
9〜11では、全てのユーザ空間で共有されるカーネル
空間、共有空間の論理/物理アドレス変換表を記載する
スペースがないので、記載が省略されている。 【0021】ユーザ空間制御構造体40の論理ページリ
ストから指示される論理ページ制御構造体45,46,
47は、ユーザ空間に割り当てられた論理ページに関す
る情報を保持するものである。ユーザ空間に割り当てら
れた論理ページは、この論理ページ制御構造体45,4
6,47により論理ページ単位に管理される。ユーザ空
間制御構造体40が持っている論理ページ構造体のリス
トは、論理ページアドレスの昇順にソートされて管理さ
れている。論理ページ制御構造体は、45で示すよう
に、論理ページのアドレスを示すフィールド、物理ペー
ジのアドレスを示すフィールド、書き込み禁止等の論理
ページの状態情報(ステータス情報)を示すフィール
ド、およびリストを構成するためのフィールドから構成
される。いま、ユーザ空間12上では、識別子P、R、
S、Tの各プロセス50,33,34,35が動作して
いるものとする。動作するプロセス50は、カーネル空
間にあるプロセス制御構造体41により管理されてい
る。プロセス制御構造体41には、計算機システム上で
プロセスを識別するためのプロセス識別子、プロセスが
動作しているユーザ空間の識別子、プロセスのコンテキ
スト、メッセージ受信キュー、等のプロセス制御情報が
記録されている。同じようにして、プロセス制御構造体
42,43,44は、ユーザ空間上で動作するプロセス
33,34,35をそれぞれ管理する。各プロセス制御
構造体41〜44は、動作するユーザ空間を制御するユ
ーザ空間制御構造体40のプロセスリストにキューイン
グされる。また、プロセス制御構造体41〜44は、カ
ーネルのプロセス制御プログラム中にある実行待ちキュ
ーにもキューイングされ、実行プロセスの切替え等のプ
ロセスの実行制御にも使用される。 【0022】ユーザ空間12のユーザ空間制御構造体4
0のプロセスリストには、ユーザ空間12上で動作して
いるプロセス50,33,34,35を表わすプロセス
制御構造体41,42,43,44がつながっている。
各プロセスは、プロセス制御構造体41〜44中にそれ
ぞれメッセージ受信キューを具備しており、そこにメッ
セージ制御構造体82,83をつなげることにより到着
済みのメッセージを管理する。図示されていないが、プ
ロセス制御構造体42,43,44中のメッセージ受信
キューにも、到着済みのメッセージを管理するメッセー
ジ制御構造体がつながっている。メッセージ制御構造体
82,83は、1つの到着済みメッセージを表わし、メ
ッセージ受信キューには到着順にキューイングされる。
メッセージ制御構造体82,83は、メッセージバッフ
ァへのポインタを示すフィールドと、通信データがユー
ザ空間内にある場合には、通信データが存在するページ
の物理アドレスのリストと、通信データのページの先頭
からのオフセットと、通信データの長さのフィールドか
ら構成される。識別子Pのプロセス50には、メッセー
ジ制御構造体82,83で表わされる2つのメッセージ
が到着しており、プロセス50のプロセス制御構造体4
1のメッセージ受信キューにつながれている。 【0023】〔メッセージバッファ〕図12および図1
3は、図9〜図11のメッセージ制御構造体のポインタ
により指示されるメッセージバッファの構造図と管理方
法の説明図である。メッセージバッファ61は、図12
に示すように、512バイトの固定長の大きさを有する
構造体であって、ヘッダ部、データ指示部、およびデー
タ部から構成される。さらに、ヘッダ部には、キューを
構成するためのリンクフィールド、メッセージの優先
度、送信プロセスの識別子、受信プロセスの識別子等の
メッセージ通信制御に必要なフィールドを含んでいる。
データ指示部は、メッセージの先頭の論理アドレスを持
つアドレスフィールドと、メッセージの大きさを有する
サイズフィールドとから構成されている。これらのヘッ
ダ部とデータ指示部以外の残りの領域は、データ部の領
域となる。メッセージバッファ61は、図13(a)に
示すように、共有空間11上に連続して配置されてい
る。用意されるメッセージバッファの数は、適用するア
プリケーションプログラムとシステムの規模により決定
される。従って、メッセージバッファの配置される領域
の上限アドレス(mb up)と下限アドレス(mbl
ow)は、システム毎に固定アドレスとして設定されて
いる。図13(a)では、8個のメッセージバッファ6
1〜68が配置されており、下限アドレスの値を0x4
0000000とすると、上限アドレス値は0x400
1000となる。 【0024】メッセージバッフアの空き塞りおよびメッ
セージバッファを捕捉しているプロセス識別子を記録す
るために、図13(b)に示すようなメッセージバッフ
ァ管理表79が用いられる。このメッセージバッファ管
理表79は、カーネル空間に配置される。メッセージバ
ッファ管理表79の1つのエントリ71〜78は、1つ
のメッセージバッファに対応している。メッセージバッ
ファ管理表79のi番目のエントリが、下位アドレスに
配置された方からi番目のメッセージバッファに対応し
ている。図13(a)に示すメッセージバッファ64の
エントリは、3番目のエントリ74である(iは0を起
点とする)。メッセージバッファ管理表79のエントリ
の1つは、空塞ビットと捕捉中のプロセス識別子を格納
するフィールドから構成されている。空塞りビットは、
そのメッセージバッファが使用中か否かを示しており、
0ならば未使用、1ならば使用中であることを示してい
る。プロセス識別子のフィールドには、メッセージバッ
ファを捕捉しているプロセスの識別子を記録する。メッ
セージバッファの存在する領域の上下限アドレス(mb
low,mbup)を用いて、メッセージバッファア
クセスのための論理アドレスから、メッセージバッファ
管理表中、何番目のメッセージバッファへのアクセスで
あるかを計算することが可能である。すなわち、メッセ
ージバッファの大きさをmb sizeとした時、mb
low以上、mb up未満の範囲のアドレスmb
addrについて、次式(1)が成立する。 (mb addr−mb low)/mb size・・・・・・・(1) 上式(1)によりメッセージバッファ管理表の何番目の
メッセージバッファへのアクセスであるかを判別するこ
とができる。プロセスはメッセージバッファ捕捉要求を
カーネルに対して発行し、メッセージ通信に必要なメッ
セージバッファを捕捉する。識別子Pのプロセスからの
捕捉要求に対して、メッセージバッファ管理表79が検
索され、未使用であるメッセージバッファ64に対応す
るエントリ74の空塞りビットが未使用(0)から使用
中(1)に変更されて、プロセス識別子フィールドに識
別子Pが記録される。メッセージ通信により、識別子P
のプロセスから識別子Qのプロセスにメッセージバッフ
ァ64が通信された時、メッセージバッファ64に対応
するメッセージバッファ管理表79のエントリ74のプ
ロセス識別子フィールドは、PからQに変更される。 【0025】プロセスは、使用を終了したメッセージバ
ッファを返却するために、メッセージバッファ解放シス
テムコールを発行する。識別子Pのプロセスがメッセー
ジバッファ64へのポインタを指定して解放要求を行っ
た場合には、メッセージバッファ管理表79が検索され
て、メッセージバッファ64に対応したエントリ74の
プロセス識別子のフィールドの値が、システムコールを
発行したプロセスの識別子Pであるか否かが検査され
る。一致した場合には、メッセージバッファ64に対応
したエントリ74の空塞りビットが未使用(0)に変更
されて、解放要求は完了する。これに対して一致しない
場合には、捕捉中でないプロセスからの解放要求として
エラーが返却されるとともに、メッセージバッファは解
放しない。プロセスがメッセージバッファにアクセスす
る場合には、メッセージバッファの先頭の論理アドレス
を持つポインタを用いる。次に、プロセスがメッセージ
にアクセスするには、メッセージバッファのデータ指示
部にあるアドレスフィールドの値と、メッセージの先頭
からのオフセットを合計して得られる論理アドレスを用
いる。カーネルは、プロセッサを占有している実行中の
プロセスのプロセス識別子を、カーネル空間にあるレジ
スタ80(図1〜図6参照)に設定する。プロセスがメ
ッセージにアクセスするための論理アドレスを計算する
過程では、論理アドレス計算に必要なメッセージバッフ
ァのデータ指示部を参照するプロセスが、そのメッセー
ジバッファを捕捉中のプロセスか否かをレジスタ80の
表示する識別子とメッセージバッファ管理表79上の捕
捉中のプロセス識別子を比較することによりチェックす
る。この機能は、論理アドレスがある範囲に存在するか
否かをチェックする機能を持ったメモリ装置によって行
うことができる。 【0026】〔メッセージ送信処理〕図14,図15
は、本発明の一実施例を示すメッセージ送信要求システ
ムコールの処理フローチャートである。プロセスがメッ
セージ送信要求を発行すると、最初、ステップS10
で、メッセージ送信要求を発行したプロセスがメッセー
ジバッファを捕捉しているプロセスであるか否かを、メ
ッセージバッファ管理表と比較して判定する。つまり、
メッセージバッファが、送信プロセスにアクセス権があ
るか否かを判定する。正しくなければ、つまりアクセス
権がなければ、メッセージ送信要求はステップS27で
エラーとして処理され、システムコールのリターン値と
してエラーの値が返送される。次に、ステップS11で
は、受信プロセスの識別子から受信プロセスのプロセス
制御構造体を求める。この結果、既に受信プロセスが存
在しない等、受信プロセスのプロセス制御構造体が得ら
れないときには、ステップS12からステップS27
で、エラーとして処理され、システムコールのリターン
値としてエラーの値が返送される。次に、ステップS1
3では、メッセージバッファのデータ指示部のアドレス
フィールドの値を、メッセージバッファの存在するアド
レス範囲である下限アドレスと上限アドレスと比較する
ことにより、メッセージがメッセージバッファ内のデー
タ部に存在するか否かを判断する。 【0027】メッセージがメッセージバッファ内のデー
タ部に存在すると、ステップS16で、メッセージバッ
ファ直接の受信方式を指定し、メッセージバッファのポ
インタを含むメッセージ制御構造体を作成する。このメ
ッセージ制御構造体は、ステップS23で、受信プロセ
スのプロセス制御構造体のメッセージ受信キューにキュ
ーイングされる。次に、ステップS24では、メッセー
ジバッファ管理表のメッセージバッファを捕捉中のプロ
セス識別子をカーネルに変更する。ステップS25で
は、受信プロセスのプロセス制御構造体がチェックされ
て、受信プロセスが待ち状態であるか否かが判定され
る。受信プロセスが待ち状態であれば、ステップS26
で受信プロセスを実行可能状態にする。そして、メッセ
ージ送信要求が正常に処理されて、システムコールがリ
ターンされる。一方、ステップS13でNoと判断され
た場合、ステップS14で、メッセージが共有空間上に
存在するか否かを判定するため、メッセージバッファの
データ指示部のアドレスフィールドの値と共有空間の上
下限アドレスとを比較する。メッセージが共有空間上に
存在する場合には、ステップS17で、送信側解放フラ
グがチェックされる。メッセージが共有空間上にあり、
かつ送信側解放フラグがセットされていた場合には、ス
テップS19で、ページ操作のないメッセージバッファ
間接の受信方式を指定し、メッセージバッファのポイン
タを含むメッセージ制御構造体を作成する。このメッセ
ージ制御構造体は、ステップS23で、受信プロセスの
プロセス制御構造体のメッセージ受信キューにキューイ
ングされる。以下、ステップS24を経由して、システ
ムコールが正常に処理される。 【0028】一方、ステップS14では、共有空間上に
メッセージがあると判定されたが、ステップS17で送
信側解放フラグがクリアされていた場合には、ステップ
S20で、メッセージの受信方式として、物理ページ共
有によるメッセージバッファ間接を行うために、メッセ
ージの存在する論理ページを書き込み禁止に設定し、論
理ページを共有状態とする。そして、ステップS22で
は、物理ページ共有によるメッセージバッファ間接を受
信方式に指定し、メッセージが存在する論理ページの物
理ページアドレス、物理ページの先頭からメッセージの
先頭へのオフセット、メッセージバッファへのポインタ
を含むメッセージ制御構造体を作成する。このメッセー
ジ制御構造体は、ステップS23で、受信プロセスのプ
ロセス制御構造体のメッセージ受信キューにキューイン
グされる。以下、ステップS24を経由して、システム
コールが正常に処理される。 【0029】なおステップS14において、Noと判定
された場合には、メッセージが共有空間にないので、ス
テップS15で、メッセージはユーザ論理アドレス空間
に配置されているか否か、メッセージバッファのデータ
指示部のアドレスフィールドの値とユーザ論理アドレス
空間の上下限アドレスとを比較する。この場合にもNo
と判断されたならば、メッセージの位置が不適切である
のであるため、メッセージ送信要求はステップS27で
エラーとして処理され、システムコールのリターン値と
してエラーの値が返送される。ステップS15で、メッ
セージがユーザ論理アドレス空間に配置されていると判
定された場合には、ステップS18で送信側解放フラグ
がチェックされる。すなわち、ステップS18では、送
信側解放フラグがセットされていた場合、ステップS2
1で物理ページ再配置によるメッセージバッファ間接の
受信方式を指定し、メッセージの存在するページの物理
ページアドレスと、メッセージの先頭の物理ページの先
頭からのオフセットの情報を含むメッセージ制御構造体
を作成する。このメッセージ制御構造体は、ステップS
23で、受信プロセスのプロセス制御構造体のメッセー
ジ受信キューにキューイングされる。以下、ステップS
24を経由して、システムコールは正常に処理される。
一方、ステップS18で、送信側解放フラグがクリアさ
れていた場合には、ステップS20以降、ページ共有に
よるメッセージバッファ間接による受信のための処理が
行われる。 【0030】〔メッセージ受信処理〕図16は、本発明
の一実施例を示すメッセージ受信要求システムコールの
処理フローチャートである。プロセスがメッセージ受信
要求を発行すると、最初、ステップS30で、自プロセ
スのプロセス制御構造体のメッセージ受信キューを調べ
る。次に、到着しているメッセージがなければ、メッセ
ージが到着するまでステップS31で待機状態となる。
ステップS32では、到着済みメッセージのメッセージ
制御構造体が取り出される。ステップS33では、メッ
セージ制御構造体の受信方式を格納するフィールドがチ
ェックされ、受信方式としてメッセージバッファ直接
か、ページ操作のないメッセージバッファ間接の場合に
は、メッセージバッファをそのまま受信するため、ステ
ップS39でメッセージバッファ管理表に受信プロセス
の識別子を設定する。つまり、メッセージバッファ管理
表の受信するメッセージバッファに対応したメッセージ
バッファ捕捉中のプロセス識別子を示すフィールドを受
信プロセスの識別子に変更する。次に、ステップS40
では、システムコールのリターン値として、メッセージ
バッファのポインタを返送することにより、正常なメッ
セージ受信処理を完了する。 【0031】ステップS33でNOの場合には、ステッ
プS34で、受信方式が物理ページ再配置によるメッセ
ージバッファ間接の受信方式かを判定する。ステップS
34でYesの場合には、ステップS36で、メッセー
ジ制御構造体の物理ページを受信プロセスがアクセス可
能な位置に再配置し、ページの保護情報も設定する。次
に、ステップS38では、メッセージの先頭の新しい論
理アドレスを計算し、その結果をメッセージバッファの
データ指示部に書き込む。以下、ステップS39を経由
して、正常なメッセージ受信処理を完了する。ステップ
S34でNoの場合、ステップS35で、受信方式が物
理ページ共有によるメッセージバッファ間接の受信方式
であるか否かを調べる。ステップS35でNoの場合に
は、処理できない受信方式であるので、ステップS41
でエラーとして処理し、システムコールのリターン値と
してエラーを示し、処理を終了する。ステップS35
で、受信方式が物理ページ共有によるメッセージバッフ
ァ間接の受信方式である場合には、ステップS37で、
メッセージ制御構造体中の物理ページを受信プロセスが
アクセス可能な論理ページに再配置し、論理ページに書
き込み禁止を設定して、共有状態とする。次に、ステッ
プS38では、メッセージの先頭の新しい論理アドレス
を計算し、それをメッセージバッファのデータ指示部に
書き込む。以降、ステップS39を経由して、正常なメ
ッセージ受信処理を完了する。 【0032】〔メッセージがユーザ空間にあり、メッセ
ージを共有する場合〕図1、図2は、本発明の第1の実
施例を示す処理動作説明図であって、ユーザ空間上にメ
ッセージが配置され、メッセージの存在するページを送
信側と受信側で共有する場合の処理を示す。いま、メッ
セージバッファ64を用いてユーザ空間12上のプロセ
ス50(プロセス識別子P)からユーザ空間13上のプ
ロセス51(プロセス識別子Q)に、ユーザ空間12の
アドレスaddr2から始まる大きさS1の領域に配置
されたメッセージを通信し、送信プロセス50は送信後
もメッセージにアクセスして、受信プロセス51のメッ
セージへのアクセス方法がページ共有によるメッセージ
バッファ間接アクセスの場合を説明する。送信プロセス
50は、先ずメッセージバッファ64を得る。この時点
で、メッセージバッファ管理表79において、メッセー
ジバッファ64に対応したi番目の空塞りビットに1
が、捕捉中のプロセス識別子には送信プロセス50の識
別子Pが、それぞれ設定される。送信プロセス50は、
メッセージの先頭アドレスaddr1、大きさS1を、
メッセージバッファ64のデータ指示部に設定し、受信
プロセス51の識別子Qを指定して、送信側解放フラグ
をクリアしてメッセージ送信要求を発行する。 【0033】メッセージ送信要求の処理により、ユーザ
空間12の論理ページリストを検索し、メッセージの存
在するページに対応した論理ページ制御構造体45を得
る。論理ページ制御構造体45からは、メッセージの存
在するページの論理ページアドレスがpage1、物理
ページアドレスがppaddrであることが明らかとな
る。次に、論理/物理アドレス変換表のページ表30の
論理ページpage1に対応したエントリのPビットが
セットされ、書き込み禁止が設定される。次に、論理ペ
ージ制御構造体45のステータスが、書き込み禁止に変
更される。次に、受信プロセス51のプロセス制御構造
体の受信メッセージキューには、メッセージバッファ6
4のアドレス、メッセージの存在する物理ページアドレ
スppaddr、メッセージのページ先頭からのオフセ
ット、大きさS1の各情報を持つメッセージ制御構造体
82がキューイングされる。次に、実行プロセスの切替
えにより、カーネル中の実行中のプロセスの識別子を示
すレジスタ80が、PからQに変更される。 【0034】受信プロセス51はメッセージ受信要求を
発行し、メッセージバッファ64のアドレス、メッセー
ジの存在する物理ページアドレスppaddr、メッセ
ージのページ先頭からのオフセット、大きさS1の情報
を持つメッセージ制御構造体82を得る。次に、ユーザ
空間13内の空き領域において、メッセージの存在する
ページを配置することが可能な空き論理ページが検索さ
れ、論理ページアドレスpage2を得る。次に、論理
ページアドレスpage2を表わす論理ページ制御構造
体55が作成されるので、そこに物理ページアドレスp
paddr、書き込み禁止のステータスを設定する。次
に、ユーザ空間13の論理/物理アドレス変換表内のペ
ージ表60の論理ページアドレスpage2に対応する
エントリに対して、ページアドレスをppaddrに、
Pビットを1に、それぞれセットする。次に、メッセー
ジのページ先頭からのオフセットと、論理ページアドレ
スpage2からメッセージの先頭の論理アドレスを再
計算し、addr2を得る。このaddr2をメッセー
ジバッファ64のデータ指示部に設定する。次に、メッ
セージ受信要求の完了により、メッセージバッファ64
へのポインタ101を得る。この時点で、カーネル空間
内のメッセージバッファ管理表79のメッセージバッフ
ァ64に対応するi番目のエントリにおいて、捕捉中の
プロセス識別子がPからQに変更される。 【0035】以上のメッセージ通信処理により、送信プ
ロセスおよび受信プロセスともに、プロセスの存在する
ユーザ空間の論理ページにメッセージの存在する物理ペ
ージを書き込み禁止の状態で割り当てることにより、メ
ッセージを共有する。この状態において、送信または受
信のプロセスがメッセージに書き込みを行った時点で、
書き込み禁止が設定されているため書き込みの命令がフ
ォールトとなり、例外処理が起動される。例外処理プロ
グラムは、フォールトした論理アドレスと実行中のプロ
セス識別子の情報からメッセージの存在する共有ページ
への書き込みであることを確認し、メッセージの存在す
る物理ページの論理ページへの割り当てを外し、新たに
捕捉した物理ページを同じ論理ページに割り当て、論理
ページの書き込み禁止を解除する。次に、メッセージの
存在する物理ページから新しい物理ページにメッセージ
をコピーし、フォールトとなった書き込み命令を再実行
することを指示した後、終了する。例外処理プログラム
の終了により、書き込みを行ったプロセスに制御が戻る
ことになる。次に、フォールトとなった書き込み命令か
ら再実行され、メッセージがコピーされて、書き込み可
能となった論理ページへの書き込みが完了し、プロセス
の実行が継続される。 【0036】〔メッセージがユーザ空間にあり、メッセ
ージを再配置する場合〕図3、図4は、本発明の第2の
実施例を示す処理動作の説明図であって、ユーザ空間上
にメッセージが配置され、メッセージの存在するページ
を送信側から受信側に再配置する場合の処理を示す。い
ま、メッセージバッファ64を用いて、ユーザ空間12
上のプロセス50(プロセス識別子P)からユーザ空間
13上のプロセス51(プロセス識別子Q)に、ユーザ
空間12のアドレスaddr3から始まる大きさS2の
領域に配置されたメッセージを通信する場合を仮定す
る。その場合、送信プロセス50は送信後はメッセージ
にアクセスしないので、受信方式としてはページ再配置
によるメッセージバッファ間接の場合を述べる。先ず、
送信プロセス50は、メッセージバッファ64を得る。
この時点で、メッセージバッファ管理表79では、メッ
セージバッファ64に対応したi番目の空塞ビットに1
が、また捕捉中のプロセス識別子には送信プロセス50
の識別子Pが、それぞれ設定される。送信プロセス50
は、メッセージの先頭アドレスaddr3、および大き
さS2をメッセージバッファ64のデータ指示部に設定
し、受信プロセス51の識別子Qを指定し、送信側解放
フラグをセットしてメッセージ送信要求を発行する。 【0037】メッセージ送信要求の処理を行って、ユー
ザ空間12の論理ページリストを検索することにより、
メッセージの存在するページに対応した論理ページ制御
構造体45が得られる。この論理ページ制御構造体45
から、メッセージの存在するページの論理ページアドレ
スpage3、物理ページアドレスがppaddrであ
ることがわかる。この時点で、論理ページ制御構造体4
5の状態フィールドを検査し、テキスト等の領域でない
場合、論理/物理アドレス変換表のページ表30の論理
ページpage3に対応したエントリのVビットがクリ
アされ、論理ページ制御構造体45もリストから削除さ
れる。これ以降、プロセス50は、メッセージにアクセ
スできなくなる。次に、受信プロセス51のプロセス制
御構造体54の受信メッセージキューには、メッセージ
バッファ64のアドレス、メッセージの存在する物理ペ
ージアドレスppaddr、メッセージのページ先頭か
らのオフセット、大きさS2の情報を持つメッセージ制
御構造体82がキューイングされる。実行プロセスの切
替えにより、カーネルにおける実行中プロセスの識別子
を示すレジスタ80が、PからQに変更される。 【0038】受信プロセス51がメッセージ受信要求を
発行し、メッセージバッファ64のアドレス、メッセー
ジの存在する物理ページアドレスppaddr、メッセ
ージのページ先頭からのオフセット、大きさS2の情報
を持つメッセージ制御構造体82を得る。次に、ユーザ
空間13内の空き領域において、メッセージの存在する
ページを配置することが可能な空き論理ページが検索さ
れ、論理ページアドレスpage4を得る。次に、論理
ページアドレスpage4を表わす論理ページ制御構造
体55が作成されて、論理ページ構造体リストに加えら
れる。ユーザ空間13の論理/物理アドレス変換表内の
ページ表60の論理ページアドレスpage4に対応す
るエントリに、ページアドレスをppaddrをセット
し、Vビットを1にする。次に、メッセージのページ先
頭からのオフセットと論理ページアドレスpageか
ら、再配置後のメッセージの先頭の論理アドレスadd
r4を計算し、メッセージバッファ64のデータ指示部
に設定する。次に、メッセージ受信要求の完了により、
受信プロセス51は、メッセージバッファ64へのポイ
ンタ101を得る。この時点で、カーネル空間内のメッ
セージバッファ管理表79のメッセージバッファ64に
対応したi番目のエントリでは、捕捉中のプロセス識別
子がPからQに変更される。 【0039】〔メッセージがメッセージバッファ内にあ
る場合〕図5は、本発明の第3の実施例を示す処理動作
の説明図であって、メッセージバッファ上にメッセージ
が格納された場合の処理を示している。いま、ユーザ空
間12上のプロセス50(識別子P)からユーザ空間1
3上のプロセス51(識別子Q)へのメッセージ通信に
おいて、メッセージバッファ64上にメッセージがある
場合を仮定する。プロセス50は、メッセージバッファ
捕捉要求を行った結果、メッセージバッファ64へのポ
インタ100を得る。この時点で、カーネル空間内のメ
ッセージバッファ管理表79において、メッセージバッ
ファ64に対応したi番目のエントリの空塞ビットが使
用中(1)となり、捕捉中のプロセス識別子Pが記録さ
れる。プロセス50は、メッセージバッファ64のデー
タ部にメッセージを書き込み、データ指示部を通信デー
タの先頭アドレスaddr5、大きさS3に設定して、
受信プロセス51の識別子Qを指定して、メッセージ送
信要求を発行する。メッセージ送信要求の処理により、
受信プロセス51のプロセス制御構造体54にメッセー
ジバッファ64のポインタを持ったメッセージ制御構造
体81がキューイングされる。カーネルの実行プロセス
の切替え制御により、実行プロセスがプロセス50から
プロセス51に切り替わるとともに、カーネル内で実行
中のプロセスの識別子を示すレジスタ80がPからQに
変更される。受信プロセス51はメッセージ受信要求を
発行することにより、受信済みのメッセージ制御構造体
81からメッセージバッファ64へのポインタ101を
得る。この時点で、カーネル空間内のメッセージバッフ
ァ管理表79のメッセージバッファ64に対応したi番
目のエントリでは、捕捉中のプロセス識別子がPからQ
に変更される。これ以降、プロセス51はメッセージバ
ッファ64上のメッセージにアクセスできることにな
る。 【0040】〔メッセージが共有空間にある場合〕図6
は、本発明の第4の実施例を示す処理動作説明図であっ
て、共有空間上にメッセージが配置された場合を示す。
いま、共有空間上に配置されたメッセージ110を、メ
ッセージバッファ64を用いて通信する場合を想定す
る。ユーザ空間12上のプロセス50(識別子P)から
ユーザ空間13上のプロセス51(識別子Q)に、メッ
セージ110を送信する。送信プロセス50は、メッセ
ージバッファの捕捉要求によりメッセージバッファ64
を得る。この時点で、カーネル空間内のメッセージバッ
ファ管理表79において、メッセージバッファ64に対
応したi番目のエントリの空塞ビットが使用中(1)と
なり、捕捉中のプロセス識別子Pが記録される。送信プ
ロセス50は、データレコード110の先頭アドレスa
ddr6、大きさS4をメッセージバッファ64のデー
タ指示部に設定し、受信プロセス51の識別子Qを指定
して、送信側解放フラグをセットし、メッセージ送信要
求を発行する。メッセージ送信要求の処理により、受信
プロセス51のプロセス制御構造体54にメッセージバ
ッファ64の情報を載せたメッセージ制御構造体81が
キューイングされる。カーネルの実行プロセスの切替え
制御により、実行プロセスがプロセス50からプロセス
51に切り替わるとともに、カーネル内の実行中のプロ
セスの識別子を示すレジスタ80がPからQに変更され
る。これ以降、プロセス51はメッセージバッファ64
を経由してデータ110にアクセスすることができる。 【0041】〔まとめ〕本発明においては、送受信プ
ロセス間では、共有空間上のメッセージバッファへのポ
インタのみを通信すればよい。メッセージバッファはメ
ッセージの先頭アドレスと大きさを示すデータ指示部を
備え、プロセスはメッセージバッファのデータ指示部を
経由した間接参照によって、メッセージにアクセスする
ことにより、メッセージバッファのデータ指示部に指定
された以外へのアクセスを防止することができる。 送信プロセスは、メッセージの先頭の論理アドレスと
そのサイズをメッセージバッファのデータ指示部に設定
し、メッセージバッファのポインタと受信オブジェクト
の識別子と送信側解放フラグとをパラメータとしてメッ
セージ送信を行う。 メッセージが短く、メッセージバッファのデータ部に
格納できる場合、送信プロセスはメッセージバッファの
データ部にメッセージを書き込み、そのメッセージバッ
ファへのポインタを受信プロセスが受信する。そのた
め、プロセス間では、メッセージのコピーを行う必要が
ない。この時点で、送信側解放フラグは無視される。 メッセージが共有空間またはユーザ空間に存在し、送
信側解放フラグがセットされていた場合には、メッセー
ジの存在する物理ページの送信プロセスのユーザ空間か
ら解放され、受信プロセスのユーザ空間に再配置され
る。この物理ページの再配置により、メッセージのコピ
ーを行う必要がなくなる。 【0042】メッセージが共有空間またはユーザ空間
に存在し、送信側解放フラグがクリアされていた場合、
メッセージの存在する物理ページが受信プロセスのユー
ザ空間に再配置され、送信プロセスと受信プロセスとで
そのページを書き込み禁止として共有する。次に、送信
プロセスか受信プロセスかが送信完了の後に、最初に書
き込みを行った時点で、プロセッサの例外処理におい
て、新しい物理ページが捕捉され、そこにメッセージが
コピーされて、新たに割り付けられる。これにより、送
信完了の後、共有しているメッセージに初めて書き込み
が実行されるまでメッセージのコピーを遅延させること
ができる。 メッセージバッファは、カーネルにより管理される。
カーネルのメッセージバッファ管理表には、メッセージ
バッファ毎に空塞情報と捕捉中のプロセス識別子が記録
される。メッセージバッファは、固定長であり、かつ共
有空間に連続して配置される。これにより、メッセージ
バッファの存在する上下限アドレスが決定され、メッセ
ージバッファアクセスのための論理アドレスから、どの
メッセージバッファへのアクセスであるかを容易に計算
することができる。その結果、メッセージバッファ管理
表を検索して、メッセージバッファを捕捉中のプロセス
識別子を得ることができる。メモリアクセス時には、こ
の識別子とカーネル内の実行中プロセス識別子レジスタ
の値とを比較することにより、メッセージバッファへの
誤ったアクセスを防止することができる。 【0043】 【発明の効果】以上説明したように、本発明によれば、
複数の論理アドレス空間を制御し、その上で動作する複
数のプロセスを制御する機能を具備した計算機システム
において、計算機システム上の任意のプロセス間で任意
の長さのメッセージを通信することを可能にするととも
に、メッセージへのアクセス競合を制御するので、高信
頼性を保持しながら、メッセージ通信処理のオーバヘッ
ドを極めて小さくすることが可能である。
【図面の簡単な説明】
【図1】本発明の第1の実施例を示す処理動作説明図で
あり、ユーザ空間上にメッセージが配置され、メッセー
ジの存在するページを送信側と受信側とで共有する場合
の処理を示す。 【図2】同じく、第1の実施例を示す処理動作説明図の
残り部分である。 【図3】本発明の第2の実施例を示す処理動作説明図で
あり、ユーザ空間上にメッセージが配置され、メッセー
ジの存在するページを送信側から受信側へ再配置する場
合の処理を示す。 【図4】同じく、第2の実施例を示す処理動作説明図の
残り部分である。 【図5】本発明の第3の実施例を示す処理動作説明図で
あり、メッセージバッファ上にメッセージが格納された
場合の処理を示す。 【図6】本発明の第4の実施例を示す処理動作説明図で
あり、共有空間上にメッセージが配置された場合の処理
を示す。 【図7】本発明の一実施例を示す論理アドレス空間の構
成を示す図である。 【図8】本発明の一実施例を示す論理/物理アドレス変
換表の構成図である。 【図9】本発明の一実施例を示す論理アドレス空間の制
御、ページ管理、論理アドレス空間で動作するプロセス
の制御のための構造体とその関係図のうちユーザ空間と
共有空間の部分である。 【図10】同じく、論理アドレス空間の制御、ページ管
理、論理アドレス空間で動作する関係図のうち、カーネ
ル空間の一部を示す。 【図11】同じく、カーネル空間の残りの部分を示す図
である。 【図12】本発明の一実施例を示すメッセージバッファ
の構成図である。 【図13】本発明の一実施例を示す共有空間上でのメッ
セージバッファの配置とメッセージバッファの管理とア
クセス制御を行うメッセージバッファ管理表を示す図で
ある。 【図14】本発明の一実施例を示すメッセージ送信処理
のフローチャートである。 【図15】同じく、メッセージ送信処理の残りの部分の
フローチャートである。 【図16】本発明の一実施例を示すメッセージ受信処理
のフローチャートである。 【符号の説明】 10・・カーネル空間、11・・共有空間、12,1
3,14・・ユーザ空間、20・・論理アドレスのフィ
ールド構成、40・・ユーザ空間制御構造体、21・・
論理/物理アドレス変換表のルートディスクリプタ、2
2・・論理/物理アドレス変換表の第一段ディスクリプ
タテーブル、23,24,25,26・・同じく第二段
ディスクリプタテーブル、27,28,29,31,3
1・・同じくページテーブル、41,42,43,4
4,54・・プロセス制御構造体、45,46,47,
55・・論理ページ制御構造体、50,51,33,3
4,35・・プロセス、61,62,63,64,6
5,66,67,68・・メッセージバッファ、75・
・メッセージバッファ管理表、74・・メッセージバッ
ファ管理表のメッセージバッファ61のエントリ、8
1,82,83・・メッセージ制御構造体、80・・実
行中プロセス識別子を保持するレジスタ、100,10
1・・メッセージバッファへのポインタ。
あり、ユーザ空間上にメッセージが配置され、メッセー
ジの存在するページを送信側と受信側とで共有する場合
の処理を示す。 【図2】同じく、第1の実施例を示す処理動作説明図の
残り部分である。 【図3】本発明の第2の実施例を示す処理動作説明図で
あり、ユーザ空間上にメッセージが配置され、メッセー
ジの存在するページを送信側から受信側へ再配置する場
合の処理を示す。 【図4】同じく、第2の実施例を示す処理動作説明図の
残り部分である。 【図5】本発明の第3の実施例を示す処理動作説明図で
あり、メッセージバッファ上にメッセージが格納された
場合の処理を示す。 【図6】本発明の第4の実施例を示す処理動作説明図で
あり、共有空間上にメッセージが配置された場合の処理
を示す。 【図7】本発明の一実施例を示す論理アドレス空間の構
成を示す図である。 【図8】本発明の一実施例を示す論理/物理アドレス変
換表の構成図である。 【図9】本発明の一実施例を示す論理アドレス空間の制
御、ページ管理、論理アドレス空間で動作するプロセス
の制御のための構造体とその関係図のうちユーザ空間と
共有空間の部分である。 【図10】同じく、論理アドレス空間の制御、ページ管
理、論理アドレス空間で動作する関係図のうち、カーネ
ル空間の一部を示す。 【図11】同じく、カーネル空間の残りの部分を示す図
である。 【図12】本発明の一実施例を示すメッセージバッファ
の構成図である。 【図13】本発明の一実施例を示す共有空間上でのメッ
セージバッファの配置とメッセージバッファの管理とア
クセス制御を行うメッセージバッファ管理表を示す図で
ある。 【図14】本発明の一実施例を示すメッセージ送信処理
のフローチャートである。 【図15】同じく、メッセージ送信処理の残りの部分の
フローチャートである。 【図16】本発明の一実施例を示すメッセージ受信処理
のフローチャートである。 【符号の説明】 10・・カーネル空間、11・・共有空間、12,1
3,14・・ユーザ空間、20・・論理アドレスのフィ
ールド構成、40・・ユーザ空間制御構造体、21・・
論理/物理アドレス変換表のルートディスクリプタ、2
2・・論理/物理アドレス変換表の第一段ディスクリプ
タテーブル、23,24,25,26・・同じく第二段
ディスクリプタテーブル、27,28,29,31,3
1・・同じくページテーブル、41,42,43,4
4,54・・プロセス制御構造体、45,46,47,
55・・論理ページ制御構造体、50,51,33,3
4,35・・プロセス、61,62,63,64,6
5,66,67,68・・メッセージバッファ、75・
・メッセージバッファ管理表、74・・メッセージバッ
ファ管理表のメッセージバッファ61のエントリ、8
1,82,83・・メッセージ制御構造体、80・・実
行中プロセス識別子を保持するレジスタ、100,10
1・・メッセージバッファへのポインタ。
フロントページの続き
(56)参考文献 久保田ほか,メッセージ通信のための
共有メモリ管理方式,1994年電子情報通
信学会春季大会講演論文集,1994年 3
月10日,第6分冊,P.6−146
田中聡,PLATINAIにおける大
規模メッセージ送信,1993年電子情報通
信学会春季大会講演論文集,第6分冊,
P.6−150
田中ほか,ネットワークワイド分散呼
制御のためのメッセージ通信ネットワー
ク,電子情報通信学会技術研究報告,
1993年 7月23日,Vol.93,No.
160(SSE93−35),P.55−60
田胡ほか,クラスタシステムのための
通信方式,情報処理学会研究報告,1992
年 6月 8日,Vol.92,No.
47,P.31−38
(58)調査した分野(Int.Cl.7,DB名)
G06F 15/16 - 15/177
G06F 9/46
Claims (1)
- (57)【特許請求の範囲】 【請求項1】 実行モードとして特権モードと非特権モ
ードを持ち、論理アドレスと物理アドレスとの変換処理
を行う複数のプロセッサ、および前記プロセッサにより
読み書きされるメモリ装置とを有し、かつ前記メモリ装
置の物理メモリを固定長ブロックの物理ページ単位に管
理し、論理アドレス空間を固定長ブロックの論理ページ
単位に管理し、任意の論理ページに物理ページの割り付
けと解放を行い、論理ページ単位に書き込みに対する保
護を設定し、同時に複数の論理アドレス空間を制御し、
さらにカーネルにより並列実行の主体となる複数のプロ
セスを同時に制御する計算機システムにおけるプロセス
間メッセージ通信方法であって、前記 非特権モードにおいて、プロセスが動作する論理ア
ドレス空間から実行モードの変更なしにアクセス可能な
論理アドレス空間で、前記計算機システム上に唯一の共
有空間を配置し、かつ、前記プロセス間で送受信される
メッセージに関して、該メッセージの制御に必要な情報
を格納するヘッダ部と、該メッセージの先頭の論理アド
レスおよびその大きさとを格納するデータ指示部と、該
メッセージを格納するためのデータ部の、3つの領域を
含む固定長の格納領域であるメッセージバッファを、前
記共有空間上に連続して配置しておき、 各プロセスは前記メッセージバッファの先頭の論理アド
レスを持つポインタにより前記メッセージバッファにア
クセスし、前記 メッセージを送信するプロセスは、前記メッセージ
バッファを捕捉して、送信するメッセージを、(i)該
メッセージバッファのデータ部に直接配置するか、また
は(ii)上記共有空間上あるいは上記送信プロセスの存
在する論理アドレス空間上の任意の位置に該メッセージ
を配置し、該メッセージの先頭の論理アドレスと大きさ
を該メッセージバッファのデータ指示部に設定し、受信
プロセスの識別子と該メッセージバッファへのポインタ
と送信後も該メッセージにアクセスするか否かを示す送
信側解放フラグを指定してメッセージ送信要求システム
コールを発行し、前記 メッセージを受信するプロセスは、メッセージ受信
要求システムコールを発行することにより、カーネルが
該メッセージバッファのデータ指示部に設定さ れた前記
メッセージの先頭の論理アドレスと前記送信側解放フラ
グの値に応じて、(ア)該メッセージを送信側で配置し
た論理アドレス位置を変更することなく、送信してきた
メッセージバッファへのポインタを受信するか、あるい
は(イ)該メッセージの存在する物理ページの送信プロ
セスの論理ページへの割り付けを解放し、該メッセージ
の存在する物理ページを受信プロセスからアクセス可能
な空き論理ページ位置に再配置し、再配置されたメッセ
ージの先頭の論理アドレスと大きさをデータ指示部に設
定したメッセージバッファへのポインタを受信するか、
あるいは(ウ)送信プロセス側での割り付け解放を行う
ことなく、該メッセージの存在する物理ページを受信プ
ロセスからアクセス可能な空き論理ページ位置に再配置
し、送信プロセス、受信プロセスで該メッセージの存在
する物理ページを共有し、受信プロセス側での再配置さ
れたメッセージの先頭の論理アドレスと大きさをデータ
指示部に設定したメッセージバッファへのポインタを受
信し、該ポインタにより指示されたメッセージバッファ
のデータ指示部にあるメッセージの先頭の論理アドレス
の値を参照して、該メッセージの先頭の論理アドレスと
該メッセージの先頭からのオフセットの合計により得ら
れる論理アドレスを用いて該メッセージにアクセスする
ことを特徴としたプロセス間メッセージ通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22152094A JP3406983B2 (ja) | 1994-09-16 | 1994-09-16 | プロセス間メッセージ通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22152094A JP3406983B2 (ja) | 1994-09-16 | 1994-09-16 | プロセス間メッセージ通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0887478A JPH0887478A (ja) | 1996-04-02 |
JP3406983B2 true JP3406983B2 (ja) | 2003-05-19 |
Family
ID=16768004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22152094A Expired - Fee Related JP3406983B2 (ja) | 1994-09-16 | 1994-09-16 | プロセス間メッセージ通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3406983B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998041927A1 (fr) * | 1997-03-19 | 1998-09-24 | Hitachi, Ltd. | Calculateur parallele |
JPH11110315A (ja) * | 1997-07-31 | 1999-04-23 | Matsushita Electric Ind Co Ltd | 通信装置 |
JP3926374B2 (ja) * | 2005-08-15 | 2007-06-06 | 株式会社ソニー・コンピュータエンタテインメント | バッファ管理方法およびバッファ管理装置 |
US7844781B2 (en) * | 2006-02-23 | 2010-11-30 | International Business Machines Corporation | Method, apparatus, and computer program product for accessing process local storage of another process |
US20130191846A1 (en) * | 2010-10-12 | 2013-07-25 | Nec Corporation | Data processing method, data processing device, and non-transitory computer readable medium storing data processing program |
WO2014036718A1 (zh) * | 2012-09-07 | 2014-03-13 | 北京网鼎芯睿科技有限公司 | 服务器端的数据发送方法和装置以及采用该装置的服务器 |
CN111052085B (zh) * | 2017-09-07 | 2023-11-28 | 索尼公司 | 信息处理装置及信息处理方法 |
CN115878351B (zh) * | 2023-03-03 | 2023-07-21 | 苏州浪潮智能科技有限公司 | 消息的传输方法及装置、存储介质及电子装置 |
-
1994
- 1994-09-16 JP JP22152094A patent/JP3406983B2/ja not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
久保田ほか,メッセージ通信のための共有メモリ管理方式,1994年電子情報通信学会春季大会講演論文集,1994年 3月10日,第6分冊,P.6−146 |
田中ほか,ネットワークワイド分散呼制御のためのメッセージ通信ネットワーク,電子情報通信学会技術研究報告,1993年 7月23日,Vol.93,No.160(SSE93−35),P.55−60 |
田中聡,PLATINAIにおける大規模メッセージ送信,1993年電子情報通信学会春季大会講演論文集,第6分冊,P.6−150 |
田胡ほか,クラスタシステムのための通信方式,情報処理学会研究報告,1992年 6月 8日,Vol.92,No.47,P.31−38 |
Also Published As
Publication number | Publication date |
---|---|
JPH0887478A (ja) | 1996-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6088705A (en) | Method and apparatus for loading data into a database in a multiprocessor environment | |
US5418913A (en) | System of two-way communication between processors using a single queue partitioned with pointers and limited overwrite privileges | |
US5687372A (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
JP2977688B2 (ja) | マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ | |
US5761672A (en) | Distributed data base system | |
JPH076115A (ja) | データ処理システムのソフトウェアユーザによるハードウェアデータ移動機能の制御方法、プロセッサ間の操作の同期化方法、及び複数の装置制御ブロックの付与方法 | |
CN111694770B (zh) | 一种处理io请求的方法及装置 | |
JPH11505653A (ja) | 単一アドレス空間で保護ドメインと共に用いるためのオペレーティングシステム | |
JPH05282165A (ja) | 通信システム | |
US20040221089A1 (en) | Cache control program | |
JPH10293754A (ja) | コンピュータシステム | |
JPH07210520A (ja) | メモリアクセス機構 | |
US6665747B1 (en) | Method and apparatus for interfacing with a secondary storage system | |
US6865741B1 (en) | Determining completion of transactions processing in a dynamically changing network | |
KR100895536B1 (ko) | 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체 | |
EP0747813A2 (en) | Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment | |
JP3406983B2 (ja) | プロセス間メッセージ通信方法 | |
WO2024045817A1 (zh) | 用于调度simt架构处理器的返回数据的方法及相应处理器 | |
JPH0229849A (ja) | コンピュータ、メモリシステム、情報蓄積装置 | |
US5790868A (en) | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment | |
US5630133A (en) | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment | |
JPH0622015B2 (ja) | データ処理システムの制御方法 | |
JPH05224956A (ja) | プロセス間メッセージ通信方法 | |
CN114880104A (zh) | 便于OpenCL工作组乱序执行的方法、系统及存储介质 | |
JPH10240695A (ja) | Sciシステムにおける複数の未処理要求の局所記憶装置を用いた操作 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090314 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |