操作系统——文件管理

1)什么是文件?

2)单个文件的逻辑结构和物理结果之间是否存在制约关系?

本节内容较为抽象,本节要注意区分文件的逻辑结构和物理结构。

一、文件系统基础

1.文件的基本概念(一切皆文件)

文件(File)是以硬盘位载体的存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。

在系统运行时,计算机以进程为基本单位进行资源的调度和分配。而在用户进行的输入,输出中,则以文本为基本单位。

1.文件的定义

文件的结构:

1)数据项:分为基本数据项(用来描述一个对象的某种属性的一个值,是数据中最小逻辑单位)和组合数据项(由多个数据项组成)

2)记录:是一组相关的数据项集合,描述一个对象在某方面的属性

3)文件:分为有结构文件(若干个相似的记录组成)和无结构文件(被视为一个字符流)

文件可以是数组、字符或二进制代码。

2.文件的属性

1)名称:文件名唯一

2)类型:被支持不同类型的文件系统所使用

3)创建者:文件创建者的ID

4)所有者:文件当前所有者的ID

5)位置:指向设备和设备上文件的指针

6)大小:文件当前大小(字节,字或块表示)

7)保护:对文件进行保护的访问控制信息

8)创建时间、最后一次修改时间和最后一次存取时间:文件创建、上次修改和上次访问的相关信息,用于保护和跟踪文件的使用

操作系统提供文件控制块来维护文件元数据。

2.文件控制块和索引节点

1.文件控制块(FCB):用来存放控制文件需要的各种信息的数据结构。

文件与FCB一一对应,FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。每当创建一个新的文件,系统就要为它建立一个FCB,用来记录文件的各种属性。

FCB包含:

1)基本信息:文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。

2)存取控制信息:文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。

3)使用信息:文件建立时间、上次修改时间等。

2.索引节点

在文件从磁盘调入内存时,采用文件名和文件描述信息分离的方法,使文件描述信息单独形成一个称为索引节点的数据结构(i节点)。在文件目录中的每个目录项仅由文件名和相应的索引节点号(指针)构成。

1)磁盘索引节点

存放在磁盘中

2)内存索引节点

存放在内存中,比磁盘索引节点多索引节点号,状态,访问计数,逻辑设备号,链接指针。

FCB或索引节点相当于图书馆中图书的索书号。

3.文件操作

1.文件的基本操作

1)创建文件

2)删除文件

3)读文件

4)写文件

2.文件的打开与关闭

文件打开的过程:

系统检索到指定文件的目录项后,将该目录项从外存复制到内存中的打开文件表的一个标目中,并将该表目录的索引号返回给用户,当用户再次对该文件发出操作请求时,可以通过索引号打开文件表中查找到文件信息,节省大量的检索和开销。

文件关闭的过程:

采用两级表:整个系统表(包含与进程无关的信息)和每个进程表(进程对文件的使用信息)。

每个文件都会关联一个open 打开计数器,来记录多少进程打开了该文件。当文件不再使用,利用操作系统调用close关闭它,会删除单个进程的打开文件表中的相应条目,打开计数器也会递减。

文件名不必是打开文件表的一部分,只要文件未关闭,所有文件操作都是通过文件描述符(索引号)来进行的。

注意:只要完成了文件打开open()系统调用,后面在使用read()、write()、Lseek()、close()等文件操作的操作系统调用,就不再使用文件名,而是使用文件描述符(索引号)。

每个文件打开都具有:

1)文件指针

2)文件打开计数

3)文件磁盘位置

4)访问权限

4.文件保护

1.访问类型

对文件保护可以从限制对文件的访问类型出发:
1)读

2)写

3)执行

4)添加

5)删除

6)列表删除

保护只可以在底层提供,如具有读权限的用户就用有复制和打印权限。

2.访问控制

为每个文件和目录增加一个访问控制列表。来规定每个用户名及其所允许的访问类型。

访问控制列表分为:拥有者、组、其他。

口令和密码是另外两种访问控制方式。

口令:用户在建立一个文件时提供一个口令,系统为其建立FCB时附上口令,同时告诉允许共享该文件的其他用户。用户请求访问时必须提供相应的口令。这种方法时间和空间的开销不多,缺点是口令直接存在系统内部,不够安全。

密码:用户对文件进行加密,文件被访问时要使用密钥,并没有控制用户对文件的访问类型。

5.文件的逻辑结构

文件的逻辑结构是指从用户的角度出发所看到的文件组织形式。

