操作系统:文件系统

目录

1、文件

概念:

UNIX文件分类:

2、文件系统

3、文件的访问方式

顺序访问

随机访问

4、文件的组织

逻辑组织

物理组织

5、倒排结构(了解)

5、文件目录

文件控制块(FCB)

​编辑

目录项

单级目录

二级目录

多级目录

6、文件目录的改进

7、文件存储空间的管理

空闲块表

空闲块链

位图

8、内存所需表目


1、文件

概念:

具有符号名而且在逻辑上具有完整意义的信息项序列

UNIX文件分类:

1、普通文件

内容可以是程序、数据、图象等,保存在磁盘块中

2、目录文件

(文件名,文件号)序列,保存在磁盘块中

3、特殊文件

设备

2、文件系统

文件与管理信息资源的程序集合

3、文件的访问方式

顺序访问

分类:

1、从文件头开始顺序访问

2、从文件中间某处开始顺序访问

随机访问

分类:

1、按记录编号随机访问,相当于数组访问索引。

2、按关键字(key)随机访问,相当于Map通过键访问键值。

4、文件的组织

逻辑组织

**定义:**用户看到的文件组织形式
分类:

流式文件: 字节的序列(UNIX, Windows, etc),文件的基本单位是字节

记录式文件:

等长记录(优点:处理方便,速度快;缺点:空间浪费)

不等长记录(优点:省空间;缺点:处理不便,速度慢)

文件的基本单位是记录。

一条记录可能包含多个域,域指的是信息的一个特定类别或字段。

例如:一条员工记录可能包含姓名、职位、部门、入职日期等域。

当记录的域只有一个,且域的类型为字符型,则记录式文件便退化为流式文件。

流式文件是记录式文件的特例

物理组织

**定义:**逻辑组织(文件)到磁盘块的映射

1、顺序结构

**定义:**一个文件占有若干连续的磁盘块。

2、链接结构:

**定义:**一文件可存于不连续块中,块间以指针相连。

3、索引结构

**定义:**一文件可存于不连续块中,块号记在索引块中。

4、散列结构(重点):

杂凑结构,适用于定长记录和按键随机查找的访问方式。一个文件由若干个记录构成,一个记录由若干个域。散列结构是通过给键key计算哈希值,从而计算出记录在磁盘中或文件中的存储位置。

hash(key)=addr (记录在磁盘或文件中的存放位置)

对于哈希函数的冲突碰撞问题,采用顺序探查法, 如发生冲突,则从冲突位置开始顺序探查第一个空闲的存储位置。

要给记录增加两个域,一个是冲突计数,一个是空闲标记。冲突计数主要是记录与当前地址发生冲突的个数,也就是说**记录位置=addr+冲突计数往回找。**而空闲标志是来标志当前记录空间是否被占用。以下是查找过程

5、倒排结构(了解)

**定义:**以键值和记录地址构成的索引结构称为倒排结构。以键值和记录地址构成的索引结构称为倒排结构。倒排结构以多个键和多个索引作为特征的。

优点:速度快

缺点:索引会带来较大的系统开销。

5、文件目录

文件控制块(FCB)

**定义:**文件存在的标志,其中保存系统管理文件需要的全部信息。每个文件都有一个文件控制块。

目录项

**定义:**目录文件中的一项,内容为FCB。

单级目录

**定义:**一个系统只有一个目录。

二级目录

**定义:**每个用户都有一个自己的专有目录。

多级目录

**定义:**从根节点出发的目录系统

6、文件目录的改进

FCB次部(文件名,文件号)保存在目录文件(内存)中。

FCB主部(其他,标识该主部与多少次部相对应的链接记数)保存在外存inode区域。

提示:当链接计数为0时,表示空闲未用的FCB主部。

7、文件存储空间的管理

**引入:**用于保存文件的外存空间是被划分为块的,需要对外存块进行管理。

空闲块表

**定义:**所有空闲块记录同一个表中,表中包括两栏目:首空闲块号和空闲块数。

空闲块链

**定义:**所有空闲块连成一条链。

位图

**定义:**使用1bit表示外存储器中一块的状态,1表示占用,0表示释放。位图需要永久保存在外存空间中。

8、内存所需表目

**用户打开文件表:**用于记录进程所打开的文件,其长度决定该进程可以同时开多少个文件,每个进程一个。

系统打开文件表: 存放在内存中,用来保存已打开文件的文件控制块,其长度决定整个系统可以同时开多少个文件,整个系统一个。

相关推荐
wang6021252182 分钟前
FastAPI框架为什么在启动时建表
数据库
虾..2 分钟前
Linux 简单日志程序
linux·运维·算法
男孩李4 分钟前
linux下如何执行postgres数据库的sql文件
数据库·sql·postgresql
zwjapple8 分钟前
MySQL SQL 面试核心考点与注意事项总结
数据库·sql·mysql
乐韵天城9 分钟前
SpringBoot中如何手动开启数据库事务
数据库·spring boot
fandroid10 分钟前
树莓派通过docker安装kodbox可道云
运维·docker·容器
05大叔14 分钟前
Spring Day02
数据库·sql·spring
默默前行的虫虫21 分钟前
nicegui中多次调用数据库操作总结
数据库·python
鸽鸽程序猿27 分钟前
【Redis】事务
数据库·redis·缓存
码农小白猿1 小时前
IACheck优化电梯定期检验报告:自动化术语审核提升合规性与效率
大数据·运维·人工智能·ai·自动化·iacheck