操作系统丨(五)文件管理

同步发布:Hedon丨操作系统丨(五)文件管理 (排版更佳!)

1. 文件的逻辑结构

1.1 逻辑结构的文件类型

有结构文件

文件内容由定长记录和可变长记录组成。

定长记录记录文件格式、文件描述等结构化数据项,可变长记录存储文件的具体内容。

  • 文本文件
  • 文档
  • 媒体文件
image-20210108231855832
无结构文件

也称为流式文件,文件内容长度以字节为单位。

  • 二进制文件
    • exe 文件
  • 链接库
    • dll 文件
    • so 文件

1.2 顺序文件

按照顺序存放在存储介质中的文件。

磁带的存储特性使得磁带文件只能存储顺序文件。

顺序文件是所有逻辑文件当中存储效率最高的。

可变长文件不适合使用顺序文件格式存储。

1.3 索引文件

索引文件是为了解决可变长文件存储而发明的一种文件格式。

索引文件需要配合索引表完成存储的操作。

image-20210108232209703

2. 磁盘调度算法

[1] 先来先服务算法 FCFS
[2] 最短寻道时间优先 SSTF

image-20200512150712968

[3] 扫描算法 SCAN

在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。因这种算法中磁头移动规律颇似电梯的运行,故又称为电梯调度算法。

特点:具有较好的寻道性能,能避免进程饥饿,但不利于两端磁道的请求。

[4] 循环扫描 CSCAN

是SCAN算法的改良,它规定磁头单向移动。例如,自里向外移动,当磁头移到最外磁道时立即又返回到最里磁道,如此循环进行扫描。

特点:该算法消除了对两端磁道请求的不公平。

image-20200512150724758

3. 磁盘容错技术

通过增加冗余磁盘驱动器、磁盘控制器等方法来提高磁盘系统可靠性的一种技术。

三个级别:

  • 低级磁盘容错技术
    • 防止磁盘表明发送缺陷而引起的数据丢失。
    • 采用了双份目录和双份文件分配表、热修复重定向和写后校验等技术。
  • 中级磁盘容错技术
    • 防止磁盘驱动器和磁盘控制器故障,采用了磁盘映像、磁盘双工等技术。
  • 高级系统容错技术
    • 采用服务器镜像技术。

4. 文件的存储空间管理

4.1 文件存储空间的分配

连续分配

为文件分配连续的磁盘空间。

在这种分配方法中,用户必须在分配前说明待创建文件所需的存储空间大小。然后系统查找空闲区管理表格,若有就给文件分配所需的存储空间,否则文件不能建立。

image-20200512152241284

特点:

  • 顺序访问容易且速度快,目录中文件存储位置信息简单;
  • 但容易产生碎片,需要定期对磁盘空间进行整理。
链接分配
[1] 以扇区为单位的链接分配

以扇区为单位的链接分配:按文件的要求分配若干个磁盘扇区,属于同一文件的各扇区按文件记录的逻辑次序用链接指针链接起来。

image-20200512152727049

特点:

  • 消除碎片
  • 查找麻烦
[2] 以区段(或簇)为单位的链接分配

是连续分配和非连续分配的结合。

区段由若干个连续扇区组成,文件所属各区段可以用链接指针、索引表等方法来管理。

特点:

  • 对辅存的管理效率较高
  • 减少了文件访问的查寻时间
索引分配

在索引分配方法中,系统为每个文件分配一个索引块,索引块中存放索引表,索引表中的每个表项对应分配给文件的一个物理块。

image-20200512153709878
  • 直接索引地址
  • 一次间接索引地址
  • 多次间接索引地址
image-20200512153808150

4.2 空闲存储空间的管理

空闲文件目录

文件存储设备上的一个连续空闲区可以看作一个空闲文件,又称空白文件或自由文件。

空闲文件目录方法为所有空闲文件建立一个目录,每个空闲文件在该目录中占一个表目,其中至少包括:

  • 空闲区序号
  • 第一个空闲块块号
  • 空闲块数目等信息。
image-20200512155802640
空闲块链

将文件存储设备上的所有空闲块链接起来,并设置一个头指针指向空闲块链的第一个物理块。

效率低。

改进方法:

将空闲块分成若干组,再用指针将组与组链接起来,将这种管理空闲块的方法称为成组链接法。成组链接法在进行空闲块的分配与回收时要比空闲块链方法节省时间。

空闲盘块的组织:将若干个空闲盘块划归一组,将每组中的所有盘块号存放在其前一组的第一个空闲盘块号指示的盘块中,而将第一组中的所有空闲盘块号放入超级块的空闲盘块号表中。

image-20200512160503655
[1] 分配
image-20200512160843196
[2] 回收
image-20200512160923417
位示图

位示图是反映整个存储空间分配情况的数据结构。

在位示图中,每一个二进制位都对应一个物理块,当某位为1时表示该块已分配,当某位为0时表示该块空闲。

image-20200512161037913

5. 文件系统

5.1 FAT

File Allocation Table。

FAT16、FAT32等,是微软 Dos/Windows 使用的文件系统。

使用一张表保存盘块的信息。

