首页 > 其他分享 >20 文件系统的格式化操作

20 文件系统的格式化操作

时间:2023-05-01 21:46:08浏览次数:26  
标签:rfs 储存 格式化 函数 文件系统 逻辑 根目录 20

文件系统设备:

使用4MB内存空间模拟真实的储存设备,rfsdevext_t 结构表示,保存了内存空间的地址和大小;

new_rfsdevext_mmblk 函数分配了一个内存空间,初始化了一个 rfsdevext_t 结构实例化变量;该结构的地址放在了device_t 结构的 dev_extdata 字段中;

rfs_entry 驱动函数放在驱动表中,文件系统程序才可以运行;函数实现了分配device_t 结构并进行初始化,调用rfs_set_device 函数实现设置文件系统类型以及设备名称;接着把设备加入到驱动程序中,向内和注册设备;

文件系统格式化:

格式化操作:在储存设备上创建文件系统;文件系统的超级块、建立用于管理储存设备的位图,最后建立根目录,这样才能最终实现在储存设备上创建文件系统;

建立超级块:

初始化超级块的数据结构,并把它写入到储存设备的第一块逻辑储存块;

create_superblk 函数:现在内存缓冲区中建立文件系统的超级块;调用 rfssublk_t_init 函数实现rfssublk_t 结构的指针指向缓冲区并初始化;最后调用wirte_rfsdevblk函数把内存缓冲区的数据写入到储存设备中;

write_rfsdevblk 函数中 先调用 ret_rfsdevblk 函数 根据块号 返回储存设备的块地址;接着复制数据到逻辑储存块;

建立位图:

位图:哪些逻辑储存块空闲,哪些被占用;

create_bitmap 建立位图函数:位图块的块号和储存介质的逻辑储存块总数,都保存在超级块中,要先获取超级块、然后读取逻辑储存块函数,把缓冲区中的数据写入到储存介质中的第bitmapblk个逻辑储存块中,即位图块中;然后释放逻辑块函数;

建立根目录:

根目录是一种文件,在这个逻辑储存块的首个512字节空间建立fimgrhd_t 结构,即文件管理头数据结构;还要把这个逻辑块的块号储存在超级块中的rfsdir_t 结构,同时修改该 rfsdir_t 结构中的文件名为 “/";

create_rootdir 建立根目录函数;首先,分配一块新的逻辑储存块。接着,设置超级块中的 rfsdir_t 结构中的名称以及类型和块号。然后设置文件管理头,由于根目录是目录文件,所以文件管理头的类型为 FMD_DIR_TYPE,表示文件数据存放的是目录结构。最后,回写对应的逻辑储存块即可。

串联:

rfs_fmat 函数,调用上述三个函数封装起来;

init_rfs函数调用 rfs_fmat函数;rfs_entry 函数最后调用init_rfs 函数;

 

后续更新:

测试文件系统:

 

标签:rfs,储存,格式化,函数,文件系统,逻辑,根目录,20
From: https://www.cnblogs.com/xuan01/p/17366739.html

相关文章

  • 2021Business CTF syncopation逆向
    开始将题目拖入工具后,定位到main函数,这里因为ida看伪代码有点头大,这里我就用ghidra来逆向题目伪代码:非常简单就能看出这个程序做了什么voidmain(void){intiVar1;undefined8extraout_RDX;longlVar2;size_t*__n;EVP_PKEY_CTX*ctx;longin_FS_OFFSET;c......
  • 【Linux】文件系统
    1 前言这节我们来简单看一下Linux系统的磁盘、目录、文件。2  Linux文件系统在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在Linux系统中有一个重要的概念:一切都是文......
  • 2023 qbxt 笔记整理
    洛谷P4460n<20,试试状压设\(dp[i][j]\)表示状态为i,最后一个点为j(当前在点j)。枚举当前点为i,要转移的点为k转移:$dp[i|(1<<k-1)][k]+=dp[i][j]$还需要判断一下三点连线在不在同一条直线上。代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inl......
  • 中通快递财报预测:中通快递2023年收入和利润将大幅下降
    市场对中通快递2023年的预测卖方虽然预测中通快递(ZTO)在2023年的表现会很不错,但他们也预计中通快递今年的财务业绩将不会像去年那样好。根据S&PCapitalIQ的数据,卖方预计中通快递2023财年的收入增长率将从2021财年的20.6%和2022财年的17.4%下降到本年度的15.8%(以人民币计算)。与此......
  • 2018年-前端日记
    2018年4月份2018-04-25userAgent相关:判断微信内置浏览器的UserAgent2018-04-26前端相关:流程图制作工具:ProcessOnapi方法的浏览器兼容性问题,可以在这个网站上看:https://caniuse.com/CSS3的兼容性问题,不一定要使用-webkit-,-moz-,-o-,-ms-等私有前缀。可以使用Po......
  • 2022年Web前端开发流程和学习路线(详尽版)
    本文的最新内容,更新于2022-06-27,会在GitHub上同步更新,欢迎star。大家完全不用担心这篇文章会过时,因为随着前端领域的技术更新,本文也会随之更新。前言前端侧重于人机交互和用户体验,后端侧重于业务逻辑和大规模数据处理。理论上,面向用户的产品里,所有问题(包括产品、设计、后端......
  • 2019-推荐文章
    前言记录平时遇到的优质技术文章,按时间先后排序。内容2019-05-11《博客园美化教程大集合----极致个性化你的专属博客(超详细,看这篇就够了)》网上写图文教程的人,还真是贴心。2019-09-06https://www.yuque.com/sxc/front/kvokg4作者在语雀上的系列文章,都值得一看。2019-1......
  • 2019年-前端日记
    2019-04-02Vue屏幕宽度自适应:https://blog.csdn.net/qq_25386583/article/details/77161478https://blog.csdn.net/xuaner8786/article/details/815652192019-04-07控制iframe中的页面只显示一部分:https://blog.csdn.net/iteye_18722/article/details/819185632019-04-09......
  • 2018-推荐文章
    积累平时看到的一些好的前端文章。记录平时遇到的优质技术文章,按时间先后排序。2017-01-20阿里9年,我总结的前端架构演进3大阶段及团队管理心法伟明的推荐,说是对前端开发的价值观形成有良好的影响。2017-07-13前端开发面试题在逛公众号「前端大全」的时候发现的,然后顺......
  • 2022年-前端日记
    2022-03-30有些Mac设备里,Safari浏览器的默认字体竟然是宋体,这太奇怪了。建议在页面的body标签设置字体族的优先级,还是很有必要的:font-family:-apple-system,BlinkMacSystemFont,'SegoeUI','PingFangSC','HiraginoSansGB','MicrosoftYaHei',2022-04-27在flex......