当前位置: 首页 > news >正文

四川建设厅网站 蒋app代理推广平台

四川建设厅网站 蒋,app代理推广平台,那些网站布局好看,网站品牌打造资源下载地址:https://download.csdn.net/download/sheziqiong/85932109 资源下载地址:https://download.csdn.net/download/sheziqiong/85932109 仿 Linux Ext2 的用户级文件系统 目录 文章目录仿 Linux Ext2 的用户级文件系统目录1. 课设要求2. 完成…

资源下载地址:https://download.csdn.net/download/sheziqiong/85932109
资源下载地址:https://download.csdn.net/download/sheziqiong/85932109

仿 Linux Ext2 的用户级文件系统

目录

文章目录

  • 仿 Linux Ext2 的用户级文件系统
    • 目录
    • 1. 课设要求
    • 2. 完成情况
    • 3. 系统设计
      • 3.1. 整体设计
      • 3.2. 实现文件系统的大致步骤
    • 4. 工程实现
      • 4.1. 工程结构
    • 5. 测试
      • 5.1. 编译生成可执行文件
      • 5.2. 帮助及版本信息查看
      • 5.3. 挂载及格式化
      • 5.4. cd 和 ls 功能
      • 5.5. 创建/删除文件或目录
      • 5.6. 写入写出文件
      • 5.7. 磁盘卸载

1. 课设要求

实现一个用户级文件系统。

  • 以一个大文件作为虚拟磁盘,将其作为块设备进行读写;
  • 通过 format 操作,将虚拟磁盘格式化成 Ext2 的文件卷格式;
  • 实现系统调用
    creat
    open
    read
    write
    lseek(seek)
    close
    mkdir
    及其它
  • 能够将文件写入虚拟磁盘,并可完好无损地取出

2. 完成情况

  • 将一个大文件作为虚拟磁盘,当作块设备使用
  • format 该虚拟磁盘使之成为 Ext2 磁盘卷的结构
  • 使用磁盘缓存、superBlock 缓存和 inode 缓存加快访问速度
  • 将外部文件写入虚拟磁盘,并完好取出
  • 使用仿 Linux 的命令行对虚拟磁盘做文件操作

实现的系统调用功能:

  • creat
  • open
  • read
  • write
  • lseek(seek)
  • close
  • eof

实现的用户命令功能:

支持的用户指令有:

  • 【mount】
    功能:挂载磁盘

    用法:mount

    说明:任何一次程序执行,必须先执行 mount!!!

  • 【unmount】
    功能:卸载磁盘

    用法:unmount

    说明:退出程序时可以手动执行,也可以由 exit 指令自动 unmount

  • 【format】
    功能:格式化磁盘

    用法:format

    说明:一块虚拟磁盘 disk.img 使用前必须执行一次.(中途格式化可以将磁盘还原)

  • 【mkdir】

    功能:创建目录

    用法:mkdir dirname

    说明:目前仅支持在当前目录创建子目录,若有重名创建失败

  • 【touch】

    功能:创建新文件

    用法:touch filename

    说明:目前仅支持在当前目录创建新文件,若有重名创建失败

  • 【rm】

    功能:删除文件

    用法:rm filename

    说明:目前仅支持删除当前目录下的文件,注意要删除目录请使用 rmdir

  • 【rmdir】

    功能:删除目录,递归删除该目录下的所有子目录、文件

    用法:rmdir dirname

    说明:删除文件请使用 rmdir

  • 【help】

    功能:显示帮助信息

    用法:help

  • 【version】

    功能:显示作品信息

    用法:version

  • 【man】

    功能:显示命令使用说明(man 暂未支持)

    用法:man

  • 【exit】

    功能:退出程序

    用法:exit

    说明:会自动卸载磁盘

  • 【ls】

    功能:显示目录下的所有文件

    用法:ls path

    说明:path 必须是目录的路径,支持相对地址和绝对地址

  • 【cd】

    功能:改变当前工作目录

    用法:cd path

    说明:path 必须是目录的路径,支持相对地址和绝对地址

  • 【clear】

    功能:清空命令行显示区

    用法:clear

  • 【store】

    功能:高级功能,将外部文件存入虚拟磁盘

    用法:store 外部文件路径 内部文件名

    说明:仅支持存放到当前目录下,外部文件大小不可超过虚拟磁盘大小

  • 【withdraw】

    功能:将虚拟磁盘中的文件提取到外部

    用法:store 内部文件名 外部文件路径

    说明:仅支持提取当前目录下的文件

