【王導ノート-オペレーティングシステム】第4章ファイル管理

1.ファイルの概念

(1)文書の定義

  システムが実行されているとき、コンピューターはプロセスをリソースのスケジューリングと割り当ての基本単位として使用します。ユーザーの入力と出力の間、ファイルは情報の長期保存と将来のアクセスの基本単位です。ファイルシステムはファイル管理システムです。

  ファイルは、図書館の本と比較できます。

  • まず、本の本体は本の内容である必要がありますこれはファイルのデータと同等です
  • 第二に、異なる種類の本を異なる図書館に置いて番号を付ける必要があります。次に、番号を図書館管理システムに登録します。これは、読者が確認するのに便利です。これは、ドキュメントの分類と検索に相当します
  • 最後に、絶版または比較的高価な外国語の本の中には、VIPメンバーまたはより高い権限を持つ他の読者にのみ貸し出すことができるものもあれば、普通の本の中には誰でも借りることができるものもあります。これはファイル内のアクセス権限です

  ファイルの構造

  • データ項目。基本データ項目(名前、日付などの最小の論理単位)、結合されたデータ項目(複数の基本データ項目で構成されます)。
  • 録音。特定の側面でオブジェクトの属性を記述するために使用される関連データ項目のセット。たとえば、受験者の登録レコードには、受験者の名前、生年月日、学校コード、ID番号などが含まれます。
  • ファイル。構造化ファイル(すべての候補など、類似したレコードのグループで構成される)、非構造化ファイル(バイナリファイルまたは文字ファイル、ストリーミングファイル)に分割できます。

  実際、ファイルの厳密な定義はありません。ファイルは数字、文字、またはバイナリコードであり、基本的なアクセス単位はバイト、行、またはレコードです。ファイルはハードディスクやその他のセカンダリストレージに長期間保存できるため、プロセス間で制御可能な共有アクセスが可能になり、複雑な構造に編成できます。

(2)ファイル属性

  • 名前。のみ。
  • 識別子。ファイルの一意のラベル(通常は数字)は、人間が読み取ることはできません。
  • の種類。
  • ポジション。ポインタ。
  • サイズ。ファイルの現在のサイズ(バイト、ワード、またはブロック単位)。ファイルで許可されている最大値を含めることもできます。
  • 保護。アクセス制御情報。
  • 時間、日付、ユーザーID。ファイルの作成、最終変更、および最終アクセスに関する情報は、ファイルの使用を保護および追跡するために使用されます。

  すべてのファイルの情報はディレクトリ構造に保存され、ディレクトリ構造は外部ストレージに保存されます。ファイル情報は、必要に応じてメモリに転送されます。通常、ディレクトリエントリにはファイル名とその一意の識別子が含まれ、識別子は他の属性に関する情報を検索します。

第二に、ファイルの操作

1.ファイルの作成と削除

  • ファイルの作成:ファイルを作成するには、2つの必要な手順があります。1つはファイルシステムでファイル用のスペースを見つけること、もう1つはディレクトリに新しいファイルのエントリを作成することです。このエントリにはファイル名と場所が記録されます。ファイルシステム、およびその他の可能な情報。
  • ファイルの削除:最初に、ディレクトリから削除するファイルのディレクトリエントリを見つけて空にし、次にファイルが占有しているストレージスペース(ファイル制御ブロック、バッファなどを含む)を再利用します。

2.ファイルを開く

  多くのシステムでは、ファイルを初めて使用するときにオープンシステムコールが必要です。オペレーティングシステムはオープンファイルテーブルを維持します。ファイル操作が必要な場合、ファイルはテーブル内のインデックスを介して指定でき、検索リンクは省略されます。ファイルが使用されなくなると、プロセスはファイルを閉じることができ、オペレーティングシステムは開いているファイルテーブルからエントリを削除します。
  openを呼び出す要求(作成、読み取り専用、読み取り/書き込み、追加など)が許可されている場合、プロセスはファイルを開くことができ、openは通常、開いているファイルテーブルのエントリへのポインタを返します。ファイル名の代わりにこのポインターを使用してすべてのI / O操作を実行すると、手順が簡略化され、リソースが節約されます。

3.一般的に使用されるシステムコール

ここに画像の説明を挿入
ここに画像の説明を挿入

第三に、ディレクトリ構造

