首页 > 原创 > 正文

20 文件系统的格式化操作

来源:博客园 2023-05-01 22:11:36

文件系统设备:

使用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 函数;

后续更新:

测试文件系统:

标签:

编辑:

最近更新

热点

2023年4月27日,中国家电及消费电子博览会(简称AWE),在上海新国际博览中心如期开幕。本次AWE以智科技、创未来为主题,汇聚众多全球顶尖科技企

详细>>

2023年4月8日(上海)——黑马原力在上海徐汇滨江进行了品牌全球首发。品牌首款MPS产品G60小黑在发布会现场以自动驾驶的方式闪亮登场,点燃

详细>>

CB-FH52是爱普生推出的3LCD商务投影机。作为新一代的商务投影机,CB-FH52具有高达4000流明的色彩亮度,投屏画面明亮清晰、色彩鲜艳,一经推

详细>>

2023年2月16日,由流媒体网、易目唯文化主办,黑龙江龙网视传媒有限公司协办的第七届金屏奖暨2022年度中国智能视听与科技创新产业盛典在哈

详细>>

2月14日,首届华彩杯算力基础设施应用创新大赛(以下简称大赛)在京正式启动。中国工程院邬贺铨院士、张宏科院士,工信部信息通信发展司一级巡

详细>>

2023年1月13日,2022(第六届)中国行业数字化年度风云榜(以下简称2022风云榜)评选结果正式发布。本届风云榜由信息化观察网组织发起,以5

详细>>