UNIX Implementation for MSX


邦訳版コンテンツ

[Home] 
[Introduction]

[Technical information]

[Status]

[TCP/IP]

[WWW]

[Download]

日本語版オリジナルコンテンツ

UZIX Web 日本語版編集方針
UZIXインストール体験記

日本語版

Technical Information    


 


How it works? -どうやって動いているの?-

UZIXはMSX2のメモリマッパをマルチプロセッシングを達成するために利用しています。PC UZIXでは、PCの追加メモリをスワッピングに利用します。いずれの場合もUZIXは仮想メモリ領域のうちの64KBのみを使用します。これはZ80のアクセス可能領域であり、PCにとっては1セグメントの大きさに該当します。UZIX自身は上位32KBを占有します。そして実行中のプロセスは下位32KBを使用します。

UZIXの実行には特別な追加のハードウェアを必要としません。当初、UZIXはタイマー割込みによるシステムクロックを利用しました。最新のバージョンでは(訳注:MSX2で追加された)リアルタイムクロックをタイムスタンプの取得に用いています。現在のTTYドライバーは、他の大半のシステム同様に、キーボードバッファのポーリングドリブンをおこなっています。

How UZIX is different than real UNIX? -本家UNIXとの相違点は?-

UZIXはAT&T UNIX の 7th Edition カーネルのほぼすべての機能を含んでいます。全てのファイル入出力、ディレクトリ、ファイルシステムのマウント、ユーザー及びグループID、パイプ処理、デバイス入出力がサポートされています。プロセス制御のための fork(), execve(), signal(), kill(), pause(), alarm(), and wait() も完全にサポートされています。起動可能なプロセスの数は利用可能なスワップ領域によって制限され、最大は31プロセスとなっています(計1024KBのメモリを使用します)。Bourneシェルとその全ての機能が実行可能です。シェルのソースコードに施された唯一の変更は、Cコンパイラの制限を回避することです。

Missing features and limitations -未対応の機能と制限事項-

● デバッガ及びプロファイラ関連のシステムコールは未実装です。
● 現在供給されているTTYドライバは極基本的なもので、1ポートのみをサポートしています。
● I ノード番号は16ビットのみとなっており、したがってファイルシステムには32MBまでの制限が伴います。
● ファイルはスタンダードフォーマットに準拠していません。MS-DOS形式となっています。
● BSD4.2のexecve()が実装されました。exec()の追加機能はライブラリによってサポートされています。
● 再入可能なディスク I/O の実装に必要なセマフォとロックメカニズムが無く、busy-wait を用いずに割り込みによるディスク I/O を実装する事は難しい。(注:訳者のUNIXに関する知識不足のため翻訳不能となっておりましたが、えるちゃんさんからのご指摘を受けて追補しました。えるちゃんさんに多謝!!。)

Developer Notes -開発者注釈-

MSX UZIX は ANSI互換のCコンパイラであればコンパイルが可能です。厳密には CP/M用Hitech-C と MS-DOS用Hitech-C(クロス開発用)を推奨します。MSX UZIXはMS-DOS用Hitech-Cを使ってかかれました。もし、MSX-DOS用の Hitech-CやMSX-Cを使ってコンパイルを試みると、多くの構文や機能がサポートされないことに気づくでしょう。もちろん、UZIXは他のコンパイラを用いてコンパイルすることが可能ですが、その場合はソースコードに対していくらかの修正を強いられることになります。

MSX UZIXの今回のリリースでは、最大31のプロセスを実行することが可能です。実際には127以上のプロセスを4MBのメモリ実装によって実行することができますが、シングルユーザー環境においてそれだけのプロセスを実行可能とすることはナンセンスでしょう。これが同時実行プロセスを31に制限している理由です。