皆様こんにちは。前回は、狭義のOSの中の記憶管理、ユーザー管理、入出力管理を見て参りました。
本日は続きで、タスク管理について見てまいります。

タスク管理
OSのデータ処理は、タスクという仕事の単位で表現され必要なハードウェア資源(CPUやメモリ)に処理を割り当てます。
そのタスクの処理には、①シングルタスク、②マルチタスク、③マルチスレッド、④並列処理があります。
以下①〜③までお料理の例を用いて説明して参ります。
①シングルタスク
1つのプロセスまたはプログラムが1回に1つだけ実行される状態を指します。
シングルタスクのシステムでは、ユーザが1つの作業をしている間、他の作業は実行されません。
コバヤシはお魚が好きなので、夕食を焼き魚と煮物、あとサラダでも作ろうかなと考えました。
シングルタスクは、お魚を焼く、焼き終わり次第焼き魚を盛り付けて全て完成してから煮物に取り掛かります。
煮物の野菜をカットし煮る。煮込みが完了してから、サラダを盛り付ける、これらの処理を一品ずつ完成してから次の料理を作ります。
このように時間がかかるためすべて完成する頃には、焼き魚は冷たくなっていました。
②マルチタスク
OSがCPUに割り当てるタスクを一定の処理時間で区切り、時間内に処理ができなければタスク切り替えることで、複数の処理を並行でしているかのように見せかける技術です。
あるタスクを少し処理し、制限時間が来たのでまた別のタスクを短時間だけ処理して、また別のタスクをetc‥
というようにあたかも複数の処理を一斉に同時並行でしているように見えるけれども、実際はCPUがOSの指示で制限時間内に処理が終わらないタスクを切り替えて対応しているという処理方法です。
魚をさばいて煮物の仕込みをしていたら制限時間が来たのでサラダの野菜カットに移り、また制限時間が来たので煮物の仕込みの続きをして…
といったように、一定の時間内に処理が終わらなければ次の処理に移る処理方法となります。
③マルチスレッド
OSがCPUの余力を判断し複数スレッドを並列で効率良く処理する方法です。
マルチタスクにマルチスレッドやと?
ちょっと何言っているかわかりません。ITパスポートの勉強から撤退します
そんな皆様の心の声が聞こえてきそうです
ここで記事を閉じられると、コバヤシも困ります。テイサイもあります。
もう少し説明をさせてください。
②のマルチタスクは、複数別々のタスク(例えばアプリケーションやプログラムという別タスク)の処理を時間で区切り素早く切り替えることで、並行して処理をしているようにみえます。処理タスクが多くて並列処理をしているように見える。
③のマルチスレッドは、タスク内で複数のスレッドが効率良く実行される状態です。(複数タスクを処理しているように見えるではない)
また料理でたとえます。
煮物の野菜を切り仕込みをします。ある程度仕込みができた段階で、魚を魚焼き機に入れます。焼いている間に煮物を煮込んでいきます。
煮物を煮込み始めたら、サラダの野菜をカットして盛り付けをしておきます。
焼き魚、煮物、サラダを作るというタスクの各工程は、魚を焼いている待ち時間を有効活用するなどして次の工程へ移ることを繰り返していきました。
マルチタスクとの違いは、処理を一定の制限時間にかからしめるのではなく、各作業をキリのいいところまで進めて次の作業を行う点です。
野菜を切る、煮込む、魚を焼く、サラダを盛り付ける、これら各工程の作業(スレッド)を並列して効率良く処理することを、マルチスレッドといいます。
以上のことを小難しい言葉で表現すると
マルチタスクは、複数のタスクの処理を時間で区切り並行して実行される(タスク間で切り替え)。
マルチスレッドは、OSがCPUの余力を判断し複数スレッドを並列で効率良く処理が実行される。
と言うことになります。
どうでしょうマルチスレッド。ITパスポートの勉強を続けられそうでしょうか。撤退しないでね(願)
④並列処理
これは先ほどまでの単一のCPUによる処理とは異なり、複数の処理を、複数のCPUで並行に処理をします。
おそらく皆様が一番イメージのしやすいものですね。
大変抽象的な事項が続きましたのでタスク処理を図にまとめます。

さて、ここまでタスク処理を解説いたしました。
え?なんか今日の記事難しくない?と思ったあなた。鋭いです。
マルチタスクとマルチスレッドの違いもそうですが、OS自体が調べれば調べるほど沢山事柄があって難しいです。
タスクやスレッドという単語も何となく処理が似ている感じがして私も困惑をしていました。
ただ、このあたりまで整理ができればおそらく試験は大丈夫だと思います。
どうかITパスポート試験を撤退しないような内容の記事となっていれば幸いです。
本日もご覧いただきありがとうございました。
小林 大洸