模拟实现单级目录的FAT文件系统

模拟实现单级目录的FAT文件系统
模拟实现单级目录的FAT文件系统

计算机《操作系统课程设计》任务书

模拟实现单级目录、单级索引的索引文件系统

一、课程设计的性质和目的

操作系统课程设计是计算机专业的专业课程,通过课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握操作系统的基本设计方法和技巧,进一步提高分析问题、解决问题及上机操作能力,为将来从事计算机工作打下一定的专业基础。

二、设计课题

模拟实现单级目录的FAT文件系统

基本思路:用二进制文件空间模拟磁盘空间,用文件块操作模拟磁盘块操作。

基本设计要求:1、实现如下文件系统功能(过程或函数):

a、打开文件系统 FILE *OPENSYS(char *filename);

b、关闭文件系统 int CLOSESYS(FILE *stream);

c、显示目录 void LISTDIR(void);

d、建立文件 int FCREATE(char *filename);

e、删除文件 int FDELETE(char *filename);

f、打开文件 int FOPEN(char *filename);

g、关闭文件 int FCLOSE(int fileid);

h、文件块读 int FREAD(void *ptr, int n, int fileid);

i、文件块写 int FWRITE(void *ptr, int n, int fileid);

j、判断文件结束 int FEOF(int fileid);

k、获取文件指针 long FGETPOS(int fileid);

l、设置文件指针 int FSETPOS(int fileid, long offset);

m、取得文件长度 long FGETLEN(char *filename);

2、提供文件系统创建程序

3、有功能检测模块

4、为简化程序设计,假定目录区域大小固定。

文件系统空间划分:

可以使用的C语言文件操纵函数:

FILE *fopen(const char *filename, const char *mode);

int fclose(FILE *stream);

int fseek(FILE *stream, long offset, int whence);

long ftell(FILE *stream);

size_t fread(void *ptr, size_t size, size_t n, FILE *stream);

size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);

目录

一、程序的功能 (3)

二、程序的基本设计思路 (3)

三、主要的数据结构 (4)

4.1创建文件流程图 (6)

4.3 FREAD函数流程图 (8)

五、程序调试及其运行结果 (9)

六、设计总结与心得体会 (11)

七、附录(源程序清单) (12)

一、程序的功能

该程序主要模拟实现单级目录的FAT文件系统,该系统要求能实现对文件的创建、删除、读、写、打开、关闭以及能显示目录等操作,在创建文件时,系统首先为新文件分配所需的外存空间,并且在文件系统的相应目录中,建立一个目录项,该目录项记录了新文件的文件名及其在外存中的地址等属性。而当已经不再需要某个文件时,便可以把它从文件系统中删除。这时执行的是与创建新文件相反的操作。系统先从目录中找到要删除的文件项,使之成为空项,紧接着回收该文件的存储空间,用于下次分配。通过读指针,将位于外部存储介质上的数据读入到内存缓冲区这样就实现了文件的读取,通过写指针,将内存缓冲区中的数据写入到位于外部存储介质上的文件中。在开始使用文件时,首先必须打开文件。这可以将文件属性信息装入内存,以便以后快速查用。在完成文件使用后,应该关闭文件。这不但是为了释放内存空间,而且也因为许多系统常常限制可以同时打开的文件数。当创建文件时,先在目录表中查找是否存在此文件表,若存在则表示文件同名不能创建,否则在目录表中为此文件先建立一个目录项,保存文件的一些基本属性,如创建日期、大小、文件名等,并保存文件的首索引块扇区号,对文件读写也是先在目录项里查找文件是否存在,再根据文件的首索引块扇区号,查找对应块号中的内容对其进行读写操作,删除一个文件后回收为其分配的空间,并更新目录表、修改文件控制块。显示目录项可以显示文件名、长度以及创建日期。

二、程序的基本设计思路

模拟实现单极目录FAT的文件系统基本思路:用二进制文件空间模拟磁盘空间,用文件块操作模拟磁盘块操作。在一个文件系统中对文件进行操作,实现文件的创建、读写等等操作。在创建文件时先在目录项中进行查找,若创建的文件已存在,文件的创建首先检验目录是否为空,为空则把文件夹或文件连接到该目录下,不为空则把检查目录下是否有同名文件夹或文件,有则提示创建不成功,而文件夹打开是则把文件夹名称及其地址压入打开文件夹栈,文件关闭则把文件夹名称及其地址从打开文件夹栈中抛出。文件夹和文件的删除,文件夹下没有打开的文件或文件没有打开才能删除,否则删除失败,每次操作成功都要更改目录和FCB信息。该过程都保存在文件中,是对文件的操作。本系统建于Windows平台,开发环境为WIN-TC。

