ディスパッチャ / タスクスケジューリングとは??分かりやすく解説【備忘録-基本情報技術者試験対策 #46】

基本情報技術者試験

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。

はじめに

さて今回は、基本情報技術者試験対策として、ディスパッチャとタスクスケジューリングについてまとめたいと思います。

ディスパッチャ??なんだそれ、タスクスケジューリング??タスクを管理するのかな??いまいちイメージしにくいですよね。

特にタスクスケジューリングは色々と種類がありつつ、よく問われる内容ですので覚えておくようにしましょう!

ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。

過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

最新版はこちらです。

少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。

ディスパッチャ

ディスパッチャは、システム内で実行されるプロセスやスレッドの管理、CPUの使用権割り当てを担当するプログラムです。具体的には、以下のようなタスクを行います。

  • タスクスケジューリング:
    複数のプロセスやスレッドの実行順序を決定し、CPU時間を効率的に割り当てます。
  • リソース管理:
    メモリやI/Oデバイスなどのリソースを各プロセスに適切に割り当てます。
  • 優先度管理:
    各タスクに優先度を設定し、重要度に応じて実行順序を調整します。

とにかく大切な役割はタスクスケジューリングです。

基本的にPCの中で各タスクは実行可能状態(READY状態)で待機しており、READYの状態でGoサインが出たらタスクを実行できます。

陸上で言うところの、「位置について、よ~い(READY状態)、ドン!!(Goサイン)」ですね。

要はこのGoサインを出すのがディスパッチャという管理プログラムの重要な役割となります。READY状態のタスクに対して、このCPU使っていいよ~と、CPUの使用権を割り当てるわけですね。

各タスクにCPUの使用権を割り当てることを「ディスパッチ」といいます。「ディスパッチ」するプログラムだから「ディスパッチャ」というわけですね。

ちなみに、ディスパッチャは「dispatcher:配送員」ですね。

タスクスケジューリング

ディスパッチャの役割は理解できたところで、タスクスケジューリングについてもしっかりと頭に入れておくようにしましょう。タスクスケジューリングには方式によって主に3パターンの実行順序があります。

到着順方式

到着順方式(First-Come, First-Served, FCFS)は、タスクがシステムに到着した順(READY状態になった順)に実行する方式です。最もシンプルで理解しやすいスケジューリング方式として知られています。

特に何も考えずに、タスクは準備ができた順に待機し、CPUの実行が終わったら先頭から実行されていくわけですね。

CPUの実行が終わるまで次のタスクは実行を待機しますので、途中でCPUの使用権が奪われるなんてことはありません。これをノンプリエンプションといいます。

少し詳細な流れも見ておきましょうか。到着順方式では、タスクがシステムに到着すると、そのタスクはキューに追加されます。そして、CPUはキューの先頭から順にタスクを処理します。

  • タスクの到着:新しいタスクがシステムに到着。
  • キューへの追加:タスクが到着順にキューに追加される。
  • CPUによる処理:キューの先頭のタスクがCPUで実行される。
  • 処理完了後の次タスク:処理が完了したタスクはキューから削除され、次のタスクが処理される。

到着順方式は、シンプルで公平なスケジューリング方式ですが、待ち時間のばらつきやシステム効率の低下という欠点もあります。特定の状況やシステムの要件に応じて、他のスケジューリング方式との組み合わせや、状況に応じた適切なアルゴリズムを選択することが重要です。

優先順方式(プライオリティ順方式)

優先順方式(プライオリティ順方式)は、タスクの優先度に基づいて実行順序を決定する方式です。特定の基準によりタスクに優先度を付け、高い優先度のタスクを先に処理することで、重要なタスクを効率よく実行します。

理解は簡単ですね。タスクに優先順位をつけて、優先度の高いものから実行していくわけです。待機中のタスクが全部同じ優先度だったら、先頭から実行されていきます。

優先度の高いタスクが到着した場合、CPUの使用権が奪われます。これをプリエンプションといいますね。

