プロセスとスレッド~前編

皆さん、こんにちは。Dr.テトランです。

これまでの説明で、Tetra21クライアントプログラムは、サブシステムを利用することで、実際のサーバを意識することなく動作できることが理解できたと思います。この事実を逆手にとって、サーバを必要としないサブシステム(最早プロキシではない)を用意すれば、Tetra21クライアントプログラムが単独で実行できることになります。

では、サブシステムからTDBにアクセスするにはどうしたらよいのでしょうか?この場合は、TDBがファイル共有されることになりますので、ミューテックス等の同期オブジェクトを導入してプロセス間で複雑な排他制御を行わなければなりません。そもそもこういった問題を避けるためにクライアント/サーバーモデルを採用したわけですから、このような実装には意味がありません。そこで、一切のTDBファイルにはアクセスしないような、ダミーサブシステムを作り、通常のTetra21クライアントプログラムと組み合わせたものをTetra21LEとして製品化しました。

Tetra21LEでは、サーバが提供する機能は使えませんが、ローカルファイルを介して、見積書シートの編集や帳票印刷を行うことが可能なので、サーバとつなぐ事ができない場合等、ポータブルユースに応えることができます。

 

上記で「こう言った問題」として、簡略してしまいましたが、もう少し詳しく述べてみます。

先ず、プロセスの説明をします。プロセスとはプログラムを実行している実体(環境)を指します。しかしながら、複数のプロセスが存在するシステムでは、通常は仮想空間(CPU、メモリ、I/O等)となります。(実空間に対して)仮想空間をイメージするには、「パラレルワールド」の様なものを思ってください。それぞれのプロセスで同じ場所でも、実際には何ら交わることができません。

例えば、Aプロセスでテーブルに置いた荷物は、Bプロセスの同じテーブルにはありません。というよりBプロセスのどこを探してもAプロセスの荷物を見出すことはできません。例えが悪いかも知れませんが、プロセスが異なれば、それぞれの同じトイレで同時に用を足すことが可能です。丁度、別のコンピュータの様に、それぞれの空間には交わりが無いということです。以降は複数のコンピュータも含めます。

しかしながら、この独立性は完全ではありません。プロセスが現実のオブジェクトにアクセスする場合は、この前提が崩されてしまいます。例えばディスクファイルがそうです。実は、このことは欠点ではなく、データを共有するためにわざとそうしているのです。それ以外にも、アトムやプロセス間通信するためのオブジェクトをOSが提供しています。

~後編に続く。

Comments are closed.