オペレーティング システムでは、CPU に入力を与える必要があり、CPU が命令を実行して、最終的に出力を与えます。しかし、このアプローチには問題がありました。通常の状況では、多くのプロセスを処理する必要があり、CPU が命令を実行するのにかかる時間と比較して、I/O 操作にかかる時間が非常に長いことがわかっています。したがって、古いアプローチでは、1 つのプロセスが入力デバイスを使用して入力を行い、その間、CPU はアイドル状態になります。
サニーデル年齢
その後、CPU が命令を実行し、再び何らかの出力装置に出力が与えられますが、このとき CPU もアイドル状態になります。出力を表示した後、次のプロセスが実行を開始します。したがって、ほとんどの時間、CPU はアイドル状態になり、これはオペレーティング システムで起こり得る最悪の状態です。ここで、スプーリングの概念が登場します。
スプーリングとは
スプーリングは、デバイス、プログラム、またはシステムによって使用および実行されるようにデータを一時的に保持するプロセスです。データは、プログラムまたはコンピュータが実行を要求するまで、メモリまたはその他の揮発性ストレージに送信され、保存されます。
スプールとは、 オンラインでの同時周辺操作 。一般に、スプールはコンピュータの物理メモリ、バッファ、または I/O デバイス固有の割り込み上に維持されます。スプールは、FIFO (先入れ先出し) アルゴリズムに基づいて昇順に処理されます。
スプーリングとは、さまざまな I/O ジョブのデータをバッファーに入れることを指します。このバッファは、I/O デバイスからアクセスできるメモリまたはハードディスク内の特別な領域です。オペレーティング システムは、分散環境に関連して次のアクティビティを実行します。
- デバイスのデータ アクセス レートが異なるため、I/O デバイスのデータ スプールを処理します。
- スプーリング バッファを維持します。スプーリング バッファは、低速デバイスが追いつくまでデータを待機できる待機ステーションを提供します。
- コンピューターは並列順序で I/O を実行できるため、スプール プロセスにより並列計算が維持されます。コンピュータがコンピューティング タスクを実行中に、テープからデータを読み取り、ディスクにデータを書き込み、テープ プリンタに書き出すことが可能になります。
オペレーティング システムでのスプーリングの仕組み
オペレーティング システムでは、スプールは次のような手順で機能します。
- スプーリングには、SPOOL と呼ばれるバッファの作成が含まれます。このバッファは、SPOOL が作成されたデバイスがそのジョブを使用して実行するか、データを操作する準備ができるまで、ジョブとデータを保留するために使用されます。
- 高速なデバイスが何らかの操作を実行するために低速なデバイスにデータを送信するとき、そのデバイスはスプール バッファとして接続されている二次メモリを使用します。このデータは、低速デバイスがこのデータを操作できるようになるまで、SPOOL 内に保持されます。低速デバイスの準備が完了すると、必要な操作のために SPOOL 内のデータがメイン メモリにロードされます。
- スプーリングでは、二次メモリ全体を、多くの操作のための多くのジョブとデータを保存できる巨大なバッファとみなします。スプーリングの利点は、FIFO 順序で実行されるジョブのキューを作成し、ジョブを 1 つずつ実行できることです。
- デバイスは多くの入力デバイスに接続でき、そのデータに対して何らかの操作が必要になる場合があります。したがって、これらの入力デバイスはすべて、データを二次メモリ (SPOOL) に保存し、デバイスによって 1 つずつ実行できます。これにより、CPU がアイドル状態になることがなくなります。したがって、スプーリングはバッファリングとキューイングを組み合わせたものであると言えます。
- CPU が何らかの出力を生成した後、この出力はまずメイン メモリに保存されます。この出力は主記憶から二次記憶に転送され、そこから各出力装置に出力が送られる。
スプール例
スプーリングの最大の例は次のとおりです。 印刷 。印刷するドキュメントはスプールに保存され、印刷用のキューに追加されます。この間、プリンターがドキュメントの印刷プロセスを 1 つずつ実行している間、多くのプロセスは待機することなく処理を実行し、CPU を使用できます。
スプーリング印刷プロセスには、優先順位の設定や印刷プロセス完了時の通知、ユーザーの選択に応じた印刷するさまざまな種類の用紙の選択など、多くの機能を追加することもできます。
スプーリングの利点
オペレーティング システムでのスプールには次のような利点があります。
- I/O デバイスや操作の数は関係ありません。多くの I/O デバイスは、相互に干渉したり中断したりすることなく、同時に連携して動作できます。
- スプールでは、I/O デバイスと CPU の間に対話はありません。つまり、CPU は I/O 操作が行われるのを待つ必要がありません。このような操作は実行が完了するまでに時間がかかるため、CPU は操作が完了するまで待機しません。
- アイドル状態の CPU はあまり効率的とは言えません。ほとんどのプロトコルは、最小限の時間で CPU を効率的に利用するように作成されています。スプーリングでは、CPU はほとんどの時間ビジー状態に保たれ、キューが使い果たされた場合にのみアイドル状態になります。したがって、すべてのタスクがキューに追加され、CPU はそれらのタスクをすべて終了してアイドル状態になります。
- これにより、I/O デバイスをそれぞれの最高速度で動作させながら、アプリケーションを CPU の速度で実行できるようになります。
スプーリングの欠点
オペレーティング システムでは、スプールには次のような欠点があります。
- スプーリングには、入力によって行われるリクエストの数と接続されている入力デバイスの数に応じて、大量のストレージが必要になります。
- スプールはセカンダリ ストレージに作成されるため、多くの入力デバイスを同時に動作させると、セカンダリ ストレージ上の多くのスペースが占有され、ディスク トラフィックが増加する可能性があります。その結果、トラフィックがますます増加するにつれて、ディスクの速度が低下していきます。
- スプーリングは、低速なデバイスから高速なデバイスにデータをコピーして実行するために使用されます。低速のデバイスは、操作対象のデータをキューに保存するためのスプールを作成し、CPU がその上で動作します。このプロセス自体、CPU からのリアルタイム結果が必要なリアルタイム環境でスプーリングを使用するのが無意味になります。これは、入力デバイスの速度が遅いため、データの生成ペースが遅くなる一方で、CPU は高速に動作できるため、キュー内の次のプロセスに進むためです。これが、最終結果または出力がリアルタイムではなく後で生成される理由です。
スプーリングとバッファリングの違い
スプーリングとバッファリングは、I/O サブシステムがメイン メモリまたはディスク上の記憶領域を使用してコンピュータのパフォーマンスと効率を向上させる 2 つの方法です。
スプーリングとバッファリングの基本的な違いは、スプーリングでは、あるジョブの I/O が別のジョブの実行と重複することです。比較すると、バッファリングでは、1 つのジョブの I/O が同じジョブの実行と重複します。以下に、スプーリングとバッファリングのその他の違いを示します。
パイスパーク
条項 | スプール | バッファリング |
---|---|---|
意味 | スプーリングは、Simultaneous Peripheral Operation Online (SPOOL) の頭字語で、データを一時的な作業領域に置き、別のプログラムまたはリソースがアクセスして処理できるようにします。 | バッファリングとは、データを一時的にバッファに保存する行為です。これは、送信者と受信者間のデータ ストリームの速度を一致させるのに役立ちます。 |
リソース要件 | スプーリングでは、さまざまなリソースが特定のジョブのプロセスを管理するため、リソース管理の必要性が軽減されます。 | バッファリングでは、同じ分割されたジョブのプロセスを同じリソースで管理するため、より多くのリソース管理が必要になります。 |
内部実装 | スプーリングは、1 つのジョブの入力と出力を別のジョブの計算とオーバーラップさせます。 | バッファリングは、1 つのジョブの入力と出力を同じジョブの計算とオーバーラップします。 |
効率的 | スプーリングはバッファリングよりも効率的です。 | バッファリングはスプールよりも効率が低くなります。 |
プロセッサー | スプーリングにより、リモート サイトでデータを処理することもできます。スプーラは、リモートサイトでプロセスが完了したことを通知するだけで、次のプロセスをリモート側デバイスにスプールします。 | バッファリングはリモート処理をサポートしていません。 |
メモリ上のサイズ | ディスクを巨大なスプールまたはバッファと見なします。 | バッファはメインメモリ内の限られた領域です。 |