项目实战:从0到1写FAT32文件系统资源概述:

本课程将带着大家,从零开始,一行一行代码把FAT32文件系统给实现出来,直接动手写代码,从最基础的磁盘读写开始,一步步把分区解析、目录遍历、文件读写、文件创建删除、目录创建删除、分区格式化这些功能全部实现出来。最后你得到的,是一个真正能用的、运行在自己代码里的FAT32文件系统。
主要内容:
第一阶段:搭建基础框架,把磁盘操作跑通
一开始不会直接讲文件系统,而是先搭好工程结构,写一个虚拟磁盘驱动。这一步的目标是让代码能够读写磁盘扇区,有了这个基础,后面所有的工作才能展开。我们会把代码分层,把磁盘操作接口封装好,这样后面改起来也方便。
第二阶段:解析分区,弄清楚磁盘上的数据怎么分布的
拿到一块磁盘,首先得知道它分了几个区,每个区从哪开始到哪结束。这一部分会解析主分区和扩展分区,把分区表里的信息读出来。然后深入到FAT32分区内部,加载FAT表、定位根目录,最后实现列出根目录下所有文件的功能。看到自己写的代码能把U盘里的文件名打印出来,那种感觉还是挺踏实的。
第三阶段:实现文件操作,让文件能读能写
这一部分是课程的重头戏。我们会实现文件的打开、读取、写入、定位、重命名、修改时间这些基础功能。处理文件名的时候,会遇到8.3格式的短文件名,也要处理长文件名。写入数据的时候,可能会遇到文件需要扩容的情况,这时候就要操作FAT表,把新的簇分配给文件。文件创建、目录创建、文件删除、目录删除这些功能也都会一步步实现,包括空目录删除和非空目录删除的区别,都会讲清楚。
第四阶段:分区挂载,让系统支持多个分区
一个磁盘可能有多个分区,我们需要把每个分区都管理起来,支持分区挂载和卸载。这一部分会让整个系统变得更完整,更像一个真正的文件系统模块。
第五阶段:分区格式化,从空白磁盘开始
有了读写功能之后,我们还实现了格式化功能。也就是说,你可以拿一块空白的磁盘,用自己写的代码把它格式化成FAT32格式,写入DBR、初始化FAT表、创建根目录、初始化FSINFO区,最后设置分区表类型。这样从头到尾把一块磁盘变成可用的文件系统,整个流程就完整了。
第六阶段:缓冲区管理,提升读写效率
前面的实现是比较直接的,每次读写都直接操作磁盘。实际的文件系统不能这么干,因为磁盘IO太慢了。这一部分我们会引入缓存机制,设计缓存块、缓存池,把常用的数据缓存起来,减少磁盘访问次数。然后改造之前写的所有接口,让它们都走缓存,最后再处理一些边界情况,比如连续读写多个扇区时的缓存问题,以及簇链操作中的缓存使用。这一步做完,整个文件系统的性能和健壮性会提升很多。
目录结构:
从0到1写FAT32文件系统-深入学习文件系统原理
├─ 001.第0.00 课程准备_课程简介.mp4
├─ 002.第0.01 课程准备_快速了解FAT32文件系统.mp4
├─ 003.第0.02 课程准备_资料及源码下载.mp4
├─ 004.第1.00 驱动框架_建立基本工程.mp4
├─ 005.第1.01 驱动框架_代码结构分层.mp4
├─ 006.第1.02 驱动框架_实现虚拟磁盘驱动.mp4
├─ 007.第1.03 驱动框架_实现磁盘操作接口.mp4
├─ 008.第1.10 分区解析_结构体打包.mp4
├─ 009.第1.11 分区解析_解析主分区数量.mp4
├─ 010.第1.12 分区解析_解析扩展分区数量.mp4
├─ 011.第1.13 分区解析_解析分区信息.mp4
├─ 012.第1.20 FAT解析_加载FAT32信息.mp4
├─ 013.第1.21 FAT解析_建立XFAT结构.mp4
├─ 014.第1.22 FAT解析_列出根目录的部分文件.mp4
├─ 015.第1.23 FAT解析_列出根目录的所有文件.mp4
├─ 016.第1.24 FAT解析_打印文件内容.mp4
├─ 017.第2.30 文件操作_打开根目录.mp4
├─ 018.第2.31 文件操作_简单打开子文件.mp4
├─ 019.第2.32 文件操作_8_3格式文件名的打开.mp4
├─ 020.第2.33 文件操作_实现根目录的文件遍历.mp4
├─ 021.第2.34 文件操作_过滤特定类型的目录项.mp4
├─ 022.第2.35 文件操作_实现子目录的打开.mp4
├─ 023.第2.36 文件操作_添加错误码接口.mp4
├─ 024.第2.37 文件操作_实现文件读取.mp4
├─ 025.第2.38 文件操作_实现文件定位.mp4
├─ 026.第2.39 文件操作_修改文件名称.mp4
├─ 027.第2.40 文件操作_修改文件时间.mp4
├─ 028.第2.41 文件操作_实现文件的基本写入.mp4
├─ 029.第2.42 文件操作_实现文件的扩容写入1.mp4
├─ 030.第2.43 文件操作_实现文件的扩容写入2.mp4
├─ 031.第2.44 文件操作_实现文件的创建.mp4
├─ 032.第2.45 文件操作_实现目录的创建.mp4
├─ 033.第2.46 文件操作_实现文件的删除.mp4
├─ 034.第2.47 文件操作_实现空目录的删除.mp4
├─ 035.第2.48 文件操作_实现非空目录删除.mp4
├─ 036.第2.49 文件操作_实现设置文件大小.mp4
├─ 037.第2.50 分区挂载_多分区链接管理.mp4
├─ 038.第2.51 分区挂载_实现分区挂载.mp4
├─ 039.第2.60 分区格式化_借用模板的写入.mp4
├─ 040.第2.61 分区格式化_替换部分DBR数据.mp4
├─ 041.第2.62 分区格式化_自定义DBR数据写入.mp4
├─ 042.第2.63 分区格式化_初始化FAT表.mp4
├─ 043.第2.64 分区格式化_创建根目录.mp4
├─ 044.第2.65 分区格式化_初始化FSINFO区.mp4
├─ 045.第2.66 分区格式化_设置分区表中类型.mp4
├─ 046.第3.00 缓冲区管理_概述.mp4
├─ 047.第3.01 缓冲区管理_缓存块结构定义.mp4
├─ 048.第3.02 缓冲区管理_添加obj类型.mp4
├─ 049.第3.03 缓冲区管理_添加缓存池类型.mp4
├─ 050.第3.04 缓冲区管理_实现缓存池读写接口.mp4
├─ 051.第3.05 缓冲区管理_改写disk层的缓存管理.mp4
├─ 052.第3.06 缓冲区管理_改写FAT及FILE的缓存管理.mp4
├─ 053.第3.07 缓冲区管理_修复连续读写扇区的缓存管理.mp4
├─ 054.第3.08 缓冲区管理_为xfile和xfat添加缓存管理.mp4
├─ 055.第3.09 缓冲区管理_添加fsinfo区读写支持.mp4
├─ 056.第3.10 缓冲区管理_使用缓存查询下一簇.mp4
└─ 057.第3.11 缓冲区管理_使用缓存实现簇链扩充和回收.mp4

评论(0)