Tongji University CS「オペレーティングシステム」コース設計:ファイルシステム
このプロジェクトは、2021年にトンジ大学のコンピューターサイエンスアンドテクノロジーのオペレーティングシステムコース向けに設計されています。UNIXのようなファイルシステムの実装。

今学期(主にGUIなし)で最も簡単な大きな割り当て、ファイルシステムの開発に10日かかりました
この倉庫があなたを助けたら、私に星をくれますか?
ご質問がある場合は、他の人が一緒に紹介したり議論したりするための問題でそれらを提起することもできますか?
リポジトリは、MITオープンソースプロトコルに従います
この変数は、主に現在読み取られたファイルの長さを記録するために使用されます。この変数の存在は、ファイルの混合インデックスの難しさを減らします。関数は、ファイルが使用されるインデックスブロックの数を計算する必要はありませんし、ファイルの混合インデックス構造が何であるかを知る必要もありません。インデックスファイルを直接、すべてのインデックスブロックが最大サイズに達する巨大ファイルと見なします。ダイレクトインデックスからファイルを通過し、次に第1レベルのインデックス、次に第2レベルのインデックスに移動します。長さがファイルサイズに達すると、あらゆるサイズのファイルのトラバーサルを直接終了できます。ただし、この方法の欠点は、ファイルを読み取るたびにファイルヘッダーから始まり、ランダムな読み取りと書き込みの効率を低下させることです。
この変数は、主に、エディターがテキストの表示を開始する線を示すために使用されます。この変数は、ファイル行の数がコンソールの高さを超えると有効になり始めます。コンソールカーソルの実際のテキストにマッピングされた行数をstart_line変数に追加する必要があります。カーソルが収益に移動したら、矢印キーをもう一度押して、start_lineはエディターのテキストのページダウンを追加し、その逆も同様です。
この変数は、コマンドラインユーザーインターフェイスクラスに属し、主にファイルシステム内のユーザーのパスを記録します。ファイルシステムでは、すべての操作インターフェイスは絶対パスに基づいており、コマンドラインインターフェイスでユーザーが入力したコマンドは相対パスCUR_DIRに基づいているためです。したがって、ユーザーインターフェイスがファイルシステムインターフェイスを使用する場合、CUR_DIRはユーザーによるパス入力でスプライスされ、絶対パスを静かなシステムのインターフェイス関数にパラメーターとして渡す必要があります。


