基于Linux的模拟文件系统的设计与实现32696
嵌入式Linux下文件管理系统的设计与实现

对 文 件加 密 和解 密 . 达 到对 系统 文 件 的安 全保 护 圈 。
图 1 加 密 文 件 管 理 系 统 结 构 图
现 代 计 算 机 2 0 1 5 . 0 5 下 ⑥
Re s e a r c h a n d De s i g n o f Hi g h wa y Tu n n e l Mo n i t o r i n g Sy s t e m
块 的 执 行 必 须 是 用 户 通 过 认 证模 块 用 户 认 证 通 过 用 户名和密码认证 . 本 系统 不 直 接 存 储 用 户 名 密 码 . 而 是
效手段 加 密文件系统可 以防止管 理员利 用别 的操作
系统 窃 取 计 算 机 中 的数 据 _ 1 1
目前 .加 密 基 于 L i n u x的文 件 加 密 系 统 主要 有
加 密 文 件 系统 模 块 主 要 包 括 文 件 保 护 模 块 、用 户 认证模块 、 文 件浏 览 。关 系 图如 图 1 所示 。 文 件加 密和解 密是 通过 D E S算 法 实 现 的 由 于
者通 过硬件 设备 以及计算机 网络 .对数据进 行入侵篡 改. 对数据 的安全性提 出更高 的要求 。 最根本 的原 因是 由于计算机 中大多数 的数据 以明文 的形式存储 .所 以
文章编号 : 1 0 0 7 — 1 4 2 3 ( 2 0 1 5 ) 1 5 — 0 0 6 3 — 0 4
D OI : 1 0 . 3 9 6 9  ̄ . i s s n . 1 0 0 7 — 1 4 2 3 . 2 0 1 5 . 1 5 . 0 1 6
嵌入 式 L i n u x下文件管理 系统 的设计与 实现
王文 晶. 胡艳 慧
基于Linux的嵌入式文件系统构建与设计

基于Linux的嵌入式文件系统构建与设计基于Linux的嵌入式文件系统构建与设计一、文件系统:文件系统(File system)指代贮存在计算机上的文件和目录。
文件系统可以有不同的格式,叫做文件系统类型(file system types)。
这些格式决定信息是如何被贮存为文件和目录。
某些文件系统类型贮存重复数据,某些文件系统类型加快硬盘驱动器的存取速度。
因此文件系统就是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。
也指用于存储文件的磁盘或分区,或文件系统种类。
上图是一个完整操作系统的文件系统构架,下文中将对文件系统中各个部件进行一定的介绍。
<!--[if !supportLists]-->1.1<!--[endif]-->Linux系统文件类型:● Linux系统中文件的类型包括:普通文件、目录文件、连接文件、设备文件、管道(FIFO)文件和套接字文件。
● 普通文件:是流式文件,● 目录文件:用于表示表示和管理系统中的全部文件● 连接文件:用于不同目录下文件的共享● 设备文件:包括块设备文件和字符设备文件。
块设备文件表示磁盘、关盘等,字符设备文件联系着按照字符进行操作的终端、键盘等设备。
● 管道(FIFO)文件:提供进程间通信的一种方式。
● 套接字(socket)文件和网络通信有关。
1.2 逻辑文件系统:文件的逻辑结构是用户可见结构,即从用户角度观察到的文件系统。
可以分为两大类:字节流式的无结构文件和记录式有结构文件。
由字节流(字节序列)组成的文件是一种无结构文件或流式文件,不考虑文件内部的逻辑结构,只是简单地看作式一系列字节的序列,便于在文件任意位置添加内容。
很多操作系统多采用这种形式,如UNIX/Linux、DOS、Windows等。
由记录组成的文件称为记录式文件,记录是这种文件的基本信息单位,记录式文件通常用于信息管理。
1.3 虚拟文件系统:Linux在传统的逻辑文件系统的基础上,增加了一个虚拟文件系统(Virtual File System,VFS)的接口层,VFS在最上层,管理各种逻辑文件系统,屏蔽了他们之间的差异,为用户命令、函数调用和内核其他部分提供访问文件和设备的统一接口,使得不同的逻辑文件系统按照同样的模式呈现在使用者面前,对于用户来讲,觉察不到逻辑文件系统的差异,可以使用同样的命令来操作不同的逻辑文件系统所管理的文件,可以在他们之间自由地复制文件。
操作系统课程设计-文件系统的模拟设计

