问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

文件管理详解:从逻辑结构到物理存储

创作时间:
作者:
@小白创作中心

文件管理详解:从逻辑结构到物理存储

引用
CSDN
1.
https://blog.csdn.net/m0_73997331/article/details/144174383

文件管理是计算机系统中的核心功能之一,涉及文件的逻辑结构、物理存储、基本操作、共享方式以及保护机制等多个方面。本文将系统地介绍这些概念和实现方法,帮助读者深入理解计算机系统中的文件管理机制。

一. 文件的逻辑结构

文件的逻辑结构是指在用户看来,文件内部的数据应该是如何组织起来的。

1- 无结构文件

文件内部的数据就是一系列二进制流或字符流组成,又称流式文件,如.txt文件

2- 有结构文件

由一组相似的记录组成,又称记录式文件。每条记录由若干个数据项组成,每条记录有一个数据项作为关键字。

a-顺序文件(默认各记录在物理上顺序存储)

文件中的记录一个接一个地顺序排列,记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。

顺序存储:逻辑上相邻的记录物理上也相邻

链式存储:逻辑上相邻的记录物理上不一定相邻

串结构:记录之间的顺序与关键字无关(通常按照记录存入的时间决定记录的顺序)

顺序结构:记录之间的顺序按关键字顺序排列

b-索引文件

建立一张索引表以加快文件检索的速度。每条记录对应一个索引项,索引表本身是定长记录的顺序文件。

c-索引顺序文件

建立一张索引表,但与索引文件不同的是,并不是每个记录对应一个索引项,而是一组记录对应一个索引项(例如:查字典)

3- 文件目录

一个文件对应一个FCB(文件控制块),一个FCB就是一个文件目录项,多个FCB组成文件目录。FCB的有序集合称为文件目录。FCB中包括文件的物理位置信息,但不包括FCB的物理位置信息。

目录结构

a-单级目录结构

按名存取

缺点:不允许文件重名。

b-两级目录结构

主文件目录:记录用户名及相应用户文件目录的存放位置

用户文件目录:记录用户文件的FCB

允许不同用户的文件重名

缺点:不能对文件分类

c-多级目录结构

用文件路径名标识文件

从根目录出发的路径称为绝对路径

从当前目录出发的路径称为相对路径

缺点:不便于实现文件共享

d-无环图目录结构

在多级目录结构的基础上,增加一些指向同一节点的有向边。

索引结点

二. 文件的物理结构

文件的物理结构是指在操作系统看来,文件的数据是如何存放在外存中的。

1- 对非空闲磁盘块的管理

类似于内存分页,磁盘中的存储单元也会被分为一个个磁盘块。通常,磁盘块的大小与内存块、页面的大小相同

a- 连续分配

每个文件在磁盘上占有一组连续的块

物理块号 = 起始块号 + 逻辑块号

优点:支持随机访问,在顺序访问时速度最快

缺点:不方便文件拓展,存储空间利用率低,会产生磁盘碎片

b- 链接分配

为文件分配离散的磁盘块,然后用指针链接。

隐式链接

除了文件的最后一个磁盘块之外,每个磁盘块中都会保存指向下一个盘块的指针,指针对用户透明。

优点:很方便文件拓展,不会有碎片问题,外存利用率高

缺点:不支持随机访问

显式链接

文件分配表(FAT):把用于链接文件各物理块的指针显式地存放在一张表中。

一个磁盘只会建立一张FAT。FAT常驻内存。

优点:很方便文件拓展,不会有碎片问题,外存利用率高,支持随机访问,比隐式链接访问效率高

缺点:FAT需要占用一定的存储空间。

c- 索引分配

为文件分配离散的磁盘块,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块。索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块。

一个文件对应一张索引表

如何解决一个磁盘块装不下一个文件的整张索引表?

①链接方案

如果索引表太大,一个索引块装不下,那么可以将其拆分,用指针链接即可

②多层索引

建立多层索引类似于多级页表

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

③混合索引

多种索引分配方式的结合

2- 对空闲磁盘块的管理

a- 文件卷(逻辑卷)概念

将物理磁盘划分为一个个文件卷,文件卷分为目录区和文件区

b- 目录区与文件区

目录区存放FCB、空闲表、位示图、超级块等用于文件管理的数据

文件区存放文件数据

c- 管理方法

①空闲表法

与内存管理中的动态分区分配类似

②空闲链表法(空闲盘块链、空闲盘区链)

空闲盘块链:适用于离散分配

空闲盘块链:离散连续都适用

③位示图法

每个二进制位对应一个盘块,0代表盘块空闲,1代表盘块已分配。

若盘号、字号、位号从0开始,字长为n

(字号 i , 位号 j )的二进制位对应的盘块号为b = n * i + j

b号盘块对应的字号 i = b / n,位号 j = b % n

离散和连续分配都适用

④成组链接法

超级块中记录了下一组的空闲盘块数和下一组的空闲盘块号

三. 文件的基本操作

1- 创建文件

Create系统调用

①参数

所需的外存空间大小

文件存放路径

文件名

②过程

在外存中找到文件所需的空间

根据文件存放的路径信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项

2- 删除文件

Delete系统调用

①参数

文件存放路径

文件名

②过程

根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项

回收文件占用的磁盘块

3- 读文件

Read系统调用

读指针指向外存,将用户指定大小的数据读入用户指定的内存区域中(从外存读入内存)

4- 写文件

Write系统调用

将文件数据从内存写出外存

5- 打开文件

Open系统调用

①参数

文件存放路径

文件名

对文件的操作类型(rw)

②过程

根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项,检查该用户是否有指定的操作权限

将目录项复制到内存中的打开文件表

6- 关闭文件

Close系统调用

①过程

将进程的打开文件表相应表项删除

回收分配给该文件的内存空间等资源

系统打开文件表的打开计数器count减1,若count = 0 ,则删除对应的表项

四. 文件共享

共享与复制:

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

②多个用户都复制了同一个文件,系统中会有多份文件数据。其中一个用户修改了自己的文件数据,其他用户并不会看到文件数据的变化。

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

索引结点中设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数。当count = 0 时系统负责删除文件。

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

在一个Link型的文件中记录共享文件的存放路径,类似于快捷方式

五. 文件保护

保护文件数据的安全

1- 口令保护

用户请求访问该文件时必须提供口令

2- 加密保护

使用某个密码对文件进行加密,在访问文件时需要提供正确的密码才能对文件进行正确的解密。

3- 访问控制

在每个文件的FCB中增加一个访问控制列表,该表中记录了各个用户可以对该文件执行哪些操作。

一些注意:

  1. 对一个文件的访问常由用户访问权限和文件属性共同限制。

  2. 从用户的观点看,操作系统中引入文件系统的目的是实现按名存取

  3. 一个文件系统可以存放的文件数量受限于文件控制块的数量

  4. 一个文件系统可以放在多个磁盘上

  5. 成组链接法需要使用空闲盘块号栈

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号