用户接口
:文件基本操作
那部分的内容文件目录系统
:文件目录
那部分的内容存取控制模块
:文件保护
那部分的内容逻辑文件系统和文件信息缓冲区
:文件逻辑结构
那部分的内容物理文件系统
:文件物理结构
那部分的内容辅助分配模块
:文件存储空间管理
那部分的内容设备管理模块
:磁盘管理
那部分的内容逻辑格式化,又叫高级格式化
逻辑格式化会把磁盘分为一个一个的分区
,又叫一个一个的分卷
,也叫卷Volume
磁盘被分为多个分区,每个分区的大小是多少,地址范围是哪里到哪里,这样的信息就需要用分区表
来记录,分区表其实就是一个数据结构,说明了在这个磁盘里面每一个盘/每一个分区分别占多大的空间以及每个分区的地址范围
在每个分区当中可以建立各自独立的分区系统,比如我们在C这个分区里面可以建立一个Unix文件系统,其内部结构如此:
引导块:负责开机的一系列操作
超级块:成组链接法中便于迅速找到这个磁盘分区里边的所有空闲块
空闲空间管理:比如位示图,可以迅速判断某一个磁盘块是否空闲(注意和超级块区别,超级块的作用更多的是迅速找到若干个空闲的磁盘块)
i 结点区:就是我们所谓的索引结点,每个文件都会有一个与之对应的索引结点,Unix文件系统当中所有的索引结点都是连续存放在 i 结点区的,可以把这个区域认为就是一个超大的数组,而数组的元素就是一个一个的索引结点,我们很容易通过一个索引结点的下标迅速定位到一个索引结点
根目录:当我们完成了逻辑格式化之后根目录也会被建立起来,因为任何一个文件系统都必须从根目录出发,来建立新的下一级目录或者存储新的文件
所以逻辑格式化之后,C盘中灰色的部分就是已经有实际数据的部分,这是逻辑格式化填充进去的一些东西;而白色的区域会用于保存其他文件和其他目录,这片区域在逻辑格式化之后暂时为空的,只有你新建了文件或者新建了其他的目录之后这些部分才会慢慢被填充上数据
系统打开文件表
中,表示这个文件被打开,同时设置其打开计数为1,这意味着当前有一个进程正在打开A这个文件进程打开文件表
,操作系统需要在它的进程打开文件表当中新建一个条目,同时返回这个条目的一个文件描述符
进程打开文件表
就可以找到系统打开文件表
当中对应的条目,而在这个条目当中就可以找到这个文件所对应的FCB了虚拟存储系统VFS
UFS文件系统和FAT文件系统的目录项格式是有很大的差别的,这就意味着如果虚拟存储系统面对着不同的文件系统,在打开文件后在内存表示的文件目录项信息各不相同
为了解决这个问题,虚拟文件系统在我们打开了一个文件之后,虚拟文件系统就会给这个文件在主存中新建一个vnode
,又叫v结点
,里面包含着文件各种各样的信息,不管文件来自什么文件系统,在文件被打开之后都会把这个文件相关的信息给复制到这个vnode结点当中,这样的话虚拟文件系统就会用一个统一的数据结构vnode来表示任何一个文件的信息
注意vnode和inode的区别:vnode只存在于内存当中,每一个被打开的文件在内存中都会有一个与之对应的vnode;但是inode即会被调入内存同时在外存中也会存储inode,如果我们此时打开的文建刚好实在UFS文件系统当中,那么我们找到这个文件所对应的目录项之后,会把文件的inode从外存调入内存,然后再内存中新建了一个vnode,inode里的各种信息会被复制到vnode里面
函数功能指针其实是指向了对应文件系统的函数功能列表
挂载表
的数据结构,表里面包含了每个文件系统的相关信息,如格式、容量大小等信息挂载点 mount point
,也就是将新文件系统挂载在某个父目录下;比如Windows操作系统中,U盘插入后会对应一个新的盘符H,和C、D、E、F盘平级,只有确定了新文件系统挂载的位置,那接下来我们才可以正常的访问和使用这个新的文件系统