ソフトウェア 協調しなくていい!複数作業の効率化
計算機の世界では、複数の作業を同時に行っているように見えることを「多重作業」と言います。画面には複数の窓が開いており、それぞれで作業が進んでいるように見えますが、実際には少し違います。一つの料理人が複数の料理を同時進行している様子を想像してみてください。それぞれの料理に少しずつ時間を割り当て、順番に作業を進めることで、あたかも複数の料理を同時に行っているように見せることができます。計算機も同じように、非常に短い時間で作業を切り替えながら処理を進めているのです。この切り替えの方法には、大きく分けて二つの種類があります。一つは「協調的多重作業」です。これは、各作業が自ら進んで他の作業に処理を譲る方式です。料理の例で言うと、一つの料理に下ごしらえが終わったら、次の料理に取り掛かるようなものです。各作業が協調性を持って処理時間を譲り合うため、全体としてスムーズに作業が進みます。しかし、もしある作業が他の作業に処理を譲らず、長時間占有し続けてしまうと、他の作業は待たされることになり、全体的な処理速度が低下してしまいます。もう一つは「非協調的多重作業」です。これは、作業の切り替えを計算機自身が行う方式です。料理人がタイマーを使って、一定時間ごとに異なる料理の作業を切り替えるようなものです。各作業がどれくらいの時間を使っているかを計算機が管理し、強制的に切り替えるため、ある作業が処理を独占してしまうことを防ぐことができます。しかし、作業の切り替えが頻繁に発生するため、切り替え作業自体に時間と資源が消費されてしまうという欠点もあります。どちらの方法にも利点と欠点があり、計算機の用途や目的に合わせて使い分けられています。例えば、利用者とのやり取りを重視する場面では、応答速度を維持するために非協調的多重作業が用いられます。一方、計算機の資源を最大限に活用したい場面では、協調的多重作業が有効な場合もあります。このように、多重作業を実現するための仕組みは複雑ですが、計算機をより便利に使うために重要な役割を果たしています。
