この記事では、タスク管理について、初心者にも分かりやすく、図解付きで丁寧に解説しています!
ジョブとタスクの違い
- ジョブは人間から見た仕事、タスクはコンピュータから見た仕事。
タスクの管理
- あるルールに則って、CPUの使用権をタスクに与えることをタスク管理と呼ぶ。
- タスクは「実行状態」「実行可能状態」「待ち状態」を経て完了する。
- 優先度方式では優先度が高いタスクからCPUの使用権を与える。
- ラウンドロビン方式ではCPUの使用権を一定時間毎に切り替える。
スプーリング
- 高速なCPUと低速な入出力装置間のやり取りを、磁気ディスクを通じて行うことで、CPUで待ちが発生せずに処理効率が上がる。これをスプーリングと呼ぶ。
割込み処理
- 割込み処理とは、実行中のプログラムを強制的に中断して実行される処理。
- 内部割込みは、プログラムに関係する割込み処理。
- 外部割込みは、プログラムに関係ない割込み処理。
ジョブとタスクの違い
ジョブは人間から見た仕事の単位で、タスクはコンピュータから見た仕事の単位です。
人間がコンピュータに依頼した1つのジョブを、コンピュータは複数のタスクに分割して処理するってことですね。
CPUのタスク管理
目の前にあるコンピュータは複数のタスクを実行しないといけないですが、実は同時に全てを処理しているわけではありません。
それぞれのタスクの優先度を決めて、どれにCPUの使用権を与えるか考えながら、処理しているんですね。「タスクの優先度を決めて、優先度が高いタスクにCPUの使用権を与える」ことをタスク管理と呼びます。
タスクには3つの状態がある
タスクの状態には「実行状態」「実行可能状態」「待ち状態」の3つがあり、タスクが生成されてから、この3つの状態を経てタスクが完了し消滅します。
実行状態 :CPUがタスクを実行している状態
実行可能状態:CPUがタスクを実行するのを待っている状態
待ち状態 :他のタスクが入出力装置を使用しているので待っている状態
タスクはこの3つの状態を下の図のように遷移しながらCPUに処理されていきます。
タスクが生成されると実行可能状態になります。そして、CPUがタスクを実行できるようになれば実行状態に遷移します(①)。しかし、より優先度が高いタスクが生成されると、先にそちらを処理しなければいけません。なので、実行可能状態に戻されます(②)。
入出力装置による処理が発生すると待ち状態に遷移します(③)。そして、他で実行していた入出力処理が完了したら再度、実行可能状態に遷移し(④)、タスクの使用権が回ってくると実行状態になり入出力処理も実行します(①)。
ちなみに、タスクを実行可能状態から実行状態にすることをディスパッチと言い、逆に実行状態から実行可能状態にすることをプリエンプションと言います。
実行可能状態と待ち状態の違い
実行可能状態はCPUが空くのを待つ状態が、待ち状態は入出力装置が空くのを待つ状態です。
実行状態でタスクの計算処理が完了したら、最後は入出力処理を実行してユーザに結果を返す必要がありますが、入出力装置はCPUに比べて処理速度が遅いので一旦待ち状態に移しておきます。
CPU使用権の優先順序
実行可能状態にある複数のタスクの中で、どのタスクを実行状態に移すのかを決める方式には優先度方式とラウンドロビン方式があります。
優先度方式
優先度が高いタスクにCPUの使用権を与える方式です。
ラウンドロビン方式
CPUの使用権を一定時間毎に切り替える方式です。たとえタスクが完了しなくても、一定時間が経過すると強制的にチェンジします。
スプーリング
CPUに比べて入出力装置は処理速度がかなり遅いです。低速の入出力装置に合わせてCPUが動いていると、CPUは効率よく処理が出来ません。
そこで、入出力したいデータを一時的に別の磁気ディスクに置いておき、入出力装置はそこから入出力するようにします。この仕組みをスプーリングと言います。スプーリングを行うことでCPUは入出力装置を待つ必要が無くなり、効率よく処理が進みます。
割込み処理
割込み処理とは実行中のプログラムを中断して強制的に実行される処理のことです。アラームや入出力の完了連絡、プログラム内でのゼロ除算によるエラーメッセージの表示など、ユーザにどうしても知らせないといけない事態が起きた時に割込み処理が発生します。
割込み処理が発生したら、CPUの使用権が割込み処理に与えられ、割込み処理が終わったら、元のタスクに使用権が戻ってきます。
割込み処理の中には、実行中のプログラムが原因で生じる内部割込みと実行中のプログラムに関係なく生じる外部割込みがあります。
内部割込み:実行中のプログラムが原因の割込み
・ゼロで除算を実行したことによる割込み
外部割込み:実行中のプログラムと関係ない割込み
・タイマによる時間経過の通知
基本情報、出るところだけまとめ!
タスクは「実行状態」「実行可能状態」「待ち状態」を経て完了する。
実行可能状態から実行状態になることをディスパッチ、実行状態から実行可能状態になることをプリエンプションと呼ぶ。
優先度方式では、優先度が高いタスクからCPUの使用権を与える。
ラウンドロビン方式では、CPUの使用権を一定時間毎に切り替える。
低速な入出力装置と高速なCPU間のやり取りを、磁気ディスクを通じて行うようにすることで、CPUに待ち時間を発生させないようにして、処理効率を上げる仕組みをスプーリングと呼ぶ。
割込み処理が発生したら、CPUの使用権が割込み処理に与えられ、割込み処理が終わったら、元のタスクに使用権が戻る。
内部割込みはプログラムに関係する割込みで、例えば、ゼロで除算を実行したことによる割込みが該当する。外部割込みはプログラムに関係しない割込みで、例えば、タイマによる時間経過の通知が該当する。
基本情報技術者試験での出題例
令和元年度秋期問13
基本情報技術者
午前試験 令和元年度秋期問13
メイン処理,及び表に示す二つの割込みA,Bの処理があり,多重割込みが許可されている。割込みA,Bが図のタイミングで発生するとき,0ミリ秒から5ミリ秒までの間にメイン処理が利用できるCPU時間は何ミリ秒か。ここで,割込み処理の呼出し及び復帰に伴うオーバヘッドは無視できるものとする。
ア 2
ウ 3.5
イ 2.5
エ 5
正解は”ア”
割込み処理が発生した場合、メイン処理を中断して割込み処理を実行します。
また、割込み処理の中でも、優先度が高い処理は優先的に処理を実行します。
よって、CPUの処理時間は下のようになります。よってメイン処理は2ミリ秒です。
令和元年度秋期問18、平成29年度秋期問18
基本情報技術者
午前試験 令和元年度秋期問18、平成29年度秋期問18
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。
ア Aの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。
イ Aの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。
ウ Bの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。
エ Bの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。
正解は”ウ”
Aの方がBより優先度が高いので、
・Aの実行中にBに起動がかかると、そのままAを実行し続けます。
・Bの実行中にAに起動がかかると、Bを実行可能状態にしてAを実行します。
入出力装置が原因で待ちが発生する訳ではないので、待ち状態にはなりません。
サンプル問題問10、平成31年度春期問9
基本情報技術者
科目A サンプル問題問10、午前試験 平成31年度春期問9
外部割込みの原因となるものはどれか。
ア ゼロによる除算命令の実行
イ 存在しない命令コードの実行
ウ タイマによる時間経過の通知
エ ページフォールトの発生
正解は”ウ”
実行中のプログラムに関係ない割込みなので答えは”ウ”です。
平成31年度春期問16
基本情報技術者
午前試験 平成31年度春期問16
タスクのディスパッチの説明として,適切なものはどれか。
ア 各タスクの実行順序を決定すること
イ 実行可能なタスクに対してプロセッサの使用権を割り当てること
ウ タスクの実行に必要な情報であるコンテキストのこと
エ 一つのプロセッサで複数のタスクを同時に実行しているかのように見せかけた状態のこと
正解は”イ”
プロセッサはCPUと同じ意味の言葉です。
平成30年度秋期問16
基本情報技術者
午前試験 平成30年度秋期問16
三つのタスクの優先度と,各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。優先度方式のタスクスケジューリングを行うOSの下で,三つのタスクが同時に実行可能状態になってから,全てのタスクの実行が終了するまでの,CPUの遊休時間は何ミリ秒か。ここで,CPUは1個であり,1CPUは1コアで構成され,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示すものとする。
ア 2
ウ 4
イ 3
エ 5
正解は”イ”
CPUでは優先度が高いタスクから処理を実行します。よって、下の図のような処理になるので、CPUの遊休時間は3ミリ秒になります。
平成30年度秋期問17
基本情報技術者
午前試験 平成30年度秋期問17
スプーリング機能の説明として,適切なものはどれか。
ア あるタスクを実行しているときに,入出力命令の実行によってCPUが遊休(アイドル)状態になると,ほかのタスクにCPUを割り当てる。
イ 実行中のプログラムを一時中断して,制御プログラムに制御を移す。
ウ 主記憶装置と低速の入出力装置との間のデータ転送を,補助記憶装置を介して行うことによって,システム全体の処理能力を高める。
エ 多数のバッファからなるバッファプールを用意し,主記憶にあるバッファにアクセスする確率を上げることによって,補助記憶装置のアクセス時間を短縮する。
正解は”ウ”
平成30年度秋期問18
基本情報技術者
午前試験 平成30年度秋期問18
スケジューリングに関する記述のうち,ラウンドロビン方式の説明として,適切なものはどれか。
ア 各タスクに,均等にCPU時間を割り当てて実行させる方式である。
イ 各タスクに,ターンアラウンドタイムに比例したCPU時間を割り当てて実行させる方式である。
ウ 各タスクの実行イベント発生に応じて,リアルタイムに実行させる方式である。
エ 各タスクを,優先度の高い順に実行させる方式である。
正解は”ア”
平成30年度春期問10
基本情報技術者
午前試験 平成30年度春期問10
内部割込みに分類されるものはどれか。
ア 商用電源の瞬時停電などの電源異常による割込み
イ ゼロで除算を実行したことによる割込み
ウ 入出力が完了したことによる割込み
エ メモリパリティエラーが発生したことによる割込み
正解は”イ”
平成30年度春期問16
基本情報技術者
午前試験 平成30年度春期問16
三つのタスクA~Cの優先度と,各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。A~Cが同時に実行可能状態になって3ミリ秒経過後から7ミリ秒間のスケジューリング状況を表したものはどれか。ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。また,表の()の数字は処理時間を表すものとし,解答群の中の”待ち”はタスクが実行可能状態にあり,CPUの割当て待ちであることを意味する。
正解は”ウ”
平成29年度秋期問10
基本情報技術者
午前試験 平成29年度秋期問10
外部割込みに分類されるものはどれか。
ア インターバルタイマによって,指定時間経過時に生じる割込み
イ 演算結果のオーバフローやゼロによる除算で生じる割込み
ウ 仮想記憶管理において,存在しないページへのアクセスによって生じる割込み
エ ソフトウェア割込み命令の実行によって生じる割込み
正解は”ア”
平成29年度春期問16
基本情報技術者
午前試験 平成29年度春期問16
四つのジョブA~Dを次の条件で実行し印刷する。全ての印刷が完了するのは,ジョブを起動してから何秒後か。
〔条件〕
(1) ジョブは一斉に起動され,多重度1で実行される。
(2) 優先順位はAが最も高く,B,C,Dの順に低くなる。
(3) 各ジョブの実行後,スプーリング機能が1台のプリンタを用いて逐次印刷を行う。
(4) 各ジョブを単独で実行した場合の実行時間と印刷時間は,表のとおりである。
(5) その他のオーバヘッドは考慮しない。
ア 100
ウ 190
イ 160
エ 280
正解は”ウ”