一种模拟文件系统的设计与分析模拟文件系统的设计与实现_第1页
一种模拟文件系统的设计与分析模拟文件系统的设计与实现_第2页
一种模拟文件系统的设计与分析模拟文件系统的设计与实现_第3页
一种模拟文件系统的设计与分析模拟文件系统的设计与实现_第4页
一种模拟文件系统的设计与分析模拟文件系统的设计与实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种模拟文件系统的设计与分析模拟文件系统的设计与实现 摘要:在深入研究了多个实用文件系统的功能和实现原理的基础上,用一个文件模拟硬盘,采用多级目录结构,对文件实行按名存取,利用超级块对系统资源进行管理,利用对i节点的操作来实现对文件的各种操作,从而实现了一个小型文件系统。 关键词:文件系统;索引节点;超级块 :TP319:A:16727800(xx)008008103 作者简介:何俊(1982-),男,硕士,中国船舶重工集团公司第七一二研究所助理工程师,研究方向为计算机控制和电力电子技术;李松谭(1985-),男,硕士,中国船舶重工集团公司第七一二研究所工程师,研究方向为计算机控制和单片机程序开发。 1系统设计的基本思想 如同一般的文件系统,这个模拟的文件系统也由一个超级块(super_block)来管理。超级块包含文件系统中的基本信息,如系统的容量,数据块的大小,文件名的最大长度,可用块表,可用i节点表,省去了一些不重要的数据成员,如超级块上锁标志等。超级块用来管理文件系统资源,而i节点则使用这些资源,每个文件或目录都对应一个i节点,但两者的i节点属性并不完全相同,鉴于此,系统并没有把文件和目录区别对待,在i节点的属性中有文件类型这一数据成员,对于类型为目录的文件,只需简单地将其数据块地址设为空。显然,这样简化了系统的设计。每个文件或目录都对应一个系统中独一无二的i节点编号。有了超级块和i节点,就可以在此基础上实现用户的操作命令,例如创建目录,只需超级块为之分配一个可用的i节点,并在当前工作目录的文件入口栏一项中添加这个i节点编号。文件系统的工作流程与流程描述如图1所示。 图1文件系统的工作流程 2文件系统的具体设计 2.1超级块的设计与实现 超级块的数据结构设计如下: 超级块(super_block) class super_block public: super_block(); super_block(); const int get_fs_size() const;/返回文件系统大小,即“硬盘”大小 const int get_block_size() const;/返回块的大小 const int get_max_file_num() const;/返回最大文件数 const int get_max_fn_len() const;/返回文件名的最大长度 int get_free_block();/取一个未用块 int get_free_inode() ;/分配一个i节点 const bool get_modified() const;/超级块是否被修改,本系统未用 void change_modified();/设置修改标志 const bool get_lock() const;/超级块是否上锁,本系统未用 void change_lock();/改变上锁标志 void add_free_inode(int inode_num);/回收i节点 void add_free_block(int block_num);/回收块 int get_bt_size();/返回系统中可用块的数目 int get_it_size();/返回系统中未用i节点的数目 private: const intFS_SIZE;/文件系统的容量,即“硬盘”大小 const intBLOCK_SIZE;/块(用于存放文件数据)大小 const intMAX_FILE_NUM;/最多可容纳的文件数 const intMAX_FN_LEN;/文件名的最大长度 vectorintfree_block_table;/存储可用的块编号 vectorintfree_inode_table;/存储可用的i节点号 boolis_modified;/文件系统修改标志 boolsuper_lock;/文件系统上锁标志 超级块中包含了文件系统的基本信息,如文件系统的容量、块大小、最多可容纳的文件数等。磁盘空间的管理也是通过超级块来实现的,当新建一个文件或者目录时,超级块为新建的文件或目录分配一个新的i节点号,如果是正规文件,还要为其分配一定的数据块,而如果是目录则不用分配数据块。分配过后,从vector中删除已经分配的i节点号与数据块编号。删除文件或目录时则刚好与其相反,收回原有文件或目录的i节点号与数据块编号,这样就完成了简单的磁盘管理。 超级块作为系统资源的管理者,包含了文件系统的基本信息:如表1所示。 2.2i节点的设计与实现 本文件系统包含的文件分为两类,正规文件与目录文件。 表1超级块属性 为了对文件实现良好的操作,在设计时决定了为每个文件都分配一个独一无二的i节点项,这个i节点项中包含了两个大的方面即:i节点号与文件属性。 i节点项的数据结构设计如下: i节点(inode) class inode public: inode(); inode(const inode& in); inode();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论