1.絶対パスと相対パス

  ユーザーが特定のファイルにアクセスする場合、ファイルパス名を使用してファイルを識別します。ファイルパス名は文字列です。ルートディレクトリから検索ファイルまでのパス上のすべてのディレクトリ名とデータファイル名は次のとおりです。区切り文字「/」でリンクして作成します。
  絶対パス:ルートディレクトリからのパス。
  相対パス:ユーザー(プロセス)の現在のディレクトリから検索するファイルのパスまで、すべてのディレクトリ名とデータファイル名は区切り文字「/」でリンクされます。プロセスによる各ファイルへのアクセスは、現在のディレクトリを基準にしています。現在のディレクトリを設定すると、ファイルの取得が高速化されます。

2.ファイル制御ブロック

  ファイル制御ブロック(FCB)は、「名前によるアクセス」を実現するためにファイルを制御するために必要なさまざまな情報を格納するために使用されるデータ構造です。順序付けられたFCBのコレクションはファイルディレクトリと呼ばれ、FCBはファイルディレクトリエントリです。新しいファイルを作成するために、システムはFCBを割り当て、それをディレクトリエントリとしてファイルディレクトリに保存します。

  FCBには、主に次の情報が含まれています。

  • ファイル名、ファイルの物理的な場所、ファイルの論理構造、ファイルの物理的な構造などの基本情報。
  • ファイルアクセス許可などのアクセス制御情報。
  • ファイルの作成時間、変更時間などの情報を使用します。

3.いくつかのディレクトリ構造

  • 単一レベルのディレクトリ構造

  ファイルシステム全体で作成されるディレクトリテーブルは1つだけであり、各ファイルはディレクトリエントリを占有します。
ここに画像の説明を挿入

  単一レベルのディレクトリ構造は「名前によるアクセス」を実装しますが、検索速度が遅い、ファイル名の複製が許可されない、ファイル共有が不便であるという欠点があります。マルチユーザーシステムには適していません。

  • 2レベルのディレクトリ構造(名前の重複の問題を解決するため)

  2レベルのディレクトリ構造により、複数のユーザー間でのファイルの重複の問題を解決でき、ファイルシステムは、セキュリティを確保するためにディレクトリへのアクセス制限を実装できます。ただし、2レベルのディレクトリ構造には柔軟性がなく、ファイルを分類できません。

ここに画像の説明を挿入

  • マルチレベルのディレクトリ構造(UNIXシステム)(明確な階層)

  ツリー型のディレクトリ構造はファイルを簡単に分類でき、階層構造は明確であり、ファイルをより効果的に管理および保護することもできます。ただし、ツリー型のディレクトリでファイルを検索する場合は、パス名に応じてレベルごとに中間ノードにアクセスする必要があり、ディスクアクセス数が増えるため、クエリ速度に影響することは間違いありません。

ここに画像の説明を挿入

  • 非巡回グラフのディレクトリ構造(共有を実現)

  マルチレベルのディレクトリ構造に基づいて、非循環グラフディレクトリ構造はファイルの共有を容易にしますが、システムの管理をより複雑にします(たとえば、共有ノードの削除には注意が必要です)。

ここに画像の説明を挿入

第四に、ファイル共有とファイル保護

1.ファイル共有

(1)ハードリンクファイル共有

  ハードリンク共有はインデックスノード方式を採用しています。ツリー構造のディレクトリには、ファイル名と対応するインデックスノードへのポインタのみが設定されます。ファイルのインデックスノードへのポインタは、共有ファイルのユーザーディレクトリに設定されます。インデックスノードにはリンクカウントカウントも必要です。これは、このインデックスノードにリンクされている(またはこのファイルに接続されていると言える)ユーザーディレクトリエントリの数を示すために使用されます。カウント> 1の場合、ファイル所有者図のようにファイルを削除することはできません。

ここに画像の説明を挿入

  利点:異なる名前の共有を実現します。
  短所:ファイルの所有者は、他のユーザーと共有しているファイルを削除できません。

(2)ソフトリンク(シンボリックリンク)ファイル共有

  シンボリックチェーンを使用してファイル共有を実現する場合、ファイルの所有者のみがそのインデックスノードへのポインタを持ちます。ユーザーBがユーザーAのファイルFを共有したい場合、システムは、ユーザーBのディレクトリに共有ファイルFのパス名のみを含むタイプLINKの新しいファイルを作成できます。このリンクメソッドをシンボリックリンクと呼びます。
  利点:ファイル所有者は、他のユーザーと共有しているファイルを削除できます。
  短所:他のユーザーが共有ファイルを読み取る場合、パス名のコンポーネントに従って1つずつ検索する必要があり、アクセスにコストがかかります。

