计算机操作系统 第七章:文件管理(1)

目录

7.1  文件和文件系统

7.1.1  数据项、记录和文件

 7.1.2  文件名和类型

7.1.3  文件系统的层次结构

7.1.4  文件操作

 7.2  文件的逻辑结构

7.2.1  文件逻辑结构的类型

7.2.2  顺序文件(Sequential File)

7.2.3  记录寻址

7.2.4  索引文件(Index File)

 7.2.5  索引顺序文件 (Index Sequential File)

7.2.6  直接文件和哈希文件


7.1  文件和文件系统


  文件系统的管理功能是将其管理的程序和数据通过组织为一系列文件的方式实现的。而文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。可见,基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。

7.1.1  数据项、记录和文件


1. 数据项
  在文件系统中,数据项是最低级的数据组织形式,可把它分成以下两种类型:
  
(1) 基本数据项。
  
(2) 组合数据项。

2. 记录
  记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。由于对象所处的环境不同可把他作为不同的对象。

3. 文件
  文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。

 7.1.2  文件名和类型


1. 文件名和扩展名
  (1) 文件名。
  
(2) 扩展名。

2. 文件类型
  1) 按用途分类
  根据文件的性质和用途的不同,可将文件分为三类:
  
(1) 系统文件,这是指由系统软件构成的文件。大多数的系统文件只允许用户调用,但不允许用户去读,更不允许修改;有的系统文件不直接对用户开放。
  
(2) 用户文件,指由用户的源代码、目标文件、可执行文件或数据等所构成的文件。用户将这些文件委托给系统保管。
  
(3) 库文件,这是由标准子例程及常用的例程等所构成的文件。这类文件允许用户调用,但不允许修改。

2) 按文件中数据的形式分类
  按这种方式分类,也可把文件分为三类:
  
(1) 源文件,这是指由源程序和数据构成的文件。通常,由终端或输入设备输入的源程序和数据所形成的文件都属于源文件。它通常是由ASCII码或汉字所组成的。
  
(2) 目标文件,这是指把源程序经过编译程序编译过,但尚未经过链接程序链接的目标代码所构成的文件。目标文件所使用的后缀名是“.obj”
  
(3) 可执行文件,这是指把编译后所产生的目标代码经过链接程序链接后所形成的文件。其后缀名是 .exe

3) 按存取控制属性分类
  根据系统管理员或用户所规定的存取控制属性,可将文件分为三类:
  
(1) 只执行文件,该类文件只允许被核准的用户调用执行,不允许读和写。
  
(2) 只读文件,该类文件只允许文件主及被核准的用户去读,不允许写。
  
(3) 读写文件,这是指允许文件主和被核准的用户去读或写的文件。

4) 按组织形式和处理方式分类
  根据文件的组织形式和系统对其处理方式的不同,可将文件分为三类:
  
(1) 普通文件。
  
(2) 目录文件。
  
(3) 特殊文件。
 

7.1.3  文件系统的层次结构


  如图7-2所示,文件系统的模型可分为三个层次:最底层是对象及其属性,中间层是对对象进行操纵和管理的软件集合,最高层是文件系统提供给用户的接口。

 1. 对象及其属性
  文件管理系统管理的对象如下:
  
(1) 文件。
  
(2) 目录。
  
(3) 磁盘(磁带)存储空间。

2. 对对象操纵和管理的软件集合
  该层是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括有:① 对文件存储空间的管理;② 对文件目录的管理;③ 用于将文件的逻辑地址转换为物理地址的机制;④ 对文件读和写的管理;⑤ 对文件的共享与保护等功能。在实现这些功能时,OS通常都采取了层次组织结构,即在每一层中都包含了一定的功能,处于某个层次的软件,只能调用同层或更低层次中的功能模块。

3. 文件系统的接口
  为方便用户的使用,文件系统以接口的形式提供了一组对文件和记录操作的方法和手段。通常是下面两种类型的接口:
  
(1) 命令接口,是指作为用户与文件系统直接交互的接口,用户可通过键盘终端键入命令取得文件系统的服务。
  
(2) 程序接口,是指作为用户程序与文件系统的接口,用户程序可通过系统调用取得文件系统的服务,例如,用于创建文件的系统调用Creat,用于打开一个文件的系统调用Open等。

7.1.4  文件操作


1. 最基本的文件操作
  最基本的文件操作包含下述内容:
  
(1) 创建文件。
  
(2) 删除文件。
  
(3) 读文件。
  
(4) 写文件。
  
(5) 设置文件的读/写位置。

2. 文件的“打开”和“关闭”操作
  当用户要求对一个文件实施多次读/写或其它操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,在大多数OS中都引入了“打开”(open)这一文件系统调用,当用户第一次请求对某文件进行操作时,须先利用open系统调用将该文件打开。  

3. 其它文件操作
  OS为用户都提供了一系列文件操作的系统调用,其中最常用的一类是有关对文件属性的操作,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者(文件主)、改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等)。另一类是有关目录的操作,如创建一个目录,删除一个目录,改变当前目录和工作目录等。此外,还有用于实现文件共享的系统调用,以及用于对文件系统进行操作的系统调用等。

 7.2  文件的逻辑结构


  (1) 文件的逻辑结构(File Logical Structure)
  
