カテゴリ:4.記憶管理 > 4.3 タスク管理

■1.タスクとは
ジョブとタスクがあります。どちらも「仕事」という意味です。
では、どう違うのでしょうか。
ザックリ説明すると、
・ジョブ:人間からみた仕事の単位
・タスク:コンピュータから見た仕事の単位(なので、読みだしたり、演算したり、書きこんだりと工程が増える)

また、ジョブステップという言葉がある。ジョブを工程ごとに分解したものである。「違うぞ」という突っ込みがあるが、ジョブステップ=タスクとざっくり理解しておいて、それほど間違ってはいない。

ジョブ→ジョブステップ1=タスク1
   →ジョブステップ2=タスク2
   →ジョブステップ3=タスク3
   
■2.タスク管理
タスク管理に関して、過去問(H20秋FE午前問28)では、(複数のタスクがある場合に、)「マルチプログラミングの制御を行い,CPUを有効に利用する」とあります。

応用情報技術者試験を勉強する成子

なぜそんな制御が必要なのですか?
CPUは頭脳に例えられるという話をしたと思います。
人間と同じで、コンピュータであっても、複数のことを同時には考えることができません。
応用情報技術者試験を勉強する成子

そうなんですか?
パソコンでは、インターネットで動画を見ながら、メールを書いたりしていますし、その間にプリンタで印刷をかけたりもできますけど。
はい、パソコンでは複数のことを同時に実施しています。
ただ実際には、CPUが短い時間で瞬時に複数の仕事を切り替えています。それがあまりに高速なので、我々には同時に実行しているように見えるのです。
このように、CPUにはいくつものジョブがやってきて、それを効率的に管理する仕事がOSが実行すべきタスク管理です。

■マルチプログラミング
見かけ上、複数のタスクを同時に実行し、CPUを効果的に使う。
CPUが処理したあと、I/Oなどの待ち時間がある。
そのときに、別のプログラムを処理させるのだ。
似たような概念にパイプライン処理がある。
・パイプライン処理:CPUの命令単位
・マルチプログラミング:プログラム単位

タスク管理に関して、応用情報技術者試験のシラバスでは、以下の記載があります。
(4)タスク管理
① タスクと状態遷移
タスクとジョブステップ,スレッドとの関係,タスクの生成から実行,消滅までの状態遷移,ディスパッチャの役割を理解する。

用語例 軽量プロセス,実行可能状態,実行状態,待ち状態,プロセス,スレッド

② 多重(マルチ)プログラミング(マルチタスク)とスケジューリング
多重(マルチ)プログラミングの考え方,タスクのスケジューリングの代表的な方式について,スケジューリングの方法,特徴,スケジューリングにおけるトリガと優先順位の役割,同期制御・排他制御の必要性,実現方法を理解する。また,タスクとタスクの同期,タスク間でのデータの受け渡し,マルチスレッドの考え方,並列処理などを理解する。

用語例 プリエンプティブ方式,ノンプリエンプティブ方式,タイムスライス方式,イベントドリブン方式,フィードバック待ち行列方式,処理時間順方式,優先順,静的優先順位方式,動的優先順位方式,ラウンドロビン,SJF(Short Job First),最短時間順,割込み禁止,マルチCPU,排他制御,FCFS(First Come First Served),タイムクウォンタム,リソーススタベーション,SVC(SuperVisorCall)割込み,入出力終了割込み,ディスパッチ

では、過去問(H20秋FE午前)を見てみましょう。
問28 タスク管理の役割として,適切なものはどれか
ア 各種の補助記憶装置へのアクセス手段を,装置に依存しない形態で提供し,応用プログラム作成の負担を軽減する。
イ 仮想記憶空間を提供し,実記憶を有効に利用する。
ウ 入出力装置の制御を行い,正確かつ効率よく入出力装置を動作させる。
エ マルチプログラミングの制御を行い,  CPUを有効に利用する。





正解は、エです。ウは入出力管理、イは記憶管理、アはデータ管理です。

過去問(H21秋AP午前問19)
問19 リアルタイムOSのマルチタスク管理機能において,タスクAが実行状態から実行可能状態へ遷移するのはどの場合か。
ア タスクAが入出力要求のシステムコールを発行した。
イ タスクAが優先度の低いタスクBに対して,メッセージ送信を行った。
ウ タスクAより優先度の高いタスクBが実行状態となった。
エ タスクAより優先度の高いタスクBが待ち状態となった。





正解は、 ウです。

 

1.タスクの状態(プロセスの状態)

プロセスの状態には、「待ち行列に登録されているプロセスの状態を実行可能状態,実行中のプロセスの状態を実行状態」の他に、「待ち状態」があります。

