操作系统之文件管理(上)

简介: 操作系统之文件管理(上)

一、文件与文件系统

1.1 文件是什么

  • 文件是对磁盘的抽象
  • 所谓文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。
  • 信息项:构成文件内容的基本单位(单个字节,或多个字节),各信息项之间具有顺序关系
  • 文件内容的意义:由文件建立者和使用者解释
  • image.png

1.2 如何设计一个文件系统

这里先看文件管理的需求:

  • 从用户角度
    文件系统是如何呈现在用户面前:
*   一个文件的组织
  • 如何命名
  • 如何保护文件
  • 可以实施的操作
  • 从操作系统角度:怎样组织、管理文件
*   文件的描述、分类
  • 文件目录的实现
  • 存储空间的管理
  • 文件的物理地址
  • 磁盘实际运作方式(与设备管理的接口)
  • 文件系统的性能

1.3 文件系统

  • 操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用
  • 文件系统要完成哪些任务


1、统一管理磁盘空间,实施磁盘空间的分配与回收


2、实现文件的按名存取:名字空间–映射–>磁盘空间


3、实现文件信息的共享,并提供文件的保护、保密手段


4、向用户提供一个方便使用、易于维护的接口,并向用户提供有关统计信息


5、提高文件系统的性能


6、提供与IO系统的统一接口

1.4 文件的分类

按文件性质和用途分类(UNIX),一般分为普通文件、目录文件、特殊文件(设备文件)、管道文件、套接字

  • 普通文件
    即用户自己建立的文件,包含了用户的信息,一般为ASCII或二进制文件
  • 目录文件
    管理文件系统的系统文件
  • 特殊文件
    字符设备文件:和输入输出有关,用户模仿串行I/O设备,例如终端、打印机、网卡等。
    块设备文件:磁盘

1.5 文件的逻辑结构

  • 无结构的流式文件
    对文件内信息不再划分单位,它是依次的一串字符流构成的文件。
  • 有结构的记录式文件
    用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。
  • image.png
  • **说明:**这里是从用户角度看文件,由用户的访问方式确定,这里给出了三种逻辑结构,还可以组织成堆、顺序、索引、索引顺序、散列等结构。第一种是以字节为单位的流式结构,第二种是一种记录式文件结构,最后一种是树形结构。

1.6 典型的文件逻辑结构与文件存取

流式文件:构成文件的基本单位是字符


文件是有逻辑意义、无结构的一串字符的集合


记录式文件:文件由若干记录组成,可以按记录进行读写、查找等操作。每条记录有其内部结构


文件的逻辑结构与文件存取之间的关系


顺序存取(访问)


随机存取:提供读写位置(当前位置)。如UNIX的seek操作。

1.7 文件的存储介质

