[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 1407] Apert OS について




隆一です。


From: Ryuichi Naitoh <naitoh_r@soft.hitachi.co.jp>
Subject: [b-free: 1394] Apertos & オブジェクト指向 OS もろもろ (Re: BTRON2はオブジェクト指向OSか?)
Date: Fri, 17 Apr 1998 17:57:35 +0900 (JST)

> 
> 隆一です。
> 
> 

...[snip]...

> > 
> >  うーん、、OOPに好意的なんですが、「OOなOS」となる
> > と、私、「OOなOS」というのがどういうものか、よく判って
> > いないので何の意見もないんですよね。
> >  合意が取れ(て)る定義が示されるか、Apertos や Spring な
> > どの具体的なのを持ってくるかしないと議論になりにくいと感じ
> > ます。
> 
> そうですね。オブジェクト指向 OS と言っている OS もいろいろ違いはありま
> すから、具体的な OS を前提にした議論した方がいいかもしれません。
> 資料が多いものというと、やっぱり Apertos とか Spring とかでしょうか。
> Chorus も有名みたいですが、資料はそれほどあるかどうか。。。
> 
> Apertos だと、論文のほとんどは英語ですが、中には日本語のものもあります
> から、調べるのも楽ですね :-)

ということで、ちょっと手持ちの資料を読もうとしているところです。

参考にしている資料は、以下のとおりです。

Yasuhiko Yokote, 
"The Apertos Reflective Operating System: The Concept and Its Implementation"
(SCSL-TR-92-014)
Sony Computer Science Laboratory Inc. 1992 年

伊藤 純一郎
「動的に交換が可能なデバイスドライバ構築に関する研究」
慶應義塾大学 修士論文、1995 年

伊藤 純一郎
「自己反映オブジェクト指向 OS におけるシステムプログラミングに関する研究」
慶應義塾大学博士論文セミナー 1997 年

前川 守、所 真理雄、清水 謙多郎 編
「分散オペレーティングシステム UNIX の次にくるもの」
共立出版 1991 年

# しかし、古い資料ばかりだなぁ :->


この資料の中では、「分散オペレーティングシステム UNIX の次にくるもの」
を主に参照しています。

まず目的ですが、Apertos (1991 年ごろは Muse と呼ばれていたらしい)は、
たくさんのコンピュータがネットワークでつながれている環境を想定して作ら
れたようです。
特に、ネットワークへの接続は、任意の時点で、任意の場所から行われること
になるので、システム全体としては非常に柔軟である必要があります。
(静的な構成を前提にできない)

Apertos の場合、計算場モデル(CFM、Computational Field Model)というもの
を想定しています。オブジェクトは、計算場内を自由に移動し、互いに通信し
合いながら、自分の計算をすすめていきます。

この計算場の面白いところは、オブジェクト同士の関係のために 5 つの尺度
を導入したことです。

質量(mass):オブジェクトの大きさ
距離(distance):オブジェクト間の距離
引力(gravitational force):オブジェクト間の交信の頻度や交信データ量。
斥力(repulsive force):オブジェクトの周りの負荷に相当。
慣性/摩擦(inertia, friction):オブジェクトを移送する時のコストに相当。

これらの尺度を元に、計算場内でのオブジェクトの配置を決めていくわけです。
たとえば、新しいオブジェクトを計算場内に投入すると、既存のオブジェクト
との引力/斥力が働き、オブジェクトの配置が変更されます。

これは、つまり複数のマシンが計算場を構成している環境で、負荷の分散を自
動的に行うためのモデルです。たとえば、引力によって特定のマシンにオブジェ
クトがたくさん集まってしまうと、そのマシンの負荷だけが上がってしまうわ
けですが、斥力によってオブジェクトが集まるのを適当な数に抑えているわけ
です。

Apertos ではオブジェクトの定義は次のようになっています:

オブジェクト:
	独立した CPU コンテキストをもった、並行オブジェクト。
	Apertos 上で動作するオブジェクトは、それぞれの実行環境に対する
	サービス要求を行うことで、メモリ割り当て、メッセージ送受信など
	を行う。オブジェクトが CPU のコンテキストをもつということは、
	オブジェクトの切替がプロセススイッチに対応することになります。
	(code + data + single virtual CPU)

オブジェクトには、ベースオブジェクトとメタオブジェクトの 2 種類があり
ます。

ベースオブジェクト:
	メタオブジェクトからのサービスを受けるオブジェクト。

メタオブジェクト:
	オブジェクトに対して、その実行の意味を与えるオブジェクト。
	たとえば、オブジェクト x のためのスケジューリングを実現する
	ためのオブジェクト y は、オブジェクト x の実行の意味を与えて
	いるので、「オブジェクト y は、オブジェクト x のメタオブジェク
	ト」という。メタオブジェクトの呼び出しは、システムコール呼び出
	しに相当する。メタオブジェクトを入れかえることにより、API を
	自由自在に定義できる。メタオブジェクト、ベースオブジェクトの関
	係は相対的。つまり、メタオブジェクトに対するメタオブジェクト
	も存在できる。

リフレクタ:
	オブジェクトからのサービス要求を解釈し、メタオブジェクト群に
	処理を移す。


メタオブジェクトには、仮想記憶管理を行うメタオブジェクトやオブジェクト
の状態を管理するためのメタオブジェクトなどがあります。
オブジェクトとメタオブジェクトそしてリフレクタにより、ユーザプログラム
およびオペレーティングシステムのほぼ全ての機能をオブジェクトとして実現
しています。また、一部の例外を除いて、オブジェクトは実行中に交換可能に
なっています。交換可能なのは、ユーザプログラムに限らずデバイスドライバ
も交換可能です。

あと、Apertos 上で動く仮想機械 (MVM) も作られたみたいですね。
これまた、メタオブジェクトによって、命令セットの意味づけがされているよ
うです(つまり、仮想機械自体が拡張可能)。ただ、コンパイラが作られなかっ
たようで、あまり成功しなかったみたいです。



p----------------------------------------------------------------------q
| FROM R.Night                                                         |
| E-mail:                                                              |
|         rnaitoh@st.rim.or.jp                                         |
| Key fingerprint = 89 EB 77 95 40 C0 3C CC  37 A1 A7 FA 1C 66 FF D0   |
b----------------------------------------------------------------------d