プロセスとスレッド間のコンテキスト切り替えが発生すると、プロセススタックやセグメントごとに何が起こるのかを理解したいと思います。基本的には、コンカレント・プログラミングのコンテキスト・スイッチの間にどのように各セグメントが変更されるかを知りたい。これについて読むのに最適な場所は何ですか?オペレーティングシステムのチュートリアルやビデオをお勧めしますか?オペレーティングシステムの資料
私の質問を正しく枠組みにしているかどうかはわかりません。私に知らせてください。お勧めします。
プロセスとスレッド間のコンテキスト切り替えが発生すると、プロセススタックやセグメントごとに何が起こるのかを理解したいと思います。基本的には、コンカレント・プログラミングのコンテキスト・スイッチの間にどのように各セグメントが変更されるかを知りたい。これについて読むのに最適な場所は何ですか?オペレーティングシステムのチュートリアルやビデオをお勧めしますか?オペレーティングシステムの資料
私の質問を正しく枠組みにしているかどうかはわかりません。私に知らせてください。お勧めします。
あなたはかなり読み込まれた質問をしました。私はあなたがテキストブックで始まりそこからあなたの道を進めることをお勧めします。ほとんど今までにコンピュータサイエンスの学生が使用する本は次のとおりです。
それはちょうど、特定のオペレーティングシステム用のコードを読み始めるためにおそらく最高です:
のLinuxカーネルのkernel/sched.c
機能sched_fork()
はおそらく良い場所です読書を始めるように。まったく新しいタスクを開始するので、スケジューラーの内部およびタスクのメモリー管理の概要がわかります。
FreeBSDのカーネルのsys/kern/sched.c
function sched_switch()
は、現在のプロセスと次のプロセスを直接スワップします。おそらくLinuxの亜種より読みやすくなります。
他のオペレーティングシステムでは、コンテキストスイッチの処理方法が異なる場合があります。 (他のクールな実行時のデータ固有の最適化の中で、私のマネージャーworked on an operating system that replaced the process table generic code with code to jump to the exact next task that would be scheduled、のいずれか。)
FXR websiteはそれが本当に簡単に、さまざまなオペレーティングシステムで コードを追跡することができます。 (読んでくれてありがとうRobert、ありがとう!)FXRリストのうち、Plan9、Minix、OpenSolarisを勉強することをお勧めします。彼らはFreeBSDのツリーから、他のより関連性の高いBSD由来のディストリビューションよりも遠いです。
よろしくお願いします。ありがとうございました。コメントを読んでロジックを理解するか、コード全体のロジックを実際に理解していますか?私はそれをすべて理解できないのではないかと恐れている。このような記事や記事を複数ご提案ください。私は本当にこれらの話題をうまく使いたいと思っています –
FreeBSDコードへのリンクを提供するように更新されました - それは真剣に良いコードです。コメントとコードについては、両方を使う必要があると思います。 Linuxカーネルの開発者は、コードが独自に立って、微妙な点を指摘するためだけにコメントを使用する必要があることを強く感じています。 (KnuthのWEBプログラミングの理想的な詳細なインラインドキュメントを拒否しています)コメントだけを見ると、その大部分を見逃すことになりますが、コメントをスキップすると、彼らのやり方... – sarnold
h/wレベルの理解を望む場合は、「Intel System Programming Guide 3A」から始めてください。その後、linuxカーネルのソースコードとsarnoldの説明に進みます。
私はそれを読んだ。しかし、それは間違いなくすべてのそれらの低レベルの詳細をコーブしないのですか? –