2.ファイル保護

  ファイル保護は、パスワード保護、暗号化保護、およびアクセス制御によって実現されます。その中で、パスワード保護と暗号化保護は、ユーザーファイルが他人にアクセスされたり盗まれたりするのを防ぐために使用され、アクセス制御はユーザーがファイルにアクセスする方法を制御するために使用されます。

五、ファイルの実現

1.ディスクの非空きブロックの管理:ファイル割り当て方法

ここに画像の説明を挿入

ここに画像の説明を挿入

2.空きディスクブロックの管理:ファイルストレージスペースの管理

最初にスキップしてください。

6.ディスクの編成と管理

1.ディスクの構造

ここに画像の説明を挿入

2.ディスクの読み取りおよび書き込み時間

  1つのディスクの読み取りおよび書き込み操作時間=シーク時間+遅延時間+送信時間。

  • シーク時間(最も影響が大きい):ヘッドをトラックに移動するのに必要な時間。Ts = m * n + s。トラックは全部でn個あり、各トラックに必要な時間はm、sは磁気アームを起動する時間です。
  • 遅延時間:ヘッドが特定のトラックのセクターに位置するのに必要な時間、通常は半回転。Tr = 1 / r / 2。rはディスクの回転速度です。
  • 送信時間:ディスクからの読み取りまたはディスクへの書き込みに必要な時間。バイト数bと回転速度rによって決まります。Tt = b /(rN)。Nはトラックのバイト数です。セクターデータの処理時間は、より大きな影響を及ぼします。
    ここに画像の説明を挿入

3.ディスクスケジューリングアルゴリズム

  いくつかの一般的なスケジューリングアルゴリズムは次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入

4.遅延時間を短縮するための対策:パネルの交互の番号付け

ここに画像の説明を挿入

  ディスクは連続回転装置です。ヘッドが物理ブロックの読み取り/書き込みを行った後、ブロックの読み取り/書き込みを開始するのに短い処理時間がかかります。番号を交互に切り替えることで、連続アクセスの遅延時間を効果的に短縮できます。
  送信時間はディスク自体によって決定され、シーク時間と遅延時間は、アルゴリズムのスケジューリングを通じてオペレーティングシステムによって最適化できます。


添付ファイル:キングウェイの多肢選択問題のメモ

1. UNIXオペレーティングシステムでは、入出力デバイスは(特殊ファイル)と見なされます。

2.ファイルの論理構造はユーザーの便宜のために設計されており、物理構造は記憶媒体の特性とオペレーティングシステム管理の便宜のために設計されています。

3.ユーザープロセスがreadシステムコールを介してディスクファイル内のデータを読み取る場合、このプロセスの以下の説明では、正しいものは(AB)です。
A.ファイルのデータがメモリにない場合、プロセスはスリープ待機状態(ブロッキング)になります
。B。システムコールの読み取りを要求すると、CPUはユーザーモードからコアモードに切り替わります
。C。のパラメータ読み取りシステムコールには、ファイルの名前が含まれている必要があります(openのパラメーターには、ファイルのパス名とファイル名が含まれ、読み取り専用では、openによって返されたファイル記述子を使用する必要があります)

4. UNIXオペレーティングシステムでは、ファイルのインデックス構造が配置されます(インデックスノード)。
UNIXシステムは、ツリーディレクトリ構造を使用します。

5.ファイルF1の現在の参照カウントを1に設定し、最初にファイルF1、ファイルF2のシンボリックリンク(ソフトリンク)を確立し、次にファイルF1のハードリンクファイルF3を作成し、次にファイルF1を削除します。このとき、ファイルF2とファイルF3の参照カウント値はそれぞれ(1、1)です。
シンボリックリンクが確立されると、参照カウント値が直接コピーされます。ハードリンクが確立されると、参照カウント値が1増加します。ファイルを削除する場合、削除操作はシンボリックリンクからは見えないため、ファイルシステムには影響しません。今後シンボリックリンクを介してファイルにアクセスしたときにファイルが存在しない場合、シンボリックリンクは直接削除されます。ハードリンクの場合、シンボリックリンクを直接削除することはできません。カウント値は1減少します。値が0でない場合、このファイルを指す他のハードリンクがあるため、このファイルを削除できません。
F2が確立されると、F1とF2の参照カウント値は両方とも1になります。F3が再度作成されると、F1とF3の参照カウント値は両方とも2になります。後でF1を削除しても、F3の参照カウント値は2-1 = 1であり、F2の参照カウント値は変更されません。