操作系统课程设计报告题目:文件系统的模拟设计一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。
二、设计内容(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函数),申请失败则结束。
基于Linux的模拟文件系统的设计与实现

中北大学操作系统课程设计说明书学院、系:软件学院专业:软件工程学生姓名:任彬学号:********** 设计题目:基于Linux的模拟文件系统的设计与实现起迄日期: 2011年12月22日- 2012年1月7日****:**2012 年 1月 7 日1.需求分析本次课程设计题目为“基于Linux的模拟文件系统的设计与实现”,要求在linux开源环境下,通过使用系统库函数以及操作命令,模拟实现典型文件系统,实现文件的各项基本操作,以此加深对所学文件操作的了解以及操作方法的特点。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深教材中的重要算法的理解,同时通过编程实现这些算法,更好地掌握操作系统的远离及实现方法,提高综合运用各专业课知识的能力。
根据实验要求可将系统功能简述如下:(1)设计一个10个用户的文件系统。
每个用户最多可以保存10个文件,一次运行用户可打开多个文件。
(2)程序采用二级文件目录。
(即设置主目录(MFD)和用户文件目录(UFD))。
另外,可打开文件设置指针。
(3)为了方便实现,对文件的读写作了简化。
在执行读写命令时,只需改读写指针。
并不进行实际的读写操作。
(4)实现目录的相关操作:改变目录(CD),创建目录(MD),显示目录(DIR),删除目录(RD)。
(5)实现文件的相关操作:打开文件(open),关闭文件(close),创建一个新文件(create),删除一个文件(delete),写文件(write),读文件(read)。
(6)考虑特殊情况如:目录不存在时,给出错误信息;不能用cd进入文件;命令之中不能有空格(如ex it,给出错误提示);新建目录或文件时的问题、重名问题、目录或文件的名字长度限制、目录或文件的名字中包含不合法字符(注意空格)、删除目录或文件时的问题、删除不存在的文件或目录给出错误提示、删除目录时目录不为空(如果该目录为空,则可删除,否则给出是否做删除提示,删除操作将该目录下的全部文件和子目录都删除)、进入到某个目录下,却要删除本目录或上级目录、不能用delete删除目录、不能用RD删除文件等。
基于Linux的模拟文件系统的设计与实现

中北大学操作系统课程设计说明书学院、系:软件学院专业:软件工程学生姓名:学号:设计题目:基于Linux的模拟文件系统的设计与实现起迄日期:指导教师:前言简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。
这个系统是由世界各地的成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。
用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。
可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。
这对Windows NT、Windows98、MS-DOS或OS/2等商品化操作系统来说是无法做到的。
Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。
其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。
在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用IPCHAINS/IPTABLE网络治理工具可构建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)3.1用户结构 (12)3.2数据结构说明 (12)3.3主要功能的关键代码 (13)4测试及运行结果 (18)4.1 测试定义 (18)4.2 测试目的 (18)4.3 测试结果 (19)4.3.1 文件测试 (19)5心得 (41)1需求分析1.1 功能介绍基于Linux的模拟文件系统的设计与实现完成以下功能:(1)创建用户:手动的创建10个用户,都在界面上完成,输入用户名;每个用户最多可以保存10个文件。
模拟文件系统的设计与实现

