计算机操作系统学习(四、文件管理) - 指南
目录
一、什么是文件
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.索引分配
每个文件可以依据索引节点拿到索引表的块号。
给每个文件分配一定的磁盘块号专门存这个文件的存储块号的位置。
通过4MB。如果文件内容更多,需用更多级别的索引表。就是1个块4K,能够存1024个块。也就

四、文件存储空间管理
磁盘分目录区和资料区,文件区存文件内容,目录区存目录内容,如FCB等。

表征空闲盘块肯定必须数据结构和存储空间,这个数据结构也存储在磁盘的某个特定位置。
1.空闲表法和空闲链表法
空闲表法直接搞出来一个空闲盘块表。每行表示一个连续的空闲盘块。包括起始块号和盘块大小。

空闲链表法。每个空闲盘块里面存储和他相邻的另外一个空闲盘块号。
也可以和空闲表结合起来。存储再加一个当前盘块连续空闲的盘块号,之后后面加上下一个空闲盘区。

2.成组链接法
从磁盘划分出一些块,这些块用来储存空闲空间的索引。
这些块每个块存储的空闲空间的数量一样,除了最后一个。
由于空闲空间很大,所以这些存储空闲空间的块很多,我称为f1,f2,f3等等。
对于f1,他的第一个数据,也就是栈底部存储了f2的信息存储的盘块。依次类推。
之后一个超级块,加载到磁盘中的特定的位置,在运行时候加载到内存中。
利用超级块,就可以找到f1的存储块号,拿到f1的空闲块。之后通过f1能够找到f2的存储块号,拿到f2的空闲块。。。。。

3.位示图法
通过搞一个二维矩阵,记录每个块号的free还是被占用。如果free就是0,否则是1,通过查询该矩阵就能够看出来那些块被占用,那些块是free。


浙公网安备 33010602011771号