6.ファイルf1のハードリンクが2で、2つのプロセスがそれぞれflとf2を開き、対応するファイル記述子がfd1とfd2である場合、以下の説明で正しいものは(BC)です。
A. f1とf2の読み取りポインタと書き込みポインタの位置は同じままです
。B.f1とf2は同じメモリインデックスノードを共有します
。C.fd1とfd2はそれぞれ、それぞれのユーザーオープンファイルテーブルの1つの項目を指します。

7.ファイルへのアクセスは、(ユーザーアクセス権とファイル属性)によって共同で制限されます。

8.システムレベルのセキュリティ管理には、登録とログインが含まれます。

9.ファイルシステムでは、ファイルごとに、ユーザーカテゴリはセキュリティ管理者、ファイル所有者、ファイル所有者のパートナー、その他のユーザーの4つのカテゴリに分類され、アクセス許可はフルコントロール、実行、変更、読み取りの5つのタイプに分類されます。 、 書く。バイナリビット文字列を使用してファイル制御ブロック内のファイルのアクセス許可を表す場合、ファイルに対するさまざまなタイプのユーザーのアクセス許可を表すには、ファイルのアクセス許可を表すビット数が少なくとも(20)である必要があります。

10.ファイルインデックスノードに7つのアドレス項目があり、そのうち4つのアドレス項目が直接アドレスインデックス、2つのアドレス項目が第1レベルの間接アドレスインデックス、1つのアドレス項目が第2レベルの間接アドレスインデックスであるとします。各アドレス項目サイズは4Bです。ディスクインデックスブロックとディスクデータブロックのサイズが両方とも256Bの場合、表現できる単一ファイルの最大長は(1057KB)です。
各ディスクインデックスブロックとディスクデータブロックのサイズは256Bで、各ディスクインデックスブロックには256/4 = 64のアドレス項目があります。したがって、4つの直接アドレスインデックスが指すデータブロックのサイズは4×256B、2つの第1レベルの間接インデックスに含まれる直接アドレスインデックスの数は2×(256/4)、つまりサイズです。指し示すデータブロックの2×(256/4)×256Bです。セカンダリ間接インデックスに含まれる直接アドレスインデックスの数は(256/4)x(256/4)です。つまり、それが指すデータブロックのサイズは(256/4)x(256/4)xです。 256B。したがって、7つのアドレス項目が指すデータブロックの合計サイズは、4×256 + 2×(256/4))×256 +(256/4)×(256/4)×256 = 1082368B = 1057KBになります。

11.ファイルシステムでは、そのFCBは64Bを占有し、ディスクブロックサイズは1KBであり、第1レベルのディレクトリが使用されます。ファイルディレクトリに3200のディレクトリエントリがあると仮定します。ファイルを見つけるには、平均して(100)ディスクアクセスが必要です。
3200個のディレクトリアイテムが占めるディスクブロックの数は、3200×64B / 1KB = 200です。第1レベルのディレクトリへの平均アクセス数はディスクブロック数の1/2であるため(ディレクトリテーブル内のすべてのディレクトリエントリを順番に検索し、各ディレクトリエントリはFCBです)、ディスクは200/2 = 100回です。

12.順次検索方式で検索が完了すると、ファイルの論理アドレスを取得できます。

13.リンク分散方式を採用したレコードファイルがあり、論理レコードの固定長は100Bであり、ディスクに格納する際にはレコードグループ分解技術が使用されます。ディスクブロックの長さは512Bです。ファイルのディレクトリエントリがメモリに読み込まれている場合、22番目の論理レコードが変更された後、ディスクは(6)回起動されています。
22番目の論理レコードは4(22×100/512 = 4、残り152)の物理ブロックに対応します。つまり、5番目の物理ブロックが読み込まれます。ファイルの物理構造はリンクファイルであるため、ポイントする必要があります。ディレクトリエントリから最初の物理ブロックが読み込まれ、4番目のブロックが順番に読み取られると5番目のブロックの物理アドレスが取得されます。ディスクは合計5回起動されます。変更にはライトバック操作も必要です。ライトバック中にブロックの物理アドレスが取得されているため、ディスクへのアクセスは1回だけで済み、合計6台のディスクを起動する必要があります。

