王道计算机考研 操作系统学习笔记 + 完整思维导图篇章四: 文件管理

目录

文件管理

文件的逻辑结构

无结构文件

有结构文件

顺序文件

索引文件

索引顺序文件

文件目录

文件控制块(FCB)

目录结构分类

单级目录结构

两级目录结构

[多级目录结构 (树形目录结构)](#多级目录结构 (树形目录结构))

无环图目录结构

索引节点

文件的物理结构(文件分配方式)

文件块、磁盘块

文件分配方式

连续分配

链接分配

索引分配

文件存储空间管理

存储空间的划分与初始化

存储空间管理

空闲表法

空闲链表法

位示图法

成组链接法

文件的基本操作

创建文件

删除文件

打开文件

关闭文件

读取文件

写文件

文件共享

基于索引结点的共享方式(硬链接)

基于符号链的共享方式(软链接)

文件保护

口令保护

加密保护

​编辑访问控制

文件系统的层次结构

文件系统的全局结构

物理格式化

逻辑格式化

文件系统在内存中的结构

文件管理

文件的逻辑结构

按文件是否有结构分类,可以分为无结构文件、有结构文件两种

无结构文件

文件内部的数据就是一系列二进制流或字符流组成。又称"流式文件。如;Windows 操作系统中的 .txt 文件。

有结构文件

由一组相似的记录组成,又称"记录式文件"。每条记录又若千个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)

根据各条记录的长度(占用的存储空间) 是否相等,又可分为定长记录可变长记录两种

顺序文件
索引文件
索引顺序文件

为了进一步提高检索效率,可以为顺序文件建立多级索引表。例如,对于一个含 106个记录的文件,可先为该文件建立一张低级索引表,每 100 个记录为一组,故低级索引表中共有 10000个表项(即10000个定长记录),再把这 10000 个定长记录分组,每组100个,为其建立顶级索引表,故顶级索引表中共有 100 个表项。


文件目录

文件控制块(FCB)

一个FCB就是一个文件目录项

FCB 的有序集合称为"文件目录"FCB 中包含了文件的基本信息 (文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等)。

FCB 实现了文件名和文件之间的映射。使可用户(用户程序)以实现"按名存取"

目录结构分类

单级目录结构

早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项

两级目录结构

早期的多用户操作系统,采用两级目录结构。分为主文件目录 (MFD,Master File Directory) 和用户文件目录(UFD,User Flie Directory)

多级目录结构 (树形目录结构)

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了"无环图目录结构"


无环图目录结构

索引节点

其实在查找各级目录的过程中只需要用到"文件名"这个信息,只有文件名匹配时,才需要读出文件的其他信息。因此可以考虑让目录表"瘦身"来提升效率


文件的物理结构(文件分配方式)

文件块、磁盘块

文件分配方式

连续分配

优点:

读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需时间就越长
结论:连续分配的文件在顺序读/写时速度最快

缺点:

结论:物理上采用连续分配的文件不方便拓展


链接分配

隐式链接


显示链接


索引分配

链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。


多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。

采用 K 层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要 K + 1 次读磁盘操作


混合索引:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表) 。


文件存储空间管理

存储空间的划分与初始化

存储空间管理

空闲表法
空闲链表法
位示图法

成组链接法

空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。UNIX系统中采用了成组链接法对磁盘空闲块进行管理


文件的基本操作

创建文件

删除文件

打开文件

关闭文件

读取文件

写文件


文件共享

注意:

多个用户共享同一个文件,意味着系统中只有"一份"文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。

如果是多个用户都"复制"了同一个文件,那么系统中会有"好几份"文件数据。其中一个用户修改了自己的那份文件数据,对其他用户的文件数据并没有影响。

基于索引结点的共享方式(硬链接)

知识回顾:索引结点,是一种文件目录瘦身策略。由于检索文件时只需用到文件名,因此可以将除了文件名之外的其他信息放到索引结点中。这样目录项就只需要包含文件名、索引结点指针。

基于符号链的共享方式(软链接)


文件保护

口令保护

加密保护

访问控制


文件系统的层次结构


文件系统的全局结构

物理格式化

物理格式化,即低级格式化------划分扇区,检测坏扇区,并用备用扇区替换坏扇区

逻辑格式化

逻辑格式化后,磁盘分区(分卷 Volume),完成各分区的文件系统初始化注:逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据

文件系统在内存中的结构

注:近期访问过的目录文件会缓存在内存中,不用每次都从磁盘读入,这样可以加快目录检索速度

相关推荐
xiaoyaolangwj17 分钟前
高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
学习·机器人·自动驾驶
静止了所有花开1 小时前
SpringMVC学习笔记(二)
笔记·学习
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
L_cl3 小时前
Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
学习
Mephisto.java4 小时前
【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
大数据·学习·hbase
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
红中马喽4 小时前
JS学习日记(webAPI—DOM)
开发语言·前端·javascript·笔记·vscode·学习
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
huangkj-henan6 小时前
DA217应用笔记
笔记