三、主要的数据结构

单级目录单级索引文件系统:

常量

#define BlockSize 512

#define DirSize 32

保留扇区结构

struct ReserveBlock{

int sysblocknum; /*文件系统总扇区数*/

int resblocknum; /*保留扇区扇区数*/

int mapblocknum; /*字节映像图扇区数*/

int rootblocknum; /*根目录区扇区数*/

char fillchar[BlockSize-4*sizeof(int)]; /*填充字节*/

};

目录结构

struct DirBlock{

char filename[11]; /*文件名限长11个字符*/

char fillchar[DirSize-4*sizeof(int)-sizeof(long int)-11]; /*填充字节*/ long filelen; /*文件长度*/

int year,month,day; /*定义年月日*/

int firstindexaddr; /*文件首索引块扇区号*/

};

索引块结构

struct IndexBlock{

int dataaddr[BlockSize/sizeof(int)-1]; /*数据块块号数组*/

int nextindexaddr; /*本文件下一索引块块号*/

};

索引节点结构

struct IndexNode{

struct IndexBlock block; /*索引块数据*/

int blockaddr; /*本节点索引块块号*/

struct IndexNode *nextnode; /*指向下一索引节点的指针*/};

FCB(文件控制块)结构

struct FCBBlock{

int fileid; /*文件标识*/

struct DirBlock fileinfo; /*目录信息*/

long filepos; /*文件读写指针*/

int fdtblockaddr; /*目录项所在块号*/

int fdtblockindex; /*目录项所在块内序号*/

struct FCBBlock *next; /*指向下一个文件控制块的指针*/

struct IndexNode *firstindexnode; /*指向第一个索引节点的指针* /}

四、相关流程图

4.1创建文件流程图

(完整版)操作系统毕业课程设计说明书-基于Linux的模拟文件系统的设计与实现

中北大学 操作系统课程设计 说明书 学院、系:软件学院 专业:软件工程 学生姓名:徐春花学号: 设计题目:基于Linux的模拟文件系统的设计与实现 起迄日 期: 2014年6月14日- 2014年6月26日指导教薛海丽

师: 2014 年 6月 26 日 前言 简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS2

等商品化操作系统来说是无法做到的。 Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。其中有对读、 写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。在相关软 件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器 使用,利用IPCHAINSIPTABLE网络治理工具可构建NAT及功能全面的防火墙。 Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系 统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑 器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形 用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系 统进行操作。 目录 1需求分析 (3) 1.1 功能介绍 (3) 1.2 目的及意义 (5) 1.2.1 目的 (5) 1.2.2 意义 (6) 1.3 设计成果 (7) 2总体设计 (8) 2.1功能介绍 (8) 2.2模块关联 (9) 3详细设计 (12)

操作系统课程设计文件系统管理)

操作系统课程设计Array文件系统管理 学院计算机学院 专业计算机科学与技术 班级 姓名 学号 2013年1月8日 广东工业大学计算机学院制 文件系统管理 一、实验目的 模拟文件系统的实现的基本功能,了解文件系统的基本结构和文件系统的管理方法看,加深了解文件系统的内部功能的实现。通过高级语言编写和实现一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作系统命令的实质内容和执行过程有比较深入的了解。 二、实验内容和要求 编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。在用户程序中通过使用文件系统提供的create,open,read,write,close,delete等文件命令,对文件进行操作。 以下报告主要包括: 1.可行性分析 2.需求分析 3.概要设计

4.详细设计 5.测试 6.总结 三、可行性分析 1、技术可行性 对于图形编程还不了解,但是经过本学期的三次实验的练习,可以设计好命令操作界面。利用大二期间学习的数据结构可以模拟出此课程设计的要求。 2、经济可行性 课程设计作为本课程的练习及进一步加深理解。与经济无关,可以不考虑。(零花费,零收益) 3.法律可行性 自己编写的程序,仅为练习,不作其他用途,与外界没什么联系,可行。 四、需求分析 编写程序实现文件系统,主要有以下几点要求: 1、实现无穷级目录管理及文件管理基本操作 2、实现共享“别名” 3、加快了文件检索 五、概要设计 为了克服单级目录所存在的缺点,可以为每一位用户建立一个单独的用户文件目录UFD(User File Directory)。这些文件目录可以具有相似的结构,它由用户所有文件的文件控制块组成。此外,在系统中再建立一个主文件目录MFD (Master File Directory);在主文件目录中,每个用户目录文件都占有一个目

操作系统课程设计-模拟文件系统

目录 第1章需求分析 (1) 第2章概要设计 (1) 系统的主要功能 (1) 系统模块功能结构 (1) 运行环境要求 (2) 数据结构设计 (2) 第3章详细设计 (3) 模块设计 (3) 算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 运行结果及分析 (4) 系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 系统模块功能结构

运行环境要求 操作系统windows xp ,开发工具vc++ 数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。 users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4",

操作系统简单文件系统设计及实现

简单文件系统的设计及实现 一、实验目的: 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、实验内容: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作 4、算法与框图 ?因系统小,文件目录的检索使用了简单的线性搜索。 ?文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ?程序中使用的主要设计结构如下:主文件目录和用户文件目录( MFD、UFD); 打开文件目录( AFD)(即运行文件目录) 文件系统算法的流程图如下

三、工具/准备工作: 在开始本实验之前,请回顾教科书的相关内容。并做以下准备: 1) 一台运行Windows 2000 Professional或Windows 2000 Server的操作系统的计算机。 2) 计算机中需安装Visual C++ 6.0专业版或企业版 四、实验要求: (1)按照学校关于实验报告格式的要求,编写实验报告(含流程图); (2)实验时按两人一组进行分组,将本组认为效果较好的程序提交检查。

操作系统课程设计模拟文件系统

操作系统课程设计模拟文 件系统 Newly compiled on November 23, 2020

目录第1章需求分析 (1) 第2章概要设计 (1) 系统的主要功能 (1) 系统模块功能结构 (1) 运行环境要求 (2) 数据结构设计 (2) 第3章详细设计 (3) 模块设计 (3) 算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 运行结果及分析 (4) 系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7) 第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。

模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 系统模块功能结构 运行环境要求 操作系统windows xp ,开发工具vc++ 数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统文件管理系统模拟实验

文件管理系统模拟 1.实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现 2.实验内容 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条) login 用户登录 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 3.实验提示 (1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 (2)用户创建的文件,可以编号存储于磁盘上。入file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 4.源代码 #include #include #include #define MEM_D_SIZE 1024*1024 //总磁盘空间为1M #define DISKSIZE 1024 //磁盘块的大小1K #define DISK_NUM 1024 //磁盘块数目1K #define FATSIZE DISK_NUM*sizeof(struct fatitem) //FAT表大小 #define ROOT_DISK_NO FATSIZE/DISKSIZE+1 //根目录起始盘块号 #define ROOT_DISK_SIZE sizeof(struct direct) //根

操作系统模拟unix文件系统实验报告

操作系统大型实验 班级:学号:姓名: 一实验介绍…………………………………………………………………… 1.实验名称 2.实验目的 3.实验内容及要求 二实验环境…………………………………………………………………… 三实验设计…………………………………………………………………… 1.数据结构设计 2.系统流程设计 3.实现命令操作 四模块详解…………………………………………………………………… 1 .文件操作 2 .用户操作 五实验演示…………………………………………………………………… 1 .初始化磁盘块 2 .用户登录 3 .目录操作 4 .文件操作 六源代码……………………………………………………………………… 七实验心得体会…………………………………………………………………… 1.调试中遇到的问题总结 2.实验感悟

一、实验介绍 1.实验名称 操作系统大型实验 2.实验目的 完成一个 UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。 3.实验内容及要求 (1)文件卷结构设计 0#块可省略 I节点栈及空间为20项 块大小为512字节 卷盘块数大于100 I节点盘块数大于10块 (2)I节点结构设计 文件大小 文件联接计数 文件地址 文件拥有者 文件所属组 文件权限及类别 文件最后修改时间 其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址 (3)目录结构 用16字节表示,其中14字节为文件名,2字节为I节点号 (4)用户及组结构 用户信息中包括用户名、口令,所属组,用户打开文件表 (5)文件树结构 除(4)要求外,适当考虑UNIX本身文件树结构 (6)实现功能 Ls 显示文件目录 Chmod 改变文件权限 Chown 改变文件拥有者 Chgrp 改变文件所属组 Pwd 显示当前目录 Cd 改变当前目录 Mkdir 创建子目录 Rmdir 删除子目录 Mv 改变文件名 Cp 文件拷贝 Rm 文件删除 Ln 建立文件联接 Cat 连接显示文件内容 Vi 文件写入 Mk 创建文件

操作系统课程设计简单文件系统的实现(20200814000450)

操作系统课程设计报告 小组编号:小组成员: 一、课程设计概述: 1、题目:简单文件系统的实现 2、实现内容 (1)在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。在退出该文件系统的使用时,应将该虚拟文件系统以一个Windows 文件的方式保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。 (2)文件存储空间的分配可采用显式链接分配或其他的办法。 (3)空闲磁盘空间的管理可选择位示图或其他的办法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,那么可以将位示图合并到FAT 中。 (4)文件目录结构采用多级目录结构。为了简单起见,可以不使用索引结点,其中的每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 (5)要求提供以下操作命令:

my_format :对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。 my_mkdir:用于仓U建子目录。 my_rmdir :用于删除子目录。 my_ls :用于显示目录中的内容。 my_cd:用于更改当前目录。 my_create :用于仓U建文件。 my_open用于打开文件。 my_close :用于关闭文件。 my_write :用于写文件。 my_read:用于读文件。 my_rm用于删除文件。 my_exitsys :用于退出文件系统。 设计思路(主要算法描述、程序流程图等): 1 .系统主函数main()

(2)命令调用格式:无 (3)函数设计格式:void main() (4)功能:系统主函数 (5)输入:无 (6)输出:无 (7)函数需完成的工作: ①对前面定义的全局变量进行初始化; ②调用startsys()进入文件系统; ③列出文件系统提供的各项功能及命令调用格式; ④显示命令行提示符,等待用户输入命令; ⑤将用户输入的命令保存到一个buf 中; ⑥对buf 中的内容进行命令解析,并调用相应的函数执行用户键入的命令; ⑦如果命令不是“ my_exitsys ”,则命令执行完毕后转④。 2. 进入文件系统函数startsys()

操作系统课程设计文件系统方案

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部) 2013 ~ 2014 学年第 1 学期课程名称计算机操作系统指导教师左新娥职称讲师 学生姓名专业班级学号 题目文件系统演示 成绩起止日期 2013 年 12 月 9 日~ 2013 年 12 月 15 日 目录清单

课程设计任务书 2013 —2014学年第 1 学期 学院(系、部)计算机与通信学院专业班级课程名称:计算机操作系统学生姓名: 设计题目:指导教师:左新娥 完成期限:自 2013 年 12 月 9 日至 2013 年 12 月 15 日共 1 周 指导教师(签字):年月日 系(教研室)主任(签字):年月日

课 程设计说明书 课程名称:计算机操作系统 设计题目:文件系统演示 专业:网络工程班级: 学生姓名: 学号: 指导教师:左新娥 2013 年 4 月日 目录

一课程设计简介 (5) 1.1 课程设计的目的 (5) 1.2 课程设计内容 (5) 二课程设计实现过程 (6) 2.1程序功能需求分析 (6) 2.2程序功能模块分析 (6) 2.2.1 format 格式化 (6) 2.2.2 install 安装 (6) 2.2.3 login 登陆 (7) 2.2.4 create 创建文本文件 (7) 2.2.5 cd –进入子目录或者上级目录 (7) 2.2.6 del 删除文件或目录 (8) 2.2.7 help 显示帮助 (8) 2.2.8 exit 退出系统 (8) 2.3程序实现过程 (8) 2.3.1 相关结构体描述 (8) 2.3.2 相关全局变量 (11) 2.3.2 主要功能函数代码 (13) 2.4程序测试截图 (20) 3设计总结 (22) 参考文献 (23)

操作系统课程设计-模拟文件系统

~ 目录 第1章需求分析 (1) 第2章概要设计 (1) 系统的主要功能 (1) 系统模块功能结构 (1) 运行环境要求 (2) 、 数据结构设计 (2) 第3章详细设计 (3) 模块设计 (3) 算法流程图 (3) 第4章系统源代

码 (4) 第5章系统测试及调试 (4) 运行结果及分析 (4) 系统测试结论 (5) 。 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7) 《 第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实

现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。^ 第2章概要设计 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 \ Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 ! 系统模块功能结构 运行环境要求 操作系统windows xp ,开发工具vc++ 数据结构设计

用户结构:账号与密码结构 typedef struct users ! { char name[8]; char pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。 users usrarray[8] = { "usr1","usr1", > "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; ' (3)数据结构说明 a)文件结构链表 struct fnode { char filename[FILENAME_LENGTH]; int isdir; int isopen; char content[255]; · fnode *parent; fnode *child; fnode *prev; fnode *next; }; b)函数介绍 fnode *initfile(char filename[],int isdir);

操作系统文件系统实验

实验四文件系统实验 一.实验题目: 文件系统实验 二.实验目的: 阅读并调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 了解设计一个n个用户的文件系统,每个用户可以保存M个文件。用户在一次运行中只能打开一个文 件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令. 三.实验设备及环境: 1. 硬件设备:PC机一台 2. 软件环境:安装Windows操作系统,C语言软件。 四.实验内容及要求: 在阅读所给文件系统源程序的基础上,画出其实现的详细流程图,并给出有关的数据结构和说明。 五. 实验方法内容 1.算法流程图

(2)void Execute(int i,int len,int cmdset)执行命令函数流程图 (3)创建文件

(4)写文件流程图 (5)修改文件执行权限 (6

2.主要的常量变量 char cmd[64]; //存放用户输入命令 char buffer[36]; char user[32];//存放当前登陆的用户名 typedef char ALFA[12]; ALFA KWORD[keynum]; struct UFD{//用户文件管理模块 char filename[32]; //文件名 int safecode; //文件保护码 long length; //文件长度 }*curfile = NULL; struct MFD{//用户登陆信息管理模块 char username[32]; //用户名 bool filepoint; //用户目录下的文件指针,false表示目录为空,true为该用户目录中有文件 }*curuser = NULL,*elseuser=NULL; typedef UFD UFD; typedef MFD MFD; 3.主要模块 void KeyWord()//初始化命令关键字 int LoginDisplay() //登陆选项操作函数 bool Login(int SELETE)//用户登陆,注册函数 void DisplayUFD()//打印用户信息,包括用户的各个文件 //名称、长度和操作权限的设置信息 void ByeFile(bool BOOL)//注销函数,调用次函数用户可以退出系统 bool ClearUserFile()//用户要将自己的注册目录从系统彻底删除 //首先将该用户目录下的全部文件删除 void ClearUserMes()//删除用户全部信息 void CreatFile()//在当前用户目录下创建文件 void DeleteFile() //删除当前目录下一个文件的操作 void ListAllFile()//显示当前用户目录下的文件信息 bool QueryModElse(bool BOOL,bool &flag)//查询其它用户目录下文件的文件 //当该文件的权限允许当前用户对其执行有关操作时,返回ture bool QueryMod(bool BOOL)//查询权限 bool WriteRight(int len,bool BOOL)//查看是否已经正确地写入到该文件信息中 void WriteLengthToFile(int Len,bool BOOL)//将文件长度写入文件管理模块中 void WriteFile()//向文件写入信息的操作 void ReadFile()//读文件函数 void ChangeMod()//修改某文件的执行权限 void Execute(int i,int len,int cmdset)//执行命令函数 void Command()//读取用户输入的命令,并将其转换成系统能识别的命令 void main() 4.代码 /***************************************************************** * 文件名: Simple_file_system.c * 功能: 简单文件管理系统模拟程序 *******************************************************************/ #include #include #include #include #include "conio.h" #include #define NULL 0 #define keynum 10 #define getspace(type) (type*)malloc(sizeof(type)) char cmd[64]; //存放用户输入命令 char buffer[36];//

操作系统课程设计模拟文件系统

操作系统课程设计模拟 文件系统 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

目录第1章需求分析 (1) 第2章概要设计 (1) 系统的主要功能 (1) 系统模块功能结构 (1) 运行环境要求 (2) 数据结构设计 (2) 第3章详细设计 (3) 模块设计 (3) 算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 运行结果及分析 (4) 系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7) 第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。