文件的物理结构(存储结构)是指文件存储在外存上的存储组织形式,是用户看不到的。

按逻辑结构分:

1.无结果文件

最简单的文件组织形式,有字符流构成,又称流式文件,以字节为单位。

对它的访问是通过读写指针来指出下一个要访问的字节的。在系统中允许的大量源程序、可执行文件、库函数等就是无结果文件。由于无结构文件没有结构,所以访问只能通过穷举搜索的方式。

2.有结构文件

根据记录长度是否相等分为:

1)定长记录

文件中所有记录长度都是相等的,各项数据都在记录中的相同位置,具有相同的长度。检索记录的速度快,方便用户对文件进行处理,广泛用于数据处理中。

2)变长记录

文件中记录的长度不一定相同,记录中所包含的数据项数目不同,也可能是数据项本身的长度不定,检索记录只能顺序查找,速度慢。

有结构文件按记录的组织形式可以分为:

1)顺序文件

文件中的记录一个接一个地顺序排列,记录可以是定长记录或变长记录。

1.串结构:各记录之间的顺序与关键字无关,通常是按存入的先后时间进行排列,检索时必须从头开始顺序依次查找,比较费时。

2.顺序结构:按所有记录关键字顺序排列,对于定长记录的顺序文件,检索时可以采用折半查找,效率高。

顺序文件的效率是所有逻辑文件中最高的,在经常需要查找、修改、增加或删除单个记录的场合,顺序文件的性能最差。

2)索引文件

变长记录的顺序文件只能顺序查找,效率低,那么可以建立一张索引表,为主文件的每个记录在索引表中分别设置一个索引表项,包含指向记录的指针和记录长度,索引表按关键字排序,因此本身也是一个定长记录的顺序文件,加快记录的检索速度。

3)索引顺序文件

将顺序文件分为若干组,为文件建立一张索引表,为每组中的第一个记录建立一个索引项,其中包含该记录的关键字和指向该记录的指针。

索引文件和索引顺序文件都提高了查找速度,但都因为配置了索引表增加了存储空间。

4)直接文件或散列文件(Hash)

通过键值或散列函数转换的键值直接决定记录的物理地址。就是哈希查找。

6.文件的物理结构

类似于内存分页,磁盘中的存储单元也被分为一个个的块,叫磁盘块,其大小通常与内存的页面大小相同。内存与磁盘简单数据交换(磁盘I/O)都是以块为单位进行的。

1.连续分配

要求每个文件在磁盘上占有一组连续的块,磁盘地址定义了磁盘上的一个线性排序,这种排序使进程访问磁盘时需要的寻道数和寻道时间最小。

2.链接分配

采用一种离散分配的方式。

链式分配的优点是:1.消除了磁盘外部碎片,提高了磁盘利用率。

2.便于动态地为文件分配盘块,无需知道文件大小。

3.文件的插入删除很方便。

1)隐式链接

目录项中含有文件第一块的指针(盘块号)和最后一块的指针。每个文件对应一个磁盘块的链表,磁盘块分布在磁盘的任何地方。处了文件的最后一个盘块外,每个盘块都存有指向下一个文件的指针,这些指针对用户是透明的。

缺点:1.只支持顺序访问,只能从第一块开始,随机访问效率很低。

2.稳定性问题,文件盘块中任何一个指针出现问题,都会导致文件内容丢失。

3.指向下一个盘块的指针也要占存储空间。

2)显式链接

将用于链接文件各物理块的指针,显示地存放在内存的一张链接表中,该表在整个磁盘中只设置一张,叫文件分配表(FAT)。每个表项中存放指向下一个盘块的指针。文件目录中只需要记录该文件的起始块号,后序块号可以通过FAT找到。

FAT的表项与全部磁盘块一一对应,-1 -2都表示磁盘块空闲。

优点:1.支持顺序访问,也直接访问。

2.FAT在系统启动时就被读入内存,检索记录是在内存中进行的,因而不仅显著提高了检索速度,而且明显减少了访问磁盘的次数。

缺点:FAT需要占一定的内存空间。

3.索引分配

1)单级索引分配方式

2)多级索引分配方式

3)混合索引分配方式

1)直接地址

2)一次间接地址

3)多次间接地址

1)什么是文件?

文件是以计算机硬盘为载体的存储在计算机上的信息集合,它的形式多样。

2)单个文件的逻辑结构和物理结果之间是否存在制约关系?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值