タスクとは、コンピュータからみて、内部の仕事のことを呼びます。
OSの制御機能によって、タスクを処理するために、それぞれのタスクにCPUを使っていいよと使用権を割り当てていますが、使用権の割り当て方をタスク管理やタスクスケジューリングと呼びます。
このタスクスケジューリングの方式に関しての出題が頻出しているので、ここはしっかり押さえておきたい分野です。
ではやっていきましょう!
★この記事を読んでほしい人★
タスク管理・タスクスケジューリングとは?
コンピュータから見た内部の仕事の単位のことをタスクとかプロセスと呼びます。
タスクが複数あるときに、CPUを使う順番や優先順位を決めたりすることをタスク管理とかタスクスケジューリングと呼びます。
タスクの状態遷移には、「実行状態」「実行可能状態」「待ち状態」の3つの状態を遷移しています。
- 実行可能状態はCPUの使用権が与えられるのを待っている状態。
- 実行状態はCPUの使用権が与えられて実行している状態。
- 待ち状態は、入出力動作(I/O)の完了を待っている状態。
実行可能状態から、CPUの使用権が与えられて、実行状態に遷移することをディスパッチと呼び、実行状態から実行可能状態に遷移することをプリエンブションと呼びます。
ディスパッチとプリエンプションは普通に問題文で出てきたりするよ!当たり前のように出てくるから意味を覚えておこう!
タスクスケジューリング方式の種類
複数のタスクの処理を実行したい時において、それぞれのタスクが待ち行列(キューとも呼ぶ)に並んでいる時、どの順番でCPUを割り当てるのか、大きく分けると、プリエンプティブなスケジューリングとノンプリエンプティブなスケジューリングに分けられます。
この記事では「到着順方式」「ラウンドロビン方式」「優先順方式」「最小時間順方式」の4種類を紹介します。
それぞれ、用語が当たり前のように問題文に出てくるので覚えておこう!
到着順方式(FCFS)
到着順方式はFCFS(First-Come First-Sarved)方式とも表現されることがあり、その名の通り、最初に待ち行列に到着した順番でCPUを割り当てる方式です。
待ち時間が長いタスクから順番に実行状態に遷移する点と、優先順位がなく途中での割り込みができないので、優先的に実行したいときでも待ち時間が生じてしまう特徴があります。
ラウンドロビン方式
ラウンドロビン方式は、到着順にCPUを一定時間割当てる点までは到着順方式と同じ。
ただし、一定時間経つと実行途中でも待ち行列の後ろに並び直す方式です。
一定時間のことをタイムスライスとかタイムクォンタムなどと呼ばれ、時間切れの場合は待ち行列の最後に並び直す点から、対話処理向きの方式です。
優先順方式
優先順位方式はタスクに優先順位をつけて、自分より優先順位の低いタスクが実行状態の場合は割り込んで先に実行することができる方式です。
CPUを使う時間が長時間になることをCPUバウンドと呼びますが、CPUバウンドなタスクの優先順位を低く設定することで優先順位の高いタスクがどんどん実行されていく事ができます。
逆に優先順位の低いタスクからすると、どんどん先に割り込まれて、全然実行できない!
いつまで経ってもCPUを割り当ててもらえない減少をスタベーション(飢餓状態)と呼びます。
最小時間順方式
最小時間順方式は、実処理時間の短いタスクの優先順位を上げる方式です。
処理時間の長いタスクは、いつまで経ってもCPUを割り当ててもらえないスタベーションが発生することがあります。
- 到着順方式 👉 待ち時間が長いタスクから順番に実行する方式
- ラウンドロビン方式 👉 到着順 + 一定時間経ったら並び直してもらう方式
- 優先順方式 👉 タスクに優先順位をつけて自分より低いタスクがCPUを使っていたら割り込むことができる方式
- 最小時間順方式 👉 タスクの実処理時間が短いタスクの優先順位が高い方式
過去問題にチャレンジしよう!
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
1. Aの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。
出典:平成29年秋期 問18
2. Aの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。
3. Bの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。
4. Bの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。
👉 3
優先度に基づくプリエンプティブなスケジューリングを行うとあるので、タスクスケジューリング方式が優先順方式ってことがわかります。
優先順方式は、自分よりも優先順位が低いタスクが実行状態にあるときに、割り込んで先に実行できる方式。
よってAより優先度が低いBが実行されているときに、割り込んでAを実行する方式なので、答えは3。
タスクのディスパッチの説明として,適切なものはどれか。
出典:平成31年春期 問16
1. 各タスクの実行順序を決定すること
2. 実行可能なタスクに対してプロセッサの使用権を割り当てること
3. タスクの実行に必要な情報であるコンテキストのこと
4. 一つのプロセッサで複数のタスクを同時に実行しているかのように見せかけた状態のこと
👉 2
ディスパッチとは、OSによる制御機能の一つで、実行可能状態にあるタスクをCPU使用権を与えて実行することです。
よって答えは2です。
ちなみに、実行状態のタスクがあるときに、別のタスクが割り込んできて、実行可能状態に戻すことをプリエンプションと呼びます!
ノンプリエンプティブなスケジューリング方式の説明として,適切なものはどれか。
出典:平成27年春期 問19
1. 新しいタスクが実行可能状態になるたびに,各タスクの残りの実行時間を評価し,その時間が短いものから順に実行する。
2. 実行状態としたタスクが決められた時間内に待ち状態に遷移しないときに,そのタスクを中断して実行待ち行列にある次のタスクを実行状態とする。
3. 実行状態としたタスクが自ら待ち状態に遷移するか終了するまで,他のタスクを実行状態とすることができない。
4. タスクが実行可能状態になったときに,そのタスクの優先度と,その時,実行状態であるタスクの優先度とを比較して,優先度が高い方のタスクを実行状態とする。
👉 3
タスクのシュケジューリング方式には、大きく分けて、プリエンプティブとノンプリエンプティブなスケジューリング方式があります。
プリエンプティブなスケジューリング方式は、優先順位を決めてCPU使用権を割り当てる方式で、ノンプリエンプティブなスケジューリング方式は、優先順位はなく、待ち行列に並んだ順番にCPUを割り当てる方式のことです。
よって優先順位に関係なく、待ち状態に遷移するか、終了するまで他のタスクを実行状態とすることができない答えは3です。
タスクスケジューリング方式の説明のうち,特定のタスクがCPU資源の割当てを待ち続ける可能性が最も高いものはどれか。
出典:平成24年秋期 問17
1. 各タスクの優先度を決めて,優先度が高い順に実行し,CPU割当てまでの待ち時間の長さに応じて優先度を徐々に上げていく。
2. 各タスクを実行可能待ち行列に置かれた順に実行し,一定時間が経過したら実行を中断して実行可能待ち行列の最後尾に加える。
3. 処理予定時間が最も短いタスクから順に処理を実行する。現在実行中の処理が終了するか,又は何らかの要因によって中断されたとき,次のタスクを開始する。
4. タスクがシステムに到着した順に実行可能待ち行列の最後尾に加え,常に実行可能待ち行列の先頭のタスクにCPUを割り当てる。
👉3
特定のタスクがCPUの割当てを待ち続けることをスタベーションと呼ぶ。
スタベーションが起こるのは、自分よりも優先順位の高いタスクが割り込んできてずっと割り込まれ続けてしまって自分の番が回ってこないときに起こります。
スタベーションが起こる選択肢を選べばいいので、答えは3。
まとめ
今回は基本情報技術者試験の午前試験で頻出しているタスク管理とタスクスケジューリングに関する問題で得点を確実に取ることを目的に解説していきました。
当ブログでは他にも、基本情報技術者試験に関する解説記事を量産しています。
ぜひ他の記事も読んで合格に役立ててください!
- タスク 👉 コンピュータが実行する仕事のこと。
- タスクスケジューリング 👉 タスクを実行するのに、CPU使用権を割り当てる順番を決めたりすること。
- 到着順方式 👉 到着順で実行。必ず自分の番が来る方式
- ラウンドロビン方式 👉 到着順で実行して、一定時間が経つと並び直す方式
- 優先順方式 👉 優先順位がつけられて、自分より優先順位が低いタスクが実行しているときは割り込んで先に実行する方式
- 最小時間順方式 👉 CPUを使う実処理時間の短いタスクが優先される方式
- タスクの遷移状態
- 実行状態 👉 タスクがCPUを使っている状態。
- 実行可能状態 👉 CPUの割当を待っている状態。
- 待ち状態 👉 入出力装置を使っている時間など、待機状態。I/o と表現することも。