Process Scheduling(プロセススケジュリーング)
こんにちは
今日も頑張って書いていこうと思います。前回は、「プロセスとは何か?」についてまとめました。そして今回は、「プロセススケジュリーング」についてです。
2、Process Scheduling(プロセススケジュリーング)
Process Scheduler(プロセススケジュラー)
マルチプログラミングの目的は、CPUの使用を最大化するために、常にいくつかの動いているプロセスを持つことです。CPUコアを頻繁にプロセスの中でスイッチさせる必要があり、そのようなおかげで、ユーザーはそれぞれのプログラムを動かしながら、作用し合えることができます。これらの目的を達成させるために、Process Schedulerというものがあり、これは、利用可能なプロセスをCPUコアのために選んであげるという働きがあります。ちなみに、それぞれのCPUコアは、一回で一つのプロセスを動かすことができます。
1)Scheduling Queues(スケジュリーングキュー)
Ready Queue
まず、プロセスがシステムに入ると、ready queue というところに置かれます。プロセスが実行されるのを待っている場所です。このキューは一般的に、通常連結リスト(Linked List)という形で保存されています。
Wait Queue
プロセスがCPUコアを割り当てられたとき、プロセスは、「通常通り実行され終了する」または割り込み、特別なイベントを待つ必要がある場合があります。例えば、I/Oリクエストなどが発生した場合です。リクエストした場合には、I/Oが利用可能になるまで、待つ必要があり、そのような場合には、プロセスはWait Queueという場所に置かれます。以下のリンクにダイアグラムを載せておきましたので、見ておくといいかもしれません。
2)CPU Scheduling(CPUスケジュリーング)
CPU Scheduler
このスケジュラーの役割としては、Ready Queueにいるプロセスを一つ選び、CPUコアに割り当てるというものがあります。少なくとも、100ミリ秒に一回実行する必要があり、頻繁に替わります。
3)Context Switch(コンテキストスイッチ)
割り込み(Interrupts)は、直近のタスクからCPUコアに変える働きがあり、カーネルのルーティンをします。そのようなケースが起こった場合に、プロセスの動向などを保存する必要があります。保存しておけば、後で途中から再開することができます。Contextは、PCB(プロセスコントロールブロック)に保存されます。保存される内容としては、CPUレジスタの値、プロセスの状態、メモリ管理情報が含まれます。
今回の章は以上になります。読んでいただき、ありがとうございました。明日は、「プロセスの運営」について、まとめていきたいと思います。
Discussion