【操作系统】第四章:文件管理

简介: 第四章:文件管理

@[toc]

4.1.1 文件管理

文件:一组有意义的信息集合

  • 问题1:文件内部的数据怎样组织起来?
  • 问题2:文件之间又应该怎样组织起来?
  • 问题3:操作系统应该提供哪些功能,才能方便用户、应用程序使用文件?
  • 问题4:文件数据应该怎么存放在外存上?

image-20220822094404305

文件的属性

文件名:又创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下补允许有重名文件。

标识符:每一个文件都有一个唯一的标识符用来区分文件,但是对用户来说无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。

文件类型:指明文件的类型(txt,jpg..)

位置:文件存放的路径(用户看到的),在外存中的路径(操作系统用的,用户不可见)

大小:指明文件大小

创建时间、修改时间

文件所有者信息

保护信息:对文件进行保护的访问控制信息

image-20220822101438201

文件内部的数据如何组织?

无结构文件:文本文件,有一些二进制或字符流组成,又称流式文件

有结构文件:由一组相似的记录组成,记录时一组相关数据的集合

image-20220822101636283

文件之间如何组织?

树形结构

image-20220822101800466

操作系统为上层提供哪些功能

创建文件create系统调用

读文件:将文件数据读入内存,才能让CPU处理,提供read系统调用

写文件:将更改过的文件数据写回外存,我们在记事本上编辑完数据内容后,点击保存后,记事本会通过操作系统的write系统调用将文件从内存写回外存。

删除文件delete系统调用将文件从外存中删除

打开文件open系统调用

关闭文件close系统调用

复制文件:先创建一个新文件,在把源文件读入内存,再将内存中的数据写回到新文件中。

文件如何存放在外存?

image-20220822102459381

连续存放还是离散存放?

image-20220822102510104

4.1.2 文件的基础操作

image-20220822102711215

创建文件

进行create 系统调用时,需要提供的参数

  1. 所需的外存空间大小
  2. 文件存放路径
  3. 文件名

操作系统处理create系统调用

  1. 为新文件分配必要的外存空间
  2. 在文件目录中创建一个目录项,包含这个文件的文件名以及在外存中的地址等属性。

image-20220822111742671

删除文件

  1. 从目录中找到要删除文件的目录项,使之为空项
  2. 回收该文件所占用的存储空间

image-20220822173202476

打开文件

  1. 在目录中找到对应的文件
  2. 将文件复制到内存中的打开文件表中,并将对应表的编号返回给用户

image-20220822173748641

当我们打开了一个文件在删除发现删除不了,这是为啥?

系统的打开文件表中记录了每个文件被打开的次数,当想要删除这个文件时,需要先检查打开记录表中这个文件有没有被打开,如果有则不能被删除。

image-20220822174550583

关闭文件

  1. 将进程的打开文件表相应表项删除
  2. 回收分配给该文件的内存空间等资源
  3. 系统打开文件表的打开计数器减1,为0时删掉对应表项

读文件

  1. 根据文件名查找目录,得到被读文件在外存中的地址
  2. 在目标项中,还有一个指针用于对文件进行读操作,读到内存中去

image-20220822175022346

写文件

  1. 根据文件名查找目录
  2. 找到指定文件的目标项
  3. 利用目录中的写指针进行写操作

将编辑过的文件写回外存,这个文件先是保留在内存中的。

image-20220822175250672

4.1.3 文件保护

口令保护

image-20220822182241046

加密保护

image-20220822182356145

访问控制

以用户为单位进行控制

这样会导致访问控制列表会很大

image-20220822182443354

以组为单位进行控制

image-20220822182613140

4.1.4 文件的逻辑结构

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

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

无结构文件

image-20220822195955890

有结构文件

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

根据各条记录的长度,可分为定长记录可变长记录

定长记录

image-20220822201359424

可变长记录

image-20220822201429930

顺序文件

串结构:记录之间的顺序与关键字无关

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

image-20220822202317576

数组和链表的区别

image-20220822210712476

索引文件

对于不定长记录,可以在弄一个索引表,将每个记录的地址都记录在索引表中,这样就可以实现随机存取了, 如果按关键字顺序排列,还可以使用折半查找。

image-20220822211333093

索引顺序文件

为了加快查找,可以将索引表中一个索引项记录一组记录,节约了很多资源,也加快了查找速度

image-20220822211749764

多级索引文件

image-20220822211952837

image-20220822212209359

4.1.5 文件的物理结构

文件块、磁盘块

磁盘是按块来分配的,一个文件会分为好几个块进行存储。

image-20220822212555262

image-20220822213025497

文件分配方式--连续分配

优点

  1. 可以实现顺序访问和随机访问
  2. 读/写速度快

image-20220822213657097

image-20220822214146267

缺点

  1. 当文件想要拓展时,发现连续的物理块已经被占用了,只能将整个文件迁徙到其他连续的物理块
  2. 当有多个空闲块,但不是连续的时,一个文件就无法存储在磁盘中,浪费了很多资源,会产生磁盘碎片

image-20220822214330750

image-20220822214602624

链接分配--隐式链接

链表的形式链接,只能从表头指针一直往下找,只支持顺序访问,效率低。但很方便拓展,不会产生外部碎片。

image-20220822215039680

image-20220822215126341

链接分配--显示连接

用一个表记录每个物理块以及它的下一个块的地址。

