Post

文件管理

文件管理
单位2 的幂
K(KB)1024(2^{10})
M(MB)1024 KB(2^{20})
G(GB)1024 MB(2^{30})
T(TB)1024 GB(2^{40})
P(PB)1024 TB(2^{50})
E(EB)1024 PB(2^{60})

文件的概念

文件:具有符号名的,在逻辑上具有完整意义的一组相关信息项的序列

文件命名一般包括文件名【识别文件】和扩展名【标识文件特性】

分类

用途:系统文件、库文件、用户文件

保护级别:只读、读写、不保护

信息时限

设备类型

逻辑结构、物理结构

引入文件的优点

用户使用方便 — 按名存取

文件安全可靠

文件可备份

文件可共享

文件系统

定义:是操作系统中负责存取和管理信息的模块

功能(面向用户):

  • 文件的按名存取
  • 文件的共享和保护
  • 文件的操作和使用

为了实现这些功能,OS必须考虑:

  1. 文件目录的建立和维护
  2. 存储空间的分配和回收
  3. 数据的保密和保护
  4. 监督用户存取和修改文件的权限

怎么找到这玩意,这玩意怎么存,怎么保护秘密&权限

截屏2026-06-10 16.48.07

文件的组织

文件的存储

存储介质:磁带、光盘、磁盘

磁带:

1
2
3
4
5
6
7
8
[A][B][C][D][E]
 ↑
磁头

想读E

必须:
A → B → C → D → E

光盘:

1
2
3
4
5
6
凹坑(Pit)
平地(Land)

激光反射不同
↓
识别0和1

磁盘:支持随机访问,速度远快于磁带

[공룡책] 11장 2차 저장장치 구조 - Noep's Posts

卷是存储介质的物理单位,对应于一盘磁带、一块软盘、一个光盘片、一个硬盘分区(C盘)

格式化、挂载、文件系统、目录树都建立在卷上

块是存储介质上连续信息所组成的一个区域,也叫做物理记录

例如:把4KB作为读取的基本单位,这个基本单位就是块

块在主存储器和辅助存储器进行信息交换的物理单位,每次总是交换一块或整数块信息

存储设备 –> volume –> block –> data

决定块的大小要考虑用户使用方式、数据传输效率和存储设备类型等多种因素

不同类型的存储介质,块的长短常常各不相同;对同一类型的存储介质,块的大小一般相同,但也可以不同

外围设备由于启停机械动作或识别不同块的要求,两个相邻块之间必须留有间隙,间隙是块之间不记录用户代码信息的区域

1
2
3
4
块1      块2
█████----█████
     ↑
   间隙

顺序存取存储设备

顺序存取设备是严格依赖信息的物理位置次序进行定位和读写的存储设备

如:磁带机

具有存储容量大、稳定可靠、卷可装卸和便于保存等优点,广泛用作存档

磁带的一个突出特点是块长的变化范围较大,块可以很小,也可以很大,原则上没有限制

光盘也是顺序存储设备

直接存取存储设备

磁盘是一种直接存取存储设备,又叫随机存取存储设备

移臂与旋转两维组织,存取速度高

文件的逻辑结构(又称逻辑文件)

  • 独立于物理环境的,用户概念中的抽象信息组织方式
  • 用户能观察到的,并加以处理的数据集合

两种形式:

  • 流式文件
  • 记录式文件

流式文件

流式文件指文件内的数据不再组成记录,只是由一串依次的字节组成的信息流序列

这种文件常常按长度来读取所需信息,也可以用插入的特殊字符作为分界

记录式文件

记录式文件是一种有结构的文件,它是若干逻辑记录信息所组成的记录流文件

逻辑记录是文件中按信息在逻辑上的独立含义所划分的信息单位

数据库管理系统也支持逻辑记录

但数据库有别于记录式文件,数据库中的记录之间可以通过数据冗余构成某种联系

数据库管理系统支持基于联系的数据查询,文件系统则不行

记录的成组和分解

记录(Record)是一条逻辑上完整的数据

若干个逻辑记录合并成一组,写入一个块叫记录的成组,每块中的逻辑记录数称块因子

对于流式文件,一个物理记录可以存放很多个连续字节

系统设置独立于用户数据区的输入/输出缓冲区

记录的成组操作在输出缓冲区内进行,凑满一块后才将缓冲区内的信息写到存储介质上

当存储介质上的一个物理记录读进输入缓冲区后,把逻辑记录从块中分离出来的操作叫记录的分解操作

截屏2026-06-10 20.22.31

定长记录:固定组块(fixed blocking):使用固定长度的记录,并且若干条完整的记录被保存在一个块中。在每个块的末尾可能会有一些未使用的空间,称为内部碎片。

变长记录:可变长度非跨越式组块(variable-length unspanned blocking):使用可变长度的记录,但并不采用跨越的方式。如果下一条记录比块中剩余的未使用的空间大,则无法使用这一部分,因此在大多数中都会有未使用的空间。

跨块记录:可变长度跨越式组块(variable-length spanned blocking):使用长度可变的记录,并且紧缩到块中,使得块中没有未使用空间。因此,某些记录可能会跨越两个块,通过一个指向后继块的指针连接。