14.ファイルのインデックスノードに10個の直接インデックスポインタを格納し、それぞれ1個のプライマリおよびセカンダリインデックスポインタを格納します。ディスクブロックサイズは1KBで、各インデックスポインタは4Bを占めます。ファイルのインデックスノードがすでにメモリ内にある場合は、ファイルオフセット(バイト単位でアドレス指定)が1234および307400であるディスクブロックをメモリに読み込み、アクセスする必要のあるディスクブロックの数は(1、3)です。 )。
10個の直接インデックスポインタが指すデータブロックのサイズは10×1KB = 10KBです。各インデックスポインタは4Bを占有し、各ディスクブロックは1KB / 4B = 256のインデックスポインタを格納でき、プライマリインデックスポインタが指すデータブロックのサイズは256×1KB = 256KBであり、が指すデータブロックのサイズはセカンダリインデックスポインタは256×256×1KB = 2KB = 64MBです。
オフセットが1234の場合、1234B <10KBであるため、バイト単位でアドレス指定すると、それが配置されているディスクブロックアドレスを直接インデックスポインタで取得できます。ファイルのインデックスノードはすでにメモリ内にあるため、アドレスを直接取得できるため、ディスクへのアクセスは1回だけで済みます。
オフセットが307400の場合、10KB + 256KB <307400B <64MBであるため、オフセットの内容はセカンダリインデックスポインタが指す特定のディスクブロックにあり、インデックスノードはすでにメモリにあることがわかります。最初にディスクに2回アクセスすることで取得されます。ファイルが配置されているディスクブロックアドレスは、ディスクに再度アクセスすると読み取ることができ、合計3回のディスクアクセスが必要です。

15.ファイルシステムはビットマップ方式を使用してディスクスペースの割り当てを示します。ビットマップはディスク上のブロック32〜127に格納されます。各ディスクブロックは1024Bを占有します。ブロック内のディスクブロックとバイトには0から始まる番号が付けられます。解放されるディスクブロック番号を409612とすると、ビットマップで変更するビットが配置されているディスクブロック番号とブロック内のバイトシーケンス番号はそれぞれ(82、1)です。
ディスクブロック番号=開始ブロック番号+ [ディスクブロック番号/(1024×8)] = 32 + [409612 /(1024×8)] = 32 + 50 = 82、これはビット番号の代わりにブロック内のバイト番号です、したがって、8(1B = 8ビット)で除算する必要があります。ブロック内のバイト番号= [(ディスクブロック番号%(1024×8))/ 8] = 1です。

16.以下のオプションのうち、空きディスクブロックのファイルシステム管理に使用できるデータ構造は(ACD)です。
A.ビットマップB.インデックスノードC.空きディスクブロックチェーンD.ファイルアロケーションテーブル(FAT)

17.ディスクはタイムシェアリング共有デバイスですが、最大で1つのジョブが各瞬間にディスクを開始できます。

18. CD、Uディスク、および磁気ディスクには、順次およびランダムにアクセスできます。
テープには順次アクセスする必要があります。

19.ディスク上のファイルはブロック内にあり、読み取りと書き込みもブロック内にあります。

20.システムは常にディスクの特定のトラックにアクセスし、他のトラックへのアクセス要求には応答しません。この現象は磁気アームスティッキングと呼ばれます。以下のディスクスケジューリングアルゴリズムのうち、磁気アームがくっつかないものは(A)です。
A.先着順(FCFS)
B。最短シークタイムファースト(SSTF)
C。スキャンアルゴリズム(SCAN)
D。サイクリックスキャンアルゴリズム(CSCAN)
システムに常にトラックアクセス要求がある場合、Meetを続行します。最短シーク時間優先度、スキャンアルゴリズム、サイクリックスキャンアルゴリズムのアクセス条件であり、常にアクセス要求を処理します。先着順のサービスは、リクエスト順にスケジュールされている方が公平なので、Aを選択してください。

21.ファイルシステムのクラスターとディスクセクターのサイズは、それぞれ1KBと512Bです。ファイルのサイズが1026Bの場合、システムによってファイルに割り当てられるディスク容量は(2048B)です。
ディスクアクセス時間を改善するために、ほとんどのオペレーティングシステムはクラスターにスペースを割り当てるため、答えはDです。

おすすめ

転載: blog.csdn.net/Tracycoder/article/details/109393972