精华内容
下载资源
问答
  • 简单文件系统的实现

    2020-07-10 16:45:36
    简单文件系统的实现 夏斯华 xiasihua00001@hotmail.com 引言: 文件管理是操作系统中四大资源管理中重要一项。通过实现简单的文件系统的这样的方式,加深对其原理的理解。由于文件系统的博大和考虑的东西很多,再...
                              **
    

    简单文件系统的实现

                                   夏斯华 xiasihua00001@hotmail.com
    

    引言:
    文件管理是操作系统中四大资源管理中重要一项。通过实现简单的文件系统的这样的方式,加深对其原理的理解。由于文件系统的博大和考虑的东西很多,再加上自己时间和能力的局限性,故实现一个较为简单的文件系统。

    概述:
    文件系统主流的不乏有windows的FAT,FAT32,NTFS,以及Linux的等。由于多种原因,我不可能实现很复杂的。在此,规定如下:

    文件存储空间的管理:内存中开辟一块空间作为文件存储器,利用FAT表与位示图相结合的方式实现存储空间的分配和回收。文件系统的现场由真正的外存文件实现。

    目录结构:原想树型结构较为复杂,想先采用二级目录结构(主文件目录、用户文件目录),结构包含:文件名、物理地址、长度等。但实际开发中采用了一种巧妙的方式,于是就采用了类似Linux系统树型目录结构。

    物理结构:链接文件结构。

    逻辑结构:流式文件(字符序列的集合,非“非结构的记录式文件”)。

    存取方式:顺序存取。(有读写指针)。

    实验内容:
    算法和数据结构
    FCB文件、目录控制信息

    struct fcb{

       char szName[256];//文件、目录名
    
       int  iIndex;//索引
    
       int  iFatherIndex;//上级目录的索引 根目录为-1
    
       //int  iShared;//共享计数
    
       int  Type;//catalog、file两者中一个
    
       //bool IsRoot;//是否为根目录
    
    int  iNextBlock;//所指第一块内存地址块 即首址  目录的话就为0
    
       int  iLength;//文件长度  目录为0
    
       int  state;//使用情况
    
       int  IsOpend;//是否为打开状态(只有在state为1,Type为 文件时才有效)打开为1
    

    }FCB[FatLength];//文件或目录的控制信息

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> int Fat[FatLength];//FAT表和位示图的结合 用于分配物理块和空闲块的回收 **实现功能:** 该文件系统提供的操作: 格式化:对文件存储器进行格式化,即按照文件系统的结构对存储空间进行布局,并在其上创建根目录及其用于管理文件存储空间等的数据结构。 Format 创建子目录 mkdir 删除子目录 rmdir 显示目录 pwd 更改当前目录(回到上节目录) cd.. 创建文件 mk 打开文件 open 关闭文件 close 写文件 vi 读文件 cat 删除文件 rm **程序介绍:** 本文件系统采用了VC++6.0(MFC)开发。已经打上静态库(所以可执行文件Filesystem_static较大),假使执行机器应许(包含有MFC类库MFC42d.dll)即可用共享库方式Filesystem_share执行可执行文件。 **界面截图如下:** 界面风格有点象Linux的命令行。上面已经有所说明。执行可执行文件,进入界面如上所示。显示当前目录名/root之后有命令行提示符>.可以输入命令回车就可以。具体支持哪些命令可以help或?回车查看详情. 下面试一试多节目录管理: 建立如下结构 只要输入下列命令就可。 要想在文件f2中写写内容,然后显示; 还有其他的功能有待读者自己去尝试! **不足和改进:** 由于多种原因,没有解决文件目录同名应许问题。 文件内容修改功能没有增加。 **搬砖路上,希望对你有帮助!可以关注一下哟,持续更新!!** 参考文献: 操作系统教师讲义 原文链接:https://blog.csdn.net/xiasihua000001/article/details/274211
    展开全文
  • 杭电 操作系统课程设计 简单文件系统的实现 杭电 操作系统课程设计 简单文件系统的实现 杭电 操作系统课程设计 简单文件系统的实现
  • 杭电简单文件系统的实现报告 内含全注释代码 每行代码都有注释 而且已经整理成报告 可直接上交
  • 操作系统:简单文件系统的实现(实例代码) 原文链接:https://blog.csdn.net/westbrookliu/article/details/81868985 废话不多说,直接上代码 出于简单起见,该文件系统是基于内存的,以下是各个文件: 1、内存资源...

    哈喽,欢迎来到小朱课堂,下面开始你的学习吧!

    操作系统:简单文件系统的实现(实例代码)
    原文链接:https://blog.csdn.net/westbrookliu/article/details/81868985
    废话不多说,直接上代码
    出于简单起见,该文件系统是基于内存的,以下是各个文件:
    在这里插入图片描述
    1、内存资源管理(Disk.h, Disk.cpp)
    2、文件读写接口(File.h, File.cpp)
    3、主程序(main.cpp, my_shell.cpp)

    目录项数据结构:
    在这里插入图片描述
    一个目录项包含了文件名和文件类型,当文件为目录时,起始盘块指示了目录表所在的盘块号,当文件为文件时,起始盘块指示了FCB所在的盘块号。

    目录表数据结构:
    在这里插入图片描述
    文件控制块数据结构:
    在这里插入图片描述
    完整代码见我的github:

    https://github.com/liu-jianhao/simpleFS
    搬砖路上,希望对你有帮助!可以关注一下哟,持续更新哟! 有问题可以私聊博主,快发表一下你的看法吧!

    展开全文
  • 这是用C语言对于linux下面简单文件系统的实现,实现了二级目录即不同用户共存和一些基本的创建之类的功能。
  • 基于C语言的简单文件系统的实现

    千次阅读 2019-07-23 17:33:01
    1 题目介绍 通过具体的文件存储空间的管理、文件物理结构、目录结构和文件操作...在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁盘上,一遍下次可以将它恢复到内存的虚拟磁盘中 ...

    1 题目介绍

    通过具体的文件存储空间的管理、文件物理结构、目录结构和文件操作的实现,加深对文件系统内部的数据结构、功能以及实现过程的理解。

    1.1 要求

    • 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁盘上,一遍下次可以将它恢复到内存的虚拟磁盘中

    • 文件物理结构可采用显式链接或其他结构

    • 空闲磁盘空间的管理可选择FAT表、位示图或其他办法

    • 文件目录结构采用多级目录结构。为简单起见,可以不使用索引结点,每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护

    • 需要提供一以下操作命令

      1. my_format
      2. my_mkdir
      3. my_rmdir
      4. my_ls
      5. my_cd
      6. my_create
      7. my_open
      8. my_close
      9. my_write
      10. my_read
      11. my_rm
      12. my_exitsys

    点击此处下载文档和源码
     

    展开全文
  • 在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁盘上,一遍下次可以将它恢复到内存的虚拟磁盘中 文件物理结构可采用显式链接或其他结构 空闲磁盘空间的管理可选择FAT表、位示图或其他办法 ...

    今日作业:
    在这里插入图片描述
    在这里插入图片描述
    参考教程:https://www.write-bug.com/article/1714.html

    实验原理

    • 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁盘上,一遍下次可以将它恢复到内存的虚拟磁盘中
    • 文件物理结构可采用显式链接或其他结构
      空闲磁盘空间的管理可选择FAT表、位示图或其他办法
      文件目录结构采用多级目录结构。为简单起见,可以不使用索引结点,每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护

    要求提供以下有关操作:

    format:对文件存储器进行格式化,即按照文件系统 的结构对虚拟磁盘空间进行布局, 并在其上创建根目录以及用于管理文件存储空间等的数据结构。
    mkdir:用于创建子目录 rmdir:用于删除子目录 ls:用于显示目录 cd:用于更改当前目录
    create:用于创建文件
    open:用于打开文件
    close:用于关闭文件
    write:用于写文件
    read:用于读文件
    rm:用于删除文件

    实验内容

    format操作:格式化磁盘
    在这里插入图片描述
    ls操作:列出目录下的所有文件(需要先判断当前路径是否是目录)
    在这里插入图片描述
    mkdir操作:创建文件夹
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    rmdir操作:删除文件夹
    在这里插入图片描述
    在这里插入图片描述
    create操作:创建文件
    在这里插入图片描述
    rm操作:删除文件夹
    在这里插入图片描述
    open操作:打开文件
    在这里插入图片描述
    cd操作:进入新目录
    在这里插入图片描述
    close操作:关闭文件
    在这里插入图片描述
    read操作:读文件
    在这里插入图片描述
    write操作:写文件
    在这里插入图片描述

    运行结果

    • mkdir创建文件夹
      输入mkdir virtual,创建文件夹virtual,
      输入ls查看是否创建成功
      在这里插入图片描述
    • create创建文件
      先输入cd virtual进入virtual文件夹下,然后输入ls查看目录,再输入create t.txt,最后输入ls查看是否创建成功。
      在这里插入图片描述
    • open打开文件
      输入open t.txt进入t.txt文件中
      在这里插入图片描述
    • write写入文件
      输入write进行写入操作,再输入1,1表示截断写,清空全部内容,从头开始写,2表示覆盖写,从文件指针处开始写,3表示追加写,再输入文字内容qqqqqqqq,并以$$结尾,表示写入结束。
      在这里插入图片描述
    • read读取文件
      输入read进行读取文件,显示出之前写的qqqqqqqqq
      在这里插入图片描述
    • close关闭文件
      输入close关闭文件,回到virtual文件夹下。
      在这里插入图片描述
    • exit退出文件系统
      输入exit退出文件系统。
      在这里插入图片描述

    实验心得

    FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及一些其他元数据(简单来说就是文件或文件夹本身的属性)。(具体存储格式可以百度或者Google)跟在目录项之后的是文件或文件夹的具体内容。
    目录项都有规定好的固定长度以及每个位置代表的含义。

    通过此次实验对构建简单的文件系统有了更深入的认识,因为是网上找的代码跟着写的,所以编译过程中有很多的错,也换了很多个教程,大概是因为期末周就很急功近利。最后静下心来去仔细地读代码,一点点去改编译过程中报的错,最后编译成功运行出结果,也很有成就感,真不错。

    附完整代码及运行过程

    链接:https://pan.baidu.com/s/1cCgh1-YLozEDKrtry6_n5A
    提取码:oxx3
    把代码下载到Ubuntu虚拟机中,并运行./a.out就可以进入文件系统。./a.out就是init.c的编译结果。
    在这里插入图片描述


    为什么从word里复制图片每一张图都结了厚厚的电子包浆?????气鼠。另外刘老师的表好好看!

    展开全文
  • 实验内容: 通过对具体文件存储空间管理、文件物理...•new:建立一个新的简单文件系统; •sfs:打开一个简单文件系统; •exit:退出打开的简单文件系统; •mkdir:创建子目录; •rmdir:删除子目录; •l
  • 出于简单起见,该文件系统是基于内存,以下是各个文件:   1、内存资源管理(Disk.h, Disk.cpp) 2、文件读写接口(File.h, File.cpp) 3、主程序(main.cpp, my_shell.cpp) 目录项数据结构:   一个目录项...
  • 为DOS系统设计一个简单的二级文件系统。要求做到以下几点: ①可以实现下列几条命令 LOGIN 用户登陆 DIR 列文件目录 CREATE 创建文件 DELETE 删除文件 OPEN 打开文件 CLOSE 关闭文件 READ 读文件 WRITE 写文件 ...
  • 1 题目介绍 通过具体的文件存储空间的管理、文件物理结构、目录结构和文件操作的实现,加深对文件系统内部的数据结构、功能以及实现...在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,544
精华内容 7,017
关键字:

简单文件系统的实现