5.2 NTFS

New Technology File System.

WindowsNT 环境的文件系统。

NTFS 对 FAT 进行了改进,取代了旧文件系统。

5.3 EXT2/3/4

Extended File System。

Linux 的文件系统。

逻辑结构
image-20210109083621662
Block Group
image-20210109083716604

[Inode table]

  • 存储文件 Inode 的地方。
  • 每一个文件(目录)都有一个 Inode,它是每一个文件(目录)的索引节点。

[Inode]

  • 存放每个文件的元信息
    • 文件类型
    • 文件权限
    • 文件物理地址
    • 文件长度
    • 文件连接计数
    • 文件存取时间
    • 文件状态
    • 访问计数
    • 链接指针
    • 索引节点编号
  • 文件名不是存放在 Inode 节点上的,而是存放在目录的 Inode 节点。这样列出目录文件的时候就无需加载文件的 Inode。

[Inode bitmap]

  • Inode 的位示图。

  • 记录已分配的 Inode 和未分配的 Inode。

    image-20210109084206129

[Data block]

  • 存放文件内容的地方。
  • 每一个 block 都有唯一的编号。
  • 文件的 block 记录在文件的 Inode 上。

[Block bitmap]

  • 功能与 Inode bitmap 类似,记录 Data block 的使用情况。

[Superblock]

  • 记录整个文件系统相关信息的地方。包括 Block 和 Inode 的使用情况,还有时间信息、控制信息等。

6. Linux 磁盘操作

查看磁盘分配信息 —— df -T
image-20210109084626499
查看 Inode 信息 —— dumpe2fs 某个设备

image-20210109084836404

查看文件信息 —— stat 文件
image-20210109085020066

7. Linux 文件操作

显示当前工作目录的绝对路径 —— pwd
image-20200910160803395
显示当前目录的信息 —— ls
  • -a:显示当前目录所有的文件和目录,包括隐藏的。

    image-20200910161017052
  • -l:以列表的方式显示信息。

    image-20200910161031757

例:查看当前目录的所有内容信息

image-20200910160944120
切换目录 —— cd
  • cd ~:回到当前用户的家目录

    image-20200910161215045
  • cd …:回到上级目录

  • cd [绝对路径] | [相对路径]:切换到指定路径

创建目录 —— mkdir
  • mkdir 目录 —— 创建单级目录

    image-20200910161929409
  • mkdir -p 目录 —— 创建多级目录

    image-20200910161958248
删除空目录 —— rmdir 目录
image-20200910162143629
删除非空目录 —— rm -rf 目录
image-20200910162252214
创建空文件 —— touch 文件名
image-20200910162355086
拷贝文件 —— cp [选项] 原路径 目标路径

将当前目录下的 newFile.txt 文件拷贝到当前目录下的 newDir 目录下:

image-20200910162705004 image-20200910162725033
  • -r:递归复制整个文件

    image-20200910162838332
删除文件或目录 —— rm
  • rm 文件名:删除文件
image-20200910163000761
  • -r:递归删除整个文件夹

    image-20200910163046740
  • -f:强制删除不提示

    image-20200910163236657
移动文件与目录或重命名 —— mv
  • mv 旧文件名 新文件名 —— 重命名

    image-20200910163724236
  • mv 原路径 新路径

    image-20200910163906783
以只读模式查看文件 —— cat 文件名
  • cat 文件名:查看文件内容
image-20200910164014083
  • -n:显示行号

    image-20200910164120043
  • cat 文件名 | more:分页显示

    image-20200910164454370 image-20200910164538624
more 指令

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

image-20200910164840474
less 指令

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

image-20200910165049049 image-20200910165016594
输出重定向(覆盖)—— >
  • ls -l > 文件名:列表的内容写入文件中,覆盖写

    image-20200910165702898
  • cat 文件1 > 文件2:将文件1的内容覆盖到文件2中

    image-20200910165900287
追加 —— >>
  • cat 文件1 >> 文件2:将文件1的内容追加在文件2后面

    image-20200910165946547
输出内容到控制台 —— echo
  • echo $PATH:输出当前环境变量

    image-20200910170124260
显示文件的开头部分内容 —— head
  • head 文件名:默认输出文件的前10行

    image-20200910170440281
  • head -n 行数 文件名:输出文件的头n行

    image-20200910170531344
显示文件的末尾部分内容 —— tail
  • tail 文件:默认查看文件后 10 行

    image-20200910170626647
  • tail -n 行数 文件:显示文件的后n行

    image-20200910170720565
  • tail -f 文件:实时追踪该文档的所有更新(重点

创建软连接(类比快捷方式)—— ln -s 原文件或目录 软连接名
image-20200910171640137
删除软连接 —— rm -rf 软连接名

不要写 rm-rf linkToRoot/

image-20200910171752984
查看已经执行过历史命令或执行历史指令 —— history
  • history:查看已经执行过的历史指令

    image-20200910172122688
  • history 数字:显示最近使用过的 n 个指令。

    image-20200910172202431
  • !n:执行第 n 个历史指令

    image-20200910172259211
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Hedon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值