文档详情

实验四 文件系统实验讲解.doc

发布:2017-03-12约3.92万字共44页下载文档
文本预览下载声明
实验四 文件系统实验 一 . ? 目的要求 ? 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二 . ? 例题: 设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作 4、算法与框图:? 因系统小,文件目录的检索使用了简单的线性搜索。 文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 程序中使用的主要设计结构如下: ? 主文件目录和用户文件目录( MFD、UFD) ? 打开文件目录( AFD)(即运行文件目录) M D F U F D A F D 用户名文件名打开文件名文件目录指针保护码打开保护码用户名文件长度读写指针文件目录指针文件名· · 文件系统算法的流程图如下:三 . ? 实验题:? 增加 2~3个文件操作命令,并加以实现。(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。#includeiostream #includestring #includeconio.h using namespace std; struct TYPE_UFD { string File_Name; bool Read; bool Write; bool Execute; int Length_File; }; struct TYPE_MFD { string User_Name; TYPE_UFD *Pointer; }; struct TYPE_AFD { int File_ID; bool Read; bool Write; bool Execute; int Pointer; }; class TYPE_FILE_SYSTEM { public: void Initial( void ); void Start( void ); private: int _Number_Users; int _Number_Files; int _MaxNumber_Open_Files; TYPE_MFD *_MFD; TYPE_UFD *_UFD; TYPE_AFD *_AFD; }; void TYPE_FILE_SYSTEM::Initial( void ) { _Number_Users = 10; _Number_Files = 10; _MaxNumber_Open_Files = 5; _UFD = new TYPE_UFD [_Number_Users*_Number_Files]; _MFD = new TYPE_MFD [_Number_Users]; int i=0; for( i=0 ; i_Number_Users ; i++ ) { _MFD[i].Pointer = (_UFD[i*_Number_Files]); } _AFD = new TYPE_AFD [_MaxNumber_Open_Files]; _MFD[0].User_Name = zaq; _UFD[0].File_Name = file1.txt; _UFD[0].Length_File = 10; _UFD[0].Read = true; _UFD[0].Write = false; _UFD[0].Execute = true; _UFD[1].File_Name = file2.txt; _UFD[1].Length_File = 20; _UFD[1].Read = true; _UFD[1].Write = false; _UFD[1].Execute = false; for( i=2 ; i_Number_Files ; i++ ) {
显示全部
相似文档