今天看鸟哥linux私房菜文件系统,突然想windows的文件系统是怎样的。以前只是FAT,NTFS这些浅显的东西,还真没有仔细研究过。于是百度之。(以前学操作系统时不认真,考研时好像又不考文件系统这章,没什么印象了)。
文件系统是操作系统下与目录相关的一个子系统(类似于OS是总经理,而操作系统是一个部门经理,当然数据库管理系统也是一个部门经理)。那么文件系统具体做什么呢:文件命名,文件储存(磁盘空间管理),文件访问(创建,读,写,删)。
文件系统的功能:1. 实现目录结构(你该怎样去找文件和存文件)(树型结构)。2. 文件系统的可恢复性。 3. 安全(权限)。 4. 坏块管理(你要知道磁盘哪块不能用了)。 5. 磁盘配额(你要知道磁盘现在的使用情况)。
文件系统的标准“好像”是有等级的。1. POSIX(Portable Operation System Interface)(linux也遵循这个)。2. Win32,这是POSIX的子集。 3. DOS,这是Win32的子集。
下面介绍几种文件系统(注意上面的是标准,而并非真正的系统):
1. FAT文件系统
FAT文件系统以FAT表的形式对磁盘空间进行管理。FAT32与FAT16是有区别的,不仅仅是位数的区别。比如,FAT16的根目录的位置和大小是固定的,因此根目录的文件个数有限,而FAT32根目录文件作为普通文件。
引导扇区:(1)引导代码。 (2)BPB参数。引导代码可以在开机时定位操作系统。BPB参数记录了分区的参数。
每个FAT卷都有至少一个FAT表(一般有2个相同的),每个FAT表有基于FAT项,每个FAT项记录对应簇的使用情况(首个簇号为2)。簇是大小相等的为2的幕个扇区的块,操作系统根据文件系统类型和分区大小在格式化时指定。
FAT卷中,每个文件都有一个目录项,记录了文件的信息(目录也被认为是文件)。
比如访问下面这个路径时:c:\d1\d2
(a)从引导扇区获得根目录起始簇
(b)在根目录中,查找FAT表,得到d1的目录项
(c)在d1目录项中,找到d1在卷中的位置(访问FAT表)
(d)在d1目录中,找到d2的目录项
(e)在d2目录项中,找到d2在卷中的位置(访问FAT表)
2. NTFS文件系统
NTFS文件系统好像比FAT32复杂的多。