类型碎片
定长记录可能产生块内碎片
变长记录更容易产生块内碎片
跨块记录基本不产生块内碎片

成组与分解的优点:记录成组与分解不仅节省存储空间,还能减少输入输出操作次数,提高系统效率

记录成组与分解处理带来的新特征:

  • 用户读请求,导致包含该逻辑记录的物理块读入输入缓冲区;这一操作可能读入了多个逻辑记录,这一现象称为提前读
  • 用户写请求,首先是写入输出缓冲区,只有当该缓冲区中的逻辑记录满后才会引起实际输出,这一现象称为推迟写

物理结构

文件的物理结构和组织是指文件在物理存储空间中的存放方法和组织关系(又称为物理文件)

文件的存储结构涉及块的划分、记录的排列、索引的组织、信息的搜索等许多问题

顺序文件

将一个文件中逻辑上连续的信息存放到存储介质的依次相邻的块中便形成顺序结构,这类文件叫顺序文件,又称连续文件

磁带文件、光盘文件是典型例子

  • 优点:顺序存取记录时速度较快
    • 批处理文件,系统文件用得最多
    • 采用磁带存放顺序文件时,总可以保持快速存取的优点
  • 缺点:建立文件前需要能预先确定文件长度,以便分配存储空间;修改、插入和增加文件记录有困难

连接文件

连接文件,又称串联文件;连接结构的特点是使用连接字来表示文件中各个物理块之间的先后次序

第一块文件信息的物理地址由文件目录给出,而每一块的连接字指出了文件的下一个物理块位置;连接字内容为0时,表示文件至本块结束

像输入井、输出井等都用此类文件

截屏2026-06-10 21.06.09

连接文件的优点:易于对文件记录做增、删、改,易于动态增长记录;不必预先确知文件长度;存储空间利用率高

缺点:存放指针需额外的存储空间;由于存取须通过缓冲区,待获得连接字后,才能找到下一物理块的地址,因而,仅适用于顺序存取

直接文件

直接文件,又称散列文件,它通过计算记录的关键字建立与其物理存储地址之间的对应关系

这种变换通常采用散列法(hash法)

计算寻址结构可能出现‘冲突’,即不同的关键字可能变换出相同的地址来,解决办法有拉链法、循环探查法、 二次散列法、溢出区法等

索引文件

索引文件为每个文件建立了一张索引表,其中,每个表目包含一个记录的键(或逻辑记录号)及其存储地址

索引表的地址可由文件目录指出,查阅索引表先找到相应记录键(或逻辑记录号),然后获得数据存储地址

索引文件在文件存储器上分两个区:索引区和数据区

访问索引文件需两步操作:第一步查找索引表,第二步获得记录物理地址

需要两次访问辅助存储器,若文件索引已预先调入主存储器,那么,就可减少一次内外存信息交换

索引结构可以被认为是连接结构的一种扩展,除了具备连接文件的优点外,还克服了它只能作顺序存取的缺点,具有直接读写任意一个记录的能力,便于文件的增、删、改

索引文件的缺点是:增加了索引表的空间开销和查找时间

文件目录

文件目录结构

文件目录是实现文件的“按名存取”的关键数据结构

文件系统的基本功能之一就是负责文件目录的建立、维护和检索,要求编排的目录便于查找、防止冲突

文件目录需要永久保存,因此也组织成文件存放在磁盘上,称目录文件

一级目录结构

一级目录结构:在操作系统中构造一张线性表,与每个文件的相关属性占用一个目录项,构成了一级目录结构

由于用户与文件众多,容易重名,不利记忆

二级目录结构

第一级为主文件目录,它用于管理所有用户文件目录,它的目录项登记了系统接受的用户的名字及该用户文件目录的地址

第二级为用户的文件目录,它为该用户的每个文件保存一个登记栏,其内容与一级目录的目录项相同

每一用户只允许查看自己的文件目录

截屏2026-06-10 21.30.50

采用二级目录管理文件时,因为任何文件的存取都通过主文件目录,于是可以检查访问文件者的存取权限,避免一个用户未经授权就存取另一个用户的文件,使用户文件的私有性得到保证,实现了对文件的保密和保护

特别是不同用户具有同名文件时,由于各自有不同的用户文件目录而不会导致混乱

对于同一个用户而言,同样存在文件多、容易重名问题

树形目录结构

每一级目录可以登记下一级目录,也可以登记文件,从而,形成了层次文件目录结构

层次目录结构通常采用树形目录结构,它是一棵倒向的有根树,树根是根目录;从根向下,每一个树分叉是一个子目录;而树叶是文件

树形目录结构的特点

较好地反映现实世界中具有层次关系的数据集合和较确切地反映系统内部文件的组织结构

不同文件可以重名,只要它们不位于同一末端的子目录中

易于规定不同层次或子树中文件的不同存取权限,便于文件的保护、保密和共享

文件目录的管理

目录项查找

1
2
3
4
5
目录项
=
文件名
+
文件控制信息的指针

