模拟一个小型类UNIX文件系统.doc_第1页
模拟一个小型类UNIX文件系统.doc_第2页
模拟一个小型类UNIX文件系统.doc_第3页
模拟一个小型类UNIX文件系统.doc_第4页
模拟一个小型类UNIX文件系统.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目一:模拟一个小型类UNIX文件系统一 设计思想说明小型类UNIX文件系统是模拟UNIX中的文件系统,实现文件系统中一些基本的功能,即关于目录及文件的相关操作。首先为这个文件系统申请1M的内存空间存放文件系统的空间结构。编写的这个程序并不是通过读取文件获取信息的,故在程序结束之后先前修改过的数据并不保存。空间结构包括引导块,专用块,i节点区,文件存储区,进程对换区。由于课程设计的要求,对引导块和进程对换区不做要求,故在实现这个系统的过程中并没有对引导块和进程对换区进行设计。专用块用来存放空闲块和i节点的资源管理表;i节点区用来存放i节点,包括文件的文件名,属性,占用内存大小,物理地址等信息;文件存储区用来存放文件的具体内容。对于文件的打开,读,写,关闭等操作,程序设计了用户打开文件表和系统打开文件表以及内存活动i节点,为了更好地管理文件而设计的这两个表。用户打开文件表使用一个结构体表示,它的指针指向对应的系统打开表的各项。系统打开文件表同样使用一个结构体表示,它的指针指向内存活动i节点,共享计数等,简化以后留下内存活动i节点。内存活动i节点是真正指向文件的具体内容,从而可以实现对文件的修改。除了对文件进行的相关操作外,这个模拟系统还对目录进行了相关操作,系统使用树型目录结构,故使用一个结构体表示,有目录的名字,父节点,子节点的主码,以及一些基本信息。磁盘i节点的结构使指针指向文件的具体内容。二 相关数据结构的说明1. 描述用户的数据结构struct User /定义了一个用户,另外一个空间为新注册的用户使用char username15;/用户名char passwd15;/用户密码;struct User user2;2. 描述目录的数据结构struct catalogue/存储目录的结构体char cataname15;/目录名int fathernum;/该目录的父节点int maxnum;/该目录最多可以拥有的子节点的个数int nextN;/分别指向子节点;struct catalogue CatalogueM;3. 描述文件目录索引项的数据结构struct direntry/文件的目录索引项char filename20;/文件名struct direntry *before,*after;/它的前向指针和后向指针struct inode *filepointer;/指向i节点的指针char mode;/该文件所处的状态;struct direntry *d_head;struct direntry *d_curr;4. 描述i节点的数据结构struct inode/i节点定义struct inode *before,*after;/前向指针和后向指针int blocknum5;/存放文件的物理地址,该文件最大为5KBint uid;/创建该文件的用户主码int catnum;/文件所处目录的编码int sizenum;/文件所占内存块的大小int location;/文件所处位置;struct inode *i_head;struct inode *i_curr;5. 描述系统打开表的数据结构struct listos/系统打开表 struct direntry *list_os;/指向文件的目录项struct listos *after,*before;/前向指针和后向指针;struct listos *lo_head;struct listos *lo_curr;6. 描述用户打开表的数据结构struct listfile/文件打开表struct listfile *before,*after;/前向指针和后向指针struct listos *list_file;/指向系统打开表项;struct listfile *lf_head;struct listfile *lf_curr;7. 描述内存活动i节点的数据结构struct memory/内存活动i节点struct inode *mem;/指向文件目录项struct memory *after;/后向指针;struct memory *memhead;8. 关于一些全局变量的定义#define N 10/每个目录最多拥有N个子目录#define M 30/最多可拥有M个目录int I; /记录当前目录指针的位置int Inum; /记录当前已经拥有的目录数目int ID=0;/用户编号char choose15;/暂时存放操作指令int bitmap1024;/存放位示图char content10000;/暂时存放即将要写入文件的内容int FREENUM;/存放位示图为0的块号的开始char INODE10241024;/1M空间存放内容三 各模块的算法流程图说明1. 用户登录模块的算法流程图开始选择L/R登录L/l其它进入到操作模块输入用户名新密码和确认密码新密码和确认密码相等是否2. 操作模块的算法流程图开始cd更改当前目录mkdir创建子目录dir列出目录下的文件open打开文件read读文件写文件write删除文件delete关闭文件close退出系统logout3. 更改当前目录的算法流程图开始cd输入想找的目录在目录链表中是更改当前目录,修改全局变量否返回到操作模块去4. 创建子目录的算法流程图开始mkdir输入想创建的目录名在目录链表中有重名是更改当前目录,修改全局变量,将新的目录建立在原来的目录下的否返回到操作模块去5. 列出目录中文件的相关信息的算法流程图开始dir输入想找的目录在目录链表中是显示目录下的文件的信息,修改目录的全局变量否返回到操作模块去6. 创建文件的算法流程图开始create输入要创建的文件名在文件目录索引链表中是将新的文件存放在文件目录索引表中,并设置相关信息否返回到操作模块去7. 打开文件的算法流程图开始open输入要打开的文件名是该文件已经打开,不必再次打开否在文件目录索引表中是将该文件插入到系统打开文件表中否想要操作的文件不存在在系统打开文件链表中&当前用户创立8. 写文件的算法流程图开始write输入要进行写操作的文件名在系统打开文件链表中&当前用户创立是对该文件进行写操作,并设置相关信息否命令无效,返回到操作模块去9. 读文件的算法流程图开始read输入要进行读操作的文件名在系统打开文件链表中&当前用户创立是对该文件的内容输出以方便用户进行阅览否命令无效,返回到操作模块去10. 关闭文件的算法流程图命令无效,返回到操作模块去在系统打开文件链表中&当前用户创立是将文件的节点从系统打开文件表中删除否开始close输入要关闭的文件名11. 删除文件的算法流程图 开始delete输入要进行删除操作的文件名不在系统打开文件链表中&当前用户创立是否命令无效,返回到操作模块去在文件目录索引链表中是删除关于该节点的目录索引节点和i节点等相关信息否该文件并不存在,命令无效四 程序清单详见程序五 使用说明书在运行程序之后,进入到模拟UNIX系统中,首先出现的提示是:用户登录还是要注册:L/l表示用户要登录,初始化的用户名:user1,密码:123;R/r表示要进行注册,在注册时要注意,输入的新密码和确认密码必须一致,否则程序将不进行这样的注册,在注册之后,程序自动为该用户登录。但是在程序运行结束之后,注册的信息会被注销。下次需要重新注册,注册的信息将不被保存。这样登录和注册这部分的功能就实现了。在正确登录之后,可以输入任意的命令进行想要的操作。mkdir:创建新的子目录。在输入这个命令之后,按Enter键,根据提示输入新目录的名称,形如“roothome”,目录和目录之间使用间隔。一般情况下,以输入无重复的目录名为优先;如果要在不同的目录下建立同样名称的子目录,也是可以的。在默认的情况下,是在当前目录下创建子目录,或者用户可以根据自己的需要,先更改当前目录,在进行子目录的的创建。dir:显示当前目录下文件的相关信息,包括文件的名称,文件的物理地址以及文件的长度。在输入这个命令之后,按Enter键,程序就将上述信息显示到屏幕上。cd:修改当前目录。输入这个命令之后,按Enter键,根据用户要修改的目录,输入修改后的目录,形如“roothome”,目录和目录之间使用间隔。如果出现不同目录下的同名的子目录,如果用户没有指明,程序按照最先搜索到的目录对其进行确定,或者用户可以将父目录一同键入,以确定目录为用户需要的。create:创建新的文件。输入这个命令之后,键入Enter键,再输入新的文件名。默认的情况下,将这个文件建立在当前目录下,如果要在其它的目录下创建,必须先通过cd命令修改当前目录,再建立新的文件,这样才能实现用户的需要。open:打开文件命令。输入这个命令之后,键入Enter键,再输入文件名。如果该文件在文件目录索引表中不存在,则显示文件不存在。如果在表中,且进行操作的用户的主码与建立该文件的用户的主码相同,则将该文件插入到系统打开文件表中。且显示操作成功。如果已经存在于系统打开表中,则显示已经存在于该表中。write:写文件命令。输入这个命令之后,键入Enter键,再输入文件名。观察之后的提示,如果提示该文件不在系统打开文件表中,则不能进行该项操作。如果在该表中,且用户主码符合要求,则提示请输入内容。该程序的write命令只能将文件的内容进行重置。read:读文件命令。输入这个命令之后,键入Enter键,再输入文件名。观察之后的提示,如果提示该文件不在系统打开文件表中,则不能进行该项操作。如果在该表中,且用户主码符合要求,则输出该文件的内容。close:关闭文件命令。输入这个命令之后,键入Enter键,再输入文件名。观察之后的提示,如果提示该文件不在系统打开文件表中,则不能进行该项操作。如果在该表中,且用户主码符合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论