タグ付けされた質問 「operating-systems」

ハードウェアとアプリケーションの間のインターフェースとなるソフトウェアの原理に関する質問。

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

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


1
純粋なデマンドページング中のスワップスペース管理
以下は、OSのホーム割り当てを行っているときに出くわした疑いです。しかし、それは単純なコーディングの質問よりも概念ベースのように思われるので、私は宿題タグがこれに適しているとは思いません。 一定量のRAMとスワップメモリ​​を指定して、同時に実行されている複数のプロセスの純粋なデマンドページングスキームで、スワップスペースに対して次の2つのケースで何が起こるか プロセスでページフォールトが発生し、RAMに使用可能な空きフレームがないため、プロセスのカーネルフレームのチャンクのページの1つをスワップに書き出す必要があります(簡単にするため、コピーは考慮していません) -on-write case)。明示的に、スワップスペースのどこにこのフレームが書き込まれ、そのためにどのデータ構造を更新する必要がありますか? プロセスが特定のページをページインする必要がある場合、それはスワップメモリ​​のどこにあり、その特定のページがスワップに存在するかどうかをどのようにして知るのでしょうか? ご想像のとおり、純粋な需要管理スキーム中にスワップスペースをどのように管理するか、およびどのデータ構造が不可欠であるかを理解することが困難です。回答のリンクを参照していただければ幸いです(「オペレーティングシステムの概念-Silberschatzによる第8版で検索しましたが、質問に対する明確な回答が見つかりませんでした)。

5
OS設計で消費電力を削減できるのはなぜですか?
私は、AndroidやiOSのようなOSがバッテリー寿命を改善するために何らかの形で最適化されていることを読みました。 私の理解では、私はあなたが必要な操作の数を減らすことによって、アプリケーションをスピードアップすることができると思いますので、CPUは、一定時間内に操作が一定数を実行していることですが、CPUがまだ行いますので、Xに操業をyの時、それはいけません力に影響? また、プロセスがより多くのRAMを使用する場合、それはより多くの電力を消費しますか?

4
自己リンクと親リンク(。および..)をディレクトリエントリに保存する理由
階層型ディレクトリ構造にファイルを保存する以外の機能を持たない一部の組み込みデバイスを対象としたファイルシステムについて考えてみます。このファイルシステムには、UNIXやWindowsなどのシステムで使用できる多くの操作がありません(たとえば、アクセス許可は完全に異なり、ディレクトリに格納されているメタデータに関連付けられていません)。このファイルシステムでは、ハードリンクやソフトリンクの種類を許可しないため、すべてのファイルには厳密なツリー構造で一意の名前が付けられます。 ディレクトリ自体とその親へのリンクを、ディレクトリを表すディスク上のデータ構造に格納することにはメリットがありますか? ほとんどのunixファイルシステムは.、..ディスク上にエントリを持っています。なぜVFS(汎用ファイルシステムドライバー)レイヤーでそれらを処理しないのでしょうか。これは歴史的な遺物ですか?正当な理由はありますか?そうであれば、正確に、それが私の組み込みシステムに関連しているかどうかを判断できますか?

3
「マップ」とはどういう意味ですか?
私はさまざまなCS教育資料でこの用語に何度も遭遇しました。 L2 CS162(UCバークレー): メモリマップI / O L4 CS162(UCバークレー): メモリマップファイル L24 CS61(UCバークレー): 「メモリマップI / O」:CPUアドレス空間にマップされたデバイス制御/データレジスタ 「マッピング」をグーグルで行った後でも、記事Map_(higher-order_function)を入手しましたが、 あまりわかりませんでした。 さらに、ウィキペディアの記事をbitmap読んで、コンテキストの意味を理解しようとしました: ビット配列は、あるドメイン(ほとんどの場合、整数の範囲)からセット{0、1}の値へのマッピングです わかりませんが、上記のコンテキストでは、データ変換について聞こえます。 CSブックを読んだ後、この段落だけが見つかりましたが、「マッピング」の意味がわかりませんでした。 メモリマッピングLinuxは(他の形式のUnixと共に)、仮想メモリ領域の内容をディスク上のオブジェクトに関連付けることにより、メモリマッピングと呼ばれるプロセスを初期化します。 検索結果としてMapReduceも取得しました。ここで、mapは「単純な操作がシーケンスのすべての要素に適用される可能性がある並列計算のイディオム」と説明されています。 私はまだこの用語について混乱しています。私が言及したコンテキストで「マップ」が何を意味するのかを誰かが説明できますか?

5
安全でない状態が常にデッドロックを引き起こさないのはなぜですか?
私はGalvinのオペレーティングシステムを読んでいて、以下の行に出くわしました。 ただし、すべての安全でない状態がデッドロックであるとは限りません。安全でない状態はデッドロックにつながる可能性があります 誰かがどのようにデッドロックを説明できますか!=安全でない状態?ここでも同じラインを捉えました 安全なシーケンスが存在しない場合、システムは危険な状態にあり、デッドロックを引き起こす可能性があります。(すべての安全な状態でデッドロックは発生しませんが、すべての安全でない状態がデッドロックを引き起こすわけではありません。)

