简单文件系统的实现
实现一个简单的文件系统

实现一个简单的文件系统一个简单的文件系统是指一个用于管理文件和文件夹的系统,可以进行基本的文件和文件夹的创建、删除、重命名、查找、打开、关闭等操作。
以下是一个简单文件系统的实现,主要包括文件和文件夹的数据结构和相关操作。
1.数据结构:- 文件(File):包含文件名、文件内容、创建时间、修改时间等属性。
- 文件夹(Folder):包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及包括的文件和文件夹列表。
2.操作:-创建文件夹:可以根据输入的文件夹名和路径,在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
-创建文件:可以根据输入的文件名和路径,在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
-删除文件夹:可以根据输入的文件夹名和路径,将对应的文件夹对象从上级文件夹的文件夹列表中删除,并删除其包含的所有文件和文件夹。
-删除文件:可以根据输入的文件名和路径,将对应的文件对象从所在文件夹的文件列表中删除。
-重命名文件夹:可以根据输入的原文件夹名和路径以及新文件夹名,将对应的文件夹对象重命名。
-重命名文件:可以根据输入的原文件名和路径以及新文件名,将对应的文件对象重命名。
-查找文件夹/文件:可以根据输入的文件夹名和路径,查找对应的文件夹对象。
-打开文件:可以根据输入的文件名和路径,打开对应的文件对象,并显示其内容。
-关闭文件:可以关闭当前打开的文件。
3.实现:- 定义一个文件夹类(Folder),包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及一个存储文件夹对象的列表。
- 定义一个文件类(File),包含文件名、文件内容、创建时间、修改时间等属性。
- 实现创建文件夹的方法(createFolder),在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
- 实现创建文件的方法(createFile),在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
操作系统课程设计-一个简单的文件系统的详细设计

计算机系课程设计实验报告课程名称操作系统课程设计实验学期 2012 至 2013 学年第 1 学期学生所在系部计算机与信息管理系年级 2010 专业班级计算机001班学生姓名学号任课教师实验成绩计算机系制一个简单的文件系统的详细设计一、实验目的(1)阅读并调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
(2)了解设计一个n个用户的文件系统,每个用户可以保存M个文件。
用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有create、delete、open、close、read、write等命令。
二、实验要求1、阅读所给文件系统源程序,并加注释(注释量达60%),2、修改、完善该系统,画出所设计的文件系统的详细流程图。
三、文件系统功能设计1. 功能设计该文件系统是一个多用户、多任务的文件系统。
对用户和用户的文件数目并没有上限。
也就是说该系统允许任何用户申请空间,而且在其目录下的文件数目并不做任何的限制。
该系统可以支持的操作命令如下:①bye——用户注销命令。
当使用该命令时,用户退出系统,注销该用户功能设计并回到登陆界面。
命令格式:bye②close——删除用户注册信息命令。
执行该命令后,用户在系统中的所有信息,包括该用户目录下的所有文件都被删除。
命令执行完成后返回登陆界面。
命令格式:close③create——在当前目录下创建一个文件,且该文件不能跟当前已有的文件重名。
该文件的管理信息登记在用户文件信息管理模块中。
执行完该命令后回到执行命令行。
命令格式:create>file1其中:“>”符为提示符,file1为要创建的文件名。
④delete——删除当前用户目录下的一个文件,命令执行完毕返回至命令行。
命令格式:delete>file1其中:file1为要删除的文件名。
⑤list——显示当前注册目录下的所有文件信息,包括文件名、文件长度、文件操作权限。
EEPROM

