-
并行与并发
并发:同一时间间隔,分时
并行:同一时刻 -
操作系统特征:并发,共享,虚拟,异步
-
内核功能:时钟管理,中断机制,原语,系统控制的数据结构
-
中断、异常和系统调用
中断:外中断,CPU指令以外的事件(IO结束,时间片到,人为请问)
异常:内中断,CPU执行指令内部的事件
系统调用:用户程序调用系统提供的子功能(设备管理,文件管理,进程控制,进程通信,内存管理)
系统调用过程:
用户进程 → 陷入指令 → 核心态,系统堆栈 → 内核执行特权指令 → 从系统调用返回 -
为什么引入进程?
更好地支持和管理多道程序地并发执行,提高资源利用率和系统吞吐量 -
进程由什么组成?
程序段,数据段,PCB -
进程状态:运行,就绪,阻塞
-
进程通信
- 共享存储
- 消息传递(直接,间接)
- 管道
-
线程:任务调度的基本单位,增加程序的并发性
-
为什么要处理机调度?
等待IO,提高处理机利用率 -
处理机调度算法:(剥夺式,非剥夺式)
- 先来先服务
- 短作业优先
- 优先级调度
- 高响应比优先
- 时间片轮转
- 多级反馈队列
12. 进程同步和互斥
同步:直接制约关系(合作关系)
互斥:间接制约关系,竞争临界资源(竞争关系)
- 临界区互斥的基本方法
原则:空闲让进,忙则等待,有限等待,让权等待
- 软件实现(单标志,双标志,皮特森)
- 硬件实现(中断屏蔽,硬件指令)
- 信号量(PV操作)
- 死锁必要条件
- 互斥
- 不可剥夺
- 请求与保持
- 循环等待
-
死锁预防
破坏死锁必要条件 -
死锁避免
- 系统安全状态
- 银行家算法
-
检测死锁和死锁解除
检测死锁:资源分配图
死锁解除:资源剥夺,撤销进程,进程回退 -
死锁与饥饿(长时间等待)
饥饿:可以只有一个进程饥饿;可以是就绪进程。
死锁:必须大于等于两个;一定是阻塞进程。 -
程序装入和链接
编译 链接 装入
源代码 → 目标模块 → 装入模块 → 装入内存
链接:静态、装入时动态、运行时动态
装入:绝对装入、可重定位装入、动态运行时装入 -
内存保护
- 上下限寄存器
- 重定位寄存器 + 界地址寄存器
-
覆盖与交换
覆盖:同一进程
交换:不同进程 -
内存连续分配管理方式
- 单一连续分配
- 固定分区分配
- 动态分区分配(首次适应,最佳适应,最坏适应,邻近适应),内存外部碎片
- 内存非连续分配管理方式
- 基本分页式(页表项,页号,快表TLB)
- 基本分段式
- 段页式
-
多级页表
解决了逻辑地址空间过大时页表长度会大大增加的问题,但是需要多次访问内存或磁盘。 -
虚拟内存技术的实现(页表机制,中断机构,地址变换机构)
- 请求分页管理方式
- 请求分段管理方式
- 请求段页式管理方式
- 页面置换算法
- 最佳置换算法(无法实现)
- 先进先出页面置换算法(Belady异常)
- 最近最久未使用LRU(堆栈类算法,需要硬件支持)
- 时钟CLOCK置换算法(循环扫描缓冲区,找到最近未用的帧)
- 改进型CLOCK算法(增加修改位)
-
抖动:刚刚换出的页面马上又装入内存
-
工作集:分配给进程的物理块数大于工作集大小,避免抖动
-
虚存的大小 = min{内存+外存,计算机地址位数}
-
文件:输入输出的基本单位
文件系统:操作系统中负责管理和存储文件信息的软件机构
文件控制块(FCB):存放控制文件需要的各种信息,FCB的有序集合组成文件目录 -
文件共享
- 硬链接(基于索引节点)
- 软链接(符号链,其他用户不拥有索引节点的指针)
- 文件系统(FAT32,NTFS)
- 目录实现(线性列表,哈希表)
- 文件实现(连续分配,链接分配,索引分配)
- 存储空间管理(空闲表,空闲链表,位示图,成组链接)
- 磁盘调度算法
- 先来先服务
- 最短寻找时间优先
- 扫描算法
- 循环扫描算法
- IO控制方式
- 程序直接控
- 中断驱动
- DMA方式
- 通道
- IO子系统层次
- 用户层IO
- 设备独立软件
- 设备驱动
- 中断处理程序
- 硬件设备
- IO缓冲区:(单缓冲,双缓冲,循环缓冲,缓冲池)
- 解决速度不匹配的问题
- 减少中断频率
- 解决基本数据单元不匹配的问题
- 提高IO和CPU的并行性
高速缓存:来自低速设备的复制数据,经常要访问的数据
- 设备分配技术
- 独占式使用
- 分时共享使用
- SPOOLing(独占设备改造位共享设备)