35

私は今学期にオペレーティング システム クラスの TA になります。ラボでは、特に Linux カーネルを扱います。

  1. このクラスで取り上げるべき最も重要な Linux カーネルの概念/コンポーネントは何だと思いますか?
  2. 取り残されていた研究で取り上げられたことを望みますか?

Linux カーネルまたは全体的なオペレーティング システムの設計に関する提案は大歓迎です。

4

9 に答える 9

21

私のリスト

  1. オペレーティング システムの懸念事項:物理マシンの抽象化と拡張、およびリソース管理
  2. ビルドプロセスがどのように機能するか、つまり、アーキテクチャ固有/マシンコードがどのように埋め込まれているか
  3. システムコールの仕組みとモジュールのリンク方法
  4. メモリ管理/仮想メモリ/ページングとその他すべて
  5. POSIX やその他のシステムでプロセスがどのように生まれ、生き、死ぬか
  6. ユーザー空間とカーネルスレッド、およびプロセス/スレッドの違いは何ですか
  7. モノリシックなカーネル設計が面倒になっている理由と、代替案は何か
  8. スケジューリング (および一部の代替/ドメイン固有スケジューラー)
  9. I/Oドライバー開発、およびそれらが動的にロードされる方法
  10. 起動の初期段階と、環境をセットアップするためにカーネルが行うこと
  11. クロック、mmu レス システムなどの問題
  12. ...私は続けることができます...
  13. IPC と Unix の「すべてがファイルである」という設計上の決定をほとんど忘れていました
  14. POSIX、存在する理由、存在しない理由

最終的には、彼らにtanenbaum の最新のオペレーティング システムを試してもらい、Mach/Hurd のマイクロカーネル セットアップや、おそらくいくつかの分散およびエキソカーネルのような他のカーネルのケース スタディを行ってもらいます。

Linux も過去の広い視野を与えてください。

超こっけいな人のために、オペレーティング システムの歴史と、なぜ今のようになっているのかを説明します。

于 2009-06-15T14:55:55.540 に答える
13

仮想ファイル システム レイヤーは、あらゆる Linux オペレーティング システム クラスにとって絶対に必要なものです。

大学でも同じような授業を受けました。最も苛立たしいが、同時に役立つプロジェクトは、Linux オペレーティング システム用の小さなファイル システムを作成することでした。これを機能させるには、4 人のグループで約 2 ~ 3 週間かかり、実際にカーネルの内外を教えてくれます。

于 2009-06-15T15:05:05.503 に答える
6

最近、オペレーティング システムのクラスを受講しましたが、プロジェクトはやりがいがありましたが、クラスで概念を理解するには不可欠でした。Linux のソース コード (バージョン 2.6.12 またはそのあたり)を実際に操作するという点でも、プロジェクトは楽しいものでした。

以下は、どのオペレーティング システム クラスでも取り上げるべきであると思われる、いくつかの非常に優れたプロジェクト/概念のリストです。

  • ユーザー空間とカーネル空間の違い
  • プロセス管理 (つまり、、fork()などexec())
  • fork()との知識を示す小さなシェルを書くexec()
  • システム コールの仕組み、つまりユーザー モードからカーネル モードへの切り替え方法
  • Linux カーネルに単純なシステム コールを追加し、そのシステム コールを呼び出すテスト アプリケーションを作成して、動作を実証します。
  • カーネル内外の同期
  • ユーザー空間に同期プリミティブを実装する
  • カーネル空間で同期プリミティブがどのように機能するかを理解する
  • シングル CPU アーキテクチャと SMP の間で同期プリミティブがどのように異なるかを理解する
  • Linuxカーネルで同期プリミティブを使用する方法の知識を示す単純なシステムコールをLinuxカーネルに追加します(つまり、タスクリストロックなどを取得する必要がありますが、kmallocする必要がある場所にもします。ロックを保持している間は実行できません (GFP_ATOMIC を使用しない限り、実際にはすべきではありません))
  • スケジューリング アルゴリズム、および Linux カーネルでスケジューリングが行われる方法
  • 独自のスケジューリング ポリシーを追加して Linux タスク スケジューラを変更する
  • ページングとは何ですか?それはどのように機能しますか?なぜページングがあるのですか?Linux カーネルではどのように機能しますか?
  • システム コールを Linux カーネルに追加します。アドレスを指定すると、そのアドレスが存在するかどうか、またはスワップ アウトされているかどうか (またはページングを含む他の割り当て) が通知されます。
  • ファイルシステム - それらは何ですか? それらはなぜ存在するのですか?それらは Linux カーネルでどのように機能しますか?
  • ディスク スケジューリング アルゴリズム - なぜ存在するのか? 彼らは何ですか?
  • VFS を Linux カーネルに追加する
