

問題
問題
三つのタスクの優先度と,各タスクを単独で実行した場合の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ミリ秒」です。

基本情報技術者試験おすすめの参考書・問題集
いちばんやさしい 基本情報技術者 | 『基本情報技術者試験』試験に、短期間で一発合格するための試験対策本。ITの知識がまったくない、未経験者やでもスラスラと学習を進められるよう、丁寧に解説。 |
かやのき先生の基本情報技術者教室 | 基本情報技術者をめざす方のためのやさしいオールインワンタイプの参考書&問題集。イラストや豊富な図解・例え話を駆使して理解しやすく・記憶に残りやすいように説明。 |
基本情報技術者 パーフェクトラーニング過去問題集 | 科目A・Bともに万全の対策ができる、定番の過去問題集!科目A・科目Bの両方について万全の対策ができる。 |
キタミ式イラストIT塾 基本情報技術者 | すべての解説をイラストベースで行っているため,とてもわかりやすい解説本。いちばん最初に読む基本情報技術者試験関連の書籍を探している人におすすめ! |
出るとこだけ!基本情報技術者[科目B] | 基本情報技術者【科目B】対策の定番書!前提知識+解き方+試験問題を掲載。効率よく学習できる。 |
基本情報技術者 合格教本 | 出題範囲を体系的にきちんと理解しながら学習したい人におすすめ!基本情報技術者試験の定番テキストの改訂版。 |
基本情報技術者 超効率の教科書+よく出る問題集 | 動画でスムーズに学習スタート、テキストでしっかり理解度を深める!よく出る問題を反復学習することで、合格に直結するチカラが身に付く! |