×
システム構成・性能・ソフトウェア

マルチタスクの実現方式には、歴史的に大きく分けて「ノンプリエンプティブ(協調的)マルチタスク」と「プリエンプティブマルチタスク」の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稼働率を高めることを目的とした古くからの概念です。マルチタスクは、これに加えてユーザーインターフェースの応答性を高める(タイムシェアリング)という側面が強調されます。

関連する用語

プリエンプティブ、タイムシェアリング、コンテキストスイッチ