Skip to content
oraccha edited this page Jan 15, 2013 · 4 revisions

我々が開発しているオペレーティングシステムです.

詳しくは, http://www.os-omicron.org/ へ.

延匡さんのページができました. おぉ,格好いいなぁ.

一番まとまった資料としては bit の 1988 年頃の連載「オペレーティングシステムの設計 OS/omicronなどを例にして」があります.全16回の連載でOSだけでなく,コンパイラ,日本語情報処理環境,ウィンドウシステムまでカバーしてます.


OS/omicronの歴史は1980年代初頭から始まります.V1 のことはよく知りませんが,マルチプロセッサ用の小さいOSということで研究が始まったのですが,ハードウェアも手作りで相当苦労したようです.ハードウェアの作成をあきらめて 68000 のボードを買って来て,その上で動かしたのが V1 かもしれません.

  • 当初はマトリックススイッチ型マルチプロセッサ用の OS である OS/π を開発することが目的でした.そこで,まず手始めにと作ったのが OS/ο だったらしく,「ο」には「小さいこと」,「目玉」という意味があるようです.

1987年くらいから始まった V2 は江戸という仮想マシン上で動いていて長い間研究室の研究基盤として使われてました.ターゲットマシンは HITACHI2050 という日立のワークステーションでした(階段から落しても壊れないと言う頑丈なマシンでした).V3 は素結合なマルチプロセッサ用のOSでしたが,OSの機能とハードウェアの非力さのバランスで非常に重いシステムになってしまい,実用的には厳しいものがあったと思います.文書書きやコンパイルは V2 でやって,実験などは V3 でやるという感じだったと思います.

  • 自作のハードウェアに LBP(当時としては破格のメモリを上乗せしたらしい)を繋げてプリンタサーバにしてました.卒論や研究会の原稿などはこのプリンタサーバで出力してました.フォントの癖が強いので,見る人が見ると出所がわかりますが.
    • V4 でも ESC/Page のドライバがあるので,プリンタサーバとして使えます. 私ですか? ここ1,2年くらいで印刷環境は完全に Unix + TeX に移行してしまいました(T_T)
  • みんなパワーがあったので,コンパイラからウィンドウシステム,エディタ,ネットワークプロトコルなどなどはすべてオリジナルで,フルスクラッチで作られてました.
    • 私なんかは非力なんで移植も結構やりましたが.

そして,1994 年頃,V4 プロジェクトがスタートするわけですが,Motorola の 68000 系を捨て,次のターゲットプロセッサの模索から始まりました.候補に挙がったのは Intel IA32 と RISC 系の HP PA-RISC でした.OS/omicron の伝統としてコンパイラから作ると言う暗黙の了解があったので,双方のコンパイラが作られました.なぜ,IA32 が選択されたのかは知りませんが,IA32 をターゲットとしてプロジェクトが進み始めました.

しかし,巷は Windows95 の発売とかで騒がれたり, FreeUnix も実用に耐えるようになってきた時期です.V4 はまだまだ未完成であり,アプリケーション研究の基盤は Windows や Unix に移ってしまいました.これは痛かった.それ以降,それなりに開発は進み,そこそこ使えるようなOSにまでなったわけですが,その幕もそろそろ閉じようとしているわけです.

  • やっている本人達自体が「研究」としての面をあんまり考えてなかった,近視眼的になっていたってのがあるのかもしれない.システムコールとライブラリにも書いたけど,実用的なものにしようと無意識的に Unix 化路線を取ってしまった気がする.V4 の特徴が活きるようなアプリケーションを真面目に考えなかったのは失敗だった.

関連しそうなページ


Multician 達に HITAC5020 の子孫と言われてしまいました。

↑ 補足ですが,この認識は間違ってます.訂正のメールを出すもの面倒なので...

V4が Multics から影響を受けた部分は,(多重)2次元アドレス空間,ダイナミックリンクが大きいです.字面から見るとMulticsに似てるように感じるかもしれないけど,設計思想は全然違うからね.

他にも Lispマシンとかにいろいろとインスパイアされたみたいです. あと,時期的には SASOS が流行った時期と重なるかと.

2050を廃棄した現場に立ち会っていたのですが、あとで聞けば聞くほど、面白そうな機械だったんですね。「机があって」(<つ、机っすか?)なんていうのもどこかで見たような気がします。確保しとけば良かったかなあ?そんな研究室に1年生の時から居候していたのでした。でも、プログラムの読み書きは出来ません。--あお

  • 2050 はそれほど触ってなかったですが,とにかく物理的な重量も計算速度も「重い」ってイメージがありました.原因は仮想記憶の方に少し書きましたが.
  • 一方で 5020 の方は当事の最先端の人達が関っただけあって革新的なものだったそうです.

お邪魔しまーす。

詳細を理解できてるわけではないですが、 「単一2次元アドレス空間」とか 「タスクは保護空間の間をコンテキスト切替えなしに移動することができます」 とか(日本語頁見ましたぁ)いうのが、もしかして凄く嬉しい機構 なのじゃないかなーとか思いましたです。

unixみたいな「メモリ空間はプロセスの従属物」という世界とは 違う世界だ、という意味ですかこれは?

-戯

はじめまして.

そうです.

「単一2次元アドレス空間」という用語がわかりにくいかもしれませんが, Unix のような多重アドレス空間の OS とは異なり,V4 は基本的に単一アドレス空間の OS(SASOS) です. したがって,コンテキストスイッチ,メッセージコピーなどのオーバヘッドが削減できるわけですが,その代償として当然,保護の問題が発生します.これを保護空間という仕組みで解決しています.

保護空間はタスクとは分離されていて,手続きやデータといった細粒度なものから,複数タスクからなるサーバなどまで,性能とのトレードを考えた保護ポリシの設定が可能になります.

ありがとうございます。 . (Object指向で言う意味での)Objectを、プロセスじゃなくて OSの配下に置く事が出来る(という用途に(も)使える)という 感じでしょうか。だったら嬉しいなぁ。

そうですね。「2次元」という言葉が使われる理由は、 とりあえずサワリだけをさらっと読んだだけでは 理解できませんでした。

-戯

普通、マイクロカーネルベースの OS では、サーバ(タスク)が機能拡張の単位になるわけですが、V4 ではもっと細かくデータに対する手続きレベルでシステムを拡張できるようにしています。

このシステム構成プリミティブが UPC(Unified Procedure Call) です。 (昔の文章では throw になってますが)

最初は意図的にオブジェクト指向的なニュアンスを避けてましたが、最近は説明が面倒なので...


質問:マルチプロセッサ対応について *ma2takです。マルチプロセッサに対応しているとのことですが、この場合の「単一2次元アドレス空間」ってどんな風になるものなのでしょうか?

  • マルチプロセッサ対応ってどこかに書きましたっけ? まず,SMPのような密結合なマルチプロセッサには対応してません.ネットワークを介した素結合なものなら少しは考えているんですが.後者だと分散共有メモリのように複数台のマシンで単一アドレスを共有するものになると考えています.試しに実験的な実装は作ったことがありますが,まだあまり練られてないというのが実状です.
  • 斜め読みで読んでたら、Parallel processingとその上のMulti-byte code architectureを、Multiとprocessingが混ざって、マルチプロセッサと勘違いしたようです。(すいません)
Clone this wiki locally