第七章 文件管理【操作系统】1

简介: 第七章 文件管理【操作系统】1

前言

以下内容源自计算机操作系统(第四版)

关于操作系统,
CSDN有很多的优秀博客。
在这里,
本文摘取其他博客内容,
并附上相关链接,
如有侵权,
联系删除,
仅供学习交流使用

请您阅读文章声明,默认同意该声明

推荐

计算机操作系统(第四版)之文件管理、磁盘存储器的管理要点梳理

第七章 文件管理

在操作系统中增加文件管理功能,专门管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。

7.1 文件和文件系统

文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。

7.1.1 数据项、记录和文件

1. 数据项
有结构文件中, 数据项是最低级的数据组织形式。

(1) 基本数据项: 用于描述一个对象的某种属性的数据,是数据组织中可以命名的最小逻辑单位,又称为字段。

(2) 组合数据项: 由若干个基本数据项组成, 简称组项。
2. 记录

有结构文件中, 一组相关的数据项组成记录, 若干条记录组成文件, 在各记录中能够唯一标识一个记录的数据项集合称为关键字(key), 通常用一个数据项作为关键字。

3. 文件

文件是具有文件名的若干(数目不定) 相关元素的集合, 它是文件系统中的最大数据单位; 可分为有结构文件和无结构文件; 有结构文件的元素是记录, 记录是有意义的数据项的集合, 无结构文件则是一个字符流, 称为流式文件。
        文件名: ASCII码和汉字组成, 支持文件扩展名
        文件属性: 文件类型、文件(当前)长度、
                          文件物理位置、文件建立时间

7.1.2 文件名和类型

1. 文件名和扩展名

2.文件类型
为了提高系统管理文件的效率; 提高用户界面友好性, 对文件进行分类。


1.按文件性质和用途分类

系统文件:由系统软件构成的文件

用户文件:由用户产生的各种文件

库文件 :标准子程序及常用的例程构成的文件

2.按信息保存期限分类

临时文件;永久文件;档案文件

3.按文件中的数据形式分类

源文件、目标文件、可执行文件、数据文件

4.按文件的存储控制属性分类

只执行文件;只读文件;读写文件。

5.按文件的逻辑结构分类

流式文件;记录式文件

6.按文件的物理结构分类

顺序(连续)文件;链接文件;索引文件

7.UNIX系统将文件分为三类

普通文件(regular)

包含的是用户信息,一般为ASCII或二进制文件

目录文件(directory)

管理文件系统的系统文件

特殊文件(special file)设备文件(将外设看作文件)

字符设备文件: 用于模仿串行I/O设备, 如终端,

打印机, 网络等

块设备文件: 模仿磁盘

为了方便系统和用户了解文件的类型, 常把文件类型作为扩展名放在文件名的后面, 二者之间用"."隔开。

7.1.3 文件系统的层次结构

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

1.对象及其属性

2. 对对象操纵和管理的软件集合

3.文件系统的接口

7.1.4 文件操作

1. 最基本的文件操作
创建文件: 分配外存空间,建目录项填入各种属性

删除文件: 将该目录项置为空项, 释放外存空间

读文件写文件: 目录项中得文件在外存位置, 读写

截断文件: 将文件内容置空

设置文件读写位置: 设置文件读写指针的位置

2. 文件的“打开”和“关闭”操作

“打开”(open)文件, 是系统将指明文件的属性(类型,外存物理位置等)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引号)返回给用户。此后, 用户对文件的操作直接通过索引号进行, 避免了对文件的再次检索。

“关闭”(close)操作,将内存中的已修改的数据写到外存上, 并将对应表目从打开文件表中删除。

3. 其他文件操作

7.2 文件的逻辑结构

1)文件的逻辑结构。这是从用户观点出发所观察到的文件组织形式。

2)文件的物理结构,又称为文件的存储结构,这是指系统将文件存储在外存上所形成的存储组织形式,是用户不能看见的。

7.2.1 文件逻辑结构的类型

1.有结构文件(记录文件)
          文件是由若干个记录组成, 每条记录有其内部结构
       按记录长度分: 定长记录、变长记录
       按记录间的关系分: 顺序、索引、索引顺序
   2.无结构文件
        又称为流式文件,是元素长度为1的无结构字节流,如: 源程序,可执行文件, 库函数, C语言的数据文件等。在UNIX系统中所有的文件被看作流式文件。
        好处:提供很大的灵活性。

7.2.2 顺序文件

 1. 文件的逻辑排序
          串结构:各记录的逻辑顺序按存入的时间排序。
       有序结构:各记录的逻辑顺序按关键字排序。
 2. 对顺序文件的读/写操作
        顺序文件只能顺序读或顺序写,  可设置读/写指针Rptr和Wptr, 指向下一记录的逻辑地址。
        对定长记录:
            每当读完一条记录时执行: Rptr=Rptr+L
            每当写完一条记录时执行: Wptr=Wptr+L
        对变长记录:
            每当读完一条记录时执行: Rptr=Rptr+Li
            每当写完一条记录时执行: Wptr=Wptr+Li
 3. 优点: 批量存取效率高, 缺点: 查找增删低效不方便

7.2.3 记录寻址

7.2.4 索引文件

对定长记录文件, 要查找第 i 个记录,可直接计算:
      Ai =A0 +i*L  (A0和Ai是第0和第i个记录的逻辑地址)
对变长记录文件, 要查找第 i 个记录,可直接计算: 
      Ai =A0 + i +ΣLi  (假定每个记录前用1字节存储长度)
要实现直接存取文件, 对定长记录用公式计算很方便, 但对变长记录却很困难; 为此可建立一张索引表。检索时,用折半查找索引表按其指针值指向的记录与给定的关键字比较查到为止。存储费用大。



