操作系统课程设计1要点

发布 2022-10-05 13:03:28 阅读 4217

操作系统原理。

课程设计报告。

题目: 采用二级目录实现文件管理

所在学院。班级。

学号。姓名。

指导教师。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.本课程设计要求及...