嵌入式系统中EEPROM文件系统的设计与实现彭晓锋北京邮电大学电信工程学院,北京(100876)摘要:AT24CXX系列EEPROM在嵌入式领域有着广泛的运用。
本文参考微机文件系统的原理实现能兼容AT24C08-AT24C1024的简单文件系统,实验结果证明本系统高效可行。
关键词:EEPROM, 文件系统,嵌入式1.引言随着大量嵌入式设备的出现,在嵌入式系统中用于存储数据的EEPROM因其简单、方便、可靠的性能和低廉的价格而被广为使用。
当今社会嵌入式系统无所不在,各种嵌入式设备品种繁多,差别巨大。
因此各公司也推出多种不同容量不同型号的EEPROM适应多样的市场应用。
人们一方面希望能像管理大容量存储器(如硬盘,FLASH等)中数据一样简单便捷的操作EEPROM中的数据(包括打开、关闭、读写文件等),同时也希望这种文件系统能兼容不同容量、型号,具有较强的通用性。
而对于采用两线IIC总线读写方式[1]的EEPROM来说,无法使用类似与FLASH所支持的TFFS之类的文件系统,本文参照上述思想,实现了一种能兼容AT24C08-AT24C1024类似于文件系统的用于管理EEPROM中数据的方法,并在实践项目中得到良好运用。
2.AT24CXX系列EEPROM简介AT24CXX系列是ATMEL公司生产的串行电可擦的可编程存储器,它采用8引脚封装,具有可掉电记忆,结构紧凑、存储容量大等特点,可以在2线总线上并接多片芯片,适用于具有大容量数据存储要求的嵌入式系统[2]。
ⅰ)封装及管脚说明AT24C08-AT24C1024的封装如图1所示(对不同型号A0-A2相应改为NC,详见表1),各引脚的功能如下:⑴ A0、A1、A2:器件地址(device address)。
IIC串行总线需连接多个EEPROM芯片时,可用A0、A1、A2来区分各芯片,悬空时为0。
⑵ SDA:I2C 串行数据。
图1. A T24CXX系列EEPROM封装⑶ SCL:I2C 串行时钟。
如何实现一个文件系统

如何实现一个文件系统本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。
如果需要可以联系通过kanghua151@联系他。
摘要:本文目的是分析在Linux系统中如何实现新的文件系统。
在介绍文件系统具体实现前先介绍文件系统的概念和作用,抽象出了文件系统概念模型。
熟悉文件系统的内涵后,我们再近一步讨论Linux系统中和文件系统的特殊风格和具体文件系统在Linux中组成结构,为读者勾画出Linux中文件系统工作的全景图。
最后,我们再通过Linux中最简单的Romfs 作实例分析实现文件系统的普遍步骤。
(我们假定读者已经对Linux文件系统初步了解)什么是文件系统首先要谈的概念就是什么是文件系统,它的作用到底是什么。
文件系统的概念虽然许多人都认为是再清晰不过的了,但其实我们往往在谈论中或多或少地夸大或片缩小了它的实际概念(至少我时常混淆),或者说,有时借用了其它概念,有时说的又不够全面。
比如在操作系统中,文件系统这个术语往往既被用来描述磁盘中的物理布局,比如有时我们说磁盘中的“文件系统”是EXT2或说把磁盘格式化成FAT32格式的“文件系统”等——这时所说的“文件系统”是指磁盘数据的物理布局格式;另外,文件系统也被用来描述内核中的逻辑文件结构,比如有时说的“文件系统”的接口或内核支持Ext2等“文件系统”——这时所说的文件系统都是内存中的数据组织结构而并非磁盘物理布局。
还有些时候说“文件系统”负责管理用户读写文件——这时所说的“文件系统”往往描述操作系统中的“文件管理系统”,也就是文件子系统。
虽然上面我们列举了混用文件系统的概念的几种情形,但是却也不能说上述说法就是错误的,因为文件系统概念本身就囊括众多概念,几乎可以说在操作系统中自内存管理、系统调度到I/O系统、设备驱动等各个部分都和文件系统联系密切,有些部分和文件系统甚至未必能明确划分——所以不能只知道文件系统是系统中数据的存储结构,一定要全面认识文件系统在操作系统中的角色,才能具备自己开发新文件系统的能力。
计算机程序设计员实操考核分布式系统题目