7.2.5 索引顺序文件

对变长记录文件, 用索引表存储费用大,结合索引文件和顺序文件的优点, 构成索引顺序文件。所有记录逻辑上按关键字有序排列,并将记录分为若干组,索引表为每组的第一个记录建立一个索引表项, 检索时先根据索引表键值确定该记录在哪一组, 再按该表项指针指向的主文件中的位置顺序查找到所要的记录。如

如果某顺序文件的记录数为N, 则顺序检索平均查找N/2个记录。而对于索引顺序文件每组√N个记录,平均查找√N个记录; 效率大大提高。对于特大型文件可建立多级索引表。




7.2.6 直接文件和哈希文件

1.直接文件
根据给定的记录键值, 直接获得指定记录的物理地址, 这种由给定的记录键值到记录的物理地址的转换称为键值转换, 关键是用什么函数进行转换。

2. 哈希文件
用哈希函数(或称散列函数)进行键值转换, 为了能实现文件存储空间的动态分配, 通常由哈希函数求得的不是记录的地址, 而是指向目录表相应表项的指针, 表项的内容指向相应记录所在的物理块。如



7.3 文件目录

目录管理的基本要求:

实现"按名存取"

提高对目录的检索速度

允许文件共享

允许文件重名

7.3.1文件控制块和索引结点

1.文件控制块(FCB):
文件控制块(FCB)是操作系统为管理文件而设置的用于描述和控制文件的数据结构,存放了为管理文件所需的所有有关信息。


文件和FCB一一对应, FCB的有序集称为文件目录, 一个FCB 就是一个目录项, 为实现对文件目录的管理, 通常将文件目录以文件的形式保存在外存上,这个文件就叫目录文件。


文件控制块的内容:

1)基本信息:

文件名,扩展名,文件主名

文件物理地址: 存放设备名,起始盘块号,文件长度

文件逻辑结构:流式或记录文件, 定长或不定长

文件物理结构:顺序、链接式、索引文件

2)存取控制信息:

文件主、核准用户和一般用户的存取权限

3)使用信息:

文件的建立日期, 最后修改日期, 最后访问日期, 当前使用信息(共享计数,是否被锁住,已被修改是否存盘)


2.索引结点(i结点)

(1)索引结点的引入
当目录中文件很多时,文件目录要占用大量的盘块, 查找目录时需要将这些盘块逐块调入内存, 将给定的文件名与目录中的文件名逐一比较;假如一个FCB为64B, 1KB的盘块只能存16个FCB,一个目录有640个FCB, 需占用40个盘块, 查找一个目录平均要启动磁盘20次。

检索目录时只用到了文件名, 如果将FCB中的文件名和描述信息分开存储, 就可以增加目录的每个盘块中的文件数,减少访盘次数,加快检索速度;UNIX系统中就采用这种方法, 将文件描述信息单独存放在索引结点中(简称i结点), 目录项仅由文件名和指向该文件对应的 i 结点的指针构成, UNIX的目录项仅占16B, 1KB的盘块能存64个目录项访盘次数降到原来的1/4。


(2) 磁盘索引结点

存放在磁盘上的索引结点,每个文件有唯一的一个



文件类型:普通文件、目录文件、特殊文件
文件主:所有者和小组标识符
时间标记:文件最近被访问时间
                 文件最近被修改时间
                 i结点最近被修改时间
文件长度:字节长度
连接计数:指向该文件的指针计数
直接地址:10项直接盘块地址
间接地址:3中级别的索引块地址

(3) 内存索引结点

存放在内存上的索引结点,文件打开时将磁盘索引结点拷贝到内存的索引结点中,并增加当前正使用的内容。


(1) 索引结点编号: 用来标识内存索引结点

(2) 状态: i结点是否上锁或被修改

(3) 访问计数:正在访问此 i结点的进程数

(4) 所属的逻辑设备号

(5) 链接指针: 指向空闲链表和散列队列的指针


相关文章
|
12月前
|
Linux C语言
Linux操作系统实验四 文件管理(二)(下)
Linux操作系统实验四 文件管理(二)(下)
249 0
|
2月前
|
存储 算法 Unix
操作系统(13)-----文件管理3
操作系统(13)-----文件管理
38 0
操作系统(13)-----文件管理3
|
2月前
|
存储 安全 Linux
操作系统(13)-----文件管理4
操作系统(13)-----文件管理
34 0
|
2月前
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
35 0
|
2月前
|
存储 SQL 算法
操作系统(13)-----文件管理1
操作系统(13)-----文件管理
26 0
|
2月前
|
存储 算法 安全
|
2月前
|
缓存 算法 Linux
[操作系统] 文件管理
[操作系统] 文件管理
|
9月前
|
存储 算法 固态存储
操作系统之文件管理
文件管理初识 文件的属性 文件内部的数据如何组织起来? 文件之间应该如何组织起来? 操作系统应该向上提供哪些功能? 从上往下看,文件应该如何存放在外存? 其他需要由操作系统实现的文件管理功能 最后总结一下: 文件的逻辑结构 、 这里说一下随机访问和顺序访问: 随机访问(Random Access)是计算机存储介质的一种访问方式。它指的是存储介质可以以任意的、不连续的方式访问存储的每个地址。也就是说,随机访问允许直接访问存储介质的任意位置,不需要从开头逐个访问到需要的地址。 与随机访问相对的是顺序访问(Sequential Access),它要求从存
53 0
|
11月前
|
存储 安全 Unix
第七章 文件管理【操作系统】2
第七章 文件管理【操作系统】2
175 1
|
11月前
|
算法 Java
操作系统 课程设计 -- 模拟简易的文件管理
操作系统 课程设计 -- 模拟简易的文件管理
120 0