windows内核开发学习笔记三十:内核的关键组件之文件系统及存储管理

     在现代操作系统中,文件系统是外部存储设备的标准接口,它为应用程序使用这些设备中的数据提供了统一的抽象。多个应用程序本身可以共享使用这些设备。在windows中,文件系统的接口部分由I/O管理器定义和实现,但是文件系统的实现部分位于专门的一类驱动程序中,当文件系统接收到I/O请求时,他会根据文件格式的规范,将这些请求转变成更底层的对于外部存储设备的I/O请求,通过它们的设备驱动程序来完成原始的I/O请求。因此,文件系统的驱动程序定义了外部存储设备中数据的逻辑结构,使得这些数据可以被操作系统和应用程序使用。

     winows的原生文件系统是NTFS(NT File System),其驱动程序为ntfs.sys。NTFS是专门为Windows设计的文件系统格式,它提供了安全性、可靠性、大容量的支持、长文件名支持,以及可恢复等一系列高级特性,目前广泛应用于windows系统。另一个常用的文件系统格式是FAT(File Allocate Table),这是从DOS时代发展起来的文件系统格式,格式规范相对比较简单,主要用于兼容老版本的操作系统,以及用于移动设备以便跨操作系统传送数据。

     在windows系统中,每个文件系统实例有他自己的设备栈,因而通过插入过滤驱动程序可以过滤文件I/O请求。Windows支持两种形式的过滤驱动程序:一种是直接插入到设备栈中,从而能够看到每一个经过设备栈的文件I/O请求;另一种基于windows提供的过滤管理驱动程序(FltMgr)的I/O过滤框架,称为文件系统小过滤驱动程序,它们并不出现在文件系统设备栈中,而是以回调的方式来响应FltMgr的事件。

   文件系统的底层是对存储设备的管理。大容量存储设备以"分区(Partition)"和“卷(Volume)"来管理整个存储空间。分区是指存储设备上连续的存储区域(连续的扇区),而卷是指扇区的逻辑集合。一个卷内部的内部扇区可能来自一个分区,也可能来自多个分区,甚至来自不同的磁盘。文件系统则是卷内部的逻辑结构。因此,windows的存储管理形成了存储栈,最接近于应用程序的是文件系统,接下来是卷的管理部分,最接近于存储设备的分区管理和磁盘的驱动程序。

        磁盘设备是典型的即插即用的设备,其设备栈和驱动程序符合WDM规范。即插即用管理器在设备列举过程中建立起每个磁盘设备的设备栈。设备栈的最底下是总线驱动程序,最上方是一个分区管理器的驱动程序,负责通知即插即用管理器当前磁盘上有哪些分区,因而系统中的卷管理器可以接收到有关分区创建和删除的通知,这样每个物理分区与卷联系起来了,卷管理器再将卷与文件系统关联起来,就形成了完整的存储栈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jyl_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值