(2) 文件的物理结构,又称为文件的存储结构。

7.2.1  文件逻辑结构的类型


  对文件逻辑结构所提出的基本要求,首先是有助于提高对文件的检索速度,即在将大批记录组成文件时,应采用一种有利于提高检索记录速度和效率的逻辑结构形式。其次是该结构应方便对文件进行修改,即便于在文件中增加、删除和修改一个或多个记录。第三是降低文件存放在外存上的存储费用,即尽量减少文件占用的存储空间,不要求大片的连续存储空间。

1. 按文件是否有结构分类
1) 有结构文件
  
(1) 定长记录。
  
(2) 变长记录。

2) 无结构文件
  如果说在大量的信息管理系统和数据库系统中,广泛采用了有结构的文件形式的话
(即文件是由定长或变长记录构成的),那么在系统中运行的大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。其文件的长度是以字节为单位的。对流式文件的访问,则是利用读、写指针来指出下一个要访问的字符。可以把流式文件看做是记录式文件的一个特例:一个记录仅有一个字节。

2. 按文件的组织方式分类
  根据文件的组织方式,可把有结构文件分为三类:
  
(1) 顺序文件。
  
(2) 索引文件。
  
(3) 索引顺序文件。

7.2.2  顺序文件(Sequential File)


1. 顺序文件的排列方式
  在顺序文件中的记录,可以按照各种不同的顺序进行排列。一般地,可分为两种情况:
  
(1) 串结构。
  
(2) 顺序结构。

2. 顺序文件的优缺点
  顺序文件的最佳应用场合是在对文件中的记录进行批量存取时(即每次要读或写一大批记录)。所有逻辑文件中顺序文件的存取效率是最高的。此外,对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。

7.2.3  记录寻址


1. 隐式寻址方式
  对于定长记录的顺序文件,如果已知当前记录的逻辑地址,便很容易确定下一个记录的逻辑地址。

 2. 显式寻址方式
  该方式可用于对定长记录的文件实现直接或随机访问。因为任何记录的位置都很容易通过记录长度计算出来。而对于可变长度记录的文件则不能利用显式寻址方式实现直接或随机访问,必须增加适当的支持机构方能实现。下面我们通过两种方式对定长记录实现随机访问:
  
(1) 通过文件中记录的位置。
  
(2) 利用关键字。

7.2.4  索引文件(Index File)


1. 按关键字建立索引
  定长记录的文件可以通过简单的计算,很容易地实现随机查找。但变长记录文件查找一个记录必须从第一个记录查起,一直顺序查找到目标记录为止,耗时很长。

 2. 具有多个索引表的索引文件
  
使用按关键字建立索引表的索引文件与顺序文件一样,都只能按该关键字进行检索。而实际应用情况往往是:不同的用户,为了不同的目的,希望能按不同的属性(或不同的关键字)来检索一条记录。为实现此要求,需要为顺序文件建立多个索引表,即为每一种可能成为检索条件的域(属性或关键字)都配置一张索引表。在每一个索引表中,都按相应的一种属性或关键字进行排序。

 7.2.5  索引顺序文件 (Index Sequential File)


1. 索引顺序文件的特征 
  索引顺序文件是对顺序文件的一种改进,它基本上克服了变长记录的顺序文件不能随机访问,以及不便于记录的删除和插入的缺点。但它仍保留了顺序文件的关键特征,即记录是按关键字的顺序组织起来的。它又增加了两个新特征:一个是引入了文件索引表,通过该表可以实现对索引顺序文件的随机访问;另一个是增加了溢出(overflow)文件,用它来记录新增加的、删除的和修改的记录。

2. 一级索引顺序文件
  最简单的索引顺序文件只使用了一级索引。其具体的建立方法是,首先将变长记录顺序文件中的所有记录分为若干个组,如50个记录为一个组。然后为顺序文件建立一张索引表,并为每组中的第一个记录在索引表中建立一个索引项,其中含有该记录的关键字和指向该记录的指针。索引顺序文件是最常见的一种逻辑文件形式,如图7-5所示。

 3. 两级索引顺序文件
  对于一个非常大的文件,为找到一个记录而须查找的记录数目仍然很多,例如,对于一个含有106个记录的顺序文件,当把它作为索引顺序文件时,为找到一个记录,平均须查找1000个记录。为了进一步提高检索效率,可以为顺序文件建立多级索引,即为索引文件再建立一张索引表,从而形成两级索引表。

7.2.6  直接文件和哈希文件


1. 直接文件  
  采用前述几种文件结构对记录进行存取时,都须利用给定的记录键值,先对线性表或链表进行检索,以找到指定记录的物理地址。然而对于直接文件,则可根据给定的关键字直接获得指定记录的物理地址。换而言之,关键字本身就决定了记录的物理地址。

2. 哈希(Hash)文件
  这是目前应用最为广泛的一种直接文件。它利用Hash函数(或称散列函数)可将关键字转换为相应记录的地址。但为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向某一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块,如图7-6所示。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是泰勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值