3. 系统设计

3.1. 整体设计

用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。

VFS 是底层文件系统的主要接口。这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大。有两个针对文件系统对象的缓存(inode 和 dentry)。它们缓存最近使用过的文件系统对象。

每个文件系统实现(比如 ext2、JFS 等等)导出一组通用接口,供 VFS 使用。缓冲区缓存会缓存文件系统和相关块设备之间的请求。例如,对底层设备驱动程序的读写请求会通过缓冲区缓存来传递。这就允许在其中缓存请求,减少访问物理设备的次数,加快访问速度。以最近使用(LRU)列表的形式管理缓冲区缓存。注意,可以使用 sync 命令将缓冲区缓存中的请求发送到存储媒体(迫使所有未写的数据发送到设备驱动程序,进而发送到存储设备)。

这就是 VFS 和文件系统组件的高层情况。

Linux 以一组通用对象的角度看待所有文件系统。这些对象是超级块(superblock)、inode、dentry 和文件。超级块在每个文件系统的根上,超级块描述和维护文件系统的状态。文件系统中管理的每个对象(文件或目录)在 Linux 中表示为一个 inode。inode 包含管理文件系统中的对象所需的所有元数据(包括可以在对象上执行的操作)。另一组结构称为 dentry,它们用来实现名称和 inode 之间的映射,有一个目录缓存用来保存最近使用的 dentry。dentry 还维护目录和文件之间的关系,从而支持在文件系统中移动。最后,VFS 文件表示一个打开的文件(保存打开的文件的状态,比如写偏移量等等)。

3.2. 实现文件系统的大致步骤

文件系统主要负责管理磁盘上的空间,磁盘上至少要包含三部分数据: superblock,inodes 和数据块。

(1) 首先得有一个创建文件系统的工具(如 ext2 文件系统的 mke2fs),用来将磁盘分区格式化成想要的格式,主要是初始化 superblock 和 root inode。

(2) 写一个内核模块,在里面注册自己的文件系统,并且初始化 mount 函数

(3) 当用户在应用层调用 mount 命令时,VFS 就会根据指定的文件系统类型找到我们写的内核模块,并且调用里面的 mount 函数

(4) 在 mount 函数里面读取磁盘上的 superblock 和 root inode

(5) 初始化 root inode 的 inode_operations 和 file_operations,然后返回给 VFS

(6) 这样 VFS 就能根据 root inode 里提供的函数一级一级的往下找到 path 对应文件的 inode

(7) 读取 inode 所指向的数据块(一个或者多个),根据文件的类型,解析数据块的内容。如果文件类型是普通文件,那么数据块里面就是文件的内容;如果文件类型是目录,那么数据块里面存储的就是目录下面所有子目录和文件的名称及它们对应的 inode 号;如果文件类型是软链接,那么数据块里面存储的就是链接到的文件路径。

总的来说,实现文件系统就是怎么在磁盘上组织文件,然后实现 VFS 所要求的 superblock,inode 以及 inode_operations 和 file_operations。

4. 工程实现

4.1. 工程结构

在这里插入图片描述

5. 测试

5.1. 编译生成可执行文件

使用 make 命令编译

在这里插入图片描述

清理编译中间文件

在这里插入图片描述

编译出的可执行文件 user_fs

在这里插入图片描述

在 termital 中输入 ./user_fs 执行 user_fs

5.2. 帮助及版本信息查看

输入

help

查看使用说明

在这里插入图片描述

输入

version

查看版本信息

在这里插入图片描述

5.3. 挂载及格式化

输入

mount

挂载磁盘

在这里插入图片描述

如果之前没有虚拟磁盘,会生成一个虚拟磁盘文件 disk.img

在这里插入图片描述

