マルチタスクとは
マルチタスクとは、コンピュータにおいて複数のアプリケーションや処理(タスク)を、同時に並行して実行しているように見せる機能や状態のことです。現代のコンピュータは、非常に短い時間(数ミリ秒単位)で実行するタスクを次々と切り替える(タイムシェアリング)ことで、人間にはまるで複数のプログラムが完全に同時に動いているかのように感じさせています。これにより、ユーザーは複数の作業を効率的に行えます。
具体例
- 日常のPC操作:パソコンで音楽プレイヤーでBGMを再生しながら、Webブラウザで調べ物をして、さらにテキストエディタでメモを取るという操作を同時に行えます。それぞれのソフトが裏で切り替えられながら実行されています。
- スマートフォンのバックグラウンド動作:地図アプリでナビゲーションを利用しながら、裏でメッセージアプリの通知を受け取ったり、歩数計アプリで歩数をカウントし続けたりすることができます。
もう少し詳しく
マルチタスク(Multitasking)とは、単一のコンピュータ上で複数のプログラム(タスク)を同時進行で処理しているように見せかける、OSの極めて重要な機能です。人間の感覚では、音楽を聴きながら文章を作成し、裏でファイルのダウンロードが進んでいるのは「完全に同時に動いている」ように思えますが、実はCPUが1つしかない(シングルコアの)環境では、ある瞬間にCPUが実行できる処理は1つだけです。OSは、CPUの処理能力を数ミリ秒から数十ミリ秒という人間には知覚できないほどの超高速なサイクルで細切れにし、各タスクに順番に割り当てて切り替える「タイムシェアリング(時分割処理)」を行っています。これにより、あたかもすべてが同時に動作しているかのような錯覚(並行処理)を生み出しています。
マルチタスクの実現方式には、歴史的に大きく分けて「ノンプリエンプティブ(協調的)マルチタスク」と「プリエンプティブマルチタスク」の2種類が存在します。昔のOS(Windows 3.1や初期のMac OSなど)で採用されていた協調的マルチタスクでは、OSではなくアプリケーション自身が「一区切りついたから他のアプリにCPUを譲る」という自発的な制御を行っていました。しかし、この方式では行儀の悪いアプリやバグでフリーズしたアプリがあると、CPUを手放さなくなり、システム全体が道連れになって固まってしまうという致命的な弱点がありました。そこで現代のOS(Windows 10/11、macOS、Linux、iOS、Androidなど)では、すべて「プリエンプティブマルチタスク」が採用されています。これは、OSが強力な管理権限を持ち、タイマー割り込みなどのハードウェア機能を使って、どんなタスクであっても強制的にCPUの利用権を剥奪し、次のタスクへ強制的に切り替える方式です。これにより、一つのアプリがクラッシュしても、システム全体が停止することのない高い安定性が実現されています。
試験でのポイント
マルチタスクの方式の違いや、関連する用語の定義がよく問われます。
- プリエンプティブとノンプリエンプティブの違い:上記の通り、「OSが強制的にタスクを切り替える(奪い取る)」のがプリエンプティブ方式、「アプリケーションが自発的にCPUを開放するのを待つ」のがノンプリエンプティブ方式です。試験ではこの主導権が「OS」にあるのか「アプリケーション」にあるのかが明確な判断基準となります。
- 割り込み(Interrupt)の概念:OSが強制的に処理を切り替えるためには、現在実行中のプログラムの処理を一時的に中断させる「割り込み」というハードウェアの仕組みが不可欠です。タイマーによる割り込みが発生することで、OSのスケジューラが呼び出され、コンテキストスイッチが実行されます。
- マルチプログラミングとの違い:マルチタスクと似た言葉にマルチプログラミングがありますが、これは主にCPUの遊休時間(I/O待ちなど)を減らしてCPU稼働率を高めることを目的とした古くからの概念です。マルチタスクは、これに加えてユーザーインターフェースの応答性を高める(タイムシェアリング)という側面が強調されます。
関連する用語
プリエンプティブ、タイムシェアリング、コンテキストスイッチ