FE EXAM

多重待ち行列方式(優先度別キュー)

優先度別に複数の待ち行列を用意してタスクをスケジューリングする方式。

INTERACTIVE VISUALIZATION
高優先度
中優先度
低優先度
フェーズ
idle
キュー数
3
処理中のキュー
シナリオ
ステップ1 / 6
STEP 1/6いろいろなタスクが届くOS(=コンピュータ全体を管理する基本ソフト)には性質の違うタスクが次々と届きます。キー入力への反応、画面の更新、ファイルの保存、印刷、夜間の集計やバックアップなどです。これらをどう順序づけて処理するかを考えます。
CPU処理装置高優先度対話的処理方式: ラウンドロビン(このキューは空)中優先度一般処理方式: ラウンドロビン(このキューは空)低優先度バッチ処理方式: FCFS(到着順)(このキューは空)届いたタスク(まだ振り分け前)キー入力応答画面更新ファイル保存印刷ジョブ夜間集計バックアップ
各キューの方式
高優先度
ラウンドロビン
中優先度
ラウンドロビン
低優先度
FCFS(到着順)
解説

📌
多重待ち行列方式とは

高優先度キュー中優先度キュー低優先度キューCPU

多重待ち行列(multilevel queue)方式とは、優先度ごとに複数の待ち行列(キュー)を用意し、それぞれを別のスケジューリング方式で管理する方法のことです。待ち行列とは、CPUを使う順番を待つタスクが並ぶ列のことです。

身近な例で考えると、病院の受付に似ています。救急の患者を通す窓口、一般診察の窓口、健康診断の窓口を分けておけば、急ぐ人を後回しにせず、急がない人にじゃまされずに対応できます。タスクも性質ごとに列を分けるわけです。

上のツールで▶ボタンを押すと、届いたタスクを高・中・低の3つのキューに振り分け、上のキューから順に処理していく流れを確認できます。

🗂️
複数キューの仕組み

多重待ち行列の動きは、上のキューを最優先で処理し、空になったら下のキューに移るという単純なルールです。

ポイントは次のとおりです。
キューごとに方式を変えられる:上位キューはラウンドロビン(=順番に少しずつ時間を分け合う方式)、下位キューはFCFS(=先着順)など、性質に合った方式を使える
キューの選び方:タスクの種類(対話的処理かバッチ処理か)でどのキューに入れるかを決める
上位が優先:下位キューを処理中でも、上位キューに新しいタスクが来ればそちらが優先される

発展形として多重フィードバックキューがあります。これは、長く待っているタスクを上位キューへ引き上げたり、CPUを使いすぎたタスクを下位キューへ落としたりして、タスクがキューの間を移動する仕組みです。これにより、後回しになり続けるタスクが出にくくなります。

🎛️
用途

対話的処理(高)バッチ処理(低)反応を重視後回しでOK

多重待ち行列方式は、性質の異なるタスクを効率よく扱いたいときに使われます。とくに代表的なのが、反応の速さが求められる処理と、急がない処理が混在する場面です。

具体的な使い分けの例は次のとおりです。
対話的処理:キー入力や画面更新など、利用者がすぐ反応を期待する処理 → 高優先度キュー
一般処理:ファイル保存や印刷など、ふつうの業務処理 → 中優先度キュー
バッチ処理:夜間集計やバックアップなど、まとめて行う急がない処理 → 低優先度キュー

こうして列を分けておくと、利用者の操作に対する反応が後回しにされず、画面が「カクつく」のを防げます。一方で重いバックアップ処理は、CPUが空いた合間に少しずつ進めればよいわけです。上のツールで、高優先度の対話的処理から先に片付く様子を見てみてください。

練習問題

🎯
基本情報技術者 練習問題

Q1.多重待ち行列方式の説明として最も適切なものはどれか。
A.1つの待ち行列で到着順にすべてのタスクを処理する
B.優先度別に複数の待ち行列を用意し、それぞれを別の方式で管理する
C.処理時間の短いタスクから順に実行する
D.すべてのタスクに同じ時間を割り当てて巡回する
Q2.多重待ち行列方式で、複数のキューを処理する順序として正しいものはどれか。
A.低優先度キューから順に処理する
B.すべてのキューを同時に均等に処理する
C.高優先度キューを処理し、空になったら次の優先度のキューを処理する
D.タスクの到着が早い順に、キューを無視して処理する
Q3.多重待ち行列方式の用途として最も適切なものはどれか。
A.すべてのタスクをまったく同じ扱いにしたいとき
B.対話的処理を高優先度、バッチ処理を低優先度に分け、性質の違うタスクを効率よく扱いたいとき
C.タスクが1種類しかないとき
D.メモリの断片化を防ぎたいとき

関連コンテンツ