ランダム
アクセスとは、
記憶装置におけるデータ
アクセス方式の一つで、シーケンシャル
アクセスとは対照的な方法です。シーケンシャル
アクセスがデータの先頭から順番に
アクセスしていくのに対し、ランダム
アクセスでは、目的のデータが格納されている場所を特定のアドレスなどを用いて直接
アクセスします。
例えば、
ファイルシステムで利用されるディスクの場合、目的のファイルのパス文字列からinodeを取得し、さらにinodeからブロック番号を得ます。このブロック番号は、ディスク上の物理的なアドレス(Logical Block Addressing、LBA)に変換可能であるため、ディスクコントローラにそのLBAへの
アクセスを指示することで、目的のデータに直接
アクセスできます。ディスクコントローラは、ディスクメディアのヘッドを目的のセクタがあるシリンダへ移動させ(シーク)、目的のセクタが回転してくるのを待ち、最終的にそのセクタへ
アクセスします。
シーケンシャルアクセスとの比較
シーケンシャル
アクセスでは、データの先頭から目的の場所まで順番に
アクセスする必要があるため、
アクセスに時間がかかります(レイテンシが大きい)。一方、ランダム
アクセスでは、どの場所のデータに
アクセスする場合でも、一般的に同じ程度の待ち時間で
アクセスできます。
ただし、シーケンシャル
アクセスは、連続したデータを効率的に処理できるという利点があります。そのため、テープストレージなどでは、シーケンシャル
アクセスを前提とした高性能化が進められています。
多くの
オペレーティングシステムは、ハードディスクやSSDなどの記憶媒体に
ファイルシステムを提供しており、データをファイル単位で管理しています。
ファイルシステムでは、ファイルに対するランダム
アクセスが可能です。これは、ファイル内の特定の位置にあるデータに直接
アクセスできることを意味します。
ランダムアクセス・ファイル
特に、メインフレームの専用
オペレーティングシステムでは、ランダム
アクセスを行うための専用ファイル「ランダム
アクセス・ファイル」が用いられることがあります。ランダム
アクセス・ファイルでは、データを固定長のブロック(レコード)単位で扱います。プログラムは、ファイル内の任意の位置にあるレコードを直接指定して、読み書きすることができます。
例えば、100バイト固定長のレコードを扱う場合、プログラムはファイル内のレコード単位で位置を移動(シーク)し、目的のレコードに対して読み込みや書き込みを行います。これにより、ファイル内の任意の場所にあるデータを効率的に処理できます。
まとめ
ランダム
アクセスは、データへの高速
アクセスを可能にする重要な技術です。
ファイルシステムやデータベースなど、さまざまな分野で利用されており、現代の
コンピュータシステムにおいて不可欠な要素となっています。