オペレーティング システムの原則 第 11 章 ファイル システムの実装

学部生向けのオペレーティング システムの原則 学習記録
学習記録 ファミリー バケット

11.1 ファイルシステム

1. ファイルシステムの概要

ストレージ デバイス上のファイルを整理するための方法とデータ構造

オペレーティング システムでファイル情報の管理と保存を担当するモジュール

ほとんどのファイル システムはオペレーティング システムに存在しますが、一部のマイクロカーネルにはファイル システムがありません。

システム角度:

  1. ストレージ デバイスのスペースを整理して割り当てる
  2. ファイルの取得、読み書きなどを担当します。
  3. 目標:アクセス速度とストレージスペース効率

ユーザーの視点:

  1. 名前によるアクセスのためのファイル アクセス メカニズムを提供します。
  2. ファイル編成
  3. 目標: 便利なファイル アクセス メカニズム

2. ファイルシステムの階層

基本ファイルシステム

物理ブロックの読み書き

制御コマンドをデバイス ドライバーに送信する

ファイル編成モジュール

ファイル、論理ブロック、物理ブロックの管理

ファイルの論理アドレスを物理アドレスに変換し、空き領域を管理し、ファイルに物理ブロックを割り当てます

論理ファイルシステム

ファイル システムのメタデータの管理: ファイル データを除くすべての構造データ

名前によるファイル アクセス、ファイル ディレクトリ管理、FCB 管理、ストレージ保護

3. ファイルシステムの実装

物理ブロック: 1 つまたは複数のセクターで構成され、基本的なファイルの読み取りおよび書き込み単位

パーティション: パーティション

ボリューム(論理ディスク):物理パーティション上に構築されたボリューム、ディスク上の論理パーティション

2 つのファイル システム

  • ディスクファイルシステム
  • メモリーファイルシステム

4. ディスクファイルシステム

5. メモリーファイルシステム

パーティション テーブル: すべてのインストール パーティション情報

ディレクトリ バッファ構造: 最近アクセスしたディレクトリ情報を保存する

システム オープン ファイル テーブル、プロセス オープン ファイル テーブル

目的: バッファリング テクノロジによってファイル システムのパフォーマンスを向上させる

6. 仮想ファイルシステム

目的: 複数のファイル システムをサポートする

複数のファイルシステムを 1 つのディレクトリ構造に統合

ユーザーのファイルシステム間の差異をマスクする

仮想ファイル システム VFS

ファイル システム インターフェイス: アプリケーションがファイルにアクセスするための統一されたインターフェイス

VFS インターフェイス: さまざまなファイル システムの VFS インターフェイスを定義します。

7. ネットワークファイルシステム

NFS: ストレージ容量を節約し、共有を実現

リモートファイルシステムへのアクセス

8. 一般的に使用されるファイル システム

Windows:FAT NTFS ReFS

Linux:Ext(Ext2 3 4 )

MacOS:HFS

11.2 ストレージスペースの割り当て方法

物理ブロック

ストレージ デバイスの読み取りと書き込みの基本単位

ストレージ デバイスの割り当ての基本単位

メモリのページサイズに対応

論理ブロック: ファイル空間内のブロック

サイズが物理ブロックと一致している
論理ブロックが物理ブロックに格納されている

連続配分

各ファイルは、ディスク上の連続する一連の物理ブロックを占有します

FCB のみが提供: 開始ブロック番号と長さ

欠点:

スペースの無駄(小さなスペースを割り当てることができない)
ファイルが動的に拡張できない(ファイル A)
ファイルの挿入と削除を助長しない(データを移動する必要がある)

リンク割り当て

個別の物理ブロックの割り当て

明示的割り当て、暗黙的割り当て

暗黙のリンク: 次のブロックのポインタ アドレスは、物理ブロックで指定されます

利点:割り当てを拡張でき、ファイルの挿入と削除が簡単

短所: ランダム アクセスを実現できない、ファイルへのアクセスが遅い

リンクを表示: ポインタを取り出してまとめて保存します

検索速度が大幅に向上

FAT テーブル、大容量ディスクには不向き ファイル アロケーション テーブル、1 つのパーティションに 2 つの FAT テーブル

リンク テーブル サイズ: 16 ビット エントリ、128 KB、32 ビット エントリ、16 GB

インデックスの割り当て

分散型 FAT、各ファイルには FAT テーブル、つまりインデックス テーブルが割り当てられます

インデックス ブロック: ファイルの各物理ブロックのブロック番号を指す物理ブロックを格納します。

アドレス マッピング:

[外部リンクの画像転送に失敗しました。ソース サイトには盗難防止リンク メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-9PUqUGJX-1641540972514) (E:\Documents and PPT\Junior Course Study\Operating System\Pictures\Tenth Chapter One\Index Table Address Mapping.png)]