このファイルシステムは、64ビットのWindowsオペレーティングシステムで実行されます。ファイルシステムのシミュレートされたファイルボリュームサイズは128MBです。プログラムディレクトリに十分な空きスペースがあることを確認してください。
プログラムを終了するときに、プログラムを直接閉じることは禁止されています。 Exitコマンドを使用してファイルシステムを終了する必要があります。そうしないと、ファイルシステムエラーまたはクラッシュを引き起こす可能性があります。
/etc/users.txtおよび/etc/groups.txtファイルを慎重に変更します。これらの2つのファイルは、ユーザー管理に関連しています。フォーマットが適切に変更されていない場合、ファイルシステムがログインまたは他の許可の問題をログインできなくなる可能性があります。
上記の2つの問題が発生した場合は、ファイルシステムをフォーマットしてみてください。
ログインしていないときに利用可能なコマンド:
| 注文 | パラメーター | 関数 |
|---|---|---|
| ログイン | ユーザー名(文字列) | ユーザーログイン |
| 出口 | システムを終了します | |
| 形式 | フォーマットファイルシステム | |
| ヘルプ | コマンドプロンプトリストを表示します |
ログイン状態で利用可能なコマンド:
| 注文 | パラメーター | 関数 |
|---|---|---|
| ログアウト | ユーザーログアウト | |
| 出口 | システムを終了します | |
| mkdir | ディレクトリ名(文字列、28バイト未満の長さ、マルチレベルのディレクトリになることはできません) | サブディレクトリを作成します |
| CD | ディレクトリ名(文字列、28バイト未満の長さ、現在のディレクトリのサブディレクトリ名はマルチレベルのディレクトリではありません) | サブディレクトリに移動します |
| ls | 現在のディレクトリリストを表示します | |
| rmdir | ディレクトリ名(文字列、28バイト未満の長さ、現在のディレクトリのサブディレクトリ名はマルチレベルのディレクトリではありません) | サブディレクトリを削除します |
| 触る | ファイル名(文字列、28バイト未満の長さ、マルチレベルのディレクトリになることはできません) | 新しいファイルを作成します |
| chmod | ファイル名(文字列、長さ28バイト未満、現在のディレクトリのファイル名はマルチレベルのディレクトリになることはできません)許可(3桁のオクタル番号) | ファイルまたはディレクトリの権限を変更します |
| rm | ファイル名(文字列、長さ28バイト未満、現在のディレクトリのファイル名はマルチレベルのディレクトリではありません) | ファイルを削除します |
| useradd | ユーザー名(文字列)ユーザーグループ名(文字列、ユーザーグループはすでに存在する必要があります) | ユーザーを追加します |
| userdel | ユーザー名(文字列、ユーザーはすでに存在する必要があります) | ユーザーを削除します |
| GroupAdd | ユーザーグループ名(文字列) | ユーザーグループを追加します |
| GroupDel | ユーザーグループ名(文字列、ユーザーグループはすでに存在する必要があります) | ユーザーグループを削除します |
| DF | ディスクの使用量を確認してください | |
| 見せる | ファイル名(文字列、長さ28バイト未満、現在のディレクトリのファイル名はマルチレベルのディレクトリではありません) | ファイルの内容を印刷します。ファイルが文字ファイルでない場合、エラーを引き起こす可能性があります |
| vi | ファイル名(文字列、長さ28バイト未満、現在のディレクトリのファイル名はマルチレベルのディレクトリではありません) | エディターを含むファイルを開きます |
| 形式 | フォーマットファイルシステム | |
| win2fs | Windowsの下のファイルパス(String、Windowsファイルパス仕様に準拠)FSファイルシステムの現在のディレクトリの下のファイル名(文字列、28バイト未満、現在のディレクトリのファイル名はマルチレベルのディレクトリであることはできません) | Windowsファイルの内容をFSファイルシステムファイルにコピーします |
| fs2win | FSファイルシステムの現在のディレクトリのファイル名(文字列、長さ28バイト未満、現在のディレクトリのファイル名はマルチレベルディレクトリになることはできません)Windowsのファイルパス(文字列、Windowsファイルパスの仕様に準拠しています) | FSファイルシステムの内容をWindowsファイルにコピーする |
| CLS | 画面をクリアします | |
| ヘルプ | コマンドプロンプトリストを表示します |
編集者の指示:
エディターに入った後、カーソルを矢印キーに移動できます。カーソルが上限と下の境界にある場合、カーソルをもう一度境界に移動してテキストコンテンツのページターニングを完了し、cursorの前に文字を削除するために入力キーを入力し、他の文字を入力してカーソルに文字を挿入し、ESCキーを押してテキストを保存します。 「□」編集者はEnterキーを示し、「#」はファイルの終了を示します。エディターはASCII文字のみを処理できることに注意してください。
このプログラムは、不適切なコマンド入力、完全なファイルシステムスペース、違法な権限などにより、さまざまな例外を引き起こす可能性があります。例外が発生すると、プログラムは例外情報をコンソールに出力します。出力情報に基づいて例外を解決してください。例外が解決されない場合は、ファイルシステムをフォーマットしてみてください。
調整可能なパラメーターのマクロ定義は、filesystem.hファイルにあります
| パラメーター | 説明します |
|---|---|
| バージョン | ファイルシステムバージョン |
| disk_name | ファイルボリュームファイル名をシミュレートします |
| disk_size | ファイルボリュームディスクサイズは、少なくとも1024*512バイトを超えています。 (261120+1024) *512バイト、つまり128MBに設定することをお勧めします |
| ファイル名 | 説明します |
|---|---|
| filesystem.h | ファイルシステムヘッダーファイル |
| filesystem.cpp | ファイルシステムC ++ファイル |
| main.cpp | メインプログラムC ++ファイル(コマンドラインユーザーインターフェイス) |
| test.cpp | ファイルシステムファイルインターフェイステストファイルは、最終的な実行可能ファイルにコンパイルされていません。 |
| fs.data | ディスクファイルのボリュームをシミュレートします |
| ファイルSystem.exe | 実行可能プログラム(コマンドラインユーザーインターフェイス) |