こちらも少し詳細な流れを見ておきましょうか。

  • タスクの優先度設定:各タスクに対して重要度や緊急度などの基準で優先度を設定します。
  • 優先度に基づく並べ替え:タスクを優先度の高い順に並べ替えます。
  • タスクの実行:高い優先度のタスクから順に実行していきます。

優先順方式は、タスクの優先度に基づいて実行順序を決定することで、重要なタスクを迅速に処理し、プロジェクト全体の効率を向上させる強力な手法です。ただし、低優先度タスクの遅延や優先度設定の複雑さといった欠点もあるため、適切な評価と判断が求められます。他のスケジューリング方式と組み合わせて使用することで、より柔軟で効率的なタスク管理が可能となります。

ラウンドロビン方式

ラウンドロビン方式は、複数のタスクやリクエストを順番に処理するスケジューリング手法の一つです。この方法では、各タスクに対して一定の時間を割り当て、順番に処理を進めていきます。コンピュータシステムやネットワークにおいて、負荷分散やプロセス管理に広く利用されています。

ちょっと理解が難しいですね・・・

簡単に言えば、CPUの使用権が一定時間定められており、時間になったら交代する方法です。CPUが使えるようになった際、一番先頭のタスクが実行に回されます。ただし、タスクは定められた時間内でしか処理されません。タスクの処理が時間内で終われば良いですが、終わらない場合、途中で処理を止められて、次のタスクに使用権が割り当てられます。この時、実行が終わっていないタスクはもう一度最後尾に回されてしまうのです。終わっていないならまた後ろから並んでね~みたいな感じです。容赦ないですよね・・・。

詳細なステップも見ておきましょう。

  • タスクの登録:処理するタスクを順番にリストに登録します。
  • タイムスライスの設定:各タスクに対して一定の時間(タイムスライス)を割り当てます。
  • 順番に処理:登録されたタスクを順番に処理し、タイムスライスが終了したら次のタスクに移ります。終わらなかったタスクは最後尾へ。
  • 繰り返し:全てのタスクが完了するまで続けます。

ラウンドロビン方式は、タスクを公平に処理するためのシンプルで効果的なスケジューリング手法です。特に、複数のタスクを均等に処理する必要がある環境で有効に機能します。ただし、コンテキストスイッチによるオーバーヘッドやリアルタイム性が求められる環境には向かないため、他のスケジューリング方式と組み合わせて使用することが推奨されます。

最後に

さて今回は、基本情報技術者試験対策として、ディスパッチャとタスクスケジューリングについてまとめました。

ディスパッチャとか名前だけだといまいちピンときませんよね。まぁタスクを割り当てるプログラムとだけ覚えておけばOKです。

後はタスクスケジューリング。名前から連想しにくいのはラウンドロビン方式だけですね。到着順方式とか優先順方式とかはイメージしやすいと思います。

しっかり理解しておきましょう!

★ディスパッチャ

CPUの使用権割り当てを担当するプログラム

★到着順方式

タスクがシステムに到着した順に実行する方式

★優先順方式(プライオリティ順方式)

タスクの優先度に基づいて実行順序を決定する方式

★ラウンドロビン方式

各タスクに対して一定の時間を割り当て、順番に処理を進めていく方式

以上!

前回まとめた記事も読んでもらえると嬉しいです!

基本情報以外の勉強記事も是非!

オススメ参考書 & Udemy講座

過去問編

兎にも角にも過去問を解かないことには始まりません。解いて解いて解きまくりましょう!

特に以下の参考書は問題数が多いのでオススメです。

この1冊だけ買って、とりあえず1周すれば合格がかなり近くなると思います!

科目A+B両方合わせて4セット収録されてるとかヤバすぎます・・・

知識網羅編

以下は知識網羅編として、講義系の参考書、動画をピックアップしています。

1からしっかりと学習し、知識を身に着けたい方はとてもオススメです。

過去問を解きまくり、不明点を参考書で補う。これが最高の勉強サイクルです~

私が勉強する際に使用していたオススメ参考書は以下です。

上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)

私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。

誰かに解説してもらった方が分かりやすい場合もありますからね~

画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!

コメント

タイトルとURLをコピーしました