マルチレベル索引

4MB を超えるファイルの場合、マルチレベル インデックス メソッドが必要です

共同戦略 混合戦略

Unix の iNode

レベル 3 インデックスは 48KB + 4MB + 4GB + 4 TB をサポートします。レベル 3 インデックスを使用したいので、以前の直接インデックス、レベル 1 インデックス、およびレベル 2 インデックスをすべて使い切った場合にのみ、レベル 3 インデックスを使用します。

[外部リンクの画像転送に失敗しました。ソース サイトにリーチング防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-ve9W3Khr-1641540972516) (E:\Documents and PPT\Junior Course Study\Operating System \Pictures\Tenth One chapter\mixed indexing method.png)]

11.3 空き容量の管理

フリーリスト

フリーリストを配列的に直接管理

フリーリスト

ディスク上の空きブロックをすべてリンクする

ビットマップ

バイナリ ビットを使用してブロックの使用状況を示す

1: ディスクブロックは空いています

0: ディスクブロックが割り当てられました

行と列の計算、ブロック数の計算を学ぶ

ビットマップには追加のスペースが必要です

ブロックサイズ = 2^12 バイト

ディスク サイズ = 2^30 バイト

n = 2^30 / 2^12 = 2^18 ビット

ビットマップは物理ブロックに格納され、小容量のディスクスペース管理

グループリンク

フリー リストとフリー リンク リストの結合

例: UNIX システム

フリーブロックをいくつかのグループに分け、100 ブロックごとにグループ化します。

最初の空きブロックの各セットには次が含まれます。

  • 空きブロックの総数
  • 次の空きブロック セットの最初のブロックのアドレス
  • このグループ内の他の空きブロックのブロック番号のリスト

MOOCユニットワーク

1. ファイルには 20 個のディスク ブロック (ブロック番号: 0 ~ 19) があり、ファイル制御ブロックがメモリ内にあると仮定します (ファイルがインデックス割り当てを使用する場合、インデックス テーブルはメモリ内にありません)。以下の場合、連続割当て、リンク割当て、単一レベルインデックス割当ての3つの割当方法で、ディスクI/Oが何回必要になるか計算してください。(ディスクブロックを読み書きするたびに、ディスク I/O 操作が必要です。また、連続割り当てモードでは、ファイルの先頭に空きディスクブロックがなく、空きディスクブロックがあると仮定します。 1) ファイルの先頭に
2) ファイルの 15 番目のブロックの前にディスク ブロックを追加して
内容を書き込む;
3) ファイルの末尾にあるディスク ブロックを削除する;
4)ディスクブロックを追加し、ファイルの最後にコンテンツを書き込みます。

(1) 連続配置:0回、FCBの開始ブロック番号と長さを直接変更

リンク割り当て暗黙的: 1 回、最初に 2 番目のブロックのブロック番号を読み取り、次に FCB 開始ブロック番号を変更します

単一レベル インデックス: 2 回、インデックス テーブルに読み取り、インデックス ブロック内のインデックス アイテムを変更してから、ディスク ブロックに書き込みます。

(2) 連続割り付け: ブロック番号 14 ~ 19 を読み取り、ブロック番号 15 ~ 20 を書き込み、新しいブロックを書き込む、13 回

リンクの割り当て: 暗黙的: 最初の 14 ブロックを読み取って 15 番目のブロックへのポインターを 14 回見つけ、新しいブロックの内容と古い 15 番目のブロックのアドレスを書き込み、新しいブロックのアドレスを 14 番目のブロックに書き込みます。合計16回

単一レベル インデックス: 3 回、インデックス ブロックのコンテンツを読み取り、インデックス アイテムを変更してディスク ブロックに書き込み、新しいブロックのコンテンツを書き込みます。

(3) 連続割り当て: 0 回、FCB テーブルの長さを直接変更する

リンク割り当て: 暗黙的: 20 回、最初の 19 回は 20 番目のブロックのアドレスを読み取り、次にアドレスを -1 に変更して、19 番目のブロックが終了ブロックであることを示します。

単一レベル インデックス: 2 回、インデックス テーブルを読み取り、インデックス ブロック内のインデックス アイテムの内容を変更します。

(4) 連続割り当て: 1回、内容を書き込み、FCBのファイル長を変更

リンク割り当て: 暗黙的: 22 回、最初の 20 回は 20 番目のブロックの内容を検索し、次に新しいブロックの内容を書き込み、最後に 20 番目のブロックのポインタを変更して新しいブロックのアドレスを指すようにする

単一レベル インデックス: 3 回、インデックス ブロックのコンテンツを読み取り、インデックス アイテムを変更してディスク ブロックに書き込み、新しいブロックのコンテンツを書き込みます。

