私は今学期にオペレーティング システム クラスの TA になります。ラボでは、特に Linux カーネルを扱います。
- このクラスで取り上げるべき最も重要な Linux カーネルの概念/コンポーネントは何だと思いますか?
- 取り残されていた研究で取り上げられたことを望みますか?
Linux カーネルまたは全体的なオペレーティング システムの設計に関する提案は大歓迎です。
私は今学期にオペレーティング システム クラスの TA になります。ラボでは、特に Linux カーネルを扱います。
Linux カーネルまたは全体的なオペレーティング システムの設計に関する提案は大歓迎です。
私のリスト:
最終的には、彼らにtanenbaum の最新のオペレーティング システムを試してもらい、Mach/Hurd のマイクロカーネル セットアップや、おそらくいくつかの分散およびエキソカーネルのような他のカーネルのケース スタディを行ってもらいます。
Linux も過去の広い視野を与えてください。
超こっけいな人のために、オペレーティング システムの歴史と、なぜ今のようになっているのかを説明します。
仮想ファイル システム レイヤーは、あらゆる Linux オペレーティング システム クラスにとって絶対に必要なものです。
大学でも同じような授業を受けました。最も苛立たしいが、同時に役立つプロジェクトは、Linux オペレーティング システム用の小さなファイル システムを作成することでした。これを機能させるには、4 人のグループで約 2 ~ 3 週間かかり、実際にカーネルの内外を教えてくれます。
最近、オペレーティング システムのクラスを受講しましたが、プロジェクトはやりがいがありましたが、クラスで概念を理解するには不可欠でした。Linux のソース コード (バージョン 2.6.12 またはそのあたり)を実際に操作するという点でも、プロジェクトは楽しいものでした。
以下は、どのオペレーティング システム クラスでも取り上げるべきであると思われる、いくつかの非常に優れたプロジェクト/概念のリストです。
fork()
などexec()
)fork()
との知識を示す小さなシェルを書くexec()
ラボの場合、実際のコードを見せてそれについて話し合う、別の方法ではなくその方法で行われていると思うことについて質問する、などの方法があります。
もし私が再び大学にいたら、同期プリミティブ、同時実行性などについて、より深いレッスンに感謝したいと思います...これらは、適切なガイダンスなしではアプローチするのがより困難な難しい問題です。Paul "Rusty" Russell によるスピンロックやその他の同期プリミティブについてのスピーチに行ったのを覚えています。
もう 1 つの良いトピック (または学生向けの演習) は、仮想化に注目することです。特に、Rusty Russel の「lguest」は、オペレーティング システムを仮想化するために必要なものを簡単に紹介するために設計されています。ドキュメントもよく読んでいます。
今学期の OS コースを終えたばかりなので、参加しようと思いました。
システムプログラミングをしただけで、実際のOS自体を実際にいじっていないことに、私は少し動揺しました。OS自体にあるものにラボを配置することをお勧めします。これは、あなたがやりたいことのように聞こえます。
私が楽しんで役に立ったラボの 1 つは、独自の malloc/free ルーチンを作成することでした。難しかったですが、それなりに面白かったです。
また、メモリへのプログラムのロードやメモリ マネージャの設定 (ページングなど) についても説明します。
私は実際に春にあなたの説明 (Linux を使用した OS 設計) に完全に適合するクラスを受講しました。先生は、より広い理解を与えるのではなく、プロジェクトに焦点を合わせすぎているように感じたので、実際には非常に不満でした. たとえば、前回のプロジェクトは futex を中心に展開しました。私のパートナーと私は、彼らが何であるかをほとんど知りませんでした. プロジェクトの 1 つが、単純なデバイス ドライバなどを作成することだったらよかったのにと思います。
言い換えれば、余裕のある限り詳細に、しかし最終的には大まかに、優れた大まかな概要が提示されることを確認するのは良いことだと思います. 先生がこれらの小さな領域を細かく取り上げ、それらに集中的に集中させたように感じましたが、最終的には、Linux の内部動作に関する一般的な理解をそれほど深めることはできませんでした。
私が注目したいもう 1 つのことは、クラスからの知識を保持できなかった多くの理由は、組織化の欠如でした。トピックは毎週どこからともなく出てきて、ロードマップはありませんでした。資料に論理的な流れを与えます。心の整理は、知識を保持するための鍵です。
ネットワーキング サブシステムも非常に興味深いものです。パケットがソケット システム コールからワイヤに、またはその逆に移動するときに、パケットをたどることができます。
楽しい割り当ては次のとおりです。
メモリ マップド I/O および 1g/3g 対 2g/2g は、32 ビット オペレーティング システムのカーネル アドレス空間とユーザー アドレス空間の間で分割されます。
ハード ドライブのサイズに関する 32 ビット アーキテクチャの制限と、これがファイル システムの設計に与える影響。
実際には、64 ビットに移行することのすべての長所と短所、それが何を意味するのか、その理由、および歴史とその理由はまだありません。