说明
- 博客作为笔记备份,不定时更新
- 参考内容为王道考研《计算机操作系统考研复习指导2023》
- 简化版仅进行了知识点汇总,详细知识点没有记录,主要用来搭知识体系框架
- 思维导图为文字版导出的,可将文字内容粘贴到思维导图软件自动生成。如果是用obsidian并安装了mindmap插件的话,可在文件开头写上以下内容,生成导图:
---
mindmap-plugin : basic
---
思维导图版
文字版
输入输出管理
I/O设备
- I/O设备分类
- 块设备
- 字符设备
- 低速/中速/高速设备
- I/O接口(位于CPU与设备之间)
- 设备控制器与I/O设备的接口
- 设备控制器与CPU的接口
- I/O逻辑
- I/O端口
- 三种
- 数据寄存器
- 状态寄存器
- 控制寄存器
- 编址方式
- 统一编制
- 独立编址
- 三种
- I/O控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA方式
- 特点
- 以块为单位传送
- 设备直接与内存进行数据交换(不通过CPU的寄存器)
- 仅在传送开始和结束时需要CPU的干预
- 4类寄存器
- 命令/状态寄存器
- 内存地址寄存器
- 数据寄存器
- 数据计数器
- 特点
- 通道
- 通道程序位于内存中
- 在传输过程中,控制权在通道
- 与DMA不同的是,由通道决定传输数据的大小,以及传送的内存地址
- 通道可控制多台设备与内存的数据交换
- 开始时,CPU发出一条I/O指令,启动通道;传输结束,通道向CPU发出中断请求
- I/O软件层次
- 用户层I/O软件
- 设备无关性软件
- 设备驱动程序
- 中断处理程序
- 硬件
- 应用程序I/O接口
- 字符设备接口
- 块设备接口
- 网络设备接口
- 阻塞/非阻塞接口
- I/O管理(要做的四件事)
- 状态跟踪:跟踪外设状态
- 设备存取:实现对外设的存取
- 设备分配
- 设备控制
设备独立性软件
- 与设备无关的软件
- 是I/O系统最高层软件
- 执行所有设备公有操作的软件
- 高速缓存和缓冲区
- 高速缓存
- 在内存的两种形式
- 磁盘高速缓存
- 内存中开辟的单独空间,大小固定
- 逻辑上属于磁盘,物理上属于内存
- 缓冲池
- 将空闲的内存空间作为一个缓冲池
- 磁盘高速缓存
- 在内存的两种形式
- 缓冲区
- 单缓冲
- 处理每块数据耗时: m a x { C , T } + M max\{C,T\}+M max{C,T}+M
- T:设备将数据输入缓冲区的时间
- M:系统从缓冲区中取走数据的时间
- C:CPU处理数据的时间
- 结合流水线的时空图理解
- 双缓冲
- 处理每块数据的时间: m a x { C + M , T } max\{C+M,T\} max{C+M,T}
- 循环缓冲
- 缓冲池
- 单缓冲
- 高速缓存和缓冲区的比较
- 高速缓存
- 设备分配与回收
- 分类
- 独占设备
- 共享设备
- 虚拟设备(借助SPOOLing技术实现)
- 分配过程
- 数据结构
- 系统设备表 SDT
- 设备控制表 DCT
- 控制器控制表 COCT
- 通道控制表 CHCT
- 先后访问的数据结构: S D T → D C T → C O C T → C H C T SDT\rightarrow DCT\rightarrow COCT\rightarrow CHCT SDT→DCT→COCT→CHCT
- 成功分配一个设备要满足的条件(缺一不可)
- 设备可用
- 控制器可用
- 通道可用
- 数据结构
- 分配策略
- 分配方式
- 静态分配方式(一次性)
- 动态分配方式(根据设备的请求)
- 分配算法
- 分配方式
- 设备分配的安全性
- 安全分配
- 进程请求I/O后进入阻塞状态,直至I/O操作完成
- 在进程阻塞时,其不再请求其他资源,并不保持任何资源:即破坏了“请求保持”条件
- CPU和I/O设备串行工作
- 不安全分配
- 进程发出I/O请求后继续运行,并可继续发出I/O请求
- 只有进程请求的I/O设备被其他进程占用时才进入阻塞态
- 安全分配
- 逻辑到物理的映射
- LUT表
- 设置LUT的两种方式
- 一个系统只有一张
- 每个用户一张
- 分类
- SPOOLing技术
- SPOOLing系统组成
- 内存中
- 输入/输出进程
- 输入/输出缓冲区
- 磁盘中
- 输入井
- 输出井
- 内存中
- 特点
- 提高I/O速度
- 改独占为共享
- 实现了虚拟设备功能
- SPOOLing系统组成
磁盘Disk和固态硬盘SSD
- 磁盘
- 地址:柱面号·盘面号·扇区号
- 管理
- 初始化
- 低级格式化(物理格式化):将磁盘分为扇区
- 低级格式化用特殊数据结构填充磁盘
- 分区
- 两步
-
- 将磁盘分为一个或多个柱面组成的扇区
-
- 对物理分区进行逻辑格式化(创建文件系统)
-
- 簇(Linux中称为块)
- 多个相邻的扇区组成为簇
- 文件占用的空间只能为簇的整数倍
- 两步
- 引导块
- 初始化程序(自举程序)
- 计算机启动时运行初始化程序
- 自举程序一小部分位于ROM中,完整功能的引导程序位于磁盘的启动块
- 启动过程
- ROM中的代码指示磁盘控制器将引导块读入内存后执行
- 例子:Windows启动过程
- 初始化程序(自举程序)
- 初始化
- 磁盘调度算法
- 几个指标
- 寻道时间
- 旋转延迟时间: T r = 1 2 r T_r=\frac{1}{2r} Tr=2r1,r为磁盘转速
- 传输时间: T t = b r N T_t=\frac{b}{rN} Tt=rNb,b为每次读/写的字节数;N为一个磁道上的字节数
- 先来先服务算法FCFS
- 最短寻找时间优先算法SSTF
- 扫描算法SCAN(又称电梯调度算法)
- 循环扫描算法C-SCAN
- 几个指标
- 交替编号、错位命名:可以减少延迟时间
- 提高磁盘I/O速度的方法
- 提前读:提前将磁盘块读入内存缓冲区
- 延后写:要写入磁盘的数据先写入缓冲区,当其他进程申请此缓冲区时再写入磁盘
- 虚拟盘:使用内存空间去仿真磁盘(又称为RAM盘)
- 固态硬盘SSD
- 以页为读写单位
- 擦除
- 只有一页所在的一块全被擦除后,才能写这一页
- 一旦擦除一块,可直接再对块中的每一页写一次
- 随机读较快,随机写较慢(涉及擦除)
- 磨损均衡
- 动态磨损均衡:写入时自动选择较新的闪块
- 静态磨损均衡:没有数据写入时,SSD自动监测并进行数据分配