• 検索結果がありません。

ドメイン

ドキュメント内 TEF021-S _ja (ページ 36-40)

第 2 章 SMP T-Kernel 仕様の概念

2.8 ドメイン

2.8.1 ドメインの概念

ドメインは、カーネルオブジェクトの所在する論理的な場所を示す。ドメインは MP T-Kernel で導入された機能 であり、T-Kernel 1.00 仕様にはない。

カーネルオブジェクトは、生成時にドメインを指定することができる。指定されたドメインが、そのオブジェク トが所属するドメインとなる。カーネルオブジェクトは必ずいずれかのドメインに所属する。もし生成時にドメイ ンが指定されなかった場合は、デフォルトのドメインとして後述のカーネル・ドメインが自動的に選ばれる。

ドメインは、次の機能を実現する。

(1) カーネルオブジェクトの ID 番号の検索機能

カーネルオブジェクトは、生成時に指定されたオブジェクト名称と所属するドメインから、ID 番号を検索するこ とができる。

(2) カーネルオブジェクトに対するアクセス保護機能の提供

カーネルオブジェクトは、生成時に指定された保護属性に従い、他のオブジェクトからの操作に対しアクセス保 護が行われる。

たとえば、プライベート属性のオブジェクトを操作できるタスクは、同一のドメインに所属するタスクのみであ る。

【仕様決定の理由】

AMP、または AMP と SMP の混在モデルでは、カーネルオブジェクトがどのプロセッサ(カーネル)に所属しているか を示すものが必要である。また、他のプロセッサのカーネルオブジェクトの ID 番号を取得する機能や、プロセッサ 間におけるカーネルオブジェクトに対するアクセス保護機能も必要である。これらの機能をまとめ、カーネルオブ ジェクトの所在を示す機能としてドメインを導入した。

ドメインの機能は、プロセッサ間やカーネル間に限らず、大規模なソフトウェアにおいて、カーネルオブジェク トのグループを作るのに有効である。

たとえば、T-Kernel 1.00 仕様では、動的に割り当てられた ID 番号を他のタスクに伝えるためには、ID 番号を変 数として共有したり、何らかの通信を行うなどの手段が必要である。大規模なソフトウェアにおいては、目的のオ ブジェクトの ID 番号を取得する正規の方法があることが望ましい。そこでオブジェクト名称による ID 番号検索の 機能を考えたとき、名称の重複が問題となる。個々のオブジェクトについて、大規模なシステム全体で固有の名称 を付けることは困難であり、また ID 番号の自動割当ての利点を損なってしまう。そこで、名前の有効な範囲を示す 名前空間として、ドメインを使用することにより、プロセッサ毎に、または、アプリケーションを構成するソフト ウェア部品やミドルウェアの単位で、自由に名称をつけることが可能となる。

これらの検討を踏まえて、ドメインは汎用的な機能として MP T-Kernel に導入することとした。

2.8.2 カーネル・ドメインとドメインの階層構造

ドメインもカーネルオブジェクトの一つである。よって、他のオブジェクトと同様にシステムコールにより生成、

削除され、また ID 番号により識別される。

例外として、カーネル・ドメインがある。カーネル・ドメインは最初に生成されるドメインである。SMP T-Kernel では、システムに一つのカーネル・ドメインが存在する。カーネル・ドメインは SMP T-Kernel の初期化時に生成され、

削除することはできない。

ドメイン自身もオブジェクトであるので、他のいずれかのドメインに所属する。よって、[図 7]に示すように、ド メインはツリー状の階層構造をとることができる。ただし、カーネル・ドメインは最初に生成されるので他のドメイ ンに所属することはできない。そこでカーネル・ドメインは自身に所属しているとみなす。カーネル・ドメインはド メインの階層構造におけるルートでもある。

[図 12] ドメインの階層構造

【補足事項】

SMP T-Kernel ではカーネル・ドメインはシステム全体で一つのみ存在するが、AMP T-Kernel では各プロセッサに 割り当てられた AMP T-Kernel 毎にカーネル・ドメインが存在する。アプリケーションからみたカーネル・ドメインは、

各 MP T-Kernel に一対一で対応し、カーネルオブジェクトがどの MP T-Kernel 上に存在するかを示す。

2.8.3 ID 番号の検索機能

T-Kernel ではオブジェクトの ID 番号はオブジェクト生成時に動的に割り当てられる。よって、プログラム上で ID 番号を静的に知る事はできない。そこで、ドメインはそれに所属するオブジェクトの ID 番号を検索する機能を提 供する。

オブジェクトは、生成時にオブジェクト名称を指定することができる。オブジェクト名称は、そのオブジェクト が所属するドメインの同一種のオブジェクトの中で固有でなくてはならない。たとえば、一つのドメインに所属す るセマフォの中で同一のオブジェクト名称を付けることは許されない。