模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 系统模块功能结构 运行环境要求 操作系统windows xp ,开发工具vc++ 数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users;

操作系统课程设计-模拟文件系统

操作系统课程设计 -模拟文件系统 班级:计算机044 姓名:夏鑫 学号:2004121228

一.实验目的 用高级语言编写和调试一个简单的文件系统。模拟文件管理的工作过程。加深理解文件系统的内部功能和内部实现。 二.基本要求 在任意一个OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟UNIX文件系统。 可以实现下列几条命令 DIR 列文件目录 CREATE 创建文件 MD 创建目录 DELF 删除文件 DELD 删除目录 CD 改变当前目录 SA VEF 保存文件 SA VED 保存目录 HELP 获得命令的帮助 EXIT 退出系统 三.设计思想说明 1.设计环境 课程设计的环境是windows xp sp2操作系统。在windows系统中创建一个较大容量的文件,作为所设计文件系统的假想的“文件卷”,从而编写各程序模块。 2.开发环境 课程设计所使用的开发环境是VC++ 6.0 3.基本思想 以 1M 的存储器空间作为文件空间,空间“分块”。超级块,在最前面,共占3.2k个字节。其中0.2K个字节存放目录节点的位示图,1K个字节存放文件节点的位示图,2k字节存放盘块节点的位示图。用位状态='0'表示空闲,状态='1'表示已分配。后半部用于存放目录接点和文件接点。超级块不参与文件空间的动态分配。其他块用于存贮目录接点和文件接点的信息。 四.需求分析 该模拟文件系统包括目录文件(简称目录)、普通文件(简称文件),并实现下面一些基本功能:1.改变目录:CD 〈目录名〉,工作目录转到指定的目录下。 2.创建文件:CREATE 〈文件名〉,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。 3.删除文件:DELF 〈文件名〉,删除指定的文件。 4.显示目录:DIR [〈目录名〉],显示目录下全部文件和第一级子目录,如果没有指定路径名,则显示当前目录下的内容。 5.创建目录:MD 〈目录名〉,再指定路径下创建指定的目录,或者在没有指定路径时,在当前目录下创建子目录。 6.删除目录:DELD〈目录名〉,删除指定的目录。 7. 保存文件SA VEF 〈目录名〉保存指定文件 8. 保存目录SA VED〈文件名〉,保存指定目录 9. 获得命令帮助HELP 10. 退出文件系统EXIT 要考虑的特殊情况: 1.各个命令对全路径和相对路径的支持 <1>.目录不存在时,给出错误信息

