資源簡介
1. 在現有機器硬盤上開辟100M的硬盤空間,作為設定的硬盤空間。
2. 編寫一管理程序simdisk對此空間進行管理,以模擬Linux文件系統,要求:
(1) 盤塊大小1k
(2) 空閑盤塊的管理:Linux位圖法
(3) 結構:超級塊, i結點區, 根目錄區
3. 該simdisk管理程序的功能要求如下:
(1) info: 顯示整個系統信息(參考Linux文件系統的系統信息),文件可以根據用戶進行讀寫保護。目錄名和文件名支持全路徑名和相對路徑名,路徑名各分量間用“/”隔開。
(2) cd …: 改變目錄:改變當前工作目錄,目錄不存在時給出出錯信息。
(3) dir …: 顯示目錄:顯示指定目錄下或當前目錄下的信息,包括文件名、物理地址、保護碼、文件長度、子目錄等(帶/s參數的dir命令,顯示所有子目錄)。
(4) md …: 創建目錄:在指定路徑或當前路徑下創建指定目錄。重名時給出錯信息。
(5) rd …: 刪除目錄:刪除指定目錄下所有文件和子目錄。要刪目錄不空時,要給出提示是否要刪除。
(6) newfile …: 建立文件。
(7) cat …: 打開文件。
(8) copy …: 拷貝文件,除支持模擬Linux文件系統內部的文件拷貝外,還支持host文件系統與模擬Linux文件系統間的文件拷貝,host文件系統的文件命名為…,如:將windows下D:盤的文件\data\sample\test.txt文件拷貝到模擬Linux文件系統中的/test/data目錄,windows下D:盤的當前目錄為D:\data,則使用命令:
simdisk copy D:\data\sample\test.txt /test/data
或者:simdisk copy D:sample\test.txt /test/data
(9) del …: 刪除文件:刪除指定文件,不存在時給出出錯信息。
(10) check: 檢測并恢復文件系統:對文件系統中的數據一致性進行檢測,并自動根據文件系統的結構和信息進行數據再整理。
4. 程序的總體流程為:
(1) 初始化文件目錄;
(2) 輸出提示符,等待接受命令,分析鍵入的命令;
(3) 對合法的命令,執行相應的處理程序,否則輸出錯誤信息,繼續等待新命令,直到鍵入EXIT退出為止。

代碼片段和文件信息
#include?“head.h“
#include?“blockinodesuperblock.h“
#include?“initial.h“
#include?“userop.h“
#include?“file.h“
#include?“dir.h“
#include?“command.h“
#include?“chsome.h“
?
/////////////////////////////////////////////////////////////////////////////////////////
void?main()
{
control.open(“control.txt“ios::in?|?ios::out?);
int?i;
????control>>i;
????control.close();
????????if(i!=0)//不為0就初始化
{
initial();
}
????control.open(“control.txt“ios::in?|?ios::out?);
control.seekp(0);
control<<0;//默認是上次基礎上繼續下去不用再初始化
????control.close();
?
????strcpy(curname“root“);//當前目錄文件名為root
????road[0]=0;//當前目錄路徑(存放從根目錄到這里的結點號)
num=1;//最后位road[num-1]為當前目錄文件i結點號
?
cout<<“請登陸系統\n“;
????while(?!login()?)//登陸為止
cout<<“wrong?!!!\n“;
cout<<“????login?success“< cout<<“******Welcome?“< ?
readsuper();
????getcommand();//命令解析函數
writesuper();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????51400??2009-05-30?12:59??文件系統\debug\disk.txt
?????文件?????102400??2009-02-17?11:52??文件系統\debug\OS5.exe
?????文件?????442576??2009-02-17?11:52??文件系統\debug\OS5.ilk
?????文件?????486400??2009-02-17?11:52??文件系統\debug\OS5.pdb
?????文件?????????54??2009-05-30?12:59??文件系統\debug\user.txt
?????文件???????7644??2009-02-17?11:50??文件系統\OS5\blockinodesuperblock.h
?????文件???????7194??2009-02-17?11:52??文件系統\OS5\chsome.h
?????文件???????5321??2009-02-17?11:52??文件系統\OS5\command.h
?????文件??????12191??2009-02-17?11:52??文件系統\OS5\dir.h
?????文件??????51400??2009-02-17?11:52??文件系統\OS5\disk.txt
?????文件???????8210??2009-02-17?11:51??文件系統\OS5\file.h
?????文件???????4412??2009-02-16?22:50??文件系統\OS5\head.h
?????文件???????2587??2009-02-17?11:51??文件系統\OS5\initial.h
?????文件????????989??2009-02-17?11:53??文件系統\OS5\main.cpp
?????文件???????4173??2009-02-16?22:49??文件系統\OS5\OS5.vcproj
?????文件???????1411??2009-02-17?11:53??文件系統\OS5\OS5.vcproj.Dark-PC.Allen.user
?????文件?????????54??2009-02-17?11:52??文件系統\OS5\user.txt
?????文件???????1623??2009-02-17?11:51??文件系統\OS5\userop.h
?????目錄??????????0??2009-05-30?12:59??文件系統\debug
?????目錄??????????0??2009-05-30?13:00??文件系統\OS5
?????目錄??????????0??2009-05-30?13:00??文件系統
-----------?---------??----------?-----??----
??????????????1190039????????????????????21
- 上一篇:tiny小型編譯器代碼及實現
- 下一篇:C++編寫S-G濾波
評論
共有 條評論