计算机程序设计员实操考核分布式系统题目一、题目描述设计一个分布式系统,实现一个简单的分布式文件系统。
该系统应包含以下功能:1.文件上传:用户可以上传文件至分布式文件系统。
2.文件下载:用户可以从分布式文件系统下载文件。
3.文件删除:用户可以在分布式文件系统中删除文件。
二、设计思路为了实现一个分布式文件系统,我们需要考虑以下几个关键问题:数据分布、数据复制和数据一致性。
2.1 数据分布将文件的数据分布在不同的节点上,可以提高系统的并发能力和数据读取速度。
可以使用一致性哈希算法来决定文件数据应存储在哪个节点上。
将文件分成多个块,并选择多个节点进行数据的复制,以提高系统的可用性和容错性。
2.2 数据复制为了提高系统的可用性和容错性,需要在多个节点上复制文件的数据。
可以使用主从复制的方式,其中一个节点作为主节点负责接受文件上传请求,其他节点作为从节点,负责数据的复制和文件的下载请求。
当主节点故障时,从节点可以接替成为新的主节点,保证系统的可用性。
2.3 数据一致性在分布式系统中,数据一致性是一个重要的问题。
当用户上传文件或删除文件时,需要保证系统中所有节点的数据一致。
可以使用分布式一致性协议来解决这个问题,比如使用Paxos协议或Raft协议。
三、系统架构3.1 节点类型在分布式文件系统中,可以定义以下几种节点类型:1.主节点(Master):负责接受文件上传请求,并将文件数据分发到其他节点上。
2.从节点(Slave):负责接收主节点发送的文件数据,并在本地进行存储。
3.客户端(Client):用户使用的接口,可以通过客户端进行文件上传、下载和删除操作。
3.2 节点之间的通信节点之间的通信可以使用RPC框架(如gRPC)来实现。
主节点可以通过RPC调用从节点的接口,将文件数据发送给从节点。
客户端也可以通过RPC调用主节点的接口,实现文件的上传、下载和删除等操作。
3.3 文件分块和数据分布将文件分成多个块,并计算每个块的哈希值。
如何编写一个简单的操作系统文件系统

如何编写一个简单的操作系统文件系统操作系统文件系统是操作系统管理存储设备上文件和目录的系统。
它的设计和实现对操作系统的性能和功能有着重要的影响。
一个好的文件系统需要具备高效的存储管理、可靠的数据存储和恢复机制、良好的用户接口等特点。
下面通过简单的文件系统设计来介绍文件系统的基本原理和实现步骤。
一、文件系统的基本要求1.存储管理:文件系统需要能够有效地管理存储设备上的存储空间,实现文件的分配和释放。
2.数据存储与恢复:文件系统需要具备数据持久化的能力,能够保证文件在存储设备上安全存储,并能够在系统崩溃时自动恢复数据。
3.文件操作接口:文件系统需要提供用户友好的文件操作接口,如读取、写入、创建、删除、重命名等操作。
二、文件系统设计1.文件控制块(FCB):文件系统中的每个文件都有对应的文件控制块,用来存储文件的基本信息,如文件名、大小、创建时间、修改时间、访问权限等。
2.目录结构:文件系统需要维护一个目录结构,用来记录文件和目录的层次关系。
可以采用树形结构来组织目录,每个目录节点包含文件或子目录的信息。
3.空闲块管理:文件系统需要通过空闲块管理来实现文件存储空间的分配和释放。
可以采用位图或空闲块链表的方式进行管理。
4.存储分配策略:文件系统需要设计合适的存储分配策略,如连续分配、链式分配、索引分配等。
不同的分配策略对文件系统的性能和可靠性有着重要影响。
5.数据恢复机制:文件系统需要设计合适的数据恢复机制来保证文件在系统崩溃时能够正确地恢复数据。
可以采用日志、备份、快照等方式来实现数据恢复。
6.用户接口:文件系统需要提供良好的用户接口,使用户能够方便地进行文件操作。
可以设计命令行或图形界面来实现用户与文件系统的交互。
三、文件系统实现步骤1.设计文件控制块结构:根据文件系统的需求,设计合适的文件控制块结构,包括文件名、文件大小、创建时间、修改时间、访问权限等字段。
2.设计目录结构:根据文件系统的需求,设计合适的目录结构,包括目录名称、父目录、子目录和文件的信息等字段。
操作系统设计一个二级文件系统报告

