LOOKは、ハードディスクの新規読み取りおよび書き込み要求が処理される順序を決定するために使用されるハードディスクスケジューリングアルゴリズムです。
LOOK アルゴリズムは、SCANアルゴリズムと同様に、ディスク ヘッドの両方向のスキャン要求に対応しますが、さらにヘッドの移動方向に保留中の要求があるかどうかを「先読み」します。ヘッドの移動方向に保留中の要求がない場合、ディスク ヘッドの移動は逆方向に反転され、反対方向の要求が処理されます。LOOK スケジューリングでは、アームは各方向の最後の要求までしか移動せず、最後まで移動せずに方向を反転します。例として、200 シリンダ (0~199) を持つディスクがあり、保留中の要求が 8 つ (98、183、37、122、14、124、65、67) あり、読み書きヘッドが現在シリンダ 53 にあるとします。これらの要求を完了するために、アームはまず昇順で移動し、最後に到達した後は降順で移動します。したがって、実行される順序は 65、67、98、122、124、183、37、14 です。[ 1 ]
LOOKは、最短シーク時間優先(SSTF)方式で発生するデータ枯渇問題を回避します。これは、LOOKが最近走査された領域を優先せず、プラッターの最外縁部と最内縁部に集中しているトラックを優先するためです。また、LOOKは(平均的に)より最近到着したジョブを優先します。
LOOK のバリエーションの 1 つは、サーキュラー LOOK (C-LOOK) です。これは、プラッタの端にあるトラック クラスタに対する LOOK のバイアスを取り除くための試みです。C-LOOK は基本的に一方向にのみスキャンします。内側から外側へ、または外側から内側へスキャンします。終端に達したら、ヘッドを先頭まで完全に振り戻します。これは、多くのドライブが多数のトラックを横断する場合に読み書きヘッドを高速で移動できるという事実を実際に利用しています (たとえば、最後のトラックからトラック 0 へのシーク時間は予想よりも短く、通常は 1 つのトラックを一度にシークするのにかかる時間よりもかなり短くなります)。一方の端の要求からもう一方の端への大きなジャンプは、シリンダが円形のリストとして扱われるため、ヘッドの移動とはみなされません。
N LOOK と F LOOK は、LOOK の最近のジョブに対するバイアスを相殺するように設計されています。どちらのアルゴリズムも、要求キューをより小さなサブキューに分割し、サブキューを順番に (古いものから順に) 処理します。N-LOOK は、要求キューがN 個のサブキューに分割されることからそのように呼ばれています。F-LOOK は、キューが 2 つしかない簡略化されたもので、ダブルバッファリング方式で使用されます。F-LOOK が 1 つのキューを処理している間、すべての新しい要求はもう一方のキューに入ります。これらのアルゴリズムを説明するために、200 トラックのディスクの例を使用し、読み書きヘッドがトラック 100 から開始します。要求キューには、順番に、トラック 55、58、18、90、160、38 の要求が含まれています。要求キューは 2 つに分割され、最も古いキューにはトラック 55、58、18、90 の要求が含まれていると仮定します。この場合、N-LOOK と F-LOOK は同じように動作します。また、この構成では、ヘッドがどちらの方向に移動していたかは関係なく、要求されたトラックはすべて 100 未満なので、減少するトラックの方向にのみ移動することにも注意してください。最悪の場合の平均トラック数は LOOK と同じですが、N および F LOOK はある意味で、従来の LOOK よりも公平です。サブキューシステムは、プロセスが要求から処理されるまでの間に期待できる最大遅延を制限します (任意の長さでプロセスを飢餓状態にする可能性がある SSTF とは異なります)。
最短LOOK(S-LOOK)アルゴリズムは、ディスクヘッドが遠端の要求の間にある場合に対応するためにLOOKアルゴリズムを拡張したものです。このアルゴリズムは、新しい要求が到着するまで同じ方向にシークし続けるのではなく、どちらの方向を先に処理すべきかを決定するように設計されています。シーク時間はシーク距離に正比例するため、目標はシーク距離を最小限に抑え、それによってシーク時間を短縮することです。
LOOKはSCANよりも平均シーク時間がわずかに優れています。C-LOOKは最悪の場合のシーク時間がほぼ半分になるため、シーク時間のばらつきはLOOKよりもわずかに小さくなっています。