過去問(H20FE秋午前問29)では、コンピュータのタスクの状態遷移として、次の図が記載されています。
状態遷移
また、実行状態のタスクが、「自分より優先度の高いタスクが実行可能状態になった」ことで、実行可能状態に遷移するともあります。
応用情報技術者試験を勉強する成子

なんかややこしいですね。
なぜ、そんな3つの状態があるのですか?



例えがいいか分かりませんが、以下と考えてはどうでしょう。
大きな病院で初診受付をしたとします。
・最初は、病院側の先生が決っていない状態で、今すぐ診察を受けられない状態ですから、受付でしばらく待ちます(⇒待ち状態)
・病院側は、問診票や先生の空き状況などを踏まえて先生が決ったら、患者さんに連絡します「○○先生の診察になりますので、第△診察室の前でお待ちください。これで、先生が空いたら診察を受けることができます。(⇒実行可能状態)
・前の患者さんの診察が終わったら、診察を受けられます(⇒実行状態)
※ここで、実行状態にあっても、途中で検査したりすると、もう一度診察を受けるまで、診察室の前で待つことがあります。(⇒実行可能状態に戻ります)

患者さんの数に対し、先生の数は圧倒的に少ないものです。よって、患者さんの状態(優先度)も確認しながら、患者さんを先生に割り当てていく作業が必要になります。

コンピュータも同じで、CPUにはいくつものプロセスがやってきます。CPUの数は限られていますから、そのプロセスの実行順序を決めるのがOSの役割であり、これがタスク管理です。
また、プロセスの実行順序を決定する方式にはいくつかの方式があり、到着順方式や、ラウンドロビン方式、優先度順方式などがあります。

以下にも解説しています。
http://sm.seeeko.com/archives/15876963.html

aae62d2c 

実行可能状態と待ち状態の違いがよく分かりません。




以下のように考えるといいかもしれません。

・実行可能状態:CPUが割り当てられればすぐに処理ができる。
・待ち状態:CPUが割り当てられても処理ができない。他からの入出力を待つなど

まあ、具体的に考えた方がいいですね。ブラウザを起動して検索を実行する場合で考えましょう。

①ブラウザを起動するためにクリックする⇒この時点では、実行されません。CPUが割り当てられないからです。よって、「実行可能状態」です。
②CPUが割り当てられる⇒「実行状態」になります。
③CPUは順番に割り当てられるので、まだ処理は残っているけど決められた自分の番が終わったら⇒実行可能状態(次のCPUが空くのを待つ)
④ブラウザの起動が終わり、ユーザからの次のアクション(たとえば、リンクをクリックするとか、検索キーワードを入力して検索するとか)を待っている状態になります。→待ち状態
⑤ブラウザを閉じる⇒タスクを終了させる

タスクマネージャもみてみましょう。実行状態にあるタスクにはCPUが割り当てられています。
CPUの利用が0%のタスクもたくさんそんざいします。これは、実行可能状態や待ち状態のタスクです。
taskmanager

2.プリエンプティブとノンプリエンプティブ

皆さんもお仕事されているとき、仕事は山のように降ってきますから、受け取った順に仕事をするのではなく、優先順位などをつけて仕事を調整されますよね。
コンピュータでも同じで、マルチタスク環境では、このように優先度に応じた仕事をする機能は必須になります。これがプリエンプティブです。
※preemptiveとは「先買権のある」という意味です。出典は、EXCEED 英和辞典(goo 辞書)より

プリエンプティブではない(=ノンプリエンプティブ)であれば、あるタスクがCPUを独占すると、他のタスクが実行できなくなってしまいます。過去問(H27春FE午前問19)では、「ノンプリエンプティブなスケジューリング方式の説明」として、「実行状態としたタスクが自ら待ち状態に遷移するか終了するまで,他のタスクを実行状態とすることができない」とあります。
応用情報技術者試験を勉強する成子

タスクスケジューリングには、到着順やラウンドロビンなど、いくつかの方式がありましたよね?
具体的にどれがプリエンプティブなのでしょうか。
では、過去問(H28春AP午前問19)をみてみましょう。
問19 ノンプリエンプティブだけのスケジューリング方式はどれか。
ア 残余処理時間順 ウ 優先度順
イ 到着順       エ ラウンドロビン
【正解】イ
ここにありますように、到着順だけがノンプリエンプティブで、それ以外はすべてプリエンプティブです。

3.タスクの状態に関する過去問

(1)過去問(H21秋AP午前問19)

問19 リアルタイムOSのマルチタスク管理機能において,タスクAが実行状態から実行可能状態へ遷移するのはどの場合か。
ア タスクAが入出力要求のシステムコールを発行した。
イ タスクAが優先度の低いタスクBに対して,メッセージ送信を行った。
ウ タスクAより優先度の高いタスクBが実行状態となった。
エ タスクAより優先度の高いタスクBが待ち状態となった。
正解は、ウです。
優先度の高いタスクBが実行状態となると、タスクAは実行可能状態になります。

