Amoeba (オペレーティングシステム)
Amoebaのプロセス管理を説明する。
Amoebaのプロセスは、基本的にアドレス空間とそこで実行するスレッドの集合である。
プロセスは、Amoebaではオブジェクトの一つとして認識される。 プロセスは、複数の子プロセスを生成することができる。 生成された子プロセスは、さらに複数の孫プロセスを生成することができる。 すなわち、Amoebaではプロセスは、UNIXやMS-DOSと同じように、木構造を構成する。 親プロセスは、生成した子プロセスを、一時停止、再開、消滅させることができる。 Amoebaのプロセスの生成は、UNIXのそれとは異なる。 UNIXでは、子プロセスを生成する際に、親プロセスが自分のプロセスのメモリイメージのコピーを生成して (fork) 、その後にコピーを指定したプログラムに差し替えて (exec) いる。 この方式は、非常に大きなオーバーヘッドをともなう。 Amoebaでは、こうした方式は採っていない。 Amoebaでは、意図したメモリ・イメージを使って特定のプロセサ上で最初から正しく開始するような新しいプロセスの生成が、可能である。 親プロセスと子プロセスは、ともに並列に実行することが可能である。
遠隔手続き呼出し(RPC、リモートプロシージャコール)は、2地点間の通信であり、クライアントがサーバに要求 (リクエスト) メッセージを送信し、そしてサーバがクライアントに応答 (レスポンス) メッセージを返信する、というように構成されている。 クライアント側は、要求メッセージをサーバに送信すると、サーバから応答メッセージを受信するまで、ブロックされる。 標準的なサーバごとに、クライアントから呼び出すためのインタフェースが定義されている。 クライアントは、このインタフェースにしたがって、スタブを通して、サーバと通信する。 クライアントは、スタブのインタフェースに定義されたとおりに、サーバに引数を含んだ要求メッセージを送信し、スタブのインタフェースに定義されたとおりの形式で、サーバから応答メッセージを受信する。