操作系统的文件管理
文件的逻辑结构
逻辑结构的文件类型
有结构文件
文本文件
文档
媒体文件
- 文件内容由定长记录和可变长记录组成
- 定长记录存储文件格式、文件描述等结构化数据项
- 可变长记录存储文件具体内容
无结构文件
二进制文件 链接库
- 也称为流式文件
- 文件内容长度以字节为单位
exe文件 dll文件 so文件
顺序文件
- 顺序文件是指按顺序存放在存储介质中的文件
- 磁带的存储特性使得磁带文件只能存储顺序文件
- 顺序文件是所有逻辑文件当中存储效率最高的
索引文件
- 可变长文件不适合使用顺序文件格式存储
- 索引文件是为了解决可变长文件存储而发明的一种文件格式
- 索引文件需要配合索引表完成存储的操作
辅存的存储空间分配
辅存的分配方式
连续分配
顺序读取文件内容非常容易,速度很快
对存储要求高,要求满足容量的连续存储空间
链接分配
- 链接分配可以将文件存储在离散的盘块中
- 需要额外的存储空间存储文件的盘块链接顺序
隐式链接
- 隐式分配的下一个链接指向存储在当前盘块内
- 隐式分配适合顺序访问,随机访问效率很低
- 可靠性差,任何一个链接出问题都影响整个文件
显式链接
- 不支持高效的直接存储(FAT记录项多)
- 检索时FAT表占用较大的存储空间(需要将整个FAT加载到内存)
索引分配
- 把文件的所有盘块集中存储(索引)
- 读取某个文件时,将文件索引读取进内存即可
- 每个文件拥有一个索引块,记录所有盘块信息
- 索引分配方式支持直接访问盘块
- 文件较大时,索引分配方式具有明显优势
存储空间管理
空闲表
- 空闲盘区的分配与内存分配类似
- 首次适应算法、循环适应算法等
- 回收过程也与内存回收类似
空闲链表
- 空闲链表法把所有空闲盘区组成一个空闲链表
- 每个链表节点存储空闲盘块和空闲的数目
位示图
- 位示图维护成本很低
- 位示图可以非常容易找到空闲盘块
- 位示图使用0/1比特位,占用空间很小
目录管理
目录树
任何文件或目录都只有唯一路径
A/D/M
C/I/L
文件描述信息
Linux文件基本操作
Linux目录
Linux一切皆文件
相对路径
相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。HTML绝对路径(absolute path)指带域名的文件的完整路径。
绝对路径
绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
完整的描述文件位置的路径就是绝对路径,以web站点根目录为参考基础的目录路径。绝对路径名的指定是从树型目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的
绝对路径和相对路径的比较
网络应用中绝对路径的优点
1、防止网站被恶意抄袭,使用绝对路径,如果有人抄袭采集你的内容,里面的链接还会指向你的网站。有些抄袭的比较懒,连里面的链接一起抄了过去。
2、如果站长不能做301转向,因而有网址规范化的问题,使用绝对路径有助于链接指向选定的URL版本。
3、就算网页被移动位置,里面的链接还是指向正确的URL。
绝对路径的缺点:
1、除非链接是动态插入的,不然没办法在测试服务器上进行测试。因为里面的链接将直接指向真正的域名URL,而不是测试服务器中的URL。
2、除非链接是动态插入的,不然移动内容页面将很困难。因为内容页面位置发生变化,在其他页面上的链接却可能无法跟着变化,还指向原来的已经硬编码的绝对路径。
Linux文件常用操作
(目录/文件)创建、删除、读取、写入
Linux文件类型
Linux文件系统
文件系统概览
FAT
- FAT(File Allocation Table)
- FAT16、FAT32等,微软Dos/Windows使用的文件系统
- 使用一张表保存盘块的信息
NTFS
- NTFS (New Technology File System)
- WindowsNT环境的文件系统
- NTFS对FAT进行了改进,取代了旧的文件系统
EXT2/3/4
- EXT(Extended file system):扩展文件系统
- Linux的文件系统
- EXT2/3/4 数字表示第几代
Ext文件系统
- Boot Sector:启动扇区,安装开机管理程序
- Block Group:块组,存储数据的实际位置
Inode Table
- 存放文件Inode的地方
- 每一个文件(目录)都有一个Inode
- 是每一个文件(目录)的索引节点
Inode
- 文件名不是存放在Inode节点上的,而是存放在目录的Inode节点
- 列出目录文件的时候无需加载文件的Inode
Inode bitmap
- Inode的位示图
- 记录已分配的Inode和未分配的Inode
Data block
- Data block是存放文件内容的地方
- 每个block都有唯一的编号
- 文件的block记录在文件的Inode上
Block bitmap
- 功能与Inode bitmap类似
- 记录Data block的使用情况
Superblock
- 记录整个文件系统相关信息的地方
- Block和Inode的使用情况
- 时间信息、控制信息等
操作系统的设备管理
广义的IO设备
对CPU而言,凡是对CPU进行数据输入的都是输入设备
对CPU而言,凡是CPU进行数据输出的都是输出设备
按使用特性分类
按信息交换的单位分类
按设备的共享属性分类
按传输速率分类
IO设备的缓冲区
CPU与IO设备的速率不匹配
- 减少CPU处理IO请求的频率
- 提高CPU与IO设备之间的并行性
- 专用缓冲区只适用于特定的IO进程
- 当这样的IO进程比较多时,对内存的消耗也很大
- 操作系统划出可供多个进程使用的公共缓冲区,称之为缓冲池
SPOOLing技术
虚拟设备技术
是关于慢速字符设备如何与计算机主机交换信息的一种技术
利用高速共享设备将低速的独享设备模拟为高速的共享设备
逻辑上,系统为每一个用户都分配了一台独立的高速独享设备
SPOOLing技术把同步调用低速设备改为异步调用
- 在输入、输出之间增加了排队转储环节(输入井、输出井)
- SPOOLing负责输入(出)井与低速设备之间的调度
- 逻辑上,进程直接与高速设备交互,减少了进程的等待时间