2011-01-24 19 views
9

私は自分のオペレーティングシステムの教科書を見ていましたが、私は「メカニズムとポリシーを分ける」というコンセプトに遭遇しました。私はそれが何を意味するのか分からなかったので、私が認めなければならないウィキペディアをチェックしました。ポリシーとメカニズム

メカニズムの分離と ポリシー[1] コンピュータサイエンスの設計原理です。それはにどの操作について行われ た意思決定によると メカニズム(オペレーションの 許可およびリソースの 配分を制御するシステムの部分 実装が)ない ディクテーション(または過度に制限する)必要があることを 方針を述べて authorize、および に割り当てるリソース。

誰かがこれをトーンダウンして、可能であればいくつかの例で説明してください。separation of mechanism and policyは、オペレーティングシステムのコンテキストではどういう意味ですか?

答えて

12

これは、X-Windowsシステムでこれが何を意味しているのですか。

X-Windowsは基本レベルで、「ウィンドウ」と呼ばれる画面領域を操作する方法を提供します。また、ウィンドウ内で発生するイベントを受け取る方法も提供します。

しかし、X-Windowsでは、タイトルバー、メニュー、スクロールバーなどについては何も言及していません。また、特定のアプリケーションがウィンドウを画面全体に占有させるルールや、ウィンドウを画面外に移動させる必要がある場合には、何も言いません。これは、あるアプリケーションがトップレベルのウィンドウで作業する前に他のアプリケーションに許可を求めるよう強制する方法を提供しますが、そのようなアプリケーションはベースサーバーの一部として提供しません。

X-Windowsはすべてポリシーについてではなく、メカニズムに関するものです。

ポリシーは、ウィジェットツールキット、ウィンドウマネージャー、および後でシステムに追加されるその他のものによって提供されます。たとえば、多くのウィジェットツールキットでは、スクロールバーに重なり合うサブウィンドウのセットを使用し、これらのサブウィンドウのマウスイベントを尋ねるので、クリック操作とドラッグ操作を検出してサブウィンドウを適切に応答させることができます。

これは、GNOMEとKDEが同じディスプレイに表示され、パネルやデスクトップについて何も知らない本当の古いX-Windowsプログラムが現代システムでうまく動作する理由です。

+0

ええ、特に(コマンドラインから)すべてのXアプリケーションを起動するときに、元のポリシーがパスジオメトリだったからです。 – Joshua

4

* nixオペレーティングシステムに関して、一般的な考え方はセキュリティシステムがカーネルによって実装されており、認証システムがユーザー空間によって実装されているということです。

効果的な分離には、非常に多くの人が派生する(正当なものであれ他のものであれ)すべての根本的なルートとsuidのバイナリが必要です。セキュリティを損なわずに認証機構を完全に入れ替えることができます(sshはこれを行います。なぜなら、Windows上で文書化されていないAPIを使用しているからです)。

+0

+1 - もう一つの優れた原則の例。 Unixは、実際には、機能ベースのセキュリティの実装を可能にするためのほとんど(しかし、あまりにも)十分なメカニズムを持っています。 Unixドメインソケット上を通過するファイルディスクリプタは、これにとって非常に重要な機能の1つの基本的なものです。しかし、それは、ユーザープロセスでさえ 'exec'のためのやり方のように、より多くの特権を必要とするプロセスが必要です。 – Omnifarious

+0

@Omnifarious:実際には最後の方が簡単です。 fork()とexec()の間の特権を削除します。しかし、Vistaのサンドボックス化に相当するものはありません。 – Joshua

+0

しかし、あなたがユーザープロセスの場合、どのように権限を削除しますか?たとえば、 'nobody'の権限を持ち、ソケットを作成する権限がありません。また、Vistaのサンドボックス化は、ファイル記述子の受け渡しで実装できます。 – Omnifarious

関連する問題