v .. . ..
. . . 资 料. .
操作系统(2014年秋季学期)
实 验 报 告
系别:计算机科学与技术 班级:信安12-1班 姓名:*** 学号:
实验名称:进程调度
NORTH CHINA UNIVERSITY OF TECHNOLOGY
2022-4-26 2/17
.
Word 资料
NORTH CHINA UNIVERSITY OF TECHNOLOGY
2022-4-26 4/17
.
Word 资料
NORTH CHINA UNIVERSITY OF TECHNOLOGY
.
Word 资料
NORTH CHINA UNIVERSITY OF TECHNOLOGY
.
Word 资料
NORTH CHINA UNIVERSITY OF TECHNOLOGY
}
五、编译过程截图
(下面是一个例子,换上你自己的图)
六、测试用例
(下面是一个例子,换上你自己的)
文字叙述一下测试过程的实例。
如先创建用户***、再产生文件****、再打开文件****,再写入内容********,再退出,再打开用户***,再将文件读出,读出的内容应该是*******。
等等。
六、实验结果
(下面是一个例子,换上你自己的图,给出根据测试用例的截图)。
实现实时FAT文件系统的一种简单方法

Ab t a t M0 t e e d d mat d vc s n h ma k t o u e t e A f e y t m b c u e f i c mp t i t . w v r t e sr c : s mb d e s r e ie i t e r e n w s h F T i s se l e a s o t o ai l y Ho e e ,h s bi F wa n t e l e in d o AT s o w l d sg e t me t e l i r q i me t. h s ril p o o e a i l s l t n h t r al i r v s h e r a t me e u r e ns i T a t e r p s s smp e o ui t a g e t c o y mp o e t e r s o s i f t e AT f e s se wi o t u i g i o ai i t . ep ne t me o h F l y t m, t u h r n t c mp t ly i h t s bi Ke r s F y wo d : AT; l y tm ;e l t i fess e r a i me; o rs e AT;r e c u tr i d x c mp e s d F fe — l se n e
读写文件时文件系统经常需要进行文件逻辑簇号即这个文件中的第几个簇到物理簇号整个文件系统中的实际簇号的转换在这种链表结构中要进行这种转换必须对fat表进行遍历操作所以响应时间与读写位置呈线性关系时间复杂度为on其中n为要访问的数据所在的逻辑簇号
维普资讯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章简单文件系统的实现3.1 设计目的和内容要求1. 设计目的通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部数据结构、功能以及实现过程的理解。
2.内容要求(1)在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。
在退出该文件系统的使用时,应将该虚拟文件系统以一个Windows 文件的方式保存到磁盘上,以便下次可以再将它恢复到内存的虚拟磁盘空间中。
(2)文件存储空间的分配可采用显式链接分配或其他的办法。
(3)空闲磁盘空间的管理可选择位示图或其他的办法。
如果采用位示图来管理文件存储空间,并采用显式链接分配方式,那么可以将位示图合并到FAT中。
(4)文件目录结构采用多级目录结构。
为了简单起见,可以不使用索引结点,其中的每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。
(5)要求提供以下操作命令:●my_format:对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。
●my_mkdir:用于创建子目录。
●my_rmdir:用于删除子目录。
●my_ls:用于显示目录中的内容。
●my_cd:用于更改当前目录。
●my_create:用于创建文件。
●my_open:用于打开文件。
●my_close:用于关闭文件。
●my_write:用于写文件。
●my_read:用于读文件。
●my_rm:用于删除文件。
●my_exitsys:用于退出文件系统。
3.学时安排授课2学时,上机9学时。
4.开发平台C或C++均可。
5.思考(1)我们的数据结构中的文件物理地址信息是使用C语言的指针类型、还是整型,为什么?(2)如果引入磁盘索引结点,上述实现过程需要作哪些修改?(3)如果设计的是一个单用户多任务文件系统,则系统需要进行哪些扩充(尤其要考虑读写指针问题)?如果设计的是一个多用户文件系统,则又要进行哪些扩充?3.2 预备知识3.2.1 FAT文件系统介绍1.概述FAT文件系统是微软公司在其早期的操作系统MS-DOS及Windows9x中采用的文件系统,它被设计用来管理小容量的磁盘空间。
FAT文件系统是以他的文件组织方式——文件分配表(file allocation table,FAT)命名的,文件分配表的每个表项中存放某文件的下一个盘块号,而该文件的起始盘块号则保存在它的文件控制块FCB中。
在文件分配表中,一般用FFFF来标识文件的结束;用0000来标识某个逻辑块未被分配,即是空闲块。
为了提高文件系统的可靠性,在逻辑磁盘上通常设置两张文件分配表,它们互为备份。
此外,文件分配表必须存放在逻辑磁盘上的固定位置,而根目录区通常位于FAT2之后,以便操作系统在启动时能够定位所需的文件,其磁盘布局如图3-1所示:图3-1 FAT文件系统磁盘布局上述磁盘布局中,引导块中主要存放了用于描述分区的各种信息,包括逻辑块的大小、文件分配表的大小及位置、根目录的大小及位置等。
除此之外,用于加载操作系统内核的引导程序也存储在引导块中。
FAT文件系统家族又分为FAT12、FAT16、FAT32三种类型,这里的数字表示文件分配表中每个表项(即簇号)所占的位数,即FAT12中每个表项占1.5个字节(12位),FAT16中每个表项占2个字节(16位),FAT32中每个表项占4个字节(32位)。
由于FAT文件系统是以簇为单位为文件分配磁盘空间的(一个簇是一组连续的扇区,通常包含2n个扇区),因此,FAT32比FAT12和FAT16支持更多的簇数、更小的簇大小和更大的磁盘容量,从而大大提高磁盘空间的利用率。
通常,FAT12适用于小容量磁盘,如软盘;FAT16是MS-DOS的文件系统;FAT32是Windows9x中的主要文件系统,开始支持大容量磁盘。
2.文件控制块FCB为了正确、方便地操作文件,必须设置相应的数据结构用于存放文件的描述和控制信息,常用的数据结构有文件控制块(简称FCB)和索引节点(简称i节点)。
在FAT文件系统中使用文件控制块。
文件与文件控制块一一对应,而文件控制块的有序集合就称为文件目录,即一个文件控制块就是一个文件目录项。
虽然不同文件系统的文件控制块的内容和格式不完全相同,但通常都包括以下三类信息:基本信息、存取控制信息和使用信息。
(1)基本信息。
包括文件名、用户名、文件类型、文件的物理地址、文件长度、文件的逻辑结构和物理结构等。
(2)存取控制信息。
一般分别给出文件主、伙伴用户、一般用户的存取权限。
(3)使用信息。
包括文件的建立日期及时间、上次存取文件的日期及时间、当前的使用信息等。
以MS-DOS(使用FAT16文件系统)为例,它的每个文件控制块包括32个字节,其字节分配情况如图3-2所示:图3-2 MS-DOS的文件控制块其中属性字段占一个字节,它的每一位用来表示该文件是否具有某种属性,如果某一位的值为1,则表示该文件具有该属性。
各位所表示的属性如表3-1所示:表3-1 文件属性对照表3.根目录区FAT12、FAT16的根目录区是固定区域、固定大小的,位于第二个FAT之后,如图3-1所示,且占据若干连续扇区,其中FAT12占14个扇区,一共224个根目录项;而FAT16占32个扇区,最多保存512个目录项,作为系统区的一部分。
FAT32的根目录是作为文件处理的,采用与子目录文件相同的管理方式,其位置不是固定的,不过一般情况也是位于第二个FAT 之后的,其大小可视需要增加,因此根目录下的文件数目不再受最多512个的限制。
3.2.2 几个C语言库函数介绍由于我们的文件系统是建立在内存的虚拟磁盘上的,在退出文件系统的时候必须以一个文件的形式保存到磁盘上;而在启动文件系统的时候必须从磁盘上将该文件读入到内存的虚拟磁盘中。
下面介绍几个可能会用到的C库函数,在使用这些库函数之前必须包含头文件“stdio.h”。
1.打开文件函数fopen()(1)格式:FILE *fopen(const char *filename,const char *mode)(2)功能:按照指定打开方式打开指定文件。
(3)输入参数说明:filename:待打开的文件名,如果不存在就创建该文件。
mode:文件打开方式,常用的有:●"r":为读而打开文本文件(不存在则出错)。
●"w":为写而打开文本文件(若不存在则创建该文件;反之,则从文件起始位置写,原内容将被覆盖)。
●"a":为在文件末尾添加数据而打开文本文件。
(若不存在则创建该文件;反之,在原文件末尾追加)。
●"r+":为读和写而打开文本文件。
(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 。
●"w+":首先建立一个新文件,进行写操作,随后可以从头开始读。
(若文件存在,原内容将全部消失) 。
●"a+":功能与"a"相同;只是在文件末尾添加新的数据后,可以从头开始读。
另外,上述模式字符串中都可以加一个“b”字符,如rb、wb、ab、rb+、wb+、ab+等组合,字符“b”表示fopen()函数打开的文件为二进制文件,而非纯文字文件。
(4)输出:一个指向FILE类型的指针。
2.关闭文件函数fclose()(1)格式:int fclose(FILE * stream);(2)功能:用来关闭先前fopen()打开的一个文件。
此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
(3)输入参数说明:stream:指向要关闭文件的指针,它是先前执行fopen()函数的返回值。
(4)输出:若关闭文件成功则返回0;有错误发生时则返回EOF并把错误代码存到errno。
3.读文件函数fread()(1)格式:size_t fread( void *buffer, size_t size, size_t count, FILE *stream );(2)功能:读二进制文件到内存。
(3)输入参数说明:buffer:用于存放输入数据的缓冲区的首地址;stream:使用fopen()打开的文件的指针,用于指示要读取的文件;size:每个数据块的字节数;count:要读入的数据块的个数;size*count:表示要求读取的字节数。
(4)输出:实际读取的数据块的个数。
4.写文件函数fwrite()(1)格式:size_t fwite(const void *buffer,size_t size,size_t count,FILE *stream);(2)功能:将数据写到二进制文件中。
(3)输入参数说明:buffer:用于存放输出数据的缓冲区的首地址;stream:使用fopen()打开的文件的指针,用于指示要写出的文件;size:每个数据块的字节数;count:要写出的数据块的个数;size*count:表示要求写出的字符数。
(4)输出:实际写出的数据块的个数。
5.判断文件结束函数feof ()(1)格式:int feof(FILE * stream)(2)功能:用来判断是否已读取到文件末尾。
(3)输入参数说明:stream:使用fopen()打开的文件的指针,用于指示要判断的文件。
(4)输出:如果已读到文件尾则返回非零值,其他情况返回0。
6.定位文件函数fseek()(1)格式:int fseek( FILE *stream, long offset, int origin );(2)功能:移动文件读写指针在文件中的位置。
(3)输入参数说明:stream:使用fopen()打开的文件的指针,用于指示要定位读写指针的文件;offset:位移量,以字节为单位;origin:初始位置,有三个常量:SEEK_CUR:读写指针当前位置;SEEK_SET:文件开头;SEEK_END:文件末尾。
当origin值为SEEK_CUR 或SEEK_END时,参数offset可以为负值。
3.3实例系统的设计与实现本实例系统是仿照FAT16文件系统来设计实现的,但根目录没有采用FAT16的固定位置、固定大小的根目录区,而是以根目录文件的形式来实现的,这也是目前主流文件系统对根目录的处理方式。
3.3.1 数据结构设计1.需要包含的头文件(1)#include <stdio.h>(2)#include <malloc.h>(3)#include <string.h>(4)#include <time.h>2.定义的常量(1)#define BLOCKSIZE 1024 磁盘块大小(2)#define SIZE 1024000 虚拟磁盘空间大小(3)#define END 65535 FAT中的文件结束标志(4)#define FREE 0 FAT中盘块空闲标志(5)#define ROOTBLOCKNUM 2 根目录区所占盘块总数(6)#define MAXOPENFILE 10 最多同时打开文件个数3.数据结构(1)文件控制块FCB用于记录文件的描述和控制信息,每个文件设置一个FCB,它也是文件的目录项的内容。