コンピューティングの世界、特に
記憶装置や
データ転送の分野において、「ブロック」とは、一定の長さを持つバイトまたは
ビットのまとまりを指します。このブロックという概念は、データを「ブロック化」することによって、プログラムが
ハードウェアの物理的な特性を意識することなく、より抽象的なレベルでデータを扱えるようにするために導入されました。
ブロック化の利点
ハードウェアの抽象化: 外部記憶装置は、バイト単位やビット単位で直接データを読み書きできない場合があります。ブロック化により、このようなハードウェアの違いを吸収し、統一的なインターフェースを提供できます。
データ管理の効率化: 一定の大きさのデータ単位で読み書きを行うことで、データの管理や転送を効率的に行えます。
ブロックの具体的な例
ブロックは、以下のような様々な場面で利用されています。
オペレーティングシステム (OS) やファイルシステム: ハードディスクドライブ (HDD) などの外部デバイスとのデータ読み書きの最小単位としてブロックが利用されます。
データベース管理システム (DBMS): 記憶装置とのデータのやり取りを行うインターフェースにおいて、データの最小単位としてブロックが用いられます。
フラッシュメモリ: データ消去操作の最小単位として、ブロックが利用されます。
ブロックによる抽象化の仕組み
外部記憶装置の中には、バイト単位やビット単位でのアクセスが困難、または非効率なものがあります。そのため、固定長のデータ単位(ディスクセクタ、ブロックなど)ごとにアクセスを行います。これにより、9インチ磁気テープ、フロッピーディスク、HDD、光ディスク、NAND型フラッシュメモリなどの異なるデバイスを抽象化し、同じように扱うことが可能になります。
一部のOSやDBMSでは、ブロックと呼ばれる固定長のデータ構造体を設け、このブロック単位で各記憶装置にアクセスします。ブロックサイズは、通常、各記憶装置のアクセス単位よりも大きめに設定されます。
OSにおけるブロックデバイス
多くのファイルシステムは、ブロックデバイス上に構築されています。ブロックデバイスは、データをブロック単位で操作できるハードウェアを抽象化したものです。ファイルシステムにおけるブロックサイズは、デバイスのアクセス最小単位の整数倍になっていることが多いです。
古いファイルシステムでは、1つのブロックには1つのファイルの一部のみが格納され、ファイルの最後尾を格納するブロックには未使用領域(slack space)が生じます。このslack spaceは、ファイルサイズが均等に分布すると仮定すると、平均して合計でファイル数×0.5×ブロックサイズ程度になります。ブロックの分割割り当てや末尾マージなどの技術で、この問題を解決しています。
DBMSとブロック
データベースはファイルシステム上に構築することもできますが、DBMSが直接ブロック型記憶装置を操作する方が性能が高く、問題発生時のリカバリも容易になります。DBMSが記憶装置とデータのやり取りを行う最小単位もまた、ブロックあるいはページと呼ばれます。
フラッシュメモリでは、高性能化と実装面積の削減のため、一定数のメモリ素子の消去ゲートを共有する構造が採用されており、この最小消去単位がブロックと呼ばれます。NAND型フラッシュメモリでは、書き込みも固定長で行われ、この書き込みアクセス単位はページと呼ばれ、ブロックよりも小さいです。
例えば、2008年に発表された東芝の1Gbit NAND型フラッシュメモリでは、ページサイズが512+16バイト、ブロックサイズが32キロバイトでした。
関連項目
ディスクセクタ
クラスタ (記憶媒体)
外部リンク
Block device PHWiki