ディレクトリシステム(directory system)は人間の分かりやすいネームによってオブジェクトを管理するシステムで、オペレーティングシステムの必須の構成部分である。一般的にコンピュータシステムの中には様々なオブジェクトがある。例えば、ディスクやプロセッサという物理的なオブジェクトがあるし、データやプロセスという概念的なオブジェクトもある。ディレクトリシステムはネームスペース(name space)と操作ツールを提供して、そのネームスペースの中でオブジェクトを名付けたり、格納したり、引き出したり、組織したり、保護したりする。ネームスペースの構造(ディレクトリ構造(directory structure)とも呼ばれる)はディレクトリシステムの特性と操作を左右する最も重要な部分である。ネームスペースに対しては、オブジェクトを一意に識別するだけでなく、人間にも理解しやすい必要がある。 オペレーティングシステムを構成する一つの重要な要素技術として、今まで多くのディレクトリシステムが提案されてきた。この論文では、それらのディレクトリシステムをディレクトリ構造の違いによって以下のように分類する。 ・木構造(tree structure):階層的なネームスペースで、最もよく使われている構造である。階層的な表現に向くが、非階層的な表現に弱い。 ・属性集合構造(attribute-based structure):フラットなネームスペースで、オブジェクトの属性の集合によって名付ける構造である。一つのオブジェクトのみを特定することには困難であるが、大規模なネットワークではオブジェクトの発見には非常に役立つ。 ・選択構造(selectable structure):木構造と属性集合構造とを別々に取り入れた構造である。オブジェクトを両構造からアクセスすることができる。ユーザが場合によって一つの構造を選んでオブジェクトをアクセスする。 ・統合構造(integrated structure):木構造と属性集合構造が統合された構造である。階層と非階層の両方の表現を支持することによって大規模分散システムに適することを目指す。 大規模分散システムにおいて、ディレクトリシステムはまた次の二つの問題点がある。 ・オブジェクトの共有が困難である。従来のディレクトリシステムでは、オブジェクトを共有したいユーザはその場所を探さなければならない、あるいは、そのオブジェクトを送ってもらう必要がある。また、オリジナルとコピーの不一致問題や、シンボリックリンクでの名前の不一致問題などがある。 ・一般的な環境しか提供しない。従来のディレクトリシステムは単一のネームスペースであるからである。全体システムが複雑になるにつれて、環境も複雑になり、そのため使いにくくなってきた。 この論文は、これらの二つの問題の解決を目指して、二つの新しいアイデアを提案する。 ・自動共有(automatic sharing):共有に対する制約をディレクトリ構造に埋め込み、それを基づいて自動的に共有を行う。すなわち、共有オブジェクトがディレクトリ構造に従って自動的に共有先に現れる。 ・多数の作業環境(multiple working environment):ユーザや仕事のタイプに特化した複数の作業環境を構築することができ、またそれらの環境の間の関係をディレクトリ構造に埋め込むこともできる。 新しいアイデアを実現するために、多空間ディレクトリ(Multi-Space Directory)システムという新しいディレクトリ構造を提案する。多空間ディレクトリ(以下MSDと略称する)はネストされた複数のDSs(Directory Space)からなり、DS毎に自分のDTs(Directory Trees)がある(図1)。DTは木構造で、DS以外のオブジェクトを格納する。 MSDは二種類の自動共有を提供する(図2)。 ・垂直共有(vertical sharing):内のDSは自分を含む外のDSsにあるDS以外のオブジェクトを継承する。 ・水平共有(horizontal sharing):いくつかのDSsが積集合DS(intersection-DS)によって積演算されることができ、その積集合DSにあるオブジェクトが自動的にそれらのDSsに現れる。 自動共有の結果、オブジェクトが二種類に分けられる。 ・実オブジェクト(real object):元のオブジェクトである。 ・虚オブジェクト(virtual object):自動共有による実オブジェクトのリフレクションである。実オブジェクトの変更に伴って虚オブジェクトも変更される。直接に虚オブジェクトを変更することができない。 図3にオブジェクトのすべての分類をまとめる。 MSDは多数のDSsによって多数の作業環境を構築することができる。任意のDSが一つの作業環境を提供する。その場合、そのDSはWDS(Working Directory Space)と呼ばれる(図4)。ユーザはいつもあるWDSにおいて仕事し、そのWDSにある実オブジェクトと虚オブジェクトしか見ることができない。このようにして、WDSによってオブジェクトを保護することができる。 図表図1:MSDの構造 / 図2:MSDの自動共有 / 図3:MSDにあるオブジェクトの分類 / 図4:WDS オブジェクトはMSDの構造に沿って名付けられて、二種類のパスネームがある。 ・グローバルパスネーム(global path name):MSDのルートから、すべてのオブジェクトが持つバスネームである。表示メッセージとしてだけ使われ、オブジェクトにはアクセスできない。 ・ワーキングパスネーム(working path name):WDSのルートから、そのWDSにあるオブジェクトしか持たないパスネームである。オブジェクトにアクセスできる。 MSDは以下のような点で柔軟なバスネームを提供することができる。 ・実オブジェクトは多数の虚オブジェクトを持つことができるので、同じオブジェクトは多数のバスネームを持つこともできる。 ・WDSの切り替えに従ってオブジェクトのワーキングバスネームが変わったり、なくなったり、そしてまた再び作られたりする。 ・実オブジェクトと虚オブジェクトあるいは虚オブジェクトと別の虚オブジェクトが同じパスネームを持つことができるので、オブジェクトを重ねることができる(stacked objects)。 MSDの特徴をまとめると、次の項目が挙げられる。 ・階層的な表現と非階層的な表現の双方を支持する。 ・垂直自動共有と水平自動共有の双方を支持する。 ・多数の作業環境を構築することによって、ユーザや仕事のタイプに応じて使いやすい作業環境を提供することができる。 ・自動共有の機構によって共有されたオブジェクトについて整合性が保証される。 ・WDSによる保護が従来の保護方法に比較して柔軟かつ頑健である。 MSDの構造を実際に示すために、UNIXとX Window Systemの上でMSDのプロトタイプを開発して、いくつかの典型的な応用例をそのプロタイプ上で稼働させた。実装の結果によって、MSDシステムの有効性が証明された。 |