于 2009-06-17T14:34:59.590 に答える
4

ラボの場合、実際のコードを見せてそれについて話し合う、別の方法ではなくその方法で行われていると思うことについて質問する、などの方法があります。

もし私が再び大学にいたら、同期プリミティブ、同時実行性などについて、より深いレッスンに感謝したいと思います...これらは、適切なガイダンスなしではアプローチするのがより困難な難しい問題です。Paul "Rusty" Russell によるスピンロックやその他の同期プリミティブについてのスピーチに行ったのを覚えています。

于 2009-06-15T15:12:58.230 に答える
4

もう 1 つの良いトピック (または学生向けの演習) は、仮想化に注目することです。特に、Rusty Russel の「lguest」は、オペレーティング システムを仮想化するために必要なものを簡単に紹介するために設計されています。ドキュメントもよく読んでいます。

于 2009-06-16T11:23:24.710 に答える
4

今学期の OS コースを終えたばかりなので、参加しようと思いました。

システムプログラミングをしただけで、実際のOS自体を実際にいじっていないことに、私は少し動揺しました。OS自体にあるものにラボを配置することをお勧めします。これは、あなたがやりたいことのように聞こえます。

私が楽しんで役に立ったラボの 1 つは、独自の malloc/free ルーチンを作成することでした。難しかったですが、それなりに面白かったです。

また、メモリへのプログラムのロードやメモリ マネージャの設定 (ページングなど) についても説明します。

于 2009-06-15T14:56:34.213 に答える
4

私は実際に春にあなたの説明 (Linux を使用した OS 設計) に完全に適合するクラスを受講しました。先生は、より広い理解を与えるのではなく、プロジェクトに焦点を合わせすぎているように感じたので、実際には非常に不満でした. たとえば、前回のプロジェクトは futex を中心に展開しました。私のパートナーと私は、彼らが何であるかをほとんど知りませんでした. プロジェクトの 1 つが、単純なデバイス ドライバなどを作成することだったらよかったのにと思います。

言い換えれば、余裕のある限り詳細に、しかし最終的には大まかに、優れた大まかな概要が提示されることを確認するのは良いことだと思います. 先生がこれらの小さな領域を細かく取り上げ、それらに集中的に集中させたように感じましたが、最終的には、Linux の内部動作に関する一般的な理解をそれほど深めることはできませんでした。

私が注目したいもう 1 つのことは、クラスからの知識を保持できなかった多くの理由は、組織化の欠如でした。トピックは毎週どこからともなく出てきて、ロードマップはありませんでした。資料に論理的な流れを与えます。心の整理は、知識を保持するための鍵です。

于 2009-06-17T14:02:27.393 に答える
3

ネットワーキング サブシステムも非常に興味深いものです。パケットがソケット システム コールからワイヤに、またはその逆に移動するときに、パケットをたどることができます。

楽しい割り当ては次のとおりです。

  • netfilter を使用してステートフル ファイアウォールを作成する
  • HTTP ロードバランサーを作成する
  • シンプルなトンネリング プロトコルの設計と実装
于 2009-06-15T15:15:07.540 に答える
1

メモリ マップド I/O および 1g/3g 対 2g/2g は、32 ビット オペレーティング システムのカーネル アドレス空間とユーザー アドレス空間の間で分割されます。

ハード ドライブのサイズに関する 32 ビット アーキテクチャの制限と、これがファイル システムの設計に与える影響。

実際には、64 ビットに移行することのすべての長所と短所、それが何を意味するのか、その理由、および歴史とその理由はまだありません。

于 2009-06-15T15:12:30.277 に答える