ノンプリエンプティブマルチタスク:懐かしのパソコン動作方式
ITの初心者
先生、「ノンプリエンプティブマルチタスク」ってどういう意味ですか?
ITアドバイザー
そうですね。たくさんの仕事をすることを「マルチタスク」と言いますが、「ノンプリエンプティブマルチタスク」は、複数のソフトが順番に計算資源を使うことで、同時に動いているように見せる技術です。
ITの初心者
順番に計算資源を使うんですか?
ITアドバイザー
そうです。例えば、AさんとBさんがパソコンを1台使いたいとします。Aさんが使っている間はBさんは待っていて、Aさんが使い終わったらBさんが使う、というように順番に使うことで、2人ともパソコンを使えるようにするイメージです。
ノンプリエンプティブマルチタスクとは。
「ノンプリエンプティブマルチタスク」っていうのは、コンピューターの中で同時に複数のソフトを動かす技術のひとつなんだ。それぞれのソフトが、自分が使っていない中央処理装置の時間を他のソフトに順番に渡していくことで、同時に動いているように見せているんだ。この技術は、昔の「ウィンドウズ3.1」や「マッキントッシュ・オーエス」で使われていたんだよ。それぞれのソフトが仲良く譲り合って動いているから、「協調的マルチタスク」とか「疑似マルチタスク」とも呼ばれているんだ。ちなみに、このやり方とは違って、中央処理装置の時間を強制的に割り当てて制御するやり方は「プリエンプティブマルチタスク」って呼ばれているよ。
複数のソフトを同時実行?
– 複数のソフトを同時実行?
皆さんは、パソコンで仕事や趣味をするとき、複数のアプリケーションソフトを同時に使いたいと思ったことはありませんか?例えば、文章を書きながらインターネットで情報を調べたり、音楽を聴きながらプレゼンテーション資料を作成したり。こうした複数の作業を同時に行うことを可能にするのが「マルチタスク」という技術です。
今では、マルチタスクはパソコンにとって当たり前の機能となっていますが、初期のパソコンでは、一度に一つのソフトしか実行できませんでした。そこから技術が進歩し、様々な方法でマルチタスクを実現するようになりました。
今回は、初期のパソコンで採用されていた「ノンプリエンプティブマルチタスク」という方式について解説します。この方式では、実行中のソフト自身が、他のソフトに処理を交代するタイミングを決めなければなりませんでした。しかし、この方法には、あるソフトが処理を譲らず、他のソフトが実行できない状態になってしまうという欠点がありました。
このように、初期のマルチタスクは、現在のようにスムーズな動作を実現するまでには、様々な試行錯誤が繰り返されてきたのです。
時代の流れ | マルチタスクの方式 | 説明 | 利点 | 欠点 |
---|---|---|---|---|
初期のパソコン | ノンプリエンプティブマルチタスク | 実行中のソフト自身で処理を交代するタイミングを決める。 | – | あるソフトが処理を譲らない場合、他のソフトが実行できない。 |
現在のパソコン | プリエンティブマルチタスク(※本文に記載なし) | OSがソフトの実行時間を管理し、強制的に切り替える。 | 複数のソフトを同時に実行できる。 | – |
譲り合いの精神
– 譲り合いの精神コンピューターの世界でも、人間社会と同じように「譲り合い」の精神が大切になることがあります。その一つが、「ノンプリエンプティブマルチタスク」という方式です。これは、複数のアプリケーションソフトがお互いに譲り合いながら、一つのCPUという資源を共有して動作する仕組みです。例えるなら、大きなケーキをみんなで仲良く分け合うようなものです。この場合、CPUはケーキを切り分けるための「ケーキサーバー」に当たります。そして、それぞれのアプリケーションソフトは、順番にこのケーキサーバーを使って、自分の必要な部分を切り取っていきます。重要な点は、各アプリケーションソフトがケーキサーバーを使える時間は決められており、自分の処理が終わらなくても時間になれば、他のソフトにケーキサーバーを譲らなければならないということです。 つまり、自分の作業が途中でも、順番が来たらケーキサーバーを一旦置き、他の人の作業が完了するまで待つ必要があるのです。このように、ノンプリエンプティブマルチタスクは、各アプリケーションソフトが決められた時間内でCPUを利用し、時間になったら他のソフトにCPUを明け渡すという「譲り合い」によって成り立っています。 このような仕組みから、「協調的マルチタスク」とも呼ばれます。
項目 | 内容 |
---|---|
方式 | ノンプリエンプティブマルチタスク (協調的マルチタスク) |
目的 | 複数のアプリケーションソフトが1つのCPUを共有して動作するため |
仕組み | – アプリケーションソフトがお互いにCPUを譲り合いながら動作する – 各アプリケーションソフトは決められた時間だけCPUを使用できる – 時間が来たら、処理が完了していなくても他のソフトにCPUを明け渡す |
例え | 大きなケーキ (CPU) をみんなで分け合う (各アプリケーションソフトが順番に利用) |
メリットとデメリット
– メリットとデメリット
コンピューターの処理能力が限られていた時代において、ノンプリエンプティブマルチタスクは、そのシンプルな構造ゆえに、貴重なコンピューター資源を効率的に活用できる画期的な技術でした。プログラムの切り替えをオペレーティングシステム側で制御する必要がないため、システム全体にかかる負担が少なく、限られたリソースでも比較的円滑に複数のプログラムを同時実行することが可能だったのです。これは、当時のコンピューターにとって大きなメリットでした。
しかし、ノンプリエンプティブマルチタスクには、その仕組み上、避けることのできない欠点も存在していました。プログラム側でCPUの使用時間を適切に管理する必要があるため、もしも、あるプログラムがCPUを長時間占有してしまうようなことがあれば、他のプログラムは処理待ちの状態となり、システム全体の応答速度が極端に低下してしまう可能性がありました。最悪の場合、システム全体が応答不能に陥り、いわゆるフリーズ状態になってしまうことも少なくありませんでした。これは、安定した動作が求められるシステムにおいては、看過できない大きな問題でした。
項目 | 内容 |
---|---|
メリット | コンピューター資源を効率的に活用できる システム全体にかかる負担が少ない 限られたリソースでも複数のプログラムを同時実行できる |
デメリット | プログラム側でCPUの使用時間を適切に管理する必要がある CPUを長時間占有するプログラムがあると、他のプログラムが処理待ちになり、システム全体の応答速度が低下する可能性がある システム全体が応答不能になる可能性がある |
進化の歴史
コンピューターの世界において、複数の作業を同時に行う「マルチタスク」は、その進化とともに大きく発展してきました。初期のコンピューターでは、一つのプログラムが終了するまで次のプログラムを実行できませんでした。しかし、技術の進歩により、複数のプログラムを短い時間で切り替えながら実行することで、見かけ上同時に処理しているように見せる「マルチタスク」が可能になりました。
当初は、実行中のプログラム自身が処理時間を制御する「協調型マルチタスク」が主流でした。しかし、これは一つのプログラムが処理時間を使いすぎると、他のプログラムの実行が遅延するという問題を抱えていました。
その後、技術の進化とともに、コンピューターの中枢を担うCPUの使用時間を、OSと呼ばれる基本ソフトが強制的に制御することで、より安定したマルチタスクを実現する「プリエンプティブマルチタスク」が登場しました。Windows 95以降やMacOSは、このプリエンプティブマルチタスクを採用しており、現在のパソコンでは主流となっています。これにより、特定のプログラムが処理時間を独占することなく、複数のプログラムをスムーズに動作させることが可能になりました。
マルチタスクの種類 | 説明 | 利点 | 欠点 | 代表的なOS |
---|---|---|---|---|
協調型マルチタスク | プログラム自身が処理時間を制御する | – シンプルな仕組み – プログラム間の干渉が少ない |
– 一つのプログラムが処理時間を使いすぎると、他のプログラムの実行が遅延する | – MS-DOS – Windows 3.1以前 |
プリエンプティブマルチタスク | OSがCPU時間を強制的に制御する | – 安定したマルチタスクを実現 – 特定のプログラムが処理時間を独占することを防ぐ |
– OSが複雑になる – プログラム間の干渉の可能性がある |
– Windows 95以降 – macOS – Linux |