VOS written in PL/I2006年06月02日 06時52分11秒

さて、やっとハードウェアの部分を終えた。まずは VOS の雰囲気から軽くとりあげていこうと思う。

VOS は MULTIX の思想を受けて開発された。そのため、UNIX とは趣が全く違う。それに加えて、VOS が開発された言語が PL/I である。そのため、システムコールにはその特色が色濃く出ている。

PL/I は Programming Language One の略称である。IBM が Fortran、COBOL、ALGOLを合わせ、全ての用途に対応できる言語として開発された。個人には、ソースコードを読んで、バグの修正ぐらいならできるが、始めから書く程はできない。PL/I のマニュアル付きでである。PL/I のオープンソースコンパイラを探してみたことがあるが、見つからなかった。

この言語では、関数の引数は全て参照渡しになる。C 言語では、引数は全て値渡しなのとは対称的である。それゆえ、色々と面倒なことも多い。C 言語でも、参照渡しができるではないかと思う人もいるだろうが、渡しているのはアドレスと言う値であり、関数内部でポインタで参照しているだけである。

普段は C 言語を使っている。古いプログラムは PL/I で書かれているのも多かった。VOS のシステムヘッダファイルを覗くと、COBOL、PL/I、C、C++、Fortran、Pascal、アセンブリなどのファイルがある。各種言語の システムヘッダファイルを見ると、全て自動生成された雰囲気だ。VOS でサポートされている言語は Stratus 社に聞いた方がいい。普段使わない言語までは把握していないので。

ログインして気が付くのは二つ。一つ目は GUI などは存在しないと言うこと。一台一台の値段が高い機械なので、末端から telnet で作業という形が一般的である。そして、もう一つは、コマンド名。UNIX では短い略式系のコマンド名が多いのにたいし、VOS ではコマンド名が長い。cd は UNIX では change directory の略であるが、VOS では chang_current_dir を使う。

また、重量プロセスのシステムである。UNIX と比べると、各々のプロセスの細かな制御が可能であるが、その分プロセスの生成が高くつく。それゆえ、UNIX の様に大量にプロセスを生成するということはしない。一つのプロセスがプログラムの実行毎に使い回されていくのである。