資源簡介
1 概述
文件系統是操作系統用于明確存儲設備(常見的是磁盤,也有基于NAND Flash的固態硬盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。文件系統由三部分組成:文件系統的接口,對對象操縱和管理的軟件集合,對象及屬性。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶不再使用時撤銷文件等。
本次實驗我們實現了多級目錄下的文件管理系統,具備文件系統的文件創建、刪除、讀寫以及目錄的創建、刪除等操作,并在內存中開辟一塊空間,模擬虛擬磁盤,成功地展示出文件系統的功能和屬性。
2 課程設計的任務和要求
2.1 設計任務
在下列內容中任選其一:
1、多用戶、多級目錄結構文件系統的設計與實現;
2、WDM驅動程序開發;
3、存儲管理系統的實現,主要包括虛擬存儲管理調頁、缺頁統計等;
4、進程管理系統的實現,包括進程的創建、調度、通信、撤消等功能;
5、自選一個感興趣的與操作系統有關的問題加以實現,要求難度相當。
2.2 設計要求
1、在深入理解操作系統基本原理的基礎上,對于選定的題目,以小組為單位,先確定設計方案;
2、設計系統的數據結構和程序結構,設計每個模塊的處理流程。要求設計合理;
3、編程序實現系統,要求實現可視化的運行界面,界面應清楚地反映出系統的運行結果;
4、確定測試方案,選擇測試用例,對系統進行測試;
5、運行系統并要通過驗收,講解運行結果,說明系統的特色和創新之處,并回答指導教師的提問;
6、提交課程設計報告。
集體要求:
1.在內存中開辟一個虛擬磁盤空間作為文件存儲器,在其上實現一個多用戶多目錄的文件系統。
2.文件物理結構可采用顯式鏈接或其他方法。
3.磁盤空閑空間的管理可選擇位示圖或其他方法。如果采用位示圖來管理文件存儲空間,并采用顯式鏈接分配方式,則可以將位示圖合并到FAT中。
4.文件目錄結構采用多用戶多級目錄結構,每個目錄項包含文件名、物理地址、長度等信息,還可以通過目錄項實現對文件的讀和寫的保護。目錄組織方式可以不使用索引結點的方式,但使用索引結點,則難度系數為1.2。
5.設計一個較實用的用戶界面,方便用戶使用。要求提供以下相關文件操作:
(1)具有login (用戶登錄)
(2)系統初始化(建文件卷、提供登錄模塊)
(3)文件的創建: create
(4)文件的打開:open
(5)文件的讀:read
(6)文件的寫:write
(7)文件關閉:close
(8)刪除文件:delete
(9)創建目錄(建立子目錄):mkdir
(10)改變當前目錄:cd
(11)列出文件目錄:dir
(12)退出:logout
................................................

代碼片段和文件信息
//************************disk.cpp********************************
#?include?“disk.h“
#include
#include
#include
#include
#include
using?namespace?std;
Cdisk::Cdisk() //管理磁盤的類,構造函數
{
????int?i=0;
????char?code1[10]=“201208“;
?????char?name1[10]=“admin“;
?????strcpy(codecode1);
?????strcpy(namename1);
????for(i=0;?i<10000;?i++) //初始化所有磁盤塊為空閑
????????disk_block[i]=‘$‘;
????//this->user[0].set_user(“student““123“);//默認一個用戶char
????disk_empty=10000;
????cout.setf(ios::left); //設置輸出方式
}
Cdisk::~Cdisk() //析構
{
}
int?Cdisk::dele_user(int?i) //Cdisk類dele_user的構造
{
????Cuse?C;
????C=user[i];
????user[i].dele_user(); //調用Cuse類的成員函數?int?dele_user()
????return?1;
}
int?Cdisk::dis_disk() //檢查磁盤信息
{
????int?i=0;
????cout< ????for(i=0;?i<5;?i++)
????????if(user[i].get_status()==1) //存在的用戶的信息
????????????cout< ????cout<<“已用空間:“<<10000-disk_empty< ????return?1;
}
int?Cdisk::login(char?b) //登陸
{
????char?n[10]c[10];
????int?i;
????if(b==‘1‘)
????{
???????cout<<“請輸入用戶名:“< cin>>n;
cout<<“請輸入密碼:“< cin>>c;
if(!strcmp(nname))
????????????{
????????????????if(!strcmp(ccode))
????????????????{
????????????????????cout<<“管理員登陸成功!“;
????????????????????system(“pause“);
????????????????????return?1;
????????????????}
????????????????else
????????????????{
????????????????????cout<<“密碼錯誤!“< ????????????????????system(“pause“);
????????????????????return?-1;
????????????????}
????????????}
????????????else
????????????{
????????????????cout<<“沒有該用戶名!“;
????????????????system(“pause“);
????????????????return?-1;
????????????}
????}
????else
????{
????????if(!user[0].get_status()) //當前不存在用戶
????????{
????????????i=0;
????????????cout<<“當前用戶為空,歡迎注冊!“< ????????????user[i].set_status(1); //為新用戶分配權利
????????????cout<<“請輸入用戶名:“< ????????????cin>>n;
????????????cout<<“請輸入密碼:“< ????????????cin>>c;
????????????user[i].set_user(nc); //調用Cuse的成員函數,傳遞用戶名與密碼
????????????cout<<“恭喜,創建用戶成功!“< ????????????return?i;
????????}
????????else
????????{
????????????cout<<“用戶名:“;
????????????cin>>n;
????????????cout<<“密碼:“;
????????????cin>>c;
????????????cout< ????????????for(i=0;?i<5;?i++) //查找是否存在此用戶
????????????{
????????????????if(user[i].get_status()) //存在方比較
????????????????????if(!strcmp(nuser[i].get_name())) //相等時為0,此判斷為匹配
????????????????????????if(!strcmp(cuser[i].get_code())) //密碼匹配
????????????????????????{
????????????????????????????cout<<“登陸成功!“< ????????????????????????????cout<<“歡迎“< ????????????????????????????return?i;
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????cout<<“密碼錯誤“< ?????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????22151??2015-07-17?13:45??計算機1208班20124016\FS\disk.cpp
?????文件???????2178??2015-07-13?17:16??計算機1208班20124016\FS\disk.h
?????文件???????1116??2015-07-09?17:21??計算機1208班20124016\FS\FS.cbp
?????文件???????1551??2015-07-22?17:52??計算機1208班20124016\FS\FS.depend
?????文件????????687??2015-07-24?09:20??計算機1208班20124016\FS\FS.layout
?????文件???????4237??2015-07-17?13:36??計算機1208班20124016\FS\main.cpp
?????文件???????3259??2015-07-09?11:02??計算機1208班20124016\FS\menu.cpp
?????文件?????138240??2015-07-09?23:13??計算機1208班20124016\FS\繪圖1.vsd
?????文件????1015473??2015-07-17?13:46??計算機1208班20124016\FS\bin\Debug\FS.exe
?????文件??????10444??2015-07-15?14:23??計算機1208班20124016\FS\doxygen\doxyfile
?????文件??????59542??2015-07-17?13:46??計算機1208班20124016\FS\obj\Debug\disk.o
?????文件??????21292??2015-07-17?13:36??計算機1208班20124016\FS\obj\Debug\main.o
?????文件????2346370??2015-09-16?09:16??計算機1208班20124016\20124016.doc
?????目錄??????????0??2015-07-24?09:19??計算機1208班20124016\FS\bin\Debug
?????目錄??????????0??2015-07-24?09:19??計算機1208班20124016\FS\obj\Debug
?????目錄??????????0??2015-07-24?09:19??計算機1208班20124016\FS\bin
?????目錄??????????0??2015-07-24?09:19??計算機1208班20124016\FS\doxygen
?????目錄??????????0??2015-07-24?09:19??計算機1208班20124016\FS\obj
?????目錄??????????0??2015-07-24?09:20??計算機1208班20124016\FS
?????目錄??????????0??2015-07-24?09:21??計算機1208班20124016
-----------?---------??----------?-----??----
??????????????3626540????????????????????20
評論
共有 條評論