这样就可以在查找的过程中不去在磁盘上查找而是在表上查找,可以很大地提高查找效率。

image-20220822215510348

这里为什么可以实现随机访问?

image-20220822220011880

image-20220822220323127

索引分配

数组的形式记录了每个逻辑块对应的物理块。

image-20220822220942747

image-20220822221218556

若一个磁盘块1KB,一个索引项4B,则一个磁盘块只能存256个索引项。

如果一个文件的大小操作过了256块,那么一个磁盘是装不下的,如何解决呢?

链接方案

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

image-20220822221951462

多级索引方案

image-20220822222418509

混合索引

前面两种的混合方案

image-20220822224113748

总结

image-20220822224427457

image-20220822224607491

4.2.1 文件目录

文件控制块

image-20220822225235113

image-20220822225502280

image-20220822225812398

单级文件目录

image-20220822225926331

两级文件目录

image-20220822230051889

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

image-20220822230308427

image-20220822230510059

无环图目录结构

树形结构很难实现文件共享

image-20220822230804984

索引节点

image-20220822231356187

4.2.2 文件共享

操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件。

复制是将一个文件复制多份,各个文件是独立地,互不影响。

基于索引节点地共享方式(硬链接)

每个用户拥有不同的目录,不同文件名的索引节点指针可以指向同一个文件。

image-20220823101432440

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

一个用户想要共享某个文件可以用一个文件记录想要共享文件的存放路径,这样通过存储路径去目录中查找,也可以实现共享。

image-20220823101707635

image-20220823102014810

如果文件被删除的话,快捷方式就没用了。

image-20220823102112405

image-20220823102205879

总结

image-20220823102324484

4.3.1 文件系统的层次结构

image-20220823103837926

image-20220823104440029

4.3.2 文件存储路径管理

存储空间的划分与初始化

存储空间的划分:将物理磁盘划分为一个个文件卷(C盘,D盘)

初始化:将各个文件卷划分为目录区、文件区

目录区存放文件目录信息,用于磁盘存储空间管理的信息

文件区存放文件数据

image-20220823105843307

存储空间管理--空闲表法

空闲表存储每个连续空闲块的第一个空闲块的地址以及这个连续空闲块的大小。

image-20220823112003648

存储空间管理--空闲链表法

image-20220823154521682

和队列一样,从队头出去,队尾进来。

image-20220823154535987

image-20220823154856017

存储空间管理--位示图法

image-20220823155811271

image-20220823155932097

存储空间管理--成组链接法

image-20220823160109305

image-20220823161415614

image-20220823161448677

image-20220823161508552

image-20220823161521141

image-20220823161615467

相关文章
|
Linux C语言
Linux操作系统实验四 文件管理(二)(下)
Linux操作系统实验四 文件管理(二)(下)
302 0
|
3月前
|
存储 自然语言处理 搜索推荐
【颠覆你的数字生活!】探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【8月更文挑战第8天】OS Copilot是一款新兴的操作系统辅助软件,通过智能化手段简化电脑使用,从办公到开发全面赋能。安装简易,启动即有引导教程。其智能命令建议功能,可在命令行输入时提供后续选项及其说明,特别适合Linux用户。内置代码片段生成器,根据需求或代码框架自动生成代码,大幅提升开发效率。文件管理助手支持批量操作且可预览结果,降低误操作风险。任务自动化功能便于设置重复性工作流程,如定时备份。搜索功能强大,支持自然语言查询。尽管尚有改进空间,OS Copilot已是提升生产力的得力助手。
111 5
|
2月前
|
存储 自然语言处理 搜索推荐
探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【9月更文挑战第4天】“OS Copilot”是一款高效的操作系统辅助软件,通过智能化手段简化电脑使用,涵盖智能命令建议、代码片段生成、文件管理及任务自动化等强大功能。其简洁的界面与友好的用户体验使其成为提升生产力的理想选择,无论是专业人士还是普通用户都能从中受益。从安装到实际应用都非常流畅,能显著提升工作效率,是优化数字生活的得力助手。
43 0
|
6月前
|
存储 算法 Unix
操作系统(13)-----文件管理3
操作系统(13)-----文件管理
207 0
操作系统(13)-----文件管理3
|
6月前
|
存储 安全 Linux
操作系统(13)-----文件管理4
操作系统(13)-----文件管理
68 0
|
6月前
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
339 0
|
6月前
|
存储 SQL 算法
操作系统(13)-----文件管理1
操作系统(13)-----文件管理
58 0
|
6月前
|
存储 算法 安全
|
6月前
|
缓存 算法 Linux
[操作系统] 文件管理
[操作系统] 文件管理
|
存储 算法 固态存储
操作系统之文件管理
文件管理初识 文件的属性 文件内部的数据如何组织起来? 文件之间应该如何组织起来? 操作系统应该向上提供哪些功能? 从上往下看,文件应该如何存放在外存? 其他需要由操作系统实现的文件管理功能 最后总结一下: 文件的逻辑结构 、 这里说一下随机访问和顺序访问: 随机访问(Random Access)是计算机存储介质的一种访问方式。它指的是存储介质可以以任意的、不连续的方式访问存储的每个地址。也就是说,随机访问允许直接访问存储介质的任意位置,不需要从开头逐个访问到需要的地址。 与随机访问相对的是顺序访问(Sequential Access),它要求从存
112 0
下一篇
无影云桌面