操作系统学习笔记(十)操作系统知识点梳理
近期刚把操作系统整本书看了一遍,趁着有个总体印象,先梳理一下知识点
操作系统
计算机概述
操作系统特征
- 并发
- 共享
- 虚拟
- 异步
操作系统目标和功能
计算机系统资源管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
用户和硬件之间的接口
对计算机资源的扩充
操作系统发展历史
手工操作阶段
批处理系统
- 单道批处理
- 多道批处理
分时操作系统
- 同时性
- 交互性
- 独立性
- 及时性
实时操作系统
网络操作系统
分布式计算机系统
操作系统运行环境
处理器运行模式
- 特权指令
- 非特权指令
操作系统内核
时钟管理
中断机制
原语
系统控制的数据结构及处理
- 进程管理
- 存储器管理
- 设备管理
中断和异常
内部异常(不可屏蔽)
- 故障(软件)
- 自陷(软件)
- 终止(硬件)
外部中断(硬件)
- 可屏蔽中断 INTR
- 不可屏蔽中断 NMI
系统调用
- 设备管理
- 文件管理
- 进程控制
- 进程通信
操作系统结构
分层法
模块化
宏内核
微内核
分为微内核和服务器
微内核基本功能
- 进程管理
- 低级存储器管理
- 中断和陷入处理
微内核特点
- 扩展性和灵活性
- 可靠性和安全性
- 可移植性
- 分布式计算
外核
操作系统引导过程
虚拟机
- 第一类虚拟机
- 第二类虚拟机
进程与线程
进程与线程
进程的概念和特征
进程的概念
- PCB是进程存在的唯一标志
- 进程是进程实体运行过程,是系统进行资源分配和调度的一个独立单位
进程的特征
- 动态性
- 并发性
- 独立性
- 异步性
进程的状态与转换
- 运行态
- 就绪态
- 阻塞态(等待态)
- 创建态
- 结束态
进程的组织
PCB
包含
- 进程描述信息
- 进程控制和管理信息
- 资源分配清单
- 处理机相关信息
组织方式
- 链接方式
- 索引方式
程序段
数据段
进程的控制
- 进程的创建
- 进程的终止
- 进程的阻塞和唤醒
进程的通信
共享存储(需要使用同步互斥工具,如PV)
- 低级方式:基于数据结构的共享
- 高级方式:基于存储区的共享
消息传递
- 直接通信方式
- 间接通信方式
管道通信
线程和多线程模型
线程的基本概念
- 引入线程的目的
线程与进程的比较
- 调度
- 并发性
- 拥有资源
- 独立性
- 系统开销
- 支持多处理机
线程的属性
线程的状态转换
- 执行状态
- 就绪状态
- 阻塞状态
线程的组织与控制
线程控制块TCB
- 线程标识符
- 一组寄存器
- 线程运行状态
- 优先级
- 线程专有存储区
- 堆栈指针
线程的创建
线程的终止
线程的实现
- 用户级线程ULT,也就是协程
- 内核级线程KLT
- 组合方式
多线程模型
- 多对一模型:多个用户级线程映射到一个内核级线程
- 一对一模型
- 多对多模型
处理机调度
调度的概念
基本概念:从就绪队列中按照一定算法选择一个进程并将处理机分配给它运行
调度的层次
- 高级调度(作业调度)
- 中级调度(内存调度)
- 低级调度(进程调度)
调度的目标
- CPU利用率
- 系统吞吐量
- 周转时间
- 等待时间
- 响应时间
调度的实现
调度程序
- 排队器
- 分派器
- 上下文切换器
调度的时机,切换与过程
不能调度
- 中断处理过程中
- 进程在操作系统内核临界区
- 需要完全屏蔽中断的原子操作
应该调度
- 发生调度条件且当前进程无法进行下去
- 中断处理结束或自陷处理结束
进程调度方式
- 非抢占式调度
- 抢占式调度
闲逛进程
两种线程的调度
- 用户级线程调度
- 内核级线程调度
调度算法
- FCFS
- 短作业优先SJF
- 优先级调度算法
- 高响应比优先
- 时间片轮转调度
- 多级队列调度
- 多级反馈队列调度
进程切换
- 上下文切换
- 上下文切换的消耗
- 上下文切换与模式切换
同步与互斥
基本概念
- 临界资源
- 同步
- 互斥
实现临界区互斥的基本方法
软件实现方法
- 单标志法
- 双标志法
- 双标志后检查法
- Peterson’s Algorithm
硬件实现方法(低级方法,元方法)
- 中断屏蔽法
- 硬件指令法(TestAndSet/Swap)
互斥锁
- 采用硬件机制实现
- 主要缺点是忙等待
信号量
- 整形信号量
- 记录型信号量
- 利用信号量实现同步
- 利用信号量实现进程互斥
- 利用信号量实现前驱关系
管程
定义
组成
- 管程的名称
- 局部于管程内部的共享数据结构说明
- 对该数据结构进行操作的一组过程
- 局部于管程内部的共享数据设置初始值的语句
条件变量
经典同步问题
- 生产者-消费者问题
- 读者-写者问题
- 哲学家进餐问题
- 吸烟者问题
死锁
概念
定义
原因
系统资源竞争
进程推进顺序非法
死锁产生的必要条件
- 互斥条件
- 不剥夺条件
- 请求并保持条件
- 循环等待条件
死锁处理策略
死锁预防
- 破坏互斥条件
- 破坏不剥夺条件
- 破坏请求并保持条件
- 破坏循环等待条件
避免死锁
- 系统安全状态
- 银行家算法
死锁的检测及解除
- 资源分配图
- 死锁定理
- 死锁解除
内存管理
内存管理概念
内存管理的主要功能
- 内存空间的分配和回收
- 地址转换
- 内存空间的扩充
- 内存共享
- 存储保护
进程运行的基本原理
程序的链接和装入
编译
链接
- 静态链接
- 装入时动态链接
- 运行时动态链接
装入
- 绝对装入
- 可重定位装入(静态重定位)
- 动态运行时装入
逻辑地址和物理地址
进程的内存映像
- 代码段:程序的二进制代码,只读,可被多个进程共享
- 数据段:程序运行时加工处理的对象,包括全局变量和静态变量
- 进程控制块(PCB)
- 堆:用来存放动态分配的变量,使用malloc函数动态向高地址分配空间
- 栈:用来实现函数调用,从用户空间的最大地址向低地址方向增长
内存保护
- 在CPU中设置一对上下限寄存器
- 采用重定位寄存器和界地址寄存器
内存共享
内存的分配与回收
连续分配
单一连续分配
固定分区分配
动态分区分配
- 首次适应算法
- 邻近适应算法
- 最佳适应算法
- 最坏适应算法
离散分配
分页存储
概念
- 页面和页面大小
- 地址结构
- 页表
基本地址变换机构
具有快表的地址变换机构
两级页表
分段存储
- 分段
- 段表
- 地址变换机构
- 段的共享和保护
段页式
虚拟内存管理
基本概念
传统存储管理方式的特征
- 一次性
- 驻留性
局部性原理
虚拟存储器的定义和特征
定义
特征
- 多次性
- 对换性
- 虚拟性
虚拟内存的实现
- 请求分页存储管理
- 请求分段存储管理
- 请求段页式存储管理
文件管理
文件
文件的概念
文件的组成
- 存储空间
- 分类和索引信息
- 访问权限的信息
文件的结构
- 数据项
- 记录
- 文件
文件控制块和索引节点
文件的属性
- 名称
- 类型
- 创建者
- 所有者
- 位置
- 大小
- 保护
- 创建时间
文件控制块(FCB)
索引节点(i节点)
- 磁盘索引节点
- 内存索引节点
文件的基本操作
- 创建文件
- 写文件
- 读文件
- 重新定位文件
- 删除文件
- 截断文件
文件的打开与关闭
打开文件表
- 进程打开文件表
- 系统打开文件表
打开文件表的索引(文件描述符/文件句柄)
- 文件指针
- 文件打开计数
- 文件磁盘位置
- 访问权限
文件保护
- 口令保护
- 加密保护
- 访问控制
文件的逻辑结构
无结构文件(流式文件)
有结构文件(记录式文件)
顺序文件
存储方式
- 顺序存储
- 链式存储
结构
- 串结构
- 顺序结构
索引文件
- 定长记录文件,记录的地址可以直接根据长度和索引号计算
- 变长记录文件:建立索引表,包含记录指针,长度,并按关键字排序。索引表本身也是一个定长记录文件
索引顺序文件
- 将顺序文件中的所有记录分为若干组,为顺序文件建立索引表
散列文件
文件的物理结构
文件的分配方式:非空闲块的管理
连续分配
链接分配
- 隐式链接:只适合顺序访问
- 显式链接:FAT
索引分配
- 链接方案
- 多层索引
- 混合索引
混合索引分配
文件存储空间管理:磁盘空闲块的管理
目录
目录结构
- 单级目录结构
- 两级目录结构
- 树形目录结构
- 无环图目录结构
目录操作
- 搜索
- 创建文件
- 删除文件
- 创建目录
- 删除目录
- 移动目录
- 显示目录
- 修改目录
目录实现
- 线性列表
- 哈希表
文件共享
- 硬链接:基于索引节点的共享方式
- 软链接:利用符号链实现文件共享
文件系统
文件系统结构层次
- I/O控制
- 基本文件系统
- 文件组织模块
- 逻辑文件系统
文件系统布局
文件系统在磁盘中的结构
- 主引导记录(MBR)
- 引导块(boot block)
- 超级块(super block)
- 文件系统中的空闲块
文件系统在内存中的结构
- 内存中的安装表
- 内存中的目录结构的缓存
- 整个系统的打开文件表
- 每个进程的打开文件表
外存空闲空间管理
空闲表法
- 首次适应算法
- 邻近适应算法
- 最佳适应算法
- 最坏适应算法
空闲链表法
- 空闲盘块链
- 空闲盘区链
位示图法
成组链接法
- 盘块的分配
- 盘块的回收
虚拟文件系统(VFS)
I/O管理
概述
I/O设备
分类
按信息交换的单位
- 块设备
- 字符设备
按传输速率
- 低速设备
- 中速设备
- 高速设备
I/O接口(设备控制器)
组成
- 设备控制器与CPU的接口
- 设备控制器与设备的接口
- I/O逻辑
主要功能
- 接受和识别CPU发来的命令
- 数据交换
- 标识和报告设备
- 地址识别
- 数据缓冲
- 差错控制
I/O端口(接口中可被CPU直接访问的寄存器)
分类
- 数据寄存器:实现CPU和外设之间的数据缓冲
- 状态寄存机:获取执行结果和设备的状态信息
- 控制寄存器:由CPU写入,以便启动命令或更改设备模式
通信方法
- 独立编址
- 统一编址(内存映射I/O)
控制方式
- 程序直接控制
- 中断驱动方式
- DMA
- 通道控制
I/O软件层次结构
- 用户层I/O软件
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
- 硬件
应用程序I/O接口(I/O系统与高层之间的接口)
- 字符设备接口
- 块设备接口
- 网络设备接口
- 阻塞/非阻塞I/O
设备独立性软件
与设备无关的软件,包括执行所有设备公有操作的软件
高速缓存与缓冲区
磁盘高速缓存(逻辑上属于磁盘,物理上是驻留在内存的盘块)
形式
- 内存中开辟单独的空间作为高速缓存,大小固定
- 把未利用的空间作为缓存池,供分页请求和磁盘I/O共享
缓冲区
目的
- 缓和CPU和I/O设备间速度不匹配的问题
- 减少CPU的中断频率,放宽了CPU中断响应时间的限制
- 解决了基本数据单元大小不匹配的问题
- 提高了CPU和I/O设备之间的并行性
方法
- 硬件缓冲器
- 缓冲区(内存中)
缓冲技术
- 单缓冲,数据处理用时max(C,T) + M
- 双缓冲,数据处理用时max(C + M, T)
- 循环缓冲
- 缓冲池
设备的分配与回收
根据使用方式分类
- 独占式使用设备
- 分时式共享使用设备
- 虚拟设备(SPOOLing)
设备分配的数据结构
- 设备控制表DCT
- 控制其控制表COCT
- 通道控制表CHCT
- 系统设备表SDT
设备分配策略
原则:既要充分发挥设备使用效率,又要避免死锁
方式
- 静态分配:一旦分配,一直为该作业占有
- 动态分配
算法
静态分配
动态分配
- 先请求先分配
- 优先级高者优先
安全性(防治死锁)
- 安全分配方式:进程发出I/O请求就进入阻塞态
- 不安全分配方式:发出I/O请求后还可以继续运行,发出第二第三个I/O请求
逻辑设备名到物理设备名的映射
- 整个系统只有一个LUT表
- 每个用户登录,系统为之建立一个进程,并建立一个LUT放入进程的PCB中
SPOOLing技术(假脱机技术)缓和CPU的高速性和I/O设备低速性之间的矛盾,将独占设备改造成共享设备的技术
组成
- 输入井和输出井
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程
特点
- 提高了I/O速度
- 将独占设备改造成共享设备
- 实现了虚拟设备功能
设备驱动程序接口
磁盘和固态硬盘
磁盘
- 磁道
- 柱面
- 盘面
- 扇区(盘块)
磁盘管理
- 磁盘初始化
- 分区
- 引导块
- 坏块
磁盘调度算法
读写时间
- 寻道时间
- 旋转延迟
- 传输时间
算法
- 先来先服务
- 最短寻找时间优先
- 扫描算法(电梯算法)
- 循环扫描
固态硬盘
特性
磨损均衡
- 动态磨损均衡
- 静态磨损均衡