問題
問題
三つのタスクの優先度と,各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。三つのタスクが同時に実行可能状態になってから,全てのタスクの実行が終了するまでの,CPUの遊休時間は何ミリ秒か。ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示す。
優先度 | 単独実行時の動作順序と処理時間(単位 ミリ秒) |
高 | CPU(3) → I/O(5) → CPU(2) |
中 | CPU(2) → I/O(6) → CPU(2) |
低 | CPU(1) → I/O(5) → CPU(1) |
ア:1 イ:2 ウ:3 エ:4
基本情報技術者平成25年春期 午前問18
基本情報技術者試験や応用情報技術者試験で出題されるマルチプログラミングの問題。過去問を見ると難しく感じる問題です。しかし、マルチプログラミングの動きを理解していれば、そこまで難しい問題ではありません。
本記事では、マルチプログラミングについて図解で分かりやすく解説していきます。
本記事で学べること
- タスクの状態遷移について理解する
- マルチプログラミングの動きについて理解する
- 基本情報技術者試験の過去問の解き方を学ぶ
目次
タスクの状態遷移
タスクとは、コンピュータが処理する作業の最小単位のことで、コンピュータが処理するプログラムもタスクです。
タスクには「実行可能状態」「実行状態」「待機状態」の3つの状態があり、次の状態遷移図のとおりに遷移します。
生成されたタスクは「実行可能状態」となり、CPUの使用権が回ってくるのを待ちます。そして、CPUの使用権が回ってきたら「実行状態」に変わります。
「実行状態」になったタスクは処理が終了すればタスクは消滅、処理中に入出力処理が発生した場合は「待機状態」に状態が変わり、入出力処理が終わり次第、再び「実行可能状態」に遷移します。
スポンサーリンク
マルチプログラミング
マルチプログラミングとは
マルチプログラミングとは、複数のタスク(プログラム)を並行して同時に実行することで、マルチタスクや多重プログラミングとも呼ばれています。
コンピュータで実行するプログラム(タスク)には、次の図のように「CPUによる処理」と「入出力処理」があります。
このプログラムAを実行するとき、CPUは「30ミリ秒」しか処理しません。「60ミリ秒」は入出力処理であり、入出力処理の間 CPUは何もしていません。(入出力処理が終わるのを待っている状態)
マルチプログラミングは、このCPUが何もしていない時間(アイドルタイム)に別のプログラムを処理させることでCPUの利用効率を向上させる手法です。
マルチプログラミングの動作例
例えば、次のような2つのプログラムがあるとします。この2つのプログラムを1つのCPUで順番に処理すると「180ミリ秒」かかります。
この2つのプログラムを、マルチプログラミングで処理したのが次の図です。
CPUはプログラムA(プログラムA:実行状態、プログラムB:実行可能状態)を処理し、プログラムAが入出力処理を行っている間に、プログラムBを処理(プログラムA:待機状態※入出力処理が終わり次第 実行可能状態に遷移する、プログラムB:実行状態)します。
このように、マルチプログラミングではCPUが何もしていない時間(アイドルタイム)に、別のプログラムを処理させることで、CPUの利用効率を向上させています。
その結果、本来であれば順番に処理すると「180ミリ秒」かかる処理が、マルチプログラミングで処理することで「100ミリ秒」で終了しています。
基本情報技術者試験 過去問の解説
スポンサーリンク
基本情報技術者平成28年秋期 午前問18
問題
設問の図は、プロセスA実行中に割り込みが発生し、CPUの使用権がプロセスAからプロセスBに移される過程を示しています。
割り込み発生によりプロセスを切り替えるときの流れは次のとおりです
- プロセスA:実行状態の退避(プロセスA:実行状態→実行可能状態に遷移)
- 次に実行するプロセスを選択(プロセスBを選択する)
- プロセスB:実行状態の回復(プロセスB:実行可能状態→実行状態に遷移)
基本情報技術者平成25年春期 午前問18
問題
三つのタスクの優先度と,各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。三つのタスクが同時に実行可能状態になってから,全てのタスクの実行が終了するまでの,CPUの遊休時間は何ミリ秒か。ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示す。
優先度 | 単独実行時の動作順序と処理時間(単位 ミリ秒) |
高 | CPU(3) → I/O(5) → CPU(2) |
中 | CPU(2) → I/O(6) → CPU(2) |
低 | CPU(1) → I/O(5) → CPU(1) |
ア:1 イ:2 ウ:3 エ:4
基本情報技術者平成25年春期 午前問18
マルチプログラミング(マルチタスク)の問題です。マルチプログラミングで3つのタスクを同時に処理すると次の図のような流れで処理します。
上記の図より、すべてのタスクが完了するまでのCPUの空き時間(遊休時間:アイドルタイム)は「3ミリ秒」です。