あるオブジェクトについて、そのオブジェクトの所属するドメインと、オブジェクト名称から、オブジェクトの ID 番号を検索し取得することができる。具体的には、システムコール tk_fnd_XXX(XXX はオブジェクト種別毎に変 わる)に引数としてドメイン ID とオブジェクト名称を渡す事により、戻値として該当するオブジェクトの ID 番号 を得る事ができる。

オブジェクト生成時に、オブジェクト名称を指定しないことも可能である。その場合、そのオブジェクトはオブ ジェクト名称を持たないこととなる。オブジェクト名称を持たないオブジェクトは、ID 番号の検索機能を利用する ことはできない。

2.8.4 ドメインとアクセス保護属性

オブジェクトは生成時にアクセス保護属性を指定することができる。アクセス保護は、オブジェクトに対する操 作に対し、所属するドメインとそのオブジェクトに指定されたアクセス保護属性に応じた制約を与え、オブジェク トの保護機能を実現する。

オブジェクトに指定可能なアクセス保護属性は以下の種類がある。

カーネル ドメイン

ドメイン 1

ドメイン 2

ドメイン 3

ドメイン以外の オブジェクト

ドメイン以外の オブジェクト

ドメイン以外の オブジェクト

ドメイン以外の オブジェクト

Copyright © 2006-2017 T-Engine Forum. All Rights Reserved.

(1) プライベート(private) 属性

プライベート属性のオブジェクトは、自身と同一のドメインに属するプログラム(タスク、ハンドラ)からのみ アクセスが可能である。他のドメインに属するオブジェクトからはアクセスできない。

(2) プロテクト(protected) 属性

プロテクト属性のオブジェクトは、ドメインの階層構造において、自身が属するドメイン以下のドメインに属す るプログラム(タスク、ハンドラ)からのみアクセスが可能である。

カーネル・ドメインに属するプロテクト属性のオブジェクトは、SMP T-Kernel 上の全てのプログラムからアクセ ス可能となる。

(3) パブリック(public) 属性

ドメインによるアクセス制限を受けることはない。全てのプログラム(タスク、ハンドラ)からアクセスができ る。

アクセス保護属性を指定しなかったオブジェクトは、デフォルトとしてパブリック属性となる。

アクセス保護属性はオブジェクトの生成時にのみ指定可能であり、動的に変更はできない。

ドメイン自体は全てパブリック属性とし、アクセス保護属性を指定することはできない。

オブジェクトを生成する際に、そのシステムコールを発行するコンテキストから、アクセス保護によりアクセス できないオブジェクトを生成することはできない。たとえば、あるタスクが自タスクと異なるドメインにプライベ ート属性のオブジェクトを生成することはできない。なお、後述の保護レベルによる制限により、アクセスが可能 な場合はこの限りではない。また、アクセスが可能であれば、他のドメインへのオブジェクトの生成は可能である。

【補足事項】

アクセス保護の目的は以下の二点である。

第一に、ドメインの内部を隠蔽し、誤ったアクセスから、オブジェクトを保護することである。大規模なアプリ ケーションでは、プログラムを部品化、モジュール化し、モジュール内部を隠蔽することが重要である。ドメイン の導入により、アプリケーションを構成するオブジェクトのグループを作ることが可能となった。このグループに アクセス保護の機能を加えることにより、ドメイン内部を隠蔽し、プログラムをモジュール化することが可能とな る。ただし、アクセス保護機能が想定するのは、誤った操作からの保護である。悪意あるプログラムからの保護、

つまりセキュリティの機能までは対応しない。

第二に、オブジェクトに対するアクセスの範囲を明確にすることにより、実装の最適化が期待できる。

【仕様決定の理由】

アクセス保護の目的を、誤った操作からの保護とし、悪意あるプログラムに対するセキュリティに対応しなかっ たのは以下の理由による。

セキュリティの機能は重要ではあるが、これに対応するにはオブジェクトのアクセス保護だけでは不十分である。

他の多く機能についても改変が必要であり、これは T-Kernel 1.00 仕様に対する互換性を損なう結果となる(互換 性の部分がセキュリティホールとなる)。これは MP T-Kernel の仕様検討としての範疇を超えており、また T-Kernel 1.00 仕様との互換性を重視するという MP T-Kernel の設計方針とも合致しない。よって、セキュリティへの対応は MP T-Kernel の仕様外とした。

2.8.5 アクセス保護の対象と制限

アクセス保護は、自身に対する他からのアクセスを制限する。自身から他へのアクセスの制限ではない。たとえ ば、プライベート属性のタスクは、他のドメインに属するタスクからのアクセスを受けないが、他のドメインに属 するパブリック属性のオブジェクトに対してアクセスできる。

ただし、以下の項目については、例外事項とする。

(1)デバッグサポート機能

T-Kernel/DS が提供するデバッガサポート機能は、デバッガが OS の内部状態を参照や実行のトレースを行うため

ドキュメント内 TEF021-S _ja (ページ 36-40)