タスクスケジューリングとは
① 物語性を取り入れた説明: タスクスケジューリング
修学旅行の夜、子供たちは星空の下、キャンプ場でわくわくしながら家族に今日の冒険を報告したくてうずうずしていました。
しかし、使えるのは先生が管理するスマートフォン4台のみ。
これは、4つの「クアッドコアCPU」が同時に多くのタスクをこなすコンピュータのようなものです。
子供たちは誰がいつどの電話を使うのか、その順番を知りたいと思っていました。
先生はタスクスケジューリングの重要な役割を果たし、誰がいつ電話を使えるかを決定します。
1.到着順方式
最初に「到着順方式」があります。これは、最も単純な方法で、手を挙げた順に電話を使う権利が与えられます。最初に「電話を使いたい!」と言った子が最初に電話をします。
2.優先度順方式
次に、優先度順方式があります。
例えば、家族に大切な連絡がある子供や、具合が悪い子供は、ただおやすみを言いたい子供よりも優先されます。
この場合、「プリエンプション」という原則が適用されます。これは、高優先度の子供が電話を使いたいときは、低優先度の子供が電話を使っているとしても、その使用を中断させて優先させることができるというものです。まるで緊急のニュースが入ったときにテレビ番組が中断されるようなものです。これにより、重要なタスクがすぐに処理されることが保証されます。
この方法には注意が必要で、それが「スタベーション」です。スタベーションは、低優先度のタスクが非常に長い間、または永遠に実行されない状況を指します。たとえば、いつも「後回し」にされる子供は、結局家に連絡できないかもしれません。
3.動的優先順位方式
「動的優先順位方式」は、基本的な動きは優先度順方式と変わりませんが、後回しにされている(スタベーション)を助けるために、先生は「エイジング」というテクニックを用います。
これは、一定時間が経過するごとに、低優先度の子供たちの優先度を少しずつ上げていく方法です。これにより、全員が平等に通話機会を得られるようになりスタベーションを回避できます。
最初は後回しにされていても問題ないと思っていた子供が次第に「親と約束していた連絡期限までに間に合わなくなる」と感じて電話の優先順位が上がっていくイメージです。
4.ラウンドロビン方式
ラウンドロビン方式では、先生はタイマーをセットしました。例えば、それぞれの子供には5分間の通話時間が与えられることにします。5分が経過したら、タイマーが鳴り、次の子供にスマートフォンが渡されます。この方法では、待ち時間が長くなることはありませんが、話し足りない子供も出てくるかもしれません。
このセットした一定時間(この話では5分間)のことを「タイムクォンタム」と言います。
5.多重待ち行列方式
多重待ち行列方式でのスケジューリングでは、先生は緊急度に応じて子供たちを数グループに分けました。
たとえば、「親におやすみのメッセージを言いたい」という子供たちは一つのグループ、「緊急の話がある」という子供たちは別のグループに分けられます。
そして、それぞれのグループ内で、ラウンドロビンの原則を適用し、各グループは異なる時間帯で電話を使う権利を持ちます。緊急のグループはより頻繁に通話の機会を得られるようになりますが、全体としては誰もが通話できる機会が保証されます。
これにより、緊急性と公平性のバランスを取ることができます。
6.処理時間方式
「処理時間方式」では、電話で伝える内容の長さに基づいて順番が決まります。短いメッセージを伝える子から順に電話させることで、より多くの子供たちが素早く連絡を取ることができます。
SPT(Shortest Processing Time First)とも呼ばれる手法ですが、実際は実行前に処理時間を予測するのは困難であるため実装は難しいです。
「おやすみを言うだけ」という条件だったのに話が長くなる人もいますからね。
7.イベントドリブン方式
修学旅行中の子供たちが普段通りにスマートフォンを使っているとします。ここで、通話の順番は先生が管理していて、子供たちが手を挙げるなどして「今話したい」という希望を出すのが一般的な流れです。
しかし、「イベントドリブン方式」では、予期せぬ出来事(イベント)が発生したときに特に反応します。例えば、夜になり焚き火が強くなったり、急に星が流れたりすると、子供たちはそれに反応して「今すぐ家族にこの経験を伝えたい!」と感じるかもしれません。そのような時、先生はその瞬間に発生した「イベント」を最優先で処理し、その子供にスマートフォンを渡します。これは、子供たちの通常の「順番待ち」や「優先順位」を一時的に無視して、特定のイベントに対して即座に反応することを意味します。
この方式では、イベントが生じた際にはそれを理由にスマートフォンの使用権を獲得できるため、プリエンプションとは異なり、特定の瞬間に生じる外部からの刺激や要求に基づいてスケジューリングが変更されます。
コンテキストスイッチ(コンテキスト切替)
予期せぬ出来事がきっかけで通話が中断された生徒がいるとします。その生徒が再び通話を続けるためには、先生は誰がどの程度話していたかを記録しておく必要があります。体調が悪い生徒の通話が終わった後、中断された生徒が通話を再開できるように、切り替える行為が「コンテキストスイッチ」です。実際の定義としては複数のプロセスが1つのCPUを共有できるようにCPUの状態を保存したり復元したりする過程のことです。
先生はこれらの方法を駆使して、子供たちがそれぞれ家族と大切な時間を共有できるようにし、電話の機会を公平かつ効率的に管理しました。
コンピュータの世界でも、タスクスケジューリングはプログラムやプロセスを効率的に、かつ公平に実行するために不可欠なプロセスです。
各タスクに優先順位をつけ、使用するリソース(CPUコアなど)とタスクの実行順序を決定することで、システムのパフォーマンスを最適化し、リソースの利用を最大化します。
② 実際の事例: タスクスケジューリング
例えば、大手ECサイトでは、注文処理、在庫管理、顧客サービスなど多くのタスクが同時に走っています。
この会社ではタスクスケジューリングを行い、注文のピーク時には注文処理のタスクに優先度をつけ、在庫管理のタスクは夜間に集中して行うなど、全体の負荷を均等に分散させています。
また、緊急を要する顧客からの問い合わせには、動的に優先度を変更し、迅速に対応する体制を整えています。
自治体での例としては、災害時の緊急通報システムにおいてタスクスケジューリングが使われます。大量の通報が同時に発生した場合、最も緊急度の高い地域の通報を優先し、同時に多くの情報を処理することが可能になります。
③ クイズや小テスト: タスクスケジューリング
-
到着準方式において最も優先されるのはどのタスクでしょう?
A. 一番最初にシステムに到着したタスク
B. 一番緊急度が高いタスク
C. 処理時間が最も短いタスク -
ラウンドロビン方式の特徴は何でしょう?
A. タスクに割り当てられた時間が終わると次のタスクに移る
B. 常に最も緊急度の高いタスクが処理される
C. タスクの緊急度が時間とともに変わる -
災害時の緊急通報システムで使用されるスケジューリング方式はどれでしょう?
A. 処理時間方式
B. 多重待ち行列方式
C. 動的優先順位方式
正解:
- A. 一番最初にシステムに到着したタスク
- A. タスクに割り当てられた時間が終わると次のタスクに移る
- C. 動的優先順位方式
コメント