1
エンドツーエンドの原則を形式化できますか?
1990年代後半、私が大学院にいたとき、 JHサルツァー; DPリード; DDクラーク:システム設計におけるエンドツーエンドの議論。ACM Trans。計算。システム。2(4):277-288、1984。DOI= 10.1145 / 357401.357402 すべての大学のすべてのオペレーティングシステムクラスで読む必要があり、インターネットの設計の基礎となる主要な指針の1つであるように思われます。(例:J Kempf、R Austein(eds)、およびIAB、「Rise of the Middle and the Future of End-to-End:Reflections on the Evolution of the Internet Architecture」、RFC 3724、2004年3月。 ) エンドツーエンドの原則は次のように述べています(Saltzer et al。、1984): [if]問題の機能が完全かつ正確に実装できるのは、通信システムのエンドポイントにあるアプリケーションの知識と助けを借りた場合のみです。...問題のある機能を通信システム自体の機能として提供することは、可能。[ただし]通信システムによって提供される機能の不完全なバージョンは、パフォーマンスの向上に役立つ場合があります。 またはもっと簡単に(要約から): エンドツーエンドの議論は、システムの低レベルに配置された機能は、その低レベルで提供するコストと比較した場合、冗長であるか、またはほとんど価値がない可能性があることを示唆しています。 しかし、私は自分の経験(インターネットアーキテクチャではなくコンピュータアーキテクチャ)でエンドツーエンドの原則を適用することにほとんど成功していません。原理は「詩」(つまり、数学的に定義されていない一連の用語を含む英語の散文では)として記述されているので、「問題の機能は、アプリケーションの知識と助け。」しかし、アプリケーションの「知識とヘルプ」はもちろんのこと、「問題の機能」とは何でしょうか。 例:(インターネットとは異なり)オンチップネットワークではパケットをドロップできませんが、バッファリングは非常に制限されているため、デッドロックを回避または回復する方法が必要です。一方で、アプリケーションもデッドロックを解消する必要がありますよね?ですから、私は一般的なケース(デッドロックなし)を高速にして、アプリでデッドロック回避をオフにするべきだと考えるかもしれません。これは、実際、私たちがAlewifeとFuguで試したものです(Mackenzie et al。、Exploiting Two-Case Delivery for Fast Protected Messaging、Int'l Symp High-Perf Comp Arch、(HPCA-4):231-242、 1998.またはJohn Kubiatowiczの論文。)それは「機能しました」(バッファーがいっぱいになったときにインターコネクトにプロセッサーを中断させ、OSにソフトウェアバッファリングを追加させることによって)が、私は学界や業界(その作成者である私たちを含む)で誰も見たことがないHPCAペーパー)アイデアを再現しようと競争している。したがって、ネットワークでのデッドロックの回避は、アプリケーションレベルのデッドロックの回避と同じ「問題の機能」ではないか、エンドツーエンドの原則が間違っています。 …

1
2レベルのスケジューラはスワッピングの管理にのみ役立つのですか?
2レベルのスケジューリングは、システムがRAMに収まらないより多くのプロセスを実行している場合に役立ちます。低レベルのスケジューラは常駐プロセスを切り替え、高レベルのスケジューラはプロセスのグループを入れ替えます。 Andrew Tanenbaumのオペレーティングシステム:設計と実装、第1版では、2レベルのスケジューリングについて他に言及していません。演習2.22では、2レベルのスケジューリングを使用する理由を尋ねています。それが読解チェックとしてあるのか、それとも本文に明記されていない他の理由があるのか​​はわかりません。 2レベルのスケジューリングは、メモリ以外のリソースの競合を管理するのに役立ちますか?

2
誰かがこの図をスラブ割り当てについて説明できますか?
スラブ割り当ての仕組みと、通常のページングとは異なる、または優れている理由を理解しようとしています。 私は、この図見つけ、私はそれがより説明があった場合には参考になると信じています。 いくつかの質問: 3KBと7KBのアイテムは何を表していますか?彼らはどういうわけか関連している必要がありますか?なぜそれらはそのようにパッケージ化されているのですか? キャッシュ列で、キャッシュは灰色のボックスですか、それとも灰色のボックス内の白/青のボックスですか?灰色のボックスはキャッシュのパッケージですか? スラブは単なる青いボックスですか、それとも「物理的な隣接ページ」全体がスラブですか? 私は本当にいくつかの助けに感謝します。ありがとう!

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

3
キーボードエコー中にCPUが関与するのはなぜですか?
現在、コンピューターサイエンスの試験に向けて勉強していて、やや困惑している概念に出くわしました。 キーボードでキーを入力すると、ASCII文字がCPUに送信されます。この文字を受け取ると、CPUは同じ文字を画面に出力します。このプロセスはエコーと呼ばれます。CPUを使用する代わりに、このエコープロセスをキーボード/スクリーンユニット内で実行して、CPUが他の有用な作業を自由に行えるようにしないのはなぜですか。 今、直感的には、キーボード/画面ユニットが定義されておらず、CPUが相互接続ネットワークを介して画面とキーボードの間の通信を担当するデバイスであるためです。しかし、キーボード/スクリーンユニットが言及されているという事実は、重要な概念が欠けていることを意味しているように感じるかもしれません。これは事実ですか?なぜエコープロセスにCPUを使用するのですか?

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

4
オペレーティングシステムのコンテキストで割り込みとはどういう意味ですか?
私は、夏の間、Silberschatz、Galvin Gagne(第8版)によるオペレーティングシステムコンセプトを読むことにしました。オペレーティングシステムに関連する割り込みとその役割-私を混乱させるトピックにたどり着きました。 テキストは、オペレーティングシステムが「init」などの最初のプロセスを開始し、「イベント」が発生するまで待機することを示しています。このイベントは通常、割り込みによって通知されます。また、割り込みはハードウェアまたはソフトウェアのどちらからでも発生する可能性があると述べています。これはどのように機能しますか?オペレーティングシステムは割り込みによって駆動されていますか? 私はいくつかの全体像の理解を探しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.