(2)H29秋AP

問16 リアルタイムOSにおいて,実行中のタスクがプリエンプションによって遷移する状態はどれか。
ア 休止状態
イ 実行可能状態 
ウ 終了状態
エ 待ち状態






【正解】イ

(3)H27秋AP

問16 プリエンプション方式のタスクスケジューリングにおいて,タスクBの実行中にプリエンプションが発生する契機となるのはどれか。ここで,タスクの優先度は,タスクAが最も高<, タスクA>タスクB =タスクC>タスクDの関係とする。
ア タスクAが実行可能状態になった。
イ タスクBが待ち状態になった。
ウ タスクCが実行可能状態になった。
エ タスクDが実行可能状態になった。






【正解】ア

(4)H27春FE午前問19

問19 ノンプリエンプティブなスケジューリング方式の説明として,適切なものはどれか。
ア 新しいタスクが実行可能状態になるたびに,各タスクの残りの実行時間を評価し,その時間が短いものから順に実行する。
イ 実行状態としたタスクが決められた時間内に待ち状態に遷移しないときに,そのタスクを中断して実行待ち行列にある次のタスクを実行状態とする。
ウ 実行状態としたタスクが自ら待ち状態に遷移するか終了するまで,他のタスクを実行状態とすることができない。
エ タスクが実行可能状態になったときに,そのタスクの優先度と,その時,実行状態であるタスクの優先度とを比較して,優先度が高い方のタスクを実行状態とする。





ア:処理時間順(残余処理時間順)方式
イ:ラウンドロビン
エ:優先度順

【正解】ウ

(5)H27春ES午前Ⅱ問10

問10 優先度に基づくプリエンプティブなスケジューリングで動作する,二つの周期タスクA,Bがある。AはBよりも優先度が高く,周期は2ミリ秒,実行時間は1ミリ秒である。Bの周期が10ミリ秒のとき,1周期中に実行を完了できるBの実行時間は最大何ミリ秒か。ここで,A,B以外のタスクはなく,タスク切替えによるオーバヘッドはないものとする。
ア 3  イ 5  ウ 7  エ 9






【正解】イ

(6)H27秋AP午前問16

問16 プリエンプション方式のタスクスケジューリングにおいて,タスクBの実行中にプリエンプションが発生する契機となるのはどれか。ここで,タスクの優先度は,タスクAが最も高<, タスクA>タスクB =タスクC>タスクDの関係とする。
ア タスクAが実行可能状態になった。
イ タスクBが待ち状態になった。
ウ タスクCが実行可能状態になった。
エ タスクDが実行可能状態になった。






【正解】ア

 

1.タスクのスケジューリング方式

タスクのスケジューリング方式には、到着順方式、ラウンドロビン、優先度方式など、いくつかの方式があります。

(1)到着順方式

到着順にタスクを実行状態にします。

(2)処理時間順(残余処理時間順)方式

過去問(H27春FE午前問19不正解選択肢)では、「新しいタスクが実行可能状態になるたびに,各タスクの残りの実行時間を評価し,その時間が短いものから順に実行する」とあります。

(3)ラウンドロビン

過去問(H27春FE午前問19不正解選択肢)では、「実行状態としたタスクが決められた時間内に待ち状態に遷移しないときに,そのタスクを中断して実行待ち行列にある次のタスクを実行状態とする」とあります。

(4)優先度順

過去問(H27春FE午前問19不正解選択肢)では、「タスクが実行可能状態になったときに,そのタスクの優先度と,その時,実行状態であるタスクの優先度とを比較して,優先度が高い方のタスクを実行状態とする」とあります。

2.タスクのスケジューリング方式に関する過去問

(1)過去問(H23春FE午後問2)

問2 CPUの割当て方式に関する次の記述を読んで,設問1,  2に答えよ。
オペレーティングシステムの役割の一つとして,プロセスにCPUを割り当てることがある。そして,プロセスの実行順序を決定する方式には,次のようなものがある。
(1)到着順方式
到着順にプロセスを待ち行列の末尾に登録する。実行中のプロセスが終了すると,待ち行列の先頭からプロセスを一つ取り出して実行を開始する。
到着順方式を図1に示す。待ち行列に登録されているプロセスの状態を実行可能状態,実行中のプロセスの状態を実行状態と呼ぶ。
プロセス
(2)ラウンドロビン方式
到着順にプロセスを待ち行列の末尾に登録する。実行中のプロセスが終了すると,待ち行列の先頭からプロセスを一つ取り出して実行を開始する。また,実行中のプロセスが一定時間(以下,タイムクウォンタムという)を経過したら,実行を中断して,待ち行列の末尾に再登録し,待ち行列の先頭からプロセスを一つ取り出して実行を開始する。
ラウンドロビン方式を図2に示す。
ラウンドロビン
これらの方式の効率を示す指標としてター'ンアラウンドタイムがある。ここで,ターンアラウンドタイムとは,プロセスが待ち行列に到着してから実行が終了するまでの時間であり,プロセスの実行順序に影響される。