操作系统课程设计-文件系统的模拟设计

操作系统课程设计报告题目:文件系统的模拟设计

一、设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、设计内容 (1)概述 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 (2)设计原理和系统总体功能框架图 1、在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。 2、文件物理结构可采用显式链接或其他方法。 3、磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。 4、文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。 5、对文件或目录的操作采用windows系统的API函数来实现。 6、设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:用户登录、创建目录、删除目录、创建文件、删除文件、读文件、写文件、复制文件、移动文件、返回根目录、退出。 功能结构图如图1.0所示:

(3)详细设计及少数重要编码的说明 这次课程设计中,我负责4个板块,分别是显示列表函数和目录、创建函数文件创建函数、打开文件函数和关闭文件系统函数。 ①、显示列表函数和目录 流程图如图1.1所示 ②、文件创建函数 算法:查找当前目录下是否有同名文件,是则退出,否则让用户输入文本文件内容,以‘###’结束。申请inode空间(ialloc函数),申请硬盘block空间(balloc函数),申请失败则结束。将文件内容写入inode空间和block空间。修改当前目录的结构,修改inode位图,block位图,写入模拟硬盘。详细过程如流程图1.2所示:

操作系统试验模拟文件管理系统

一、实验目的和要求(必填) 实验目的:通过在VC平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件系统对文件及目录的管理。 实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。 二、实验容(必填) 文件管理:实现一个简单的文件系统 三、实验原理或实验方法(必填) 原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实现整个文件系统中目录和文件的相关操作。 方法:学生两人结对进行实验,分别实现对文件和目录的操作。 对文件的操作包括:创建文件create、读文件read、写文件write、删除文件delete。 对目录的操作包括:创建目录mkdir、切换目录cd、展示目录容dir、删除目录rm。四、主要仪器设备或实验条件 Windows操作系统,VC开发环境 五、实验步骤(含实验数据记录处理)或操作设计过程记录 #include "stdio.h" #include "iostream.h" #include "string.h" #define FILENAME_LENGTH 10 //文件名称长度 #define COMMAND_LENGTH 10 //命令行长度 #define PATH_LENGTH 30 //参数长度

