- 文件的定义:
- 文件的组成:
数据项、记录和文件
- 文件的分类:
按组成元素分类:
- 有结构文件
2)无结构文件
- 文件的属性:
- 文件类型
- 文件长度
- 文件的物理位置
- 文件的建立时间
- 文件名命名规则:
一个文件必须要有一个文件名,它通常是由一串ASCII码或(和)汉字构成,名字的长度因系统不同而异。
- 文件类型
- 按用途分类:
根据文件的性质不同,可将文件分为三类:
- 系统文件
- 用户文件
- 库文件
- 按文件中数据的形式分类
- 源文件
- 目标文件
- 可执行文件
- 按存取控制属性分类
- 只执行文件
- 只读文件
- 读写文件
- 按组织形式和处理方式分类
(1)根据文件的组织形式和系统对其处理方式的不同,可将文件分为三类:
(2)普通文件
(3)目录文件
(4)特殊文件
- 文件系统
- 文件系统的层次结构
文件系统的模型可分为三个层次:最底层是对象及其属性,中间层是对对象进行操纵和管理的软件集合,最高层是文件系统提供给用户的接口。
- 文件系统各个部分的功能
- 对象及其属性
- 文件
- 目录
- 磁盘存储空间
- 对对象操纵和管理的软件集合
这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括:对文件存储空间的管理,以及对文件的共享与保护等功能
- 文件的操作
- 文件的基本操作类型
- 创建文件
- 删除文件
- 读文件
- 写文件
- 截断文件
- 设置文件的读/写位置
- 打开文件的作用
“打开”(open):是指系统将指定文件名的文件的属性(包括文件在外存上的物理位置),从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引号)返回给用户
- 关闭文件的作用
“关闭”(close):清除打开文件表中有关此文件的表目信息(索引号)
- 设置文件属性操作
有关对文件属性的操作,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者(文件主)、改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等)。
5)目录(文件)操作
有关目录的操作,如创建一个目录,删除一个目录,改变当前目录和工作目录等
- 文件的逻辑结构
- 逻辑结构的定义:
这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其数据结构,它独立于文件的物理特性,又称为文件组织
- 物理结构的定义:
是指文件在外存上的存储组织形式。这不仅与存储介质的存储性能有关,而且与所采用的外存分配方式有关
- 文件逻辑结构的类型
1)有结构文件
(1)记录的长度可分为定长和不定长两类
- 定长记录
- 变长记录
(2)根据文件的组织方式,可把有结构文件分为四类:
A. 顺序文件
①记录的排列形式
在顺序文件中的记录,可以按照各种不同的顺序进行排列。一般地,可分为两种情况:
A.串结构:按记录存入时间先后排列:顺序查找
B.顺序结构:按用户指定关键字的取值排列:二分查找,插值查找,跳步查找
②记录寻址
A.隐式寻址方式
B.显式寻址方式
③顺序文件的优缺点
A.优点:
1) 在对文件中的记录进行批量存取时(即每次要读或写一大批记录)。所有逻辑文件中顺序文件的存取效率是最高的。
2)对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。
B.缺点:
1)用户查找或修改单个记录时,检索速度慢。
2)增加或删除某个记录时,涉及大量记录移动操作
B. 索引文件
①索引的建立
定长记录的文件可以通过简单的计算,很容易地实现随机查找。但变长记录文件查找一个记录必须从第一个记录查起,一直顺序查找到目标记录为止,耗时很长
②多索引
不同的用户,为了不同的目的,希望能按不同的属性(或不同的关键字)来检索一条记录。为实现此要求,需要为顺序文件建立多个索引表,即为每一种可能成为检索条件的域(属性或关键字)都配置一张索引表。在每一个索引表中,都按相应的一种属性或关键字进行排序
③索引文件的优缺点
- 优点:
1)可以保证数据库表中每一行的数据的唯一性
2)可以大大加快数据的索引速度
3)加速表与表之间的连接,物别是在实现数据的参考完事性方面特别有意义
4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
5)通过使用索引,可以在时间查询的过程中,使用优化隐藏器,提高系统的性能
B.缺点:
1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
2)索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
3)以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度
C. 索引顺序文件
①索引顺序文件的特征
A.引入了文件索引表,通过该表可以实现对索引顺序文件的随机访问;
B.增加了溢出(overflow)文件,用它来记录新增加的、删除的和修改的记录。
②一级索引文件,二级索引文件的平均查找次数
D. 直接文件和哈希文件
①直接文件定义
对于直接文件,则可根据给定的关键字直接获得指定记录的物理地址。换而言之,关键字本身就决定了记录的物理地址。
②哈希文件(哈希函数)
这是目前应用最为广泛的一种直接文件。它利用Hash函数(或称散列函数)可将关键字转换为相应记录的地址
③哈希文件的优缺点
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。哈希表也有一些缺点它是基于数组的,数组创建之后难于扩展某些哈希表被基本填满时,性能下降得非常严重。这个问题是哈希表不可避免的,即冲突现象,对不同的关键字可能得到同一哈希地址
2)无结构文件
流式文件:其文件的长度是以字节为单位的
- 文件目录
- 文件目录是一种数据结构,也是一种特殊文件
- 文件目录管理的功能
- 实现“按名存取”
- 提高对目录的检索速度
- 文件共享
- 允许文件重名
- 文件控制块(FCB)作用及所存储信息
- 作用:
为了能对系统中的大量文件施以有效的管理,在文件控制块中,通常应含有三类信息,即基本信息、存取控制信息及使用信息。
- 所存储信息
- 文件名
- 文件物理位置
- 文件逻辑结构
- 文件主的存取权限
- 核准用户的存取权限以及一般用户的存取权限
- 文件的建立日期和时间
- 文件上一次修改的日期和时间
- 当前使用信息
- 索引结点
- 引入原因
文件目录通常是存放在磁盘上的,当文件很多时,文件目录可能要占用大量的盘块。
在查找目录的过程中,必须先将存放目录文件的第一个盘块中的目录调入内存,然后将用户所给定的文件名,与目录项中的文件名逐一比较。若未找到指定文件,还需要将下一盘块的目录项调入内存
2)磁盘索引结点与内存索引结点的异同
(1)磁盘索引结点
这是存放在磁盘上索引结点。每个文件有唯一的一个磁盘索引结点,它主要包括以下内容:
①文件主标识符
②文件类型
③文件存取权限
④文件物理地址
⑤文件长度
⑥文件连接计数
⑦文件存取时间
(2)内存索引结点
①索引结点编号
②状态
③访问计数
④文件所属文件系统的逻辑设备号
⑤链接指针
- 文件目录结构
- 单级目录
- 实现数据结构
文件名 | 物理地址 | 文件说明 | 状态位 |
文件名1 |
|
|
|
文件名2 |
|
|
|
|
|
|
|
- 优缺点:
优点:简单且能实现目录管理的基本功能-按名存取
缺点:查找速度慢,不允许重名,不便于实现文件共享
- 两级目录
- 实现数据结构
- 优缺点
优点:提高了检索目录的速度,在不同的用户目录中,可以使用相同的文件名,不同用户还可使用不同的文件名来访问系统中的同一个共享文件
缺点:增加了系统开销
- 树型结构目录
- 实现数据结构
- 相关术语
①目录结构
②路径名
③当前目录:
绝对路径:从树根开始的路径名
相对路径:从当前目录开始直到数据文件为止所构成的路径名
- 目录操作
(1) 创建目录
(2) 删除目录
① 不删除非空目录
② 可删除非空目录
(3) 改变目录
(4) 移动目录
(5) 链接(Link)操作
(6) 查找
- 目录查询技术
- 线性检索法
操作流程:
- Hash方法
如果我们建立了一张Hash索引文件目录,便可利用Hash方法进行查询,即系统利用用户提供的文件名,并将它变换为文件目录的索引值,再利用该索引值到目录中去查找,这样将显著地提高检索速度。
- 文件共享
- 文件共享的定义
指系统应允许多个用户(进程)共享同一份文件
- 实现方式
- 基于有向无循环图实现文件共享
- 基本思想:
- 有向无循环图DAG(Directed Acyclic Graph)
- 利用索引结点
- 优缺点:
- 利用符号链接实现文件共享
- 基本思想:
利用符号链接实现文件共享的基本思想,是允许一个文件或子目录有多个父目录,但其中仅有一个作为主(属主)父目录,其它的几个父目录都是通过符号链接方式与之相链接的(简称链接父目录)
- 利用符号链实现共享的优点:
在利用符号链方式实现文件共享时,只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户则只有该文件的路径名,并不拥有指向其索引结点的指针。这样,也就不会发生在文件主删除一共享文件后留下一悬空指针的情况。当文件的拥有者把一个共享文件删除后,如果其他用户又试图通过符号链去访问一个已被删除的共享文件,则会因系统找不到该文件而使访问失败,于是再将符号链删除,此时不会产生任何影响
- 文件保护
- 影响文件安全的主要因素
- 人为因素
2)系统因素
3)自然因素
- 存储控制机制
- 保护域
为了对系统中的资源进行保护而引入了保护域的概念,保护域简称为“域”。“域”是进程对一组对象访问权的集合,进程只能在指定域内执行操作。这样,“域”也就规定了进程所能访问的对象和能执行的操作。
- 访问矩阵
- 支持访问权的类别
①拷贝权(Copy Right)
②所有权(Owner Right)
③控制权(Control Right)
- 访问矩阵的实现
①访问控制表的定义:
这是指对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。在该表中,已把矩阵中属于该列的所有空项删除,此时的访问控制表是由一有序对(域,权集)所组成的。由于在大多数情况下,矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间,并能提高查找速度。
②访问权限表的定义:
如果把访问矩阵按行(即域)划分,便可由每一行构成一张访问权限表。换言之,这是由一个域对每一个对象可以执行的一组操作所构成的表。表中的每一项即为该域对某对象的访问权限。当域为用户(进程)、对象为文件时,访问权限表便可用来描述一个用户(进程)对每一个文件所能执行的一组操作