文件
文件
一组有意义的信息集合
文件的属性:
- 文件名
- 标识符
- 类型
- 位置
- 大小
- 保护信息
文件结构
-
有结构文件/流式文件:由一组相似的记录组成
根据记录长度分为定长记录和变长记录
-
顺序文件:
-
顺序存储:
-
定长记录:可实现随机存取
-
串结构:记录之间的顺序与关键字无关(通常按照时间顺序 ,无法快速找到某关键字对应的记录)
-
顺序结构:记录之间的顺序按照关键字顺序排列
(可以快速找到某关键字对应的记录)
-
-
可变长记录 :无法实现随机存取
-
-
链式存储:无法实现随机存取
-
-
索引文件:每条记录对应一个索引表项;索引文件有很快的检索速度 ;因此主要用于对信息处理的及时性要求比较高的场合
(索引表本身是定长记录的顺序文件)
-
索引顺序文件:一组记录对应一个索引表项
(索引表是本身是定长记录的串结构文件)
-
-
无结构文件/记录式文件:由一些二进制或字符流组成
文件目录
用户在编程时可以轻松实现“按名存取”用文件路径找到一个文件
目录本身是一种有结构文件 ,由一条条记录组成,每条记录对应一个在该目录下的文件
目录文件中的一条记录就是一个FCB(文件内控制块)
FCB实现了文件名和文件之间的映射,使用户可以按名存取
目录结构
-
单级目录:早起操作系统不支持多级目录,整个系统只建立一张目录表,每个文件占一个目录项
(实现了按名存取,但不允许文件重名)
-
二级目录:
-
主文件目录:记录用户名+相应用户文件目录存放位置
-
用户文件目录:由该用户的文件FCB组成
(允许不同用户的文件重名,也可以在目录结构上实现访问限制;但用户不能对自己的文件进行分类)
-
-
多级目录结构/树形目录结构:
-
绝对路径:从根目录出发
-
相对路径:从当前目录出发
(不便实现文件的共享 ,但在树形目录基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图 ,可以更方便实现多个用户间的文件共享;当用户删除结点时,必须使该结点的共享计数器减为0才能删除结点)
-
FCB改进:(索引结点机制)
把除文件名之外的文件描述信息都放进索引结点:大大提升了文件检索速度
文件分配
大部分操作系统中,磁盘块的大小与内存块、页面大小相同
内存与磁盘之间的数据交换(读写操作、磁盘I/O)都是以块为单位进行的
操作系统为文件分配存储空间都是以块为单位
文件的逻辑地址:逻辑块号+块内地址;物理块号=起始块号+逻辑块号
-
连续分配:每个文件在磁盘上占有一组连续的块;支持顺序访问和随机访问
-
优:顺序读写时速度最快
-
缺: 不便扩展 ;存储空间利用率低,会产生难以利用的磁盘碎片
-
-
链接分配:
-
隐式链接(默认)
-
优:方便文件扩展,没有碎片问题,外存利用率高
-
缺:
-
只支持顺序访问,不支持随机访问
-
查找效率低
-
-
-
显式链接:把用于链接各物理块的指针显示存放在一张表中(FAT文件分配表)
(一个磁盘仅设置一张FAT,开机时将FAT读入内存,并常驻内存)
-
优:
-
逻辑块号到物理块号的转化不需要读磁盘操作 ,比隐式链接快得多
-
支持随机访问
-
不会产生外部碎片
-
方便扩展
-
-
缺:FAT需要占用一定存储空间
-
-
-
索引分配:一个文件对应一张索引表
-
优:
-
支持随机访问
-
文件方便扩展
-
-
缺:索引表需要占用一定的存储空间
-
若索引表太大,一个索引块装不下:
-
链接方案:将多个索引块链接起来存放(查找效率低)
-
多层索引:建立多层索引,第一层索引块指向第二层索引块(访问目标数据块,需要3次磁盘I/O;K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作)
-
混合索引:多种索引分配方式的结合,如一个文件的顶级索引表中,既包含了直接地址索引,又包含了一级间接索引,还包含二级间接索引
-
-
文件存储空间管理
-
空闲表法:适用于连续分配方式
-
空闲链表法:
连续的盘块组成一个盘区
-
空闲盘块链 :适用于离散分配的物理结构
-
空闲盘区链:离散分配、连续分配都适用;为一个文件分配多个盘块时效率更高
-
-
位示图法:连续分配、离散分配都适用
例:
-
盘块号b=ni+j
-
字号i=b/n
-
位号j=b%n
-
文件的基本操作
操作系统向上提供的最基本功能:(系统调用)
-
创建文件
-
删除文件
-
读文件
-
写文件
-
打开文件:将目录项中的信息复制到内存中的打开文件表中,并将打开文件表的索引号(文件描述符)返回用户
-
关闭文件
文件管理功能
文件共享
-
基于索引结点的共享方式(硬链接)
-
基于符号链的共享方式(软连接):访问速度比硬链接慢,如快捷方式
文件保护
-
口令保护:
-
优:保存口令的空间开销不多;验证口令的时间开销也很小
-
缺:正确的口令存放在系统内部,不够安全
-
-
加密保护:访问文件时需要提供正确的密码才能对文件进行正确的解密
-
优:保密性强,不需要在系统中存储密码
-
缺:编码/译码,或者说加密/解密要花费一定时间
-
-
访问控制:在每个文件FCB中增加一个访问控制列表(ALC),该表中记录了各个用户可以对该文件执行哪些操作
(精简的访问控制表:以组为单位,标记各组用户可以对文件执行的操作)