struct filenode { char filename[FILENAME_LENGTH]; int isdir; char content[255]; filenode *parent; filenode *child; filenode *prev; filenode *next; }; filenode *initnode(char filename[],int isdir); void createroot(); int run(); int findpath(char *topath); void help(); int mkdir(); int create(); int read(); int write(); int del(); int rm(); int cd(); int dir(); filenode *root,*recent,*temp,*ttemp,*temp_child; char path[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH ],recentpath[PATH_LENGTH]; //创建文件或目录的存储节点

模拟UNIX文件系统的设计及其实现操作系统大作业(含源文件)

华南理工大学 “计算机操作系统”课程设计大作业 (含答案) 一、题目: 模拟UNIX文件系统的设计及实现 多用户、多目录的文件系统的设计------用VC或Delphi编程模拟文件系统的管理 二、目的 通过OS文件子系统的设计、增强OS设计的技巧,达到提高解决实际OS的设计能力的提高。 三、内容 多用户的多级目录的文件系统设计。 四、功能要求 1. 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2. 多级目录:可有多级子目录; 3. 具有login (用户登录) 4. 系统初始化(分配内存空间,创建文件卷,初始化根目录) 5. 文件的创建:create 6. 文件的打开:open 7. 文件的读:read 8.文件的写:write 9. 文件关闭:close 10. 删除文件:delete 11. 创建目录(建立子目录):mkdir 12. 改变当前目录:cd 13. 列出文件目录:dir(包括文件属性) 14. 删除目录:rmdir 15. 退出:logout 五、实现方法 该大作业是实现一个类似unix的文件系统,只需要实现上述功能要求中所列出的功能,代码中不能调用OS系统提供的与文件操作和磁盘操作有关的系统调用。设计提示:用内存模拟磁盘操作,对文件和目录的创建、删除、读写都用对内存的操作来模拟。文件的属性信息用内存数据结构保存;所有文件内容和目录信息保存在内存中。文件属性包括:文件名,所有者,创建时间,最后访问时间,文件大小,数据区指针或I-node指针等。当程序运行结束时回收内存,信息不需要保存到磁盘,下次重新运行程序时重头开始。 六、实验要求 每人完成一份大作业实验报告。报告分设计思想、数据定义、处理流程、源程序、运行结果截图、

