[超初心者向け!] OSの CPU スケジュールを図でわかりやすく解説

2024/09/08に公開

はじめに

Operating System の OSの CPU スケジュールについて、初心者向けに説明してみました

この記事の対象者

・OS初心者
・インフラ初心者

目次

  1. CPU スケジュールにおいてのカーネルの必要性
  2. FIFO (First In,First Out)
  3. STCF (Shortest Time-to-Complemetion First)
  4. RR (Round Robin)

1. CPU スケジュールにおいてのカーネルの必要性

複数プロセスが存在する場合、CPU がどの処理から始めるのか優先順位を決める必要があります。

OS がそのスケジュール管理をしています。

2. FIFO (First In,First Out)

ジョブの到着順に処理を行うのが FIFO です

しかしここで問題が発生します。
下図のように、長いプロセスがあると後ろのプロセスが遅れてしまいます

ターンアラウンドタイム

ここで、CPU スケジュールの手法についての評価軸の一つを紹介します
ターンアラウンドタイムはプロセスが CPU に到着してから、CPU がプロセスの処理を完了するまでの時間です。

計算方法:
(ジョブが完了した時刻)ー(ジョブが CPU に到着した時刻)

なるべくプロセスの処理を早く終わらせたいため、ターンアラウンドタイムをより短くできるスケジューリング法が良いといえます

3. STCF (Shortest Time-to-Complemetion First)

STCFは新しいプロセスが到着した際に、既存のプロセスの処理完了時刻と比較して短いプロセスに高い優先順位を与えるスケジューリング法です
これはターンアラウンドタイムを短くできるスケジューリング方法です

この例では、
プロセス1の到着時刻 :プロセス3の残りとプロセス1、どっちの方が終わるの早いか調べより短いプロセス1、
プロセス2の到着時刻 :プロセス3の残りとプロセス2、どっちの方が終わるの早いか調べより短いプロセス2
に高い優先順位が付与されています

レスポンスタイム

ここで、CPU スケジュールの手法についての評価軸をもう一つ紹介します

下図のように、STCFだと長いプロセスはいつまで経っても始まらないという問題が発生します

そこでレスポンスタイムという評価軸が登場します
レスポンスタイムとは、プロセスがCPUに到着してから、CPUがプロセスを開始するまでの時間です

計算方法:
(CPUがプロセス処理を始める時刻) - (プロセスの到着時間)

なるべくプロセス処理の開始時間を早めたいため、レスポンスタイムもより短くできるスケジューリング法が良いといえます

4. RR (Round Robin)

RRはターンアラウンドタイムもレスポンスタイムも、どちらも短くできるスケジューリング法です

下図ではプロセス1,2,3が同時に CPU に到着する例です
・プロセスの長さは2→1→3の順番で長い(プロセスの優先順位も2→1→3)
・プロセスを4等分にスライス

処理順としては
プロセス2の1/4→プロセス1の1/4→プロセス3の1/4
→プロセス2の2/4→プロセス1の2/4→プロセス3の2/4
→プロセス2の3/4→プロセス1の3/4→プロセス3の3/4
→プロセス2の4/4→プロセス1の4/4→プロセス3の4/4
となります

まとめ

・ターンアラウンドタイムはプロセスがCPUに到着してから完了するまでの時間
・レスポンスタイムはプロセスがCPUに到着してから、CPUがプロセス処理を始めるまでの時間
・ターンアラウンドタイムとレスポンスタイム、どちらも短くする方法としてRR(Round Robin)という手法がある

最後まで読んでくださりありがとうございます!

Discussion