操作系统之——文件管理(1)

本文探讨了操作系统中的文件管理,从数据分类、文件类型到文件系统的层次结构,详细阐述了文件的逻辑结构、组织方式及目录管理。重点介绍了记录型文件、流式文件、不同类型的文件组织方式如顺序文件、索引文件,并解析了文件控制块和索引结点在文件目录中的作用。同时,讨论了目录查询技术,如线性检索法和Hash方法。

文件和文件系统

文件系统的管理功能是将其管理的程序和数据通过组织为一系列文件的方式实现的。
文件则是指具有文件名的若干相关元素的集合。
元素通常是记录

记录是一组有意义的数据项的集合。

数据分类

可以把数据组成分为数据项、记录和文件三级。


数据项

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

记录

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

文件

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

文件类型

按用途分类

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

按文件中数据的形式分类

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

按存取控制属性分类

(1) 只执行文件(2) 只读文件(3) 读写文件

按组织形式和处理方式分类  

(1) 普通文件。  (2) 目录文件。  (3) 特殊文件。

文件系统的层次结

最高层是文件系统提供给用户的接口。

(1) 命令接口 (2) 程序接口

中间层是对对象进行操纵和管理的软件集合

文件管理系统的核心部分。① 对文件存储空间的管理;② 对文件目录的管理;③ 用于将文件的逻辑地址转换为物理地址的机制;④ 对文件读和写的管理;⑤ 对文件的共享与保护等功能

底最层是对象及其属性

管理对象下:(1) 文件。  (2) 目录。 (3) 磁盘(磁带)存储空间。 

最基本的文件操作

(1) 创建文件。  (2) 删除文件。  (3) 读文件。  (4) 写文件。  (5) 设置文件的读/写位置。 

文件的逻辑结构

基本要求:

1.提高检索记录速度和效率 2.方便对文件进行修改 3.尽量减少文件占用的存储空间,不要求大片的连续存储空间

按结构分类

有结构文件(记录型)

大量的信息管理系统和数据库系统中
(1) 定长记录。  (2) 变长记录。 

无结构文件(流式文件)

大量的源程序、可执行文件、库函数等
文件的长度是以字节为单位的。对流式文件的访问,利用读、写指针来指出下一个要访问的字符。

按文件的组织方式分类

顺序文件。

最佳应用场合是在对文件中的记录进行批量存取时。
所有逻辑文件中顺序文件的存取效率是最高的。
对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。

索引文件。

按关键字建立索引
变长记录文件查找一个记录必须从第一个记录查起,一直顺序查找到目标记录为止,耗时很长。
具有多个索引表的索引文件
为每一种可能成为检索条件的域(属性或关键字)都配置一张索引表。在每一个索引表中,都按相应的一种属性或关键字进行排序。 

索引顺序文件。 

保留了顺序文件的关键特征:记录是按关键字的顺序组织起来的。
增加的新特征:
1.引入文件索引表:通过该表可以实现对索引顺序文件的随机访问
2.增加溢出(overflow)文件: 用它来记录新增加的、删除的和修改的记录。 
可根据不同文件建立多级索引。

直接文件   

关键字本身就决定了记录的物理地址。

哈希(Hash)文件

利用Hash函数(或称散列函数)
可将关键字转换为相应记录的地址。
通常由Hash函数所求得的并非是相应记录的地址,而是指向某一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。

文件目录

文件控制块

包含:

1.基本信息

(1) 文件名。(2) 文件物理位置。(3) 文件逻辑结构。(4) 文件的物理结构

2.存取控制信息

(1)文件主的存取权限 (2)核准用户的存取权限 (3)一般用户的存取权限

3.使用信息

(1)文件的建立日期和时间
(2)文件上一次修改的日期和时间
(3)当前使用信息:
当前已打开该文件的进程数   是否被其它进程锁住   文件在内存中是否已被修改但尚未拷贝到盘上。

索引结点

引入

文件目录通常是存放在磁盘上的,当文件很多时,文件目录可能要占用大量的盘块。
在查找目录的过程中,必须先将存放目录文件的第一个盘块中的目录调入内存,然后将用户所给定的文件名,与目录项中的文件名逐一比较。若未找到指定文件,还需要将下一盘块的目录项调入内存。 

磁盘索引结点

(存放在磁盘上的索引节点)每个文件有唯一的一个磁盘索引结点
包括
(1) 文件主标识符,即拥有该文件的个人或小组的标识符;
(2) 文件类型,包括正规文件、目录文件或特别文件;
(3) 文件存取权限,指各类用户对该文件的存取权限;
(4) 文件物理地址,每一个索引结点中含有13个地址项,即iaddr(0)~iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号;
(5) 文件长度,指以字节为单位的文件长度;
(6) 文件连接计数,表明在本文件系统中所有指向该(文件的)文件名的指针计数;
(7) 文件存取时间,指出本文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间。

内存索引结点

(存放在内存中的索引结点)当文件被打开时,要将磁盘索引结点拷贝到内存的索引结点中,便于以后使用。
增加内容:
(1) 索引结点编号,用于标识内存索引结点;
(2) 状态,指示 i 结点是否上锁或被修改;
(3) 访问计数,每当有一进程要访问此i结点时,将该访问计数加1,访问完再减1;
(4) 文件所属文件系统的逻辑设备号;
(5) 链接指针,设置有分别指向空闲链表和散列队列的指针。

简单的文件目录

单级文件目录

在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名、文件扩展名、文件长度、文件类型、文件物理地址以及其它文件属性。
表明每个目录项是否空闲,又设置了一个状态位。

两级文件目录

为每一个用户再建立一个单独的用户文件目录UFD(User File Directory):
它由用户所有文件的文件控制块组成。
再建立一个主文件目录MFD(Master File Directory):

在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。 


树形结构目录

在每个文件目录中,只能有一个根目录,每个文件和每个目录都只能有一个父目录。
从根目录到任何数据文件都只有一条唯一的通路。

目录查询技术

线性检索法

在单级目录中,利用用户提供的文件名,用顺序查找法直接从文件目录中找到指名文件的目录项。
在树形目录中,用户提供的文件名是由多个文件分量名组成的路径名,此时需对多级目录进行查找。

Hash方法

系统利用用户提供的文件名,并将它变换为文件目录的索引值,再利用该索引值到目录中去查找,这样将显著地提高检索速度。


































































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值