ジョブとタスクがあります。どちらも「仕事」という意味です。
では、どう違うのでしょうか。
ザックリ説明すると、
・ジョブ:人間からみた仕事の単位
・タスク:コンピュータから見た仕事の単位(なので、読みだしたり、演算したり、書きこんだりと工程が増える)
また、ジョブステップという言葉がある。ジョブを工程ごとに分解したものである。「違うぞ」という突っ込みがあるが、ジョブステップ=タスクとざっくり理解しておいて、それほど間違ってはいない。
ジョブ→ジョブステップ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が待ち状態となった。 |
↓
↓
↓
↓
正解は、 ウです。