因为是新磁盘,需要输入下面的命令进行格式化

format

在这里插入图片描述

format 之后的磁盘,是 Ext2 文件卷的格式。并且已经建立了根目录、bin、etc、dev、home 目录。

5.4. cd 和 ls 功能

准备目录结构

在这里插入图片描述
在这里插入图片描述

为了实验,我们先建立测试用的目录树:

在这里插入图片描述

测试 cd 命令,支持相对地址和绝对地址

在这里插入图片描述

测试 ls 命令,支持相对地址和绝对地址

在这里插入图片描述
在这里插入图片描述

5.5. 创建/删除文件或目录

在这里插入图片描述

5.6. 写入写出文件

在外部准备好一个文件,这里以一张图片为例
在这里插入图片描述

通过 store 命令,将图片存入虚拟磁盘

store black_hole.jpg inner_black_hole.jpg

用 ls 指令查看,可以发现成功存入

在这里插入图片描述

为了验证写入写出是不是完好的,我们用 withdraw 命令,将虚拟磁盘中的文件再写出。

withdraw inner_black_hole.jpg black_hole_withdraw.jpg

在这里插入图片描述

用文件资源管理器查看可以发现,从虚拟磁盘中读出的文件(下图中红色框)和原本写入虚拟磁盘的文件(下图中绿色框),完全一样。

在这里插入图片描述

5.7. 磁盘卸载

输入指令

exit

可以退出程序,会自动卸载虚拟磁盘。

下图中的一系列数字表示卸载的时候从虚拟磁盘缓存中刷回虚拟磁盘。

在这里插入图片描述

重新加载磁盘,看看是不是持久化了。这回由于使用的之前的磁盘,不需要格式化,直接 mount 即可,然后 ls 命令查看目录中的文件,发现刚才写入虚拟磁盘的文件还在,持久化成功。

在这里插入图片描述

资源下载地址:https://download.csdn.net/download/sheziqiong/85932109
资源下载地址:https://download.csdn.net/download/sheziqiong/85932109

http://www.lbrq.cn/news/2651347.html

相关文章:

  • 行业网站建设教程软文推广渠道主要有
  • 昆明网站建设一条龙服务交换友情链接的渠道有哪些
  • 三站合一网站建设有域名和服务器怎么建网站
  • wordpress建站教程阿里云seo薪资
  • 开家给别人做网站公司搜索引擎优化自然排名的优点
  • 自己如何做网站优化外贸网站建设设计方案
  • 深圳沙井公司网站建设sem和seo是什么意思
  • 做网站有必要注册商标吗今日国际新闻热点
  • 做网站送商标新闻稿营销
  • 青岛网站建设定制网络营销专业学什么
  • 廊坊做网站的电话宣传推广计划
  • 微信导航网站怎么做的优化网站怎么做
  • 数据库对于做网站的重要性如何免费创建自己的平台
  • nanopi neo做网站刷移动端seo软件
  • 找人做网站都需要提供什么品牌营销策略论文
  • 站长工具推荐谷歌google浏览器
  • 做网站建设怎么找客户乐云seo官网
  • 制作音乐的软件app如何优化百度seo排名
  • 西安网站建设公司云网网络销售管理条例
  • 服务器上的网站不能访问怎么让关键词快速排名首页
  • 政府网站建设分析企业优化推广
  • 易语言做网站登陆个人网站免费域名注册
  • 有哪些做文创产品的网站短链接生成网址
  • 重庆有没有做网站的免费seo网站自动推广软件
  • .电子商务网站建设的核心是网店推广费用多少钱
  • 网站哪家公司好免费b站动漫推广网站2023
  • 手机百度 网站提交现在学seo课程多少钱
  • 买完域名怎么创建网站软文网站发布平台
  • 宝马itms做课网站百度云网盘
  • 网站做测试怎样做佛山关键词排名工具
  • 如何理解SA_RESTART”被信号中断的系统调用自动重启“?
  • RecyclerView 缓存机制
  • 机器学习 K-Means聚类 无监督学习
  • Ubuntu Server 22 虚拟机空间扩容
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • Sum of Four Values(sorting and searching)