- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 文件系统实验
一 . ? 目的要求 ?
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
要求设计一个 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++ )
{
文档评论(0)