操作系统课程设计报告5——模拟文件系统

操作系统课程设计报告 ——模拟文件系统 1实现功能 实现了符合要求的文件系统。 实现了要求的文件系统接口。 2文件系统的实现 2.1目录项结构体dirEntry 文件系统中,使用dirEntry结构体表示一个目录项。该结构体长64字节,其中记录了该项的FAT表入口位置start,文件名name(最长50字节)和长9 字节的未用项unused(可用于扩展文件系统的功能,记录其他信息)。 系统中的目录实际上就是仅由dirEntry项构成的目录文件。 2.2文件描述符分配表项结构体filpEntry 使用filpEntry结构体来表示一个已经打开的文件。它长8个字节,记录的信息包括该文件的FAT表入口位置start,以及文件指针位置position。 fdPool数组提供了100个可用的filpEntry指针;minNotUsedFd变量储存当前最小未用的文件描述符。每当打开一个文件时,要调用get_fd函数,它为文件 分配一个描述符,增加一个filpEntry项,并调整minNotUsedFd的值。当关闭文 件时,需要调用free_fd函数,来释放一个文件描述符和对应的filpEntry。 2.3文件分配表FAT 文件系统中,需要记录文件存储的块号的数据结构。除了可以使用inode以外,还可以使用FAT。FAT在使用过程中需要将整张表读入内存,而使用inode 时,只需要将使用中的inode读入内存即可;故inode占用内存较少。但inode 数据结构复杂;尤其是当文件尺寸巨大,需要使用二级甚至三级间接表时,inode 在磁盘和内存之间的读写过程会变得相当繁琐。本项目中,选择使用方便的FAT。 当磁盘空间为250MB,块大小为1KB时,将有256000块;每块的号码需要使用一个int来表达。故FAT表需要256000项,每项4字节,共1024000字 节,即1000KB。由于超级块已经占用块0,文件分配表将占用硬盘块1~1000。 FAT的每个表项的类型都是int。正整数表项指明该文件下一个块的号码;表项为0,表示该块尚未被占用;-1表示该文件没有更多的块了。这样,对于每个 文件来说,只要知道它的第1个块的号码,就能顺藤摸瓜,访问到它的所有块。 FAT表的初始化状态,即文件系统中没有任何文件时,1~1024项全部标为-1(其他全为0),表明这些是供文件系统使用的磁盘块,普通文件不能被分配到 这些块中。 在文件系统初始化时,需要将整个FAT表载入内存,程序中的fat数组。由于表项为0表示该块未被占用,故数组的第0项不能使用;即FAT表不使用第0 块。此外,

