学部生向けのオペレーティング システムの原則 学習記録
学習記録 ファミリー バケット
第 10 章 ファイルシステム
10.1 ファイルの概念
file: ファイル名を含む関連情報のコレクション
ファイル名: ユニークで覚えやすい
ファイル構造: プログラムがファイルの内容を理解しやすい
- 非構造化: テキスト ストリーム、バイト ストリーム
- シンプルなレコード構造: 線形、固定長、可変長、HTML ドキュメント
- 複雑な構造: フォーマットされたドキュメント、マルチメディア ファイル
ファイルの種類: 通常、拡張子によって決まります (「.」で区切られたファイル拡張子とも呼ばれます)。
10.2 ファイル操作
ファイルを開く操作があるのはなぜですか?
次のデータ構造が必要です。
- 開いているファイルの表: 開いているファイルを追跡します
- ファイル ポインタ: 最後の読み取りおよび書き込み場所を指す
10.3 ファイル構造
論理ファイル
ユーザーに提示されるファイルの組織構造
ファイル論理構造とも呼ばれます
論理ファイルは、ファイルのアクセス方法を決定します
ファイル アクセス方法:
- シーケンシャル アクセス: 次々にアクセス、典型的な代表: テープ上のファイル
- 直接アクセス: ファイルへのパスを指定できます。一般的なデバイス: ディスク
論理ファイル | 保管所 | データへのアクセス |
---|---|---|
シーケンスファイル | ~40MB | ~400K |
直接ファイル | ~100MB | 100B |
索引ファイル | ~44MB | 44B |
10.4 ファイルディレクトリ
ファイル制御ブロック FCB: ファイル操作に必要な各種属性を格納
i ノード (下位 ds)
インデックス ノード: ディレクトリ エントリは、ファイル名とポインタ (ファイルの場所など、ファイル名以外の情報を格納する i ノードを指す) の 2 つだけを保持します。
単一レベルのディレクトリ
2 レベルのディレクトリ
ツリー ディレクトリ
有向非巡回グラフ: ファイル共有
ハードリンクとソフトリンク
以下のリンクをクリックして、特定の用途を表示します
ハードリンクとシンボリックリンクの違い - 簡単な本 (jianshu.com)
ハードリンク機能:
ハード リンクの役割は、ファイルが複数の有効なパス名を持つことを許可することです。これにより、ユーザーは重要なファイルへのハード リンクを確立して、「偶発的な削除」機能を防ぐことができます。コネクションを1つ削除しても、ノード自体や他のコネクションには影響せず、最後のコネクションを削除した場合のみ、ファイルのデータブロックとディレクトリのコネクションが解放されます。つまり、ファイルが本当に削除される条件は、そのファイルに関連するすべてのハードリンクされたファイルが削除されることです。
また、リンク名を . で始まる隠しファイルとして作成すれば、プライバシーをうまく隠すこともできます。
ソフトリンク機能:
ソフトリンクは、シンボリックリンク (Symbolic Link) とも呼ばれます。ソフト リンク ファイルは、Windows のショートカットに似ています。実際には特別なファイルです。シンボリック リンクでは、ファイルは実際には別のファイルの場所に関する情報を含むテキスト ファイルです。
長所と短所:
ソフト リンクは、ハード リンクの欠点を克服します. ファイル システムの制限はなく、すべてのユーザーがディレクトリを指すシンボリック リンクを作成できます. したがって、現在はより広く使用されており、柔軟性が高く、異なるマシンや異なるネットワーク間でファイルをリンクすることさえできます.
もちろん、ソフト リンクにはハード リンクにはない欠点もあります。リンク ファイルには元のファイルのパス情報が含まれているため、元のファイルをあるディレクトリから別のディレクトリに移動してからリンク ファイルにアクセスすると、システムはそれを見つけられず、ハード リンクは無効になります。この欠陥がなければ、必要に応じて移動できます。また、新しいインデックス ノードを作成し、元のファイルのパスを保存するために、システムが追加の領域を割り当てる必要があります。
MOOCユニットワーク
1. ファイルシステムの各ディレクトリファイルには最大 40 個の下位ファイル (ディレクトリファイルまたは通常ファイル) を格納でき、各物理ブロックには 10 個のディレクトリエントリを格納できます。下位レベルのファイルがディレクトリ ファイルの場合、上位レベルのディレクトリはディレクトリ ファイルの最初のブロックを指し、それ以外の場合は、通常のファイルのファイル制御ブロックを指します。私の質問は次のとおりです。1
) 単一レベルのディレクトリが使用されている場合、最大でいくつの物理ブロックを読み取って、少なくともファイルを見つける必要がありますか?
2) 2 次ディレクトリが使用されている場合、ファイルを見つけるために読み込む必要がある物理ブロックの最大数と最小数は?
シングルレベルディレクトリ: 最大 5 物理ブロック、最小 2 物理ブロック、FCB の読み取りも 1 回の物理ブロックの読み取りとしてカウントされます
セカンダリ ディレクトリ: 最大 9 物理ブロック、最小 3 物理ブロック
2. Unix システムのファイルシステムに i-node を導入する目的は何ですか? 例を挙げてください。
ディレクトリエントリのサイズを減らすと、読み取りブロックの数も減ります。
例:
物理ブロック サイズが 4KB で、特定のディレクトリに 10,000 個のファイルがあるとします。
各ファイルの FCB (ディレクトリ エントリ) サイズは 2KB です。
カタログファイルサイズ:20000KB
ディレクトリファイルに必要な物理ブロック数: 5000 ブロック
ファイルを取得するためにアクセスする必要がある物理ブロックの平均数: (5000+1)/2=2500.5
inode の使用後、inode のサイズは 64B です
ディレクトリファイルサイズ: 640000B=625KB
ディレクトリファイルに必要な物理ブロック数: 157 ブロック
ファイルを取得するためにアクセスする必要がある物理ブロックの平均数: (157+1)/2=79
3. Windows で使用されるシンボリック リンクの長所と短所について教えてください。
利点:
ソフト リンクは、ハード リンクの欠点を克服します. ファイル システムの制限はなく、すべてのユーザーがディレクトリを指すシンボリック リンクを作成できます. したがって、現在はより広く使用されており、柔軟性が高く、異なるマシンや異なるネットワーク間でファイルをリンクすることさえできます.
欠点:
リンク ファイルには元のファイルのパス情報が含まれているため、元のファイルがあるディレクトリから別のディレクトリに移動された後、リンク ファイルにアクセスすると、システムは元のファイルを見つけることができません。
新しい inode を作成し、元のファイルのパスを保存するために、システムが追加のスペースを割り当てる必要があります。
4. シーケンシャル ファイルを使用するのに適したファイルと、直接ファイルを使用するのに適したファイルを説明する例を教えてください。なぜ?
ファイル情報は順番に保存され、シーケンシャル ファイルは 1 レコードごとのアクセスに使用されます。このようなファイルは順番にしかアクセスできないため、保存にはシーケンシャル ファイルを使用することをお勧めします。
ファイルの特定のレコードを直接検索してアクセスしたい場合は、ダイレクト ファイルを使用します。これは、特定の場所に直接アクセスしたい人にとって、直接ファイル アクセスが効率的であり、すばやく検索できるためです。
5. ツリー ディレクトリでは、ディレクトリ レベルを増やしたほうがよいですか。なぜ?例を挙げてください
ツリー ディレクトリ内のファイルを検索するには、パス名に従って段階的に中間ノードにアクセスする必要があるため、ディレクトリ レベルが多いほど良いというわけではありません。クエリ速度。ディレクトリ レベルが多い場合、ディスク アクセス時間が多くなる可能性があります。