操作系统的文件管理

文件的逻辑结构

逻辑结构的文件类型

操作系统之基础篇(三)_链表

有结构文件

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

  • 定长记录存储文件格式、文件描述等结构化数据项

  • 可变长记录存储文件具体内容

操作系统之基础篇(三)_文件系统_02

无结构文件

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

操作系统之基础篇(三)_链表_03

顺序文件

顺序文件

  • 顺序文件是指按顺序存放在存储介质中的文件

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

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

索引文件

  • 可变长文件不适合顺序文件格式存储

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

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

操作系统之基础篇(三)_链表_04

辅存的存储

辅存的存储空间分配

  • 辅存的分配方式
  • 存储空间管理

赋存的分配方式

操作系统之基础篇(三)_存储空间_05

连续分配

操作系统之基础篇(三)_存储空间_06

  • 顺序读取文件内容非常容易,速度很快
  • 对存储要求高,要求满足容量的连续存储空间
链接分配
  • 链接分配可以将文件存储在离散的盘块中
  • 需要额外的存储空间存储文件的盘块链接顺序

操作系统之基础篇(三)_顺序文件_07操作系统之基础篇(三)_链表_08

  • 不支持搞笑的直接存储(FAT记录项多)
  • 检索时FAT表占用较大的存储空间(需要将整个FAT加载到内存)
索引分配
  • 把文件的所有盘块集中存储(索引)
  • 读取某个文件时,将文件索引读取进内存即可

操作系统之基础篇(三)_存储空间_09

  • 每个文件拥有一个索引块,记录所有盘块信息

  • 索引分配方式支持直接访问盘块

  • 文件较大时,索引分配方式具有明显优势

存储空间管理

  • 空闲表

  • 空闲链表

  • 位示图

空闲表

操作系统之基础篇(三)_文件系统_10

空闲链表
  • 空闲链表法把所有空闲盘区组成一个空闲链表
  • 每个链表节点存储空闲盘块和空闲的数目

操作系统之基础篇(三)_链表_11

位示图
  • 位示图维护成本很低

  • 位示图可以非常容易找到空闲盘块

  • 位示图使用0/1比特位,占用空间很小。

目录管理

目录树

操作系统之基础篇(三)_顺序文件_12

操作系统之基础篇(三)_文件系统_13

文件描述信息

操作系统之基础篇(三)_存储空间_14

Linux文件基本操作

Linux目录

操作系统之基础篇(三)_linux_15操作系统之基础篇(三)_顺序文件_16

操作系统之基础篇(三)_链表_17

Linux文件常用操作

  • (目录 文件)创建、删除、读取、写入

Linux文件类型

操作系统之基础篇(三)_存储空间_18操作系统之基础篇(三)_文件系统_19

Linux的文件系统

文件系统概览

FAT

  • FAT(File Allocation Table)

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

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

NTFS

  • NTFS(New Technology File)

  • WindowsNT 环境的文件系统

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

EXT2/3/4

  • EXT(Extended file system):扩展文件系统

  • Linux的文件系统

  • EXT2/3/4数字表示第几代

Ext文件系统

操作系统之基础篇(三)_链表_20操作系统之基础篇(三)_顺序文件_21操作系统之基础篇(三)_顺序文件_22操作系统之基础篇(三)_顺序文件_23操作系统之基础篇(三)_链表_24操作系统之基础篇(三)_顺序文件_25操作系统之基础篇(三)_链表_26操作系统之基础篇(三)_文件系统_27操作系统之基础篇(三)_链表_28操作系统之基础篇(三)_链表_29操作系统之基础篇(三)_文件系统_30

操作系统的设备管理

广义的IO设备

对CPU而言,凡是对CPU进行数据输入的都是输入设备

对CPU而言,凡是CPU进行数据输出的都是输出设备

按使用特性分类

操作系统之基础篇(三)_文件系统_31

按设备的共享属性分类

操作系统之基础篇(三)_linux_32

按信息交换的单位分类

操作系统之基础篇(三)_链表_33

按传输速率分类

操作系统之基础篇(三)_存储空间_34

IO设备的缓冲区

  • 减少CPU处理IO请求的频率
  • 提高CPU与IO设备之间的并行性

CPU与IO设备的速率不匹配

操作系统之基础篇(三)_顺序文件_35

  • 专用缓冲区只使用于特定的IO进程

  • 当这样的IO进程比较多时,对内存的消耗也很大

  • 操作系统划出可供多个进程使用的公共缓冲区,称之为缓冲池

操作系统之基础篇(三)_文件系统_36

SPOOLing技术

  • 是关于慢速字符设备如何与计算机主机交换信息的一种技术

  • 利用高速共享设备将低速的独享设备模拟为高速的共享设备

  • 逻辑上,系统为每一个用户都分配了一台独立的高速独享设备

操作系统之基础篇(三)_linux_37

  • 在输入、输出之间增加了排队转储环节(输入井、输出井)

  • SPOOLing 负责输入(出)井与低速设备之间的调度

  • 逻辑上,进程直接与高速设备交互,减少了进程的等待时间