计算机操作系统学习(四、文件管理)
目录
一、什么是文件
1.文件的逻辑结构
(1)顺序文件
(2)索引文件
(3)索引顺序文件
(4)散列文件
2.文件的目录结构
(1)文件控制块FCB
(2)索引节点
(3)目录结构
3.文件共享
(1)硬链接
(2)软连接
4.文件保护
二、文件系统的实现
1.文件系统的层次结构
2.文件系统的实现
(1)目录的实现
三、文件分配方式
1.连续分配
2.链接分配
(1)隐式分配
(2)显示分配
3.索引分配
四、文件存储空间管理
1.空闲表法和空闲链表法
2.成组链接法
3.位示图法
一、什么是文件
1.文件的逻辑结构
文件的逻辑结构包括有结构文件和无结构文件。对于无结构文件,比如就是记事本,查询的话,只能采用穷举的方式。有结构的文件比如excel表格,查询可直接通过行列索引。
下面具体介绍有结构文件的几种类型
(1)顺序文件
数组或者链表,数组是定长的顺序文件,链表是不定长的。
(2)索引文件
引入了索引表,当查询的之后可以直接根据索引表查询,增快了查询效率。
之后索引表还可以增加和删除,这样相当于文件是变长的。
(3)索引顺序文件
索引表里面的地址对应的是一个索引表或者是顺序文件。
(4)散列文件
键值对的方式存取文件。
2.文件的目录结构
目录由三部分构成,文件控制块FCB,索引节点和目录结构
(1)文件控制块FCB
主要包括文件的基本信息:文件名,文件类型
存取控制信息:存取权限
使用信息:更改时间,创建时间等
(2)索引节点
建立一个索引表,通过文件名查询出文件存储的位置
(3)目录结构
知道当前目录下还有那些目录,一个树形结构。
3.文件共享
如何给用户增加或删除文件呢,本质上是增加或者这个用户的索引节点的条目。
(1)硬链接
每个文件都有一个计数器,这个计数器表示被几个用户共享,储存在FCB中,当这个计数器为0的时候,就会删除这个文件。
当一个文件被其他用户共享的时候,这个文件的FCB将这个文件的计数器+1.之后共享的用户的索引节点增加一条信息。
(2)软连接
软连接相当于当前用户新建一个文件,这个文件里面的信息就是共享的文件的地址。
所以这个快捷方式也会有一个索引节点条目,快捷方式文件的FCB的count=1;
4.文件保护
口令保护,加密保护,访问控制
口令保护就是给文件设置个密码,知道这个密码才能拿到文件的地址。
加密保护就是给文件使用加密算法加密,想要知道文件内容必须使用解密算法解密。
访问控制就是给每个用户文件的增删改查的权限。
二、文件系统的实现
1.文件系统的层次结构
第一,用户使用操作系统,比如windows图形化界面,可以点击文件或者目录,这是属于第一层用户调用接口
第二,用户点击一个目录之后,可以查看到目录里面的目录或者文件的相关信息,比如大小,修改时间等,其实是文件的FCB,这部分的查看属于文件目录系统。
第三、查看到文件之后,想要打开文件,需要有权限,没权限打不开,这一部分属于存取控制模块。
第四、打开文件之后,文件的内容怎么被用户 看到,实际上是将文件信息缓冲区的加载到内存中,显示到屏幕上。之后一次可能文件信息缓冲区内容少于文件内容,还要不断的加载,所以通过逻辑地址传递给物理文件系统,之后物理文件系统将数据加载到文件信息缓冲区。
第五、物理文件系统,接收到逻辑文件系统的逻辑地址,之后转化成物理地址,读取磁盘中的信息,并把信息传递给文件信息缓冲区。
2.文件系统的实现
(1)目录的实现
目录包括FCB,目录结构,索引结点。但是这些内容也需要有存储的地址,
使用哈希算法,输入文件名,输出对应的索引数组的索引号,之后查找到该目录文件的内容梭子啊地址。
三、文件分配方式
磁盘的读写有个最小大小,一般是4K。磁盘就是按照这4K,之后有很多索引,每个索引占领4K
1.连续分配
将文件的内容按照顺序在磁盘上。记录文件内容的位置的时候,只需要记录起始块号和长度。
缺点是由于连续存储,容容易产生磁盘碎片。比如磁盘本来剩余空间是1G的,但是这1G没有连在一起,导致没办法放下1G内容。
2.链接分配
优点是不会产生磁盘碎片,但是会占用额外的空间
(1)隐式分配
在磁盘的每个块里面,不仅记录了当前的内容,还记录了下一个块号的索引。
索引节点中储存的不再是起始块号和长度了,存储的是其实块号和结束块号。
当读取一个文件的时候,从起始块号开始,不断的找下一个块号,找到终止块号了,就算结束了。
(2)显示分配
有一个文件分配表,告诉当前块号的下一块号的索引。如果是-1,表明当前文件已经结束了。如果是-2,表明当前块号属于空闲状态。
这个文件分配表整个磁盘只有一份,藏在磁盘的固定位置,当操作系统运行的时候,自动加载到内存里面。
3.索引分配
每个文件可以通过索引节点拿到索引表的块号。
给每个文件分配一定的磁盘块号专门存这个文件的存储块号的位置。
1个块4K,可以存1024个块。也就是4MB。如果文件内容更多,需要用更多级别的索引表。
四、文件存储空间管理
磁盘分目录区和文件区,文件区存文件内容,目录区存目录内容,如FCB等。
表征空闲盘块肯定需要数据结构和存储空间,这个数据结构也存储在磁盘的某个特定位置。
1.空闲表法和空闲链表法
空闲表法直接搞出来一个空闲盘块表。每行表示一个连续的空闲盘块。包括起始块号和盘块大小。
空闲链表法。每个空闲盘块里面存储和他相邻的另外一个空闲盘块号。
也可以和空闲表结合起来。存储再加一个当前盘块连续空闲的盘块号,之后后面加上下一个空闲盘区。
2.成组链接法
从磁盘划分出一些块,这些块用来储存空闲空间的索引。
这些块每个块存储的空闲空间的数量一样,除了最后一个。
由于空闲空间很大,所以这些存储空闲空间的块很多,我称为f1,f2,f3等等。
对于f1,他的第一个数据,也就是栈底部存储了f2的数据存储的盘块。依次类推。
之后一个超级块,加载到磁盘中的特定的位置,在运行时候加载到内存中。
通过超级块,就可以找到f1的存储块号,拿到f1的空闲块。之后通过f1可以找到f2的存储块号,拿到f2的空闲块。。。。。
3.位示图法
搞一个二维矩阵,记录每个块号的free还是被占用。如果free就是0,否则是1,通过查询这个矩阵就可以看出来那些块被占用,那些块是free。