スケジューリング

記事数:(3)

ソフトウェア

協調せぬマルチタスク:その仕組みと利点

計算機を使う上で、複数の仕事を同時にこなしたい場面はよくあります。文章を書きながら音楽を聴いたり、調べ物をしながら動画を見たりするといった状況です。このような複数の仕事を同時に行うことを可能にするのが、複数作業同時処理という技術です。複数作業同時処理には、大きく分けて二つのやり方があります。一つは、各仕事が自主的に他の仕事に処理時間を譲るやり方です。もう一つは、割り込みによって強制的に仕事を切り替えるやり方です。今回ご紹介するのは、この後者のやり方、つまり横取り式複数作業同時処理です。 横取り式複数作業同時処理では、計算機は非常に短い時間を単位として、次々と異なる仕事に処理時間を割り当てていきます。この短い時間の単位を時間片と呼びます。各仕事はこの時間片の間だけ処理を実行し、時間片が終了すると、計算機は強制的に次の仕事に処理を切り替えます。この切り替えは非常に高速で行われるため、利用者には複数の仕事が同時に実行されているように感じられます。 例えば、音楽を聴きながら文章を書いているとします。横取り式複数作業同時処理では、音楽再生の仕事と文章作成の仕事にそれぞれ短い時間片が割り当てられます。計算機は、音楽再生の仕事の時間片が終わるとすぐに文章作成の仕事に切り替え、文章作成の時間片が終わるとすぐに音楽再生の仕事に戻ります。この切り替えが非常に速いため、音楽が途切れることなく再生され続け、同時に文章作成も滞りなく行えます。 横取り式複数作業同時処理は、現代の計算機の基幹部分を司る仕組みの中で広く使われている重要な技術です。この技術のおかげで、私たちは複数の仕事を効率的に同時に行うことができ、計算機の利便性を最大限に活かすことができるのです。
ソフトウェア

複数のプログラムを同時実行:多重プログラミング

多重プログラミングとは、一つの計算機で複数の作業を同時に行っているように見せる技術のことです。一つの処理装置を使って、複数のプログラムを少しずつ、順番に切り替えながら実行することで、全体として複数のプログラムが同時に動いているかのように処理を進めます。料理に例えると、一つのコンロで複数の料理を同時進行しているようなものです。カレーを作っている間に、煮物の火加減を確認し、またカレーの鍋をかき混ぜる。このように、一つのコンロを複数の料理で共有しながら、同時進行しているように見せるのが多重プログラミングの考え方です。 一見すると、複数のプログラムが本当に同時に実行されているように見えますが、実際には非常に短い時間間隔で切り替えているため、利用者には同時実行のように感じられるのです。例えば、カレーを煮込んでいる数分の間に、煮物の味を調えることは可能です。このように、短い時間間隔で作業を切り替えることで、複数の料理を効率的に進めることができます。計算機も同じように、一つのプログラムが処理を待っている間に、別のプログラムを実行することで、待ち時間を有効活用し、全体の処理速度を向上させているのです。 この技術によって、限られた計算機の資源を有効に使い、計算機システム全体の効率を高めることができます。一つのコンロで複数の料理を作ることで、コンロの利用効率を高めるのと同じです。複数のプログラムを記憶装置に置いておき、一つのプログラムが待機状態になった時に、すぐに別のプログラムに切り替えて処理を続けることで、待機時間を減らし、処理能力を最大限に引き出せるのです。これは、カレーの煮込み時間を利用して、他の料理を進めることで、全体の調理時間を短縮できるのと同じ理屈です。このように、多重プログラミングは、限られた資源を有効活用するための重要な技術と言えるでしょう。
ソフトウェア

協調しなくていい!複数作業の効率化

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