操作系统课程设计-模拟文件系统

操作系统课程设计-模 拟文件系统 -CAL-FENGHAI.-(YICAI)-Company One1

目录 第1章需求分析 (1) 第2章概要设计 (1) 系统的主要功能 (1) 系统模块功能结构 (1) 运行环境要求 (2) 数据结构设计 (2) 第3章详细设计 (3) 模块设计 (3) 算法流程图 (3) 第4章系统源代码 (4) 第5章系统测试及调试 (4) 运行结果及分析 (4) 系统测试结论 (5) 第6章总结与体会 (6) 第7章参考文献 (6) 附录 (7)

第1章需求分析 通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力;掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,并了解操作系统的发展动向和趋势。 模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。 第2章概要设计 系统的主要功能 1) 系统运行时根据输入的用户数目创建主目录 2) 能够实现下列命令: Login 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 系统模块功能结构

运行环境要求 操作系统windows xp ,开发工具vc++ 数据结构设计 用户结构:账号与密码结构 typedef struct users { char name[8]; char pwd[10]; }users; 本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入系统,否则提示失败要求重新输入。 users usrarray[8] = { "usr1","usr1", "usr2","usr2", "usr3","usr3", "usr4","usr4", "usr5","usr5", "usr6","usr6", "usr7","usr7", "usr8","usr8", }; (3)数据结构说明 a)文件结构链表 struct fnode { char filename[FILENAME_LENGTH]; int isdir;

完整版模拟文件系统实验报告

. 操作系统大型试验实 验 报 告

姓名:XX 班级:软件工程110x 学号:201126630xxx 教育资料. . 一、名称 操作系统大型试验。 二、目的 用C++编写出一个简单的模拟文件系统,实现目录的添加、删除、重命名,文件的添加、删除、重命名、文件和目录、文件的拷贝。三、要求 开发工具:word,vc win32api 1.设计和实现一个简单的文件系统,要求包括目录、普通文件和文件的存储 2.文件系统的目录结构采用类似Linux的树状结构; 3.要求模拟的操作包括: a)目录的添加、删除、重命名; b)目录的显示(列表) c)文件的添加、删除、重命名 d)文件和目录的拷贝 4.用户进入时显示可用命令列表;用户输入help时显示所有命令的帮助文档;输入某个命令+?时显示该条命令的使用说明 5.用户输入exit时退出该系统 6.实验实现基于windows平台; 7.实验开发语言可以选用C/c++等 四、设计 1.主要思路说明 本模拟系统通过一个大小固定的数组要代表物理盘块,假设共有1024块,新增目录占一块,新

