タグ付けされた質問 「os-kernel」


2
マイクロカーネルとモノリシックカーネルのパフォーマンス
マイクロカーネルは、すべてのドライバーをユーザー空間プログラムとして実装し、カーネル自体にIPCなどのコア機能を実装します。ただし、モノリシックカーネルは、ドライバーをカーネルの一部として実装します(たとえば、カーネルモードで実行されます)。 マイクロカーネルはユーザー空間のドライバー間でメッセージの受け渡しを処理する必要があるため、モノリシックカーネルよりも遅いといういくつかの主張を読みました。これは本当ですか? 長い間、ほとんどのカーネルはモノリシックでした。これは、ハードウェアの速度が遅すぎてマイクロカーネルをすばやく実行できないためです。ただし、GNU / Hurd、Mac OS X、Windows NTラインなど、多くのマイクロカーネルとハイブリッドカーネルが存在するようになりました。 それで、マイクロカーネルのパフォーマンスについて何か変更はありましたか?このマイクロカーネルへの批判は今日でも有効ですか?

2
マネージコードを実行する最小限のカーネルを使用する場合の潜在的な落とし穴は何ですか?
マネージコードインタープリター/ランタイムとして機能する非常に小さなネイティブの下位カーネルと、非ネイティブマシン言語(Javaバイトコード、CILなど)にコンパイルされた上位の上位カーネルに基づいてオペレーティングシステムを構築するとします。同様のオペレーティングシステムの例は、SingularityとCosmosです。 純粋にネイティブなソリューションとは対照的に、この種のインフラストラクチャを備えたOSを作成する際に、どのような落とし穴と開発上の課題が存在しますか?

3
割り込み後、プロセッサはどのようにカーネルコードを検出しますか?
割り込みが発生すると、プロセッサは現在のプロセスを横取りし、カーネルコードを呼び出して割り込みを処理します。プロセッサは、カーネルに入る場所をどのようにして知るのですか? 各割り込みラインにインストールできる割り込みハンドラがあることを理解しています。しかし、プロセッサーは「ハードワイヤードロジック」のみを実行するため、割り込みハンドラー自体、またはハンドラーの前に実行されるコードのいずれかを指す定義済みの場所が存在する必要があります(1つの割り込み行に複数のハンドラーがあるため、後者)。

1
すべてのシステムコールがブロックされていますか?
システムコール時に発生するユーザー空間とカーネル空間の切り替えについて説明している記事を読みました。記事によれば アプリケーションは、ユーザーモードの実行を再開する前に、システムコールの完了を予期します。 さて、今まで私はいくつかのシステムコールがblockingであると仮定していましたが、他はそうnon-blockingです。上記のコメントで、私は今混乱しています。これは、すべてのシステムコールがブロックされていることを意味しますか、または概念を誤解しましたか?


2
ファイルとは何ですか?
ストレージだけでなく、ストレージに関連しないprocfsや/ dev / null(または任意のヒューズベースのファイル)などの抽象化も含むファイルの正式な定義を探しています。 これまでのところ、すべてのファイルは、 識別できる 名前を付けることができます(通常は階層構造で編成されます) バイトストリームとしてアクセスできます 通常、権限とその他の(システム固有の)メタデータを提供します しかし、これまでに読んだOSの本では、有用な正式な定義を見つけることができませんでした。

1
MMUを使用しないプロセッサ用のマルチタスクオペレーティングシステムの作成
一部のARMプロセッサ用の趣味のオペレーティングシステムを書くことを考えています。ARM MPUを搭載した人気のあるシングルボードコンピューターはたくさんあるので、そのうちの1つを購入したかっただけです(より多くのオープンドキュメントがあるコンピューターを選択)。本当に十分なメモリを備えたボードでさえ、メモリ管理ユニットを備えたMPUを持っていないことに気づいたとき、私は驚きました。 私は常にi386 +プロセッサで作業しており、それ以外は何もしていないため(一部のMicrochip PICを除く)、私は混乱しており、書かれたOSと比較すると機能が制限されない機能するオペレーティングシステムを書くことができるかどうかわかりませんMMUを備えたMPU用。 MMUを「置換」または「シミュレーション」するためのいくつかの解決策を考えることができ、いくつか質問があります。 16ビットモードと32ビットモードのIntelプロセッサでは、セグメントとセグメントセレクターを使用して、異なるタスクで異なるメモリブロックを使用する方法があります。これは、x86でタスクスイッチを実行するときに、セグメントレジスタの内容を変更することでメモリ空間を変更できることを意味します。ARMアーキテクチャで使用できるメモリセグメンテーションの一般的な概念はありますか? 実行可能ファイルの代わりにリンクされたオブジェクトファイルをロードすることで、ページング構造を使用してメモリをマップした場合と同じ方法で、再配置(修正)または位置独立コードを使用してメモリの一部にタスクをポイントできます。これで十分でしょうか? ARMプロセッサのメモリ保護ユニットについても読んだことがあります。これらは役に立ちますか? MMUのないシステムでタスクを管理する「通常の」方法はありますか?

1
ハイパーバイザーとexokernelの違い
ハイパーバイザー(第一種)は、ハードウェアへのゲストの手術システムの要求を管理し、作成した仮想マシンを実行するソフトウェアです。exokernelは LETのプログラムがハードウェアに直接アクセスすることを、手術システムのカーネルで実装しabstactionsは、そのアーキテクチャのための実行可能ファイルの種類を実行することを特定のライブラリのサポートで、または。 どちらもハードウェアとアプリケーションソフトウェア間の抽象化レイヤーです。 2つとも、同じマシンで異なる実行可能ファイル/ソフトウェア/オペレーティングシステム/何でも実行できます では、2つの違いは何ですか?

2
Microsoft Singularity:なぜクローズされたか[クローズド]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、コンピューターサイエンススタック交換のトピックになるようにします。 6年前休業。 私はこの1つの研究プロジェクトについて話している: しかし、MSは2008年にそれを閉じました。高いパフォーマンス(従来のモノリシックカーネルに対して30 +%速い)、はるかに安全ななど、私はそれについて多くの記事を読みました。したがって、OS設計の革命であるはずです。なぜ彼らはそれをしたのですか?彼らがそうしなかったら私は本当に幸せです...だから私が持っている唯一の質問:なぜですか?それを破壊した「有能なマネージャー」か何か他のものでしたか?私は多くの激しい月の間それについて考えています...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.