2.ディレクトリファイルはリンク方式を採用し、各ディスクブロックには10個の下位ファイルの記述が格納され、最大40個の下位ファイルを格納できます.下位ファイルがディレクトリファイルの場合、上位ディレクトリはそれ以外の場合は、通常のファイルを指す ファイル制御ブロック。通常のファイルは 2 レベルのインデックスの形式を採用し、ファイル制御ブロックには 12 個のディスク ブロック アドレスが与えられます.最初の 10 個のディスク ブロック アドレスは最初の 10 ページの物理アドレスを指し、11 番目のディスク ブロック アドレスは256 個のディスク ブロック アドレス、つまりファイルの 10 ページ目から 265 ページ目までのアドレスが指定されている場合、12 番目のディスク ブロック アドレスはセカンダリ インデックス テーブルを指し、 256 のプライマリ インデックス テーブルのアドレスは、セカンダリ インデックス テーブルに示されます。すみません:

‌1) ファイルシステム内の通常のファイルは最大で何ページまで持つことができますか?

最大 = 10 + 256 + 256*256 = 65802 ページ

‌2) ファイル /A/D/K/Q の特定のページを読みたい場合、最低何回ディスクを起動する必要がありますか? ディスクを最大で何回起動しますか? (ディスクブロックが読み込まれるたびに、ディスク操作を開始する必要があります)

少しでも 多くの
メモリ/->A 0 0
A->D 1 4
D->K 1 4
K->Q 1 4
Q->FCB 1 1
FCB→あるページ 1 3
合計 5 16

ここに画像の説明を挿入

3. ディスク上のファイルシステムの論理ブロックと物理ブロックのサイズが両方とも 512B であるとします。各ファイルの FCB が既にメモリ内にあると仮定すると、3 つの割り当て方法 (連続割り当て、明示的リンク割り当て、および単一レベル インデックス割り当て) について、次のように尋ねてください。

1) 論理アドレスから物理アドレスへのマッピングは、システムにどのように実装されていますか?

2) 単一レベルのインデックス割り当てにおける論理アドレスから物理アドレスへのマッピング プロセスを示す例を挙げてください。

論理アドレスをLA、論理ブロックと物理ブロック512BをS、論理アドレスの相対開始アドレスをGとする。

(1) 連続割り付け: LA/S = Q...RQ は論理ブロック番号、R はブロック内のオフセット

B = Q + FCBに記録されている開始ブロック番号 D = R

住所(B、D)

表示リンク: LA/S = Q...RQ は論理ブロック番号、R はブロック内のオフセット

B = Q と G はリンクされたリストの物理ブロック番号を取得します D = R

住所(B、D)

シングルレベル インデックス: LA/S = Q...RQ は論理ブロック番号、R はブロック内のオフセット

B = インデックステーブルの項目 Q に対応する物理ブロック番号 D = R

住所(B、D)

(2) たとえば、論理アドレスが 1028 であるとすると、ファイルのインデックス ブロックの内容は次のようにインデックス化されます。 6 1 13 -1 -1 -1

すると、1028 /512 = 2 … 4

ルックアップ インデックス テーブルは 13 番で、物理アドレスは PA = (13, 4) です。

4. ファイル システムが一般的にどのような内容で構成されているかを説明するために、特定のファイル システムの例を挙げてください。

ファイル システムは、通常、ファイル分類、ファイル ディレクトリ構造、ファイル論理構造、ファイル物理構造、ストレージ管理、システム コール、およびディスク構造で構成されます。

次に例を示します。 UNIX ファイル システムには、通常のファイル、ディレクトリ ファイル、およびデバイス ファイルの 3 種類のファイルがあります。

ファイルの論理構造: 非構造化ストリーミング ファイル、

ファイルの物理構造: 複数のインデックス構造、

ファイルディレクトリ構造: グラフィカルディレクトリ、ハードリンクを使用してファイル共有を実現、インデックスノードを使用してファイルアクセス効率を向上、

ファイルストレージ管理: 空き容量管理: グループリンク;

ディスク構造: 物理構造、プラッター、ヘッド、スピンドル

メモリ構造: 単一プロセス オープン ファイル テーブル、システム オープン ファイル テーブル (読み書きフラグ、読み書きポインタを共有するプロセス数、アクティブ ノード番号、読み書きポインタなどを含む)

ファイル システム コール: ファイルの作成、ファイルの削除、ファイルの読み取り、ファイルのオープン、ファイルのクローズ、ファイル ポインターの検索、ファイルのリンク、ファイルのアクセス許可の設定、パイプライン ファイルの作成、ファイルのコピーなどの機能を実行して、ファイル操作とファイル保護を実現します。

おすすめ

転載: blog.csdn.net/weixin_45788387/article/details/122365791