実行中のプロセス/キューに入れられたプロセスがLinuxカーネルによってどのように維持されるかの概念を理解したかっただけです。それが行われているカーネルソースへのポインタを教えてください。
質問する
477 次
1 に答える
2
これはスケジューラによって行われ、コードは一連のファイルに含まれています。linux-source/kernel/sched.c から始めて、そこからパスをトレースします。
Linux では実際に複数の異なるスケジューラがサポートされているため、タスク スケジューリングの実行方法の概念は少し複雑です。理解を深めるために、「Completely Fair Scheduler」の設計である linux-source/Documentation/sched-design-CFS.txt を読んでください。
タスクを維持するデータ構造
2.6.x および 3.x カーネルでは、タスクはさまざまな実行キューで維持されます。実行キュー構造struct rq
は、基本的な実行キューを維持します。次に、特定のスケジューラごとに実行キュー ビットがあります。たとえば、cfs_rq (sched.c) は CFS のキューを維持します。( struct task_groups
sched.c linux/sched.h 内) とタスク構造struct task_struct
は、タスクに関する実際の情報を維持します。
sched.c と sched.h には、関連する関数と構造体しかありません。
于 2013-05-24T04:04:48.313 に答える