ファイル管理
1.ドキュメントの概念
ボトムアップアプローチで定義:
-
データ項目。データ項目は、ファイルシステム内の最低レベルのデータ編成であり、次の2つのタイプに分類できます。
基本データ項目。オブジェクトの特定の属性を説明するために使用される値。これは、データ、つまりアトミックデータで名前を付けることができる最小の論理ユニットです。
データ項目を結合します。複数の基本データ項目で構成されています。
-
記録。レコードは、特定の側面でオブジェクトのプロパティを説明するために使用される、関連するデータ項目のセットを指します。
-
ファイル。ファイルとは、作成者が定義した一連の関連情報のことで、論理的には、構造化ファイルと非構造化ファイルの2つのタイプに分類できます。構造化ファイルでは、ファイルは類似したレコードのグループで構成されます。これは、記録済みファイルとも呼ばれます。一方、非構造化ファイルは、文字ストリームと呼ばれ、ストリームファイルとも呼ばれます。
1.1。ファイル属性
すべてのファイル情報はディレクトリ構造に保存され、ディレクトリ構造は外部ストレージに保存されます。ファイル情報は、必要に応じてメモリに転送されます。通常、ディレクトリエントリにはファイル名とその一意の識別子が含まれ、識別子は他の属性に関する情報を検索します。
1.2ファイルの基本操作
ファイルは抽象データ型です。オペレーティングシステムは、ファイルの作成、書き込み、読み取り、再配置、削除、切り捨てなどの操作を実行するシステムコールを提供します。
- ファイルを作成します。2つのステップ:(1)ファイルシステム内のファイル用のスペースを見つける;(2)ディレクトリに新しいファイルのエントリを作成する;
- ファイルを書き込みます。システムコールを実行します。システムは書き込みポインタを維持します。
- ファイルを読み取ります。システムは、読み取り位置へのポインターを維持します。
- ファイルの再配置(ファイルのアドレス指定)。
- ファイルを削除します。まず、ディレクトリから削除するファイルディレクトリエントリを見つけてから、ファイルが占有していたストレージスペースを再利用します。
- ファイルを切り捨てます。
1.3。ファイルの開閉
システムが初めてファイルを使用する場合、オープンシステムコールを使うの属性コピー指定された内部メモリのオープンファイルテーブル内のエントリに、外部記憶装置(外部記憶装置上のファイルの物理的場所を含む)ファイル、及び(エントリの数を追加インデックスとも呼ばれます)がユーザーに返されます。オペレーティングシステムは、開いているすべてのファイルに関する情報を含むテーブル(開いているファイルのテーブル)を維持します。ユーザーがファイル操作を必要とする場合、テーブルのインデックスを介してファイルを指定できるため、検索リンクは省略されます。
ほとんどのオペレーティングシステムでは、使用する前にファイルを明示的に開く必要があります。オープン操作は、ファイル名に基づいてディレクトリを検索し、ディレクトリエントリをオープンファイルテーブルにコピーします。openを呼び出す要求が許可されている場合、プロセスはファイルを開き、openは開いているファイル内のエントリへのポインターを返します。すべてのI / O操作は通常、ファイル名ではなくポインタによって行われます。
開かれた各ファイルには、次の情報があります。
- ファイルポインタ。システムは最後の読み取りおよび書き込み位置を現在のファイル位置へのポインターとして追跡します。このポインターはファイルを開く特定のプロセスに固有であるため、ディスクファイル属性とは別に保存する必要があります。
- ファイルのオープン数。
- ファイルディスクの場所。
- アクセス許可。
2.ファイルの論理構造
論理構造に従って、ファイルは非構造化ファイルと構造化ファイルに分けることができます。
-
非構造化ファイル(ストリーミングファイル)
構造化されていないファイルは、データを順番にレコードに編成し、それらを蓄積して保存します。これは、整然とした関連情報アイテムのコレクションです(バイト単位)。非構造化ファイルの走査は、徹底的な方法でのみ実行できます。
-
構造化文書(記録文書)
構造化ファイルは、レコードの構成に従って、次のタイプに分類できます。
- シーケンスファイル。ファイル内のレコードは、順番に並べられます。通常、レコードは固定長であり、順次またはリンクリストの形式で格納できます。
- インデックスファイル。
- インデックス注文ファイル。
- 直接ファイルまたはハッシュファイル。
3.ディレクトリ構造
3.1、ファイル制御ブロック
プロセス管理と同様に、ディレクトリ管理を実現するために、オペレーティングシステムにはファイル制御ブロックデータ構造が導入されています。
-
ファイル制御ブロック
ファイル制御ブロック(FCB)は、「名前によるアクセス」を実現するためにファイルを制御するために必要なさまざまな情報を格納するために使用されるデータ構造です。順序付きコレクションのFCBがされたファイルのディレクトリと呼ばれ、FCBは、ファイルのディレクトリエントリです。新しいファイルを作成するために、システムはFCBを割り当て、それをディレクトリエントリと呼ばれるファイルディレクトリに保存します。
FCBには主に次の情報が含まれています。
- 基本情報。ファイル名、ファイルの物理的な場所、ファイルの論理構造、ファイルの物理構造など。
- アクセス制御情報。ファイルのアクセス権など;
- 使用情報。ファイルの作成時間など
-
インデックスノード
ディレクトリファイルを取得するときは、ファイル名のみが使用され、ディレクトリエントリが見つかった場合(検索ファイル名がディレクトリエントリのファイル名と一致する場合)は、ファイルの物理アドレスをディレクトリエントリから読み取る必要があります。つまり、ディレクトリを取得するときに、ファイルの他の説明情報は使用されず、メモリに転送されません。したがって、一部のシステムでは、ファイル名とファイルの説明情報を分離する方法を使用し、ファイルの説明情報は、インデックスノードと呼ばれるデータ構造を個別に形成します。これは、iノードと呼ばれます。ファイルディレクトリ内の各ディレクトリエントリは、ファイル名と、ファイルに対応するiノードへのポインタのみで構成されます。
3.2、ディレクトリ構造
-
単一レベルのディレクトリ構造
ファイルシステム全体で作成されるディレクトリテーブルは1つだけで、各ファイルはディレクトリエントリを占有します。しかし、検索速度は遅く、ファイルは同じ名前を許可しないため、ファイル共有には不便です。
-
2レベルのディレクトリ構造
ファイルディレクトリをメインファイルディレクトリとユーザーファイルディレクトリに分割します。ただし、柔軟性に欠け、ファイルの分類には不便です。
-
マルチレベルのディレクトリ構造(ツリーディレクトリ構造)。Linuxのディレクトリツリー構造に似ています。絶対パスと相対パス。
-
非循環グラフのディレクトリ構造
3.3、ファイル共有
- ハードリンク
- ソフトリンク
4.ファイルシステムの実装
4.1、ファイルシステムの階層
4.2、ディレクトリの実装
検索するためにカタログが実装されています
- 線形カタログ
- ハッシュ表
4.3、ファイルの実現
4.3.1。ファイル割り当て方法(ディスク上の非空きブロックの管理)
達成する方法 | ディレクトリアイテムの構造 | 利点 | 不利益 | |
---|---|---|---|---|
順次割り当て | 割り当てるファイルは連続したディスクブロックである必要があります | 開始ブロック番号、ファイル長 | シーケンシャルアクセスは高速で、ランダムアクセスをサポートします | 断片化が発生し、ファイル拡張子が使用されない |
暗黙的なリンク | ファイルの最後のディスクブロックを除いて、各ディスクブロックには次のディスクブロックへのポインターがあります(単一リンクリスト)。 | 開始ブロック番号、終了ブロック番号 | 断片化、外部メモリの高使用率、簡単なファイル拡張の問題を解決できます | 順次アクセスのみ可能 |
明示的なリンク | ファイルアロケーションテーブル(FAT)を確立し、ディスクブロックのシーケンスを明示的に記録します(起動後のFAT常駐メモリ)。 | 開始ブロック番号 | ランダムアクセスは、メモリ内のFATをクエリすることによっても実現できます。 | FATには一定量のメモリ領域が必要です |
インデックスの割り当て | ファイルデータブロックのインデックステーブルを作成します。ファイルが大きすぎる場合は、リンクスキーム、マルチレベルインデックス、混合インデックスを使用できます | リンクスキームは最初のインデックスブロックのブロック番号を記録し、マルチレイヤー/混合インデックスは最上位のインデックスブロックのブロック番号を記録します | ランダムアクセス、簡単なファイル拡張をサポート | インデックステーブルは、一定量のメモリ領域を占有する必要があります。データにアクセスする前に、インデックスをすばやく読み取る必要があります。リンクスキームを使用する場合、インデックスブロックを検索するときに複数のディスク読み取り操作が必要になる場合があります。 |
4.3.2ファイルストレージスペースの管理(空きディスクブロックの管理)
- フリーリスト方式
- フリーリスト方式
- ビットマップ
- グループリンクリスト方式
5.ディスクの構成と管理
5.1、ディスクの構造
ディスク表面のデータは、トラックと呼ばれる同心円のセットに格納されます。トラックは数百のセクターに分割され、各セクターには512Bytesの固定ストレージサイズがあり、セクターはディスクブロックとも呼ばれます。すべてのディスク上で同じ相対位置を持つトラックがシリンダーを形成します。セクターは、ディスクのアドレス指定の最小単位です。ディスクアドレスは、「シリンダー番号・ディスク番号・セクター番号(またはブロック番号)」で表されます。
5.2。ディスクスケジューリングアルゴリズム
- 先着順アルゴリズム
- 最短の検索時間優先アルゴリズム
- スキャンアルゴリズムは
512バイト**で、セクターはディスクブロックとも呼ばれます。すべてのディスク上で同じ相対位置を持つトラックがシリンダーを形成します。セクターは、ディスクのアドレス指定の最小単位です。ディスクアドレスは、「シリンダー番号・ディスク番号・セクター番号(またはブロック番号)」で表されます。
5.2。ディスクスケジューリングアルゴリズム
- 先着順アルゴリズム
- 最短の検索時間優先アルゴリズム
- スキャンアルゴリズム
- サイクルスキャンアルゴリズム(C-SCANまたはLOOK)、改良されたC-LOOKアルゴリズム