操作系统课程设计1

  • 格式:doc
  • 大小:704.50 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统原理

课程设计报告题目:采用二级目录实现文件管理

所在学院:

班级:

学号:

姓名:

指导教师:

2013年1月15日

目录

一、课程设计目的 (1)

二、课题内容 (1)

三、总体路线 (1)

四、概要设计 (2)

1.数据结构 (2)

2.所使用函数及其功能 (3)

五、详细设计 (4)

1.主函数流程图 (4)

2.创建文件函数流程图 (5)

3.删除文件函数流程图 (7)

4.分解命令函数流程图 (10)

六、测试、修改及运行结果 (10)

七、结束语 (13)

八、参考文献 (14)

一、课程设计目的

文件系统是现代OS用来存储和管理信息机构,具有按名存取的功能,不仅能方便用户对信息的使用,也有效提高了信息的安全性。本课题模拟文件系统的目录结构,并在此基础上实现文件的各种操作方法。

通过本课题,深入理解文件文件目录的作用和功能,掌握文件打开结构,熟悉与文件有关的系统调用,从而更好地掌握文件系统概念。

二、课题内容

1.文件目录采用二级目录结构,第一级为主文件目录master_file_directory;第二级为用户文件目录user_file_directory。

图1 master_file_directory 结构

图2 user_file_directory 结构

2.为加速文件存取,为每个用户建立一张用户打开表fileTable,用以记录该

3.为该系统提供6条操作命令:创建、打开、读、写、关闭、删除等。

4.在该模拟系统中,应先建立主文件目录、用户目录和用户打开文件表,然后接受合法用户,给出一个菜单,按用户选择执行相关操作。

三、总体路线

1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简单的单用户文件系统。在退出这个简单的文件系统时,应将该虚拟文件系统保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。

2.文件存储空间的分配采用显式链接分配。为了实现创建和删除文件必

须要有一棵初始的文件树存在,以便在文件树的根节点下实现创建和删除文件。 3.文件目录结构采用二级目录结构。为了简单起见,可以使用文件结构体,结构体内容包括:文件名,文件目录识别标示,文件链接数,以及他的左孩子右孩子左兄弟右兄弟指

4.要有分解函数对输入的命令进行分解。以识别那部分是哪部分是命令,哪部分是路径和文件名。

5.最后要有执行函数。来执行输入的创建文件命令。

四、概要设计

1.数据结构

(1)函数中的主要结构体

//两级目录结构体

typedef struct master_file_directory //主文件目录MFD

{

char userName[10];

char password[10];

UFD *user;

}MFD;

MFD userTable[MaxUser];

int used=0; //定义MFD目录中用已有的用户数typedef struct user_file_directory //用户文件目录文件UFD

{

//char fileName[10];

fileTable *file;

user_file_directory *next;

}UFD;

//UFD *headFile;

typedef struct fileTable //文件块结构体

{

char fileName[10];

int strat; //文件在磁盘存储空间的起始地址

int length; //文件内容长度

int maxlength; //文件的最大长度

char fileKind[3]; //文件的属性——读写方式

struct tm *timeinfo;

bool openFlag; //判断是否有进程打开了该文件

//fileTable *next;

};

(2)结构体相互之间的调用关系图:

图4 结构体关系图

2.模块结构

(1)所用函数及其功能:

void Init();//初始化文件树

int ParseCommand();//接受输入的命令并把其分解成操作名和路径文件名

void ExecuteCommand();//执行命令,分别执行edit,del,dir,exit命令

int editComd();//处理edit命令,即创建文件,只要创建表示文件的节点即可,内容及大小不考虑

int delComd();//处理del命令,即删除指定文件,不存在是给出错误信息

int dirComd();//处理dir命令。问了能显示的看出创建文件和删除文件是否成功,把根目录的文件都显示出来

int FindFilename(char Para2[]);//查找文件名

struct FileNode* CreateFileNode(char filename[],int isdir,int i_nlink);//创建结点

int GetInput(char* buffer,unsigned int buffer_len);//获取输入

(2)所使用变量

struct FileNode *cp, *tp, *root;// *cp, *tp, *root是根目录节点

char path[INPUT_LEN-COMMAND_LEN];//记录当前走过的路径

char Para1[COMMAND_LEN],Para2[INPUT_LEN-COMMAND_LEN];//para1数组存储输入的命令,para2数组存储输入的文件名

char filename[FILENAME_LEN],tmp;

unsigned int i,j;