删除文件:delete创建子目录:mkdir删除子目录:rmdir
列出文件目录:dir退出:exit
系统执行流程图
3.详细设计
主要数据结构:
#define MEM_D_SIZE 1024*1024 ame,name))
break;
}
if(j<MSD+2) /*文件已经存在*/
模拟二级文件管理系统的课程设计目的是通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统,第一级为主目录文件,第二级为用户文件。
2总体设计
结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。
文件的创建:create文件关闭:close文件的打开:open
strcpy(cur_dir->directitem[i].name,name);
cur_dir->directitem[i].firstdisk = j;
cur_dir->directitem[i].size = 0;
cur_dir->directitem[i].next = j;
cur_dir->directitem[i].property = '0';
char Space = 32;
char Endter= '\n';
for(i=0;i<len;i++)
{
if(buf[i] == '$')
buf[i] = Space;
else if(buf[i] == '#')
buf[i] = Endter;
基于Linux的模拟存储器管理的设计与实现任务书

课程设计说明书
模拟存储器管理系统软件
6.工作计划及进度:
2013年11月22日--2013年11月26日需求分析;
2013年11月27日--2013年11月28日概要设计和详细设计;
2013年11月29日--2013年12月3日编码、连接;
2013年12月4日--2013年12月5日测试,撰写课程设计说明书;
(1)根据设计内容和要求进行需求分析,分析出系统的主要功能和设计重点。
(2)根据需求分析的内容在小组中合理划分模块。
(3)利用C, C++或JAVA语言在Linux平台下进行程序设计并调试通过。
(4)按格式要求,每人根据自己的工作写出课程设计说明书。
课程设计任务书
4.主要参考文献:
[1]汤子瀛,哲凤屏,汤小丹.计算机操作系统.陕西:西安电子科技大学出版社,2001.8
(4)假定页面大小为512K,进程执行时页面调度顺序要求手动输入。
要求:
(1)要求在屏幕上输出各进程页面置换过程(以图表形式描述)以及每种页面置换算法的缺页率和置换率,并对比各算法的优劣。
(2)要求在Linux平台下,使用C, C++或JAVA语言进行开发。
..
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
设计内容:
(1)在内存开辟两块存储空间,分别模拟内存和外存,大小分别是8M,25M。
(2)给定三个文件A,B,C,大小分别是4.2M,8M和9.8M。模拟其并发执行过程。
(3)每个进程在内存中固定分配4个页面,缺页时分别采用四种置换算法(FIFO, LRU, NUR, OPT)进行置换。
面向Linux用户的网络文件管理系统的设计与实现

面向Linux用户的网络文件管理系统的设计与实现1 绪论1.1 氧化铝基陶瓷材料1.1.1 氧化铝陶瓷的晶型结构陶瓷材料是一种无机非金属材料,主要有Al2O3、SiC、ZrB2、BN等。
作为复合陶瓷的增韧基体,Al2O3是当下研究中使用频率较高的。
Al2O3有多种同质易晶体,主要的晶型有α-Al2O3、β- Al2O3、γ- Al2O3三种,其转换关系如图1.1所示。
图1.1 氧化铝的晶型转变γ- Al2O3的结构为尖晶石型,高温下不稳定,一般不单独使用[1]。
β- Al2O3实质上是一种碱性铝酸盐,a=0.56nm,c=2.25nm,密度3.30-3.63g/cm3,在1600℃的高温下会转变成α-Al2O3。
α-Al2O3在高温下较为温度,密度一般为3.96-4.01 g/cm3。
1.1.2 氧化铝陶瓷的性能氧化铝陶瓷中Al2O3的质量分数一般为75.0%-99.0%。
商品氧化铝习惯以质量分数来命名,质量分数大于85%的Al2O3的叫高铝瓷,Al2O3质量分数为95%的叫95瓷,质量分数为99%的Al2O3的叫99瓷,而质量分数大于99%的Al2O3的叫刚玉瓷。
氧化铝陶瓷物理性能优异,维氏硬度高达19.3,致密度高,同时还拥有杰出的耐高温、耐腐蚀、切削性、不导电等性能。
Al2O3陶瓷属于高温结构陶瓷,其物理性能与Al2O3的百分含量有着紧密的关系。
表1.1、和表1.2分别列出了高密度氧化铝和低密度氧化铝的一些力学性能。
表1.1 高密度氧化铝的力学性能Al2O3/% >99.9 >99.7①>99.7②99-99.7密度/(g/cm3)3.97-3.99 3.6-3.85 3.65-3.85 3.89-3.96硬度/HV 19.3 16.3 15-16 15-16KIC/(MPa·m1/2) 2.8-4.5 - - 5.6-6弹性模量/GPa 366-410 300-380 300-380 330-400室温弯曲强度/MPa 550-600 160-300 245-412 550膨胀系数/×10-6K-1(200-1200℃) 6.4-8.9 5.4-8.4 5.4-8.4 6.4-8.2室温热导率/[W·(m·K)-1] 38.9 28-33 30 30.4烧成温度/℃1600-2000 1750-1900 1750-1900 1700-1750注:①不含MgO二次再结晶;②含MgO表1.2 低密度氧化铝的力学性能Al2O3/% 99-96.5 94.5-96.5 86-94.5 80-86密度/(g/cm3)3.73-3.8 3.7-3.9 3.4-3.7 3.3-3.4硬度/HV 12.8-15 12-15.6 9.7-12 -弹性模量/GPa 300-380 300 250-330 200-240弯曲强度/MPa 230-350 310-330 250-330 200-300膨胀系数/×10-6K-1(200-1200℃) 8-8.1 7.6-8 7-7.6 -室温热导率/[W·(m·K)-1] 24-26 20-24 15-20 -烧成温度/℃- 1520-1600 1440-1600 -1.2 氧化铝陶瓷增韧目前,铁、铜、铝等常用金属的KIC范围大约为10-50MPa·m1/2,而大部分单质陶瓷和玻璃的KIC仅有0.5-6MPa·m1/2,远远低于铁、铜、铝等常用金属的KIC。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学操作系统课程设计说明书学院、系:软件学院专业:软件工程学生姓名:任彬学号:0921010132设计题目:基于Linux的模拟文件系统的设计与实现起迄日期:2011年12月22日- 2012年1月7日指导教师:康珺2012 年1月7 日1.需求分析本次课程设计题目为“基于Linux的模拟文件系统的设计与实现”,要求在linux 开源环境下,通过使用系统库函数以及操作命令,模拟实现典型文件系统,实现文件的各项基本操作,以此加深对所学文件操作的了解以及操作方法的特点。
通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识,加深教材中的重要算法的理解,同时通过编程实现这些算法,更好地掌握操作系统的远离及实现方法,提高综合运用各专业课知识的能力。
根据实验要求可将系统功能简述如下:(1)设计一个10个用户的文件系统。
每个用户最多可以保存10个文件,一次运行用户可打开多个文件。
(2)程序采用二级文件目录。
(即设置主目录(MFD)和用户文件目录(UFD))。
另外,可打开文件设置指针。
(3)为了方便实现,对文件的读写作了简化。
在执行读写命令时,只需改读写指针。
并不进行实际的读写操作。
(4)实现目录的相关操作:改变目录(CD),创建目录(MD),显示目录(DIR),删除目录(RD)。
(5)实现文件的相关操作:打开文件(open),关闭文件(close),创建一个新文件(create),删除一个文件(delete),写文件(write),读文件(read)。
(6)考虑特殊情况如:目录不存在时,给出错误信息;不能用cd进入文件;命令之中不能有空格(如ex it,给出错误提示);新建目录或文件时的问题、重名问题、目录或文件的名字长度限制、目录或文件的名字中包含不合法字符(注意空格)、删除目录或文件时的问题、删除不存在的文件或目录给出错误提示、删除目录时目录不为空(如果该目录为空,则可删除,否则给出是否做删除提示,删除操作将该目录下的全部文件和子目录都删除)、进入到某个目录下,却要删除本目录或上级目录、不能用delete删除目录、不能用RD删除文件等。
.2.总体设计本系统以C语言为编程基础,通过调用linux环境下的库函数实现各功能模块。
<1>整个系统采用“主函数-子函数”结构。
系统初始化无误后,运行主函数,在主函数中通过输入参数的变化调用相关功能子函数。
各子函数之间采用平行结构,只与主函数有联系,整个系统共由17个子模块实现。
系统流程图如下:各模块按功能可分为三类:(1)文件初始化。
void initfile()(初始化文件系统); void format()(格式化); void enter()(进入文件系统)。
(2)目录管理。
int create(char *name) (创建文件); int open(char *name) (打开文件); int close(char *name) (关闭文件); int write(int fd,char *buf,int len) (读文件); int read(int fd,char *buf) (读文件); int del(char *name) (删除文件)。
(3)文件管理。
int mkdir(char *name) (创建子目录); int rmdir(char *name) (删除子目录); void dir()(显示当前目录的子目录); int cd(char *name) (更改当前目录); void print()(显示当前路径); void show()(输出提示信息)。
<2>为实现文件的模拟访问以及控制,利用disk.dat虚拟磁盘的管理调度,保存运行过程中各项操作以及数据。
各个子函数在功能实现时,首先必须利用相应指针定位到disk.dat文件,操作完成后将运行参数保存到文件中。
<2>结构体设计(1)二级目录实现。
为实现二级目录,定义如下结构体变量file,content。
typedef struct file{char name[10];struct file *next;}File;file结构体用于保存文件名,并通过指向下一个文件的指针形成单向链表。
typedef struct content{char name[10];File *file;int f_num;struct content *next;}Content;Content结构体用于保存目录名,此外,一方面通过指向下一个目录的指针形成单向链表,另一方面通过指向下一级的文件指针实现连接该目录头文件的作用,以此实现二级目录索引。
(2)用户访问实现。
为实现用户访问,定义如下结构体user。
typedef struct user{char name[10];char psw[10];Content *con;struct user *next;user结构体用于保存用户名和密码,通过指向下一个用户的指针将注册用户形成单向链表。
用户登录时,进行用户名、密码的判断,若正确,跳转到主界面,否则通过指针的链接到下一个用户信息,重复上述过程。
(3)虚拟磁盘管理的实现。
为实现虚拟磁盘的管理调度,定义结构体fatitem,direct,opentable。
struct fatitem /* size 8*/{int item; /*存放文件下一个磁盘的指针*/char em_disk; /*磁盘块是否空闲标志位0 空闲*/};Fatitem结构体用于文件配置表fat表的结构定义。
struct direct{struct FCB{char name[9]; /*文件/目录名8位*/char property; /*属性1位目录0位普通文件*/int size; /*文件/目录字节数、盘块数)*/int firstdisk; /*文件/目录起始盘块号*/int next; /*子目录起始盘块号*/int sign; /*1是根目录0不是根目录*/}directitem[MSD+2];-};direct结构体用于目录项结构的定义,其中嵌套的FCB用于文件控制块的定义。
struct opentable{struct openttableitem{char name[9]; /*文件名*/int firstdisk; /*起始盘块号*/int size; /*文件的大小*/}openitem[MOFN];int cur_size; /*当前打文件的数目*/};Opentable结构体用于文件打开表项结构的定义。
3.详细设计结构化程序设计的模式是自顶向下,逐步求精的过程。
当设计一个程序时,需要将需要将求解问题逐步分解成能解决局部问题的更小的功能模块,直到每一个局部模块都不能再分为止,每一个最小化的模块对应一个相应的函数。
函数的功能应该最小化,即每个函数只完成一个简单的功能。
根据模块功能能最小化的思想,我们将程序划分为17个子模块,每个模块只负责完成一个功能,他们分别为void initfile()(初始化文件系统); void format()(格式化); void enter()(进入文件系统); void halt()(退出文件系统); int create(char *name) (创建文件); int open(char *name) (打开文件); int close(char *name) (关闭文件); int write(int fd,char *buf,int len) (读文件); int read(int fd,char *buf) (读文件); int del(char *name) (删除文件); int mkdir(char *name) (创建子目录); int rmdir(char *name) (删除子目录); void dir()(显示当前目录的子目录); int cd(char *name) (更改当前目录); void print()(显示当前路径); void show()(输出提示信息)以及main函数。
各个函数通过相互嵌套调用,最终完成实现linux下模拟文件的设计和实现。
(1)初始化文件系统:initfile()函数主要源码为:void initfile(){fdisk = (char *)malloc(MEM_D_SIZE*sizeof(char));format();}使用库函数Malloc 向系统申请分配指定size个字节的内存空间。
,用来储存char 类型文件,同时初始化文件。
(2)格式化文件:void format();主要源码为:void format(){int i;FILE *fp;fat = (struct fatitem *)(fdisk+DISKSIZE); /*计算FAT表地址,引导区向后偏移1k)*//*-----初始化FAT表------------*/fat[0].item=-1; /*引导块*/fat[0].em_disk='1';for(i=1;i<ROOT_DISK_NO-1;i++) /*存放FAT表的磁盘块号*/{fat[i].item=i+1;fat[i].em_disk='1';}//fat[ROOT_DISK_NO-1].item=-1;//fat[ROOT_DISK_NO-1].em_disk='1';fat[ROOT_DISK_NO].item=-1; /*存放根目录的磁盘块号*/fat[ROOT_DISK_NO].em_disk='1';for(i=ROOT_DISK_NO+1;i<DISK_NUM;i++){fat[i].item = -1;fat[i].em_disk = '0';}/*-----------------------------------------------*/root = (struct direct *)(fdisk+DISKSIZE+FATSIZE); /*根目录的地址*//*初始化目录*//*---------指向当前目录的目录项---------*/root->directitem[0].sign = 1;root->directitem[0].firstdisk = ROOT_DISK_NO;strcpy(root->directitem[0].name,".");root->directitem[0].next = root->directitem[0].firstdisk;root->directitem[0].property = '1';root->directitem[0].size = ROOT_DISK_SIZE;/*-------指向上一级目录的目录项---------*/root->directitem[1].sign = 1;root->directitem[1].firstdisk = ROOT_DISK_NO;strcpy(root->directitem[1].name,"..");root->directitem[1].next = root->directitem[0].firstdisk;root->directitem[1].property = '1';root->directitem[1].size = ROOT_DISK_SIZE;if((fp = fopen("disk.dat","wb"))==NULL){printf("Error:\n Cannot open file \n");return;}for(i=2;i<MSD+2;i++) /*-子目录初始化为空-*/{root->directitem[i].sign = 0;root->directitem[i].firstdisk = -1;strcpy(root->directitem[i].name,"");root->directitem[i].next = -1;root->directitem[i].property = '0';root->directitem[i].size = 0;}if((fp = fopen("disk.dat","wb"))==NULL){printf("Error:\n Cannot open file \n");return;}if(fwrite(fdisk,MEM_D_SIZE,1,fp)!=1) /*把虚拟磁盘空间保存到磁盘文件中*/{printf("Error:\n File write error! \n");}fclose(fp);}本函数用来计算在程序中已定义的struct fatitem *fat; /*FAT表*/ struct direct *root; /*根目录*/;struct direct *cur_dir; /*当前目录*/的地址及对他们进行初始化,方便以后的使用。