ファイル システムのブロック サイズの意味は何ですか? ファイルシステムのブロック サイズが 8K に設定されている場合、すべての読み取り/書き込み I/O がサイズ 8K で行われるということですか? 私のアプリケーションがオフセット 4097 で 16 バイトを読み取りたい場合、オフセット 4096 から始まる 4K ブロックが読み取られますか?
この場合、書き込みはどのように機能しますか? 64バイトと書きたいとします。
ファイル システムのブロック サイズの意味は何ですか? ファイルシステムのブロック サイズが 8K に設定されている場合、すべての読み取り/書き込み I/O がサイズ 8K で行われるということですか? 私のアプリケーションがオフセット 4097 で 16 バイトを読み取りたい場合、オフセット 4096 から始まる 4K ブロックが読み取られますか?
この場合、書き込みはどのように機能しますか? 64バイトと書きたいとします。
あなたが正しいです。ブロック サイズは、ファイル システムの作業単位です。すべての読み取りと書き込みは、ブロック サイズの完全な倍数で行われます。
ブロック サイズは、ファイルが持つことができるディスク上の最小サイズでもあります。ブロック サイズが 16 バイトの場合、サイズが 16 バイトのファイルはディスク上のブロック全体を占有します。
本「実用的なファイルシステム設計」には、次のように記載されています。
ブロック: ディスクまたはファイル システムによって書き込み可能な最小単位。ファイルシステムが行うことはすべて、ブロックに対して行われる操作で構成されています。ファイル システム ブロックは常に、ディスク ブロック サイズと同じか、それよりも大きいサイズ (整数倍) です。
通常、プログラミングでファイルを処理する必要がある場合は、ストリーム抽象化を使用する必要があります。コードを介したI/O操作は、多くの場合、ストリームの読み取りと書き込みです。ストリームとの間の読み取りと書き込みは、ファイルのチャンクを読み取りまたは書き込みできるようにバッファリングできます。
fsのブロックサイズは、ディスク表面のマッピングを指します。マイナー単一ブロックのサイズメジャーブロック数(したがって、ファイルの割り当てに関する情報を保持するテーブル内の要素)。
そのため、OSは、ブロックサイズに基づいてディスク上のファイルを個別にマップし、「ファイルのマップ」を小さくすることができます。私が知っているように、これはプログラミング言語のAPIのストリーム抽象化には影響しません。