磁盘的基础知识
.txt用记事本这个应用程序打开,文件最重要的属性就是文件名了
保护信息:操作系统对系统当中的各个用户进行了分组,不同分组的用户对文件的操作权限是不一样的
文件的逻辑结构就是文件内部的数据/记录应该被怎么组织起来:
一个块(block)是两个扇区,一个扇区512字节
文件的物理结构探讨的是文件这些数据在物理上是怎么存放怎么组织的,而文件的逻辑结构是指文件的各个记录在逻辑上是什么样的组织关系的问题
文件的逻辑结构
串结构直接插到末尾就可以了
为了减少磁盘的io次数,OS会管理一个日志文件,用于记录对文件当中各个记录的修改信息,然后每隔一段较长的时间再把这些信息统一地合并到外存当中的文件数据当中,比如每隔10min/1h才合并一次,这样就可以减少采用顺序存储的顺序文件进行增删改所带来的开销了
索引顺序文件的索引表是一个定长记录的串结构的顺序文件
文件目录
每个文件对应一个FCB
文件控制块的有序集合就组成了文件的目录:
用户文件目录由该用户文件的FCB组成
缺点:用户无法对文件进行分类
.也是一个文件目录项
树形目录结构不便于实现文件的共享,因此提出了无环图目录结构
文件的物理结构
现在需要连续地读3个黄色的块,就需要把磁头放到第一个块的位置,之后移动到第二个块的位置,然后再移动到第三个位置;而紫色的话还要多移动好多块
结论:物理上采用连续分配的文件不方便拓展
FAT(文件分配表),开机时FAT读入内存,一个磁盘仅设置一张FAT,根据FCB当中的起始块号
由于FAT常驻内存,所以查FAT并不需要读磁盘
逻辑块号》物理块号的转变:
三次读磁盘操作:一级索引表读入内存、二级索引表读入内存、最终要访问的目标数据块
小文件的读取如何提高效率?
了解即可,不用细看:
文件:无结构文件、有结构文件
有结构文件由一条条的记录组成(顺序文件、索引文件、索引顺序文件)
文件存储空间的管理
空闲表、位示图等数据结构也存储在目录区当中
inode就是文件索引表+其他内容
位视图法连续、离散的情况都适用:
超级快充当了链头的作用:
文件的基本操作
在Windows当中软链接就是.lnk文件:
软连接失效:
软连接的速度需要读io,比硬链接的速度要慢
md5不是加密算法,他是用来校验的
文件系统的层次结构
设备管理模块是最接近硬件的
文件系统的建立
文件系统在外存当中是如何一步步建立的?
磁盘刚生产出来的时候需要划分扇区——物理格式化,同时检测有没有坏扇区,如果有坏扇区的话,就用备用扇区来替代坏扇区
逻辑分区,就是一个个的逻辑卷
灰色部分是逻辑格式化之后填充进去的内容,白色为空白,只有新建文件之后这些部分才会慢慢地被填充数据
Unix文件系统当中的所有索引节点都是连续存放在i节点区的
近期访问的文件会被缓存在内存当中
之后就可以执行read(fd,xxx,xxx)操作,一步步打开文件A了
虚拟文件系统
不同的存储设备(U盘,移动硬盘,磁盘)他里面的文件系统格式可能并不相同
统一接口:
特点2:要求底层的文件系统要实现VFS规定好的接口
存在问题:虚拟文件系统在内存当中要使用不同的数据结构来表示来自不同文件系统的文件的信息
不管你来自什么文件系统,VFS都会把这个文件相关的信息复制到vnode节点当中,这样虚拟文件系统就可以用一个统一的数据结构vnode来表示任何一个文件的信息,无论文件存放在哪一个文件系统当中
vnode只存在于主存当中,而inode即会被调入内存,也会在外存当中存储
打开文件后同时需要将vnode的功能指针指向具体文件系统的函数调用接口
文件系统挂载:如何将一个新的文件系统挂载到OS上
比如插上一个U盘,U盘的文件系统就要挂载到电脑的操作系统上,也就是要挂载到本地OS的VFS里面
挂载点:一个新加入的文件系统需要把他挂载到一个特定的位置,比如某一个父目录下面,在Windows当中挂载到和C盘D盘平级的一个可移动磁盘H当中,在macOS挂载点是:\Volumn