操作系统原理。
课程设计报告。
题目: 采用二级目录实现文件管理
所在学院。班级。
学号。姓名。
指导教师。2023年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 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 lengt**件内容长度。
int maxlengt**件的最大长度。
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;
1. 主函数流程图。
图5 主函数流程图。
2. 创建文件函数流程图。
图6 创建文件函数流程图。
具体函数实现过程如下:
int editcomd()
//char tmp;
struct filenode * temp=createfilenode(""0,0);
int sign;
struct filenode *tp;
//路径不能为空。
if(strlen(para2)==0)
//长度检查。
if(strlen(para2)>50)
//格式检查。
if (!isalpha(para2[0])|para2[0]==para2[0]==0'||para2[0]==
//获取文件名。
sign=findfilename(para2);
if(sign==0)
return 0;
if(cp->isdir!=1)//如当前指针指向的是文件,则报错。
//创建文件结点,并插入到指定目录下。
tp=createfilenode(""1,0);
strcpy(tp->filename,filename);
tp->isdir=0;
tp->i_nlink=0;
if(cp->child==null)
else}//找到了最后一个结点。
temp->sibling_next=tp;
tp->parent=null;
tp->child=null;
操作系统课程设计报告 1
操作系统原理课程设计。院系。班级学号。姓名。同组成员。指导教师。2014 年 1 月 13 日。操作系统原理课程设计任务书。一 题目 银行家算法。二 设计要求。1 组长 负责设计与实现,定义全局变量,签名函数和主函数以及显示分配情况函数showdata 负责设计与实现系统初始化函数chushihua...
操作系统课程设计2 1
目录。1 设计目的 1 2 设计内容 1 3 设计步骤 1 3.1 开发平台 1 3.1.1 开发环境介绍 1 3.1.2 开发界面截图 2 3.2 详细设计 2 3.2.1 算法说明 2 3.2.2 系统流程图 4 3.3 运行与测试 4 3.3.1 运行测试 4 3.3.2 异常处理测试 7 3...
操作系统课程设计 范例1
黄冈师范学院。课程设计报告。课程名称 计算机操作系统。设计题目 linux的消息函数的分析。院系 计算机科学与技术学院 专业软件工程。班级0701 姓名 张旺,李浩,范兴一。日期 2009年10月11日。指导教师张瑞红。成绩。目录。第一章课程设计简介 1 1.本课程设计题目 1 2.本课程设计要求及...