資源簡介
操作系統課程設計,一個模擬的文件系統的實現,可以讀文件,寫文件,創建文件,刪除文件等,設計了inode節點。
代碼片段和文件信息
#include
#include
#include
using?namespace?std;
#define?ERROR?-1
typedef?struct
{
int s_isize; /*?外存Inode區占用的盤塊數?*/
int s_fsize; /*?盤塊總數?*/
int s_nfree; /*?直接管理的空閑盤塊數量?*/
int s_free[100]; /*?直接管理的空閑盤塊索引表?*/
int s_ninode; /*?直接管理的空閑外存Inode數量?*/
int s_inode[100]; /*?直接管理的空閑外存Inode索引表?*/
int s_fmod; /*?內存中super?block副本被修改標志,意味著需要更新外存對應的Super?Block?*/
int padding[47]; /*?填充使SuperBlock塊大小等于1024字節,占據2個扇區?*/
}filsys; /*管理塊(超級塊)的數據結構?*/
typedef?struct
{
unsigned?int?d_mode;?/*狀態標志位*/
int?d_nlink;?????????/*該文件在目錄中不同文件名的數量*/
short?d_uid;?????????/*文件所有者的用戶標識數*/
int?d_size;??????????/*文件大小,單位為字節*/
int?d_addr[10]; ?/*文件邏輯塊號和物理塊號轉換的基本索引表*/
}DiskInode; /*外村Inode節點的數據結構*/
typedef?struct
{
static?const?int?DIRSIZ?=?28; /*目錄項中路徑部分的最大字符串長度*/
int?m_ino; /*目錄項中Inode編號*/
char?m_name[DIRSIZ]; /*目錄項中的路徑名*/
}DirectoryEntry; /*目錄項的數據結構*/
typedef?struct
{
char?m_name[8]; /*用戶名*/
char?pathword[24]; /*密碼*/
}usrinformation; /*用戶信息的數據結構*/
typedef?struct
{
unsigned?int?i_mode; /*狀態標志位*/
int?i_nlink; /*該文件在目錄中不同文件名的數量*/
short?i_uid; /*文件所有者的用戶標識數*/
int?i_size; /*文件大小,單位為字節*/
int?i_addr[10]; /*文件邏輯塊號和物理塊號轉換的基本索引表*/
int?i_time; /*該內存i節點多長時間沒有使用*/
char?name[50]; /*上次使用該i節點的文件名*/
int?i_number; /*外存Inode區中的編號*/
}Inode; /*內存Inode的數據結構*/
typedef?struct
{
unsigned??int?f_flag; /*對打開文件的讀寫操作要求*/
Inode?*f_inode; /*指向打開文件的內存Inode指針*/
int?f_offset; /*文件讀寫位置指針*/
}Mfile; /*file的數據結構*/
Inode?nInode[6];
Mfile?mfile;
int?initialize();
void?ls(char?*path);
int?pathinode(char?*path);
int?MyCreat(char?*filenameint?mode);
int?MyOpen(char?*filenameint?mode);
int?MyClose(Mfile?*mfp);
void?MySeek(int?position);
int?MyRead(Mfile?*mfpchar?*bufint?length);
int?MyWrite(Mfile?*mfpchar?*bufint?length);
int?MyDelete(char?*filename);
int?login(char?*namechar?*pathword);
int?Cnewusr(char?*namechar?*pathword);
int?Cnewusrfile(char?*name);
int?main()
{
for(int?i?=?0;i?6;i++)
{
nInode[i].i_time?=?0;
strcpy(nInode[i].name“-1“);
}
initialize();
hin:
int?j?=?0;
while(j?==?0)
{
char?usrname[8]?=?{“/“};
char?pathword[28]?=?{“/“};
cout?<“***************************\n“
?<“ 0.登錄用戶\n“
?<“ 1.創建用戶\n“
?<“ 2.退出\n“
?<“***************************“
?< cin?>>?j;
if(j?==?2)
{
goto?abc;
}
cout?<“用戶名:“;
cin?>>?usrname;
cout?<“密碼:“;
cin?>>?pathword;
if(j?==?1)
{
j?=?Cnewusr(usrnamepathword);
Cnewusrfile(usrname);
}
else?if(j?==?0)
{
j?=?login(usrnamepathword);
}
}
int?i?=?0;
cout?<“*********************************\n“
?<“ 0.initialize\n“
?<“ 1.ls\n“
?<“ 2.creat\n“
?<“ 3.open\n“
?<“ 4.close\n“
?<“ 5.seek\n“
?<“ 6.read\n“
?<“ 7.write\n“
?<“ 8.delete\n“
?<“ 9.logout\n“
?<“*********************************“?<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????215040??2015-07-16?19:57??操作系統.doc
?????文件??????51200??2015-07-16?19:57??文件管理\Debug\MyDisk.img
?????文件??????78848??2015-07-16?19:57??文件管理\Debug\文件管理.exe
?????文件?????484636??2015-07-16?19:57??文件管理\Debug\文件管理.ilk
?????文件?????732160??2015-07-16?19:57??文件管理\Debug\文件管理.pdb
?????文件???44564480??2015-07-16?20:00??文件管理\ipch\文件管理-c3e4548e\文件管理-ff7a22b0.ipch
?????文件???????1214??2015-07-16?19:57??文件管理\文件管理\Debug\cl.command.1.tlog
?????文件??????31770??2015-07-16?19:57??文件管理\文件管理\Debug\CL.read.1.tlog
?????文件????????730??2015-07-16?19:57??文件管理\文件管理\Debug\CL.write.1.tlog
?????文件???????2430??2015-07-16?19:57??文件管理\文件管理\Debug\li
?????文件???????5086??2015-07-16?19:57??文件管理\文件管理\Debug\li
?????文件???????1274??2015-07-16?19:57??文件管理\文件管理\Debug\li
?????文件????????918??2015-07-16?19:57??文件管理\文件管理\Debug\mt.command.1.tlog
?????文件???????1514??2015-07-16?19:57??文件管理\文件管理\Debug\mt.read.1.tlog
?????文件????????570??2015-07-16?19:57??文件管理\文件管理\Debug\mt.write.1.tlog
?????文件?????822272??2015-07-16?19:57??文件管理\文件管理\Debug\vc100.idb
?????文件?????299008??2015-07-16?19:57??文件管理\文件管理\Debug\vc100.pdb
?????文件????????381??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.exe.intermediate.manifest
?????文件?????????62??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.lastbuildstate
?????文件??????18333??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.log
?????文件?????150045??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.obj
?????文件????????713??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.vcxprojResolveAssemblyReference.cache
?????文件??????????0??2015-07-16?19:57??文件管理\文件管理\Debug\文件管理.write.1.tlog
?????文件??????51200??2015-07-16?19:57??文件管理\文件管理\MyDisk.img
?????文件??????25198??2015-07-16?19:57??文件管理\文件管理\文件管理.cpp
?????文件???????3230??2015-07-16?19:57??文件管理\文件管理\文件管理.vcxproj
?????文件????????950??2015-07-16?19:57??文件管理\文件管理\文件管理.vcxproj.filters
?????文件????????143??2015-07-16?19:57??文件管理\文件管理\文件管理.vcxproj.user
?????文件???27611136??2015-07-16?20:00??文件管理\文件管理.sdf
?????文件????????903??2015-07-16?19:57??文件管理\文件管理.sln
............此處省略9個文件信息
- 上一篇:Unity 紅藍 3D 插件
- 下一篇:飛思卡爾官方例程
評論
共有 條評論