搜索具体目录项时,可以采用顺序查找法,依次扫描文件目录中的目录项,将目录项中的名字与欲查找的文件名相比较

可以采用一些优化办法加快查找目录的速度

  • 目录表项是按键的顺序编排,则可以采用“二分查找法”
  • 或者采用“杂凑法”,把每个文件名经过变换函数变换成唯一的目录表表项【h(文件名) = 位置】

文件目录处理

一种有效办法是把常用和正在使用的那些文件目录复制进主存,这样,既不增加太多的主存开销,又可明显减少目录查找时间

活动文件表

系统可以为每个用户进程建立一张活动文件表,当用户使用一个文件之前,先通过“打开”操作,把该文件有关目录信息复制到指定主存区域,有关信息填入活动文件表,以建立用户进程和该文件索引的联系

当不再使用该文件时,使用“关闭”,切断用户进程和这个文件的联系,同时,若该目录已被修改过,则应更新辅存中对应的文件目录

inode

inode = 文件所有元数据

1
2
3
4
5
目录
│
├── os.pdf  → inode 100
├── db.pdf  → inode 101
└── note.pdf→ inode 102
1
2
3
4
5
6
inode100
├── 文件大小
├── 权限
├── 时间
├── 数据块地址
└── ...

inode一般包含:

1
2
3
4
5
6
7
8
9
10
inode
├── 文件类型
├── 文件大小
├── 所有者UID
├── 所属组GID
├── 权限(rwx)
├── 创建时间
├── 修改时间
├── 链接计数
└── 数据块指针

当我们执行: cat os.pdf

Step1

1
2
3
4
5
os.pdf
↓
目录项
↓
inode 123456

Step2

1
2
3
inode 123456
↓
blocks = [10,11,12]

Step3:读取数据块

1
2
3
block10
block11
block12

inode不保存文件名

inode与数据块关系:文件内容导航表

1
2
3
4
5
6
7
Volume
 ↓
文件系统
 ↓
inode
 ↓
数据块

目录负责名字查找,inode 负责文件管理,数据块负责存储内容

FCB(File Control Block,文件控制块)是操作系统管理文件时保存文件元信息的数据结构。inode是FCB的一种具体实现。

文件的共享、保护和保密

  • 文件共享是指不同用户共同使用某些文件
  • 文件保护是指防止文件被破坏
  • 文件保密则是指防止文件及其内容被其他用户窃取

文件的保密措施有以下几种:

  1. 隐蔽文件目录
  2. 设置口令
  3. 使用密码

文件保护

文件副本

动态多副本技术

第一种办法是在多个介质上维持同一内容的文件,并且在更新内容时同时进行

这种方法需要增加设备费用和系统负载一般适用于容量较小且较为重要的文件,例如不需更新的系统文件及专用文件,当文件发生故障时只要切换到备用设备就可

转储、备份与恢复

文件转储:定时把文件复制转储到其它介质上,当某介质上出现故障时,复原转储文件

转储又可分成两种方式:

一是在一定时间间隔或一个单位处理结束时,系统自动复写更新过的文件和数据

二是每天或每周把文件信息全部复写一遍,需要时再通过装入转储文件来恢复系统,诸如BACKUP、RESTORE等命令

文件存取控制矩阵与文件存取表

系统为每个用户设置访问每个文件对象的存取属性

系统的全部用户对全部文件的存取属性就组成的一个二维矩阵,称为存取控制矩阵

由于操作系统拥有很多用户和众多文件,存取控制矩阵是一个稀疏矩阵,可以将其简化为一张存取控制表,每行包括:用户、文件、存取属性。存取控制表仅登记那些对文件拥有存取属性的部分

存取属性:可以有访问、读、写、执行、创建、删除、授权等等

文件属性

文件属性可以放在文件目录项中,管理大为简化

  • chmod命令可以改变文件属性
  • chown命令用于变更文件属主
  • chgrp命令用于变更用户伙伴

文件存取

顺序

按记录顺序进行读/写操作的存取方法称顺序存取

读操作根据读指针读出当前记录,同时推进读指针,指向下一次要读出的记录

写操作则设置写指针,把一个记录写到文件未端,同时推进写指针

允许对读指针进行前跳或后退n(整数)个记录的操作

直接

很多应用场合要求快速地以任意次序直接读写某个记录

索引

基于索引文件的索引存取方法

对于这种文件,信息块的地址都可以通过查找记录键而换算出

除可采用按键存取外,也可以采用顺序存取或直接存取的方法

实际的系统中,大都采用多级索引,以加速记录查找过程

截屏2026-06-10 23.16.09

系统调用

//TODO

辅存空间管理

位示图

使用若干字节构成一张表,表中每一字位对应一个物理块,字位的次序与块的相对次序一致。字位为“1”表示相应块已占用,字位为“0”状态表示该块空闲

其主要优点是,可以把位示图全部或大部分保存在主存中,再配合现代计算机都具有的位操作指令,可实现高速物理块分配和去配

截屏2026-06-10 23.23.12

为什么在格式化磁盘后,系统显示的可用空间变小?

This post is licensed under CC BY 4.0 by the author.