1.7.1 存储介质与物理块

  • 典型的存储介质
    磁盘(包括固态盘SSD)、磁带、光盘、U盘、…
  • 物理块(块block、簇cluster
    信息存储、传输、分配的独立单位
    存储设备划分为大小相等的物理块,统一编号

1.7.2 典型的磁盘结构

普通磁盘构造及工作原理

9.png

  • 磁道(Track)
  • 柱面(Cylinder)
  • 扇区(Sector)
  • 磁头(Heads)
  • 盘片(Platters)
  • 每个碟片都有两面,因此也会相对应每碟片有2个磁头。
  • image.png
  • A:磁道
  • B:扇面
  • C:扇区
  • D:簇(扇区组)
    在硬盘上定位某一数据记录位置—C扇区,使用了三维定位。
  • image.png

1.7.3 磁盘访问

磁盘工作时盘片在高速旋转,机械手臂驱动磁头沿着径向移动,在磁道上读取所需要的数据。

一次访问磁盘的请求:读写、磁盘地址(设备号、柱面号、磁头号、扇区号),内存地址(源/目)。完成过程由三个动作组成:

  1. 寻道(时间):磁头移动定位到指定磁道
  2. 旋转延迟(时间):等待指定扇区从磁头下旋转经过
  3. 数据传输(时间):数据在磁盘与内存之间的实际传输

1.7.4 磁盘空间管理

位图


用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为0,否则为1。


申请物理块时,可以在位示图中查找1的位,返回对应的物理块号


归还时,将对应位转置1。


空闲块表


将所有空闲块记录在一个表中,即空闲块表


主要两项内容:起始块号,块数


空闲块链表


把所有空闲块链成一个表


扩展:成组链接法

磁盘地址与块号的转换

image.png

成组链接法设计思想

image.png

**说明:**左上角的是一个专用块,表示一些有用信息,而右边大括号中的都是空闲块。所有空闲块我们分成了若干组,典型的是100块是一组,最后一个空闲组只有99个空闲块。专用块中有20个空闲块号,分别对应右边的空闲块组。每次要使用文件的时候,就从专用块中挑选空闲块,一般从801开始分配。820中的第一块实际上是记录了后面一块800中空闲块的空闲块号和总的空块的数量,后面的以此类推。最后一个组中的0则表示最后一组的标志。

成组链接法:分配算法

分配一个空闲块

L单元(空闲块数)

  • 空闲块数 > 1 , i = L + 空闲块数
    从i单元得到一个空闲块号;
    把该块分配给申请者;
  • 空闲块数减1
  • 空闲块数 = 1, 取出L + 1单元内容(一组的第一块号或0);
    值 = 0无空闲块,申请者等待
    其值不等于零,把该块内容复制到专用块
    该块分配给申请者;

把专用块内容读到内存L 开始的区域。

成组链表法:回收算法

归还一块

L单元的空闲块数

  • 空闲块数 < 100空闲块数加一;
    j := L + 空闲块数
    归还块号填入j单元
  • 空闲块数 = 100, 则把内存中登记的信息写入归还块中;
    把归还块号填入L+ 1单元;
    L单元置成1
目录
相关文章
|
Linux C语言
Linux操作系统实验四 文件管理(二)(下)
Linux操作系统实验四 文件管理(二)(下)
524 0
|
存储 自然语言处理 搜索推荐
【颠覆你的数字生活!】探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【8月更文挑战第8天】OS Copilot是一款新兴的操作系统辅助软件,通过智能化手段简化电脑使用,从办公到开发全面赋能。安装简易,启动即有引导教程。其智能命令建议功能,可在命令行输入时提供后续选项及其说明,特别适合Linux用户。内置代码片段生成器,根据需求或代码框架自动生成代码,大幅提升开发效率。文件管理助手支持批量操作且可预览结果,降低误操作风险。任务自动化功能便于设置重复性工作流程,如定时备份。搜索功能强大,支持自然语言查询。尽管尚有改进空间,OS Copilot已是提升生产力的得力助手。
348 5
|
存储 自然语言处理 搜索推荐
探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【9月更文挑战第4天】“OS Copilot”是一款高效的操作系统辅助软件,通过智能化手段简化电脑使用,涵盖智能命令建议、代码片段生成、文件管理及任务自动化等强大功能。其简洁的界面与友好的用户体验使其成为提升生产力的理想选择,无论是专业人士还是普通用户都能从中受益。从安装到实际应用都非常流畅,能显著提升工作效率,是优化数字生活的得力助手。
351 0
|
存储 算法 Unix
操作系统(13)-----文件管理3
操作系统(13)-----文件管理
1423 0
操作系统(13)-----文件管理3
|
存储 安全 Linux
操作系统(13)-----文件管理4
操作系统(13)-----文件管理
786 0
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
1074 0
|
存储 SQL 算法
操作系统(13)-----文件管理1
操作系统(13)-----文件管理
361 0
|
存储 算法 安全
|
存储 安全 Unix
第七章 文件管理【操作系统】2
第七章 文件管理【操作系统】2
628 1
|
缓存 算法 Linux
[操作系统] 文件管理
[操作系统] 文件管理
719 0

推荐镜像

更多