(中略)

プロセスの実行順序を決める別の方式に優先度順方式がある。優先度順方式の例を図3に示す。プロセスにはあらかじめ優先度が付けてあり,待ち行列は優先度ごとに用意してある。ここで,優先度は1~10の10種類で,値の大きい方が優先度は高い。

優先度
この方式では,次のとおりにプロセスの実行を制御する。
① プロセスを優先度に対応した待ち行列の末尾に登録する。
② プロセスが登録されている優先度の最も高い待ち行列の先頭からプロセスを一つ取り出して実行を開始する。
③ 実行中のプロセスの優先度が2以上のとき,実行時間が20ミリ秒経過するごとに優先度を一つ下げる。優先度を下げた結果,実行中のプロセスの優先度が実行可能状態にある優先度の最も高いプロセスよりも低くなった場合,実行中のプロセスを中断して,①に戻る。
④ 実行中のプロセスが終了した場合,②に戻る。

  (2)H27春AP午前

問17 プロセスのスケジューリングに関する記述のうち,ラウンドロビン方式の説明として,適切なものはどれか。

ア 各プロセスに優先度が付けられていて,後に到着してもプロセスの優先度が実行中のプロセスよりも高ければ,実行中のものを中断し,到着プロセスを実行する。
イ 各プロセスに優先度が付けられていて,イベントの発生を契機に,その時点で最高優先度のプロセスを実行する。
ウ 各プロセスの処理時間に比例して,プロセスのタイムクウォンタムを変更する。
エ 各プロセスを待ち行列の順にタイムクウォンタムずつ実行し,終了しないときは待ち行列の最後につなぐ。





【正解】エ

(3)H17秋SW午前

問24 ジョブスケジューリングに関する記述として,適切なものはどれか。
ア FCFS (First Come First Served)方式は,ジョブの到着順に処理を行うもので,長大なジョブがあってもスループットが高い。
イ SPT (Shortest Processing Time First)方式は,処理時間の短いジョブの順に処理を行うので,対話型処理の平均応答時間を最小にできる。
ウ デッドラインスケジューリング方式は,目標の時間帯内に処理を完了することを目的に処理の優先度を決定するので,タイマ割込みのオーバヘッドが影響し,時間の制約の厳しいリアルタイム処理には向いていない。
エ 優先度順方式は,バッチ処理の優先度を高く設定し,リアルタイム処理の優先度を低くして運用するのが一般的である。





【正解】イ

(4)H19春DB午前

問3 ラウンドロビン方式のタスクスケジューリングの説明として,適切なものはどれか。
ア 一定時間ごとにタイマ割込みを発生させ,実行可能の待ち行列の先頭のタスクにCPU資源を割り当てる。
イ 各タスクの優先度に従ってCPU資源を割り当てる。
ウ 処理時間の短いタスクから順にCPU資源を割り当てる。
エ 何らかの割込みが発生したときに,直ちに起動する必要のあるタスクにCPU資源を割り当てる。





【正解】ア

(5)H23秋SM午前Ⅱ

問3 コンピュータシステムにおけるジョブスケジューリングの特徴のうち,適切なものはどれか。
ア CPUに割り当てるジョブをOSが強制的に切り替えるタイムスライス方式では,タイマ割込みが多発するので,スループットが低下する。
イ FCFS (first-come first-served)方式のジョブスケジューリングは,ジョブ間にCPUを公平に割り当てるので,スループット応答時間の保証が可能となる。
ウ 対話型処理とバッチ処理が混在するシステムでは,対話型処理の優先度を高くすることによって,対話型処理の応答性能の向上が期待できる。
エ 入出力を多用するジョブよりもCPUを多用するジョブの処理優先度を上げた方が,CPUの待ち時間が少なくなるので,全体のスループットの向上が期待できる。





【正解】ウ

(5)H29秋AP問18
問18 CPUスケジューリングにおけるラウンドロビンスケジューリング方式に関する記述として,適切なものはどれか。
ア 自動制御システムなど,リアルタイムシステムのスケジューリングに適している。
イ タイマ機能がないシステムにおいても,簡単に実現することができる。
ウ タイムシェアリングシステムのスケジューリングに適している。
エ タスクに優先順位を付けることによって,容易に実現することができる。





【正解】ウ

 

↑このページのトップヘ