私はマイクロカーネルの重要性(3)を考える - オブジェクト分析ジルコンカーネル

 ジルコンは、オブジェクトベースのカーネル、ユーザモードほぼ唯一オブジェクトハンドルリソースOSと相互作用することによって、ハンドルがアクティブとみなされ、OS固有のリソースサブシステムの範囲に答えることが可能です。

ジルコン動的なリソース管理は、以下のとおりです。プロセッサ時間、メモリとアドレススペース、デバイスI / Oメモリ、中断、信号待ちます。

アプリケーションが提供するカーネルオブジェクト:

IPC

チャンネル;ソケット; FIFO。

タスク

処理;糸を、仕事、仕事。

信号

イベント;イベント;のfutex。

メモリとアドレススペース

仮想メモリは、オブジェクト、仮想メモリアドレス空間を、バス・トランザクションの開始(バストランザクションイニシエータBTIsは、バス・マスタ/デバイスのDMA機能は、デバイスがアクセスメモリに能力を付与するために使用されてもよいことを示します)。

待ち:ポート

カーネルオブジェクトは、ドライブレディ

ブレーク;リソースを、ログ

カーネルは、オブジェクトとLK

いくつかの構造は、thread_tのオブジェクトがスレッドを含み、チャネルは、LKのレベルを含む任意のオブジェクトのオブジェクトではないように、LKの複数のレベルにカーネルオブジェクトを含みます。

カーネルオブジェクトのライフサイクル

これは、カーネルオブジェクトの参照カウントであり、カーネルオブジェクトによって生成されたほとんどのシステムコール、参照カウントが生き続けるために0よりも大きい場合、システムコールと結合することによって出力される基準カウントハンドル値。ハンドルオブジェクトは、テーブルに取り付けられた保持生存ハンドルを必要と閉じるハンドルハンドルは、カーネルは、オブジェクトの参照カウントを減少させる(()sys_closeによってなど)のハンドルに対応するテーブルから削除されます。一般的に、閉ハンドルカーネルオブジェクトの参照カウントが0にリセットされます関連付けられた最後のカーネルオブジェクトは、デストラクタは、カーネルオブジェクトを実行します。

新しいハンドルと(カーネル)を直接参照カウントの増加の原因となるオブジェクトポインタを作成する場合は、そのためのカーネルオブジェクトのライフサイクルは、それを作成したプロセスよりも長くすることができます。

スケジューラ

カーネルは、スケジューラ(ディスパッチャ)、塗布方法及びその実装に由来するC ++クラスによってオブジェクト。したがって、コードが唯一のカーネルオブジェクト一般的な意味コードの多くを懸念があり、スレッドオブジェクトのスレッドスケジューラ(ThreadDispatcher)で見つけることができ、この場合はFBL :: RefPtr <ディスパッチャ>検索に行くことができます。

カーネルオブジェクトセキュリティ

原则上,内核对象没有对安全的固有概念,不做认证检查,安全权限由Handle持有,一个进程可以含有一个对象的两个不同权限的Handle。

发布了24 篇原创文章 · 获赞 3 · 访问量 2335

おすすめ

転載: blog.csdn.net/ytfy339784578/article/details/103946543