增文件占一块,文件中可输入内容,内容假设定义为5个字符占一块,超出则应新申请空间。模拟物理盘块的数组中,数组内容为-99代表改物理盘块内容为空,可使用,其他数字均代表该物理盘块被占用,其中-3代表是占用文件的末结点,其他整数代表是文件内容的下一个寻址下标,另有一个string类型的数组来存储内容,模拟文件写入了对应下标的物理盘块中。设置了一个全局指针指向根结点,一个全局指针指向当前操作目录。搜索空白物理盘块时采用顺序搜索物理盘块数组。存储形式主要采用类似二叉树结构,如目录为根,目录下的第一个文件或目录存在根的子节点,目录下的其他文件或目录存在第一个文件或目录的兄弟节点,以此类推。本程序仅seperate()函数使用现成代码,此函数功能为将输入命令串分离,仅仅起到美观作用,其余所有代码均为原创! 2.申优功能: 1)能实现动态增长,即当输入文件的内容大小大于分配的模拟物理盘块时系统能够自动寻找空物理盘块并分配,将超出的内容保存在新的物理盘块中,若超出模拟磁盘大小,则超出部分不保存且返回提示。 2)能实现级联删除,即当删除目录(文件夹)时,目录下的所有内容也应当删除并正确释放物理盘块空间。 教育资料. . 3)能实现目录的复制,即复制目录时(文件夹)时,该目录下的所有文件和目录也应准确复制至目标目录中,并正确分配物理盘块空间。 3.主要函数和类的定义 1)主要函数定义 #define show_bnum 20 //显示物理盘块的块数 #define block_size 1024 //物理盘块块数 int block[block_size]; //假设有block_size块物理盘块 string content[block_size]; //存放文件内容 int Msize=5; //此处为模拟磁盘大小为输入5个字符 fnode *root=new fnode(WP:,0,0); //设置根目录 fnode *current_path=new fnode(); //当前路径 fnode *seek_flag=new fnode(); //作为查找标志 fnode *cp_flag=new fnode(); //作为复制的位置标志 void initialize(); //初始化 int seekTarget(string name); //搜索文件或目录 int seek_log(string name); //搜索目录 void delete_node(string name); //删除节点 int freeblock(fnode *); //释放物理盘块 int seekfreeblock(); //搜索可用物理盘块 void show_current_path(); //显示当前路径 void add_file(string name,int t); //增加目录、文件 void show_curpath_all(); //显示当前目录下的所有文件 void rename_file(string Oname,string Nname); //重命名

相关文档
最新文档