文章目录
- 存储管理
- 页式存储管理
- 概念
- 优点
- 缺点
- 页面置换算法
- 快表(很快速的页表)
- 段式存储管理
- 概念
- 优点
- 缺点
- 段页式存储管理
- 概念
- 优点
- 缺点
- 进程管理
- 概述
- 作用
- 特征
- 功能
- 分类
- 计算机启动基本流程
- 进程管理
- 进程的组成
- 进程的基础状态
- 前趋图
- 进程资源图
- 同步和互斥
- 信号量操作
- 死锁
- 进程
- 线程
- 设备管理
- 分类方式
- I/O软件层次结构
- 输入输出技术
- 虚设备和spooling技术
- 磁盘结构
- 寻道调度算法
存储管理
页式存储管理
概念
- 将进程空间分为一个个页(逻辑地址)
- 将系统的物理空间也分为一个个物理块(页帧号)(物理地址)
- 每次将需要运行的逻辑页装入物理块中,运行完再装入其他需要运行的页
- 逻辑地址与物理地址的转换
- 页地址计算
- 页号(高位)
- 页内地址(低位)
优点
- 利用率高
- 碎片小(只在最后页一个页中有)
- 分配及管理简单
缺点
- 增加了系统开销
- 可能产生抖动现象
页面置换算法
- 最优算法(OPT)
- 理论算法,无法实现
- 是进程执行完后进行的最佳效率计算,用来与其他算法比较差距
- 原理是选择未来最长时间内不被访问的页面置换,可以保证未来执行的都是马上要访问的
- 先进先出算法(FIFO)
- 先调入内存的页先被置换淘汰
- 会产生抖动现象,分配的页数越多,缺页率可能越多(效率越低)
- 最近最少使用(LRU)
- 在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰
- 根据局部性原理,这种方式效率高,且不会产生抖动现象
快表(很快速的页表)
- 小容量的相联存储器,由快速存储器组成
- 按内容访问,速度快,可以从硬件上保证按内容并行查找
- 用来存放当前访问最频繁的少数活动页面的页号
- 快表是将页表存于Cache中,慢表将页表存在于内存上
- 慢表需要访问两次内存才能取出页,而快表是访问一次Cache和一次内存,因此更快
段式存储管理
概念
- 进程空间分成一个个段
- 每段有段号和段内地址
- 与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的
优点
- 程序逻辑完整
- 修改互不影响
缺点
- 内存利用率低
- 内存碎片浪费大
段页式存储管理
概念
- 对进程空间先分段,然后分页
优点
- 空间浪费小,存储共享容易,能动态连接
缺点
- 由于管理软件的增加,复杂性和开销也增加,执行速度下降
进程管理
概述
作用
- 通过资源管理提高计算机系统的效率
- 改善人机界面向用户提供友好的工作环境
特征
- 并发性
- 共享性
- 虚拟性
- 不确定性
功能
- 进程管理
- 存储管理
- 文件管理
- 设备管理
分类
- 批处理操作系统
- 分时操作系统(轮流使用CPU工作片)
- 实时操作系统(快速响应)
- 网络操作系统
- 分布式操作系统(物理分散的计算机互联系统)
- 微机操作系统(Windows)
- 嵌入式操作系统
计算机启动基本流程
- BIOS->主引导记录->操作系统
进程管理
进程的组成
- 进程控制块PCB(唯一标志)
- 程序:描述进程要做什么
- 数据:存放进程执行时所需数据
进程的基础状态
- 系统自动控制(三态图)
- 等待:等待某个事件,例如:I/O输入
- 就绪:等待事件发生,所有资源都具备,只差CPU资源
- 运行:使用CPU资源(调度),时间片到,从运行状态->就绪状态
- 人为操作(五态图)
- 活跃阻塞
- 活跃就绪
- 运行
- 静止阻塞
- 静止就绪
前趋图
- 作用:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系
- 任务间的并行
- 任务间的先后顺序
进程资源图
- 作用:表示进程和资源之间的分配和请求关系
- P代表进程
- R代表资源
- 指向P的代表P已经拥有了该R资源,P指向的代表P还需要该R资源
- 阻塞节点
- 某进程所请求的资源已全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续
- 非阻塞节点
- 某进程所请求的资源还有剩余,可以分配给该进程继续运行
- 死锁状态
- 当一个进程资源图中所有的进程都是阻塞节点时,即进入死锁状态
同步和互斥
-
互斥:某资源(即临界资源),例如:打印机
- 在同一时间内只能由一个任务单独使用
- 使用时需要加锁
- 使用完后解锁才能被其他任务使用
-
同步
- 多个任务可以并发执行
- 只不过速度上有差异,在一定情况下停下等待
- 不存在资源是否单独或共享的问题
- 例如:自行车和汽车
-
临界资源
- 各进程间需要以互斥方式对其进行访问的资源
-
临界区
- 指进程中对临界资源实施操作的那段程序
- 本质是一段程序代码
-
互斥信号量
- 对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1
-
同步信号量
- 对共享资源的访问控制,初值一般是共享资源的数量
信号量操作
- P操作
- 申请资源,S=S-1
- 若S>=0,则进行P操作的进程继续执行
- 若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列
- V操作
- 释放资源,S=S+1
- 若S>0,则执行V操作的进程继续执行
- 若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列
- 此时因为缺少资源被P操作阻塞的进程可以继续执行,然后执行V操作的进程继续
- 经典问题
- 生产者和消费者
- 三个信号量
- 互斥信号量S0:仓库独立使用权
- 同步信号量S1:仓库空闲个数
- 同步信号量S2:仓库商品个数
- 生产者流程
- 生产一个商品S
- P(S0)
- P(S1)
- 将商品放入仓库中
- V(S2)
- V(S0)
- 消费者流程
- P(S0)
- P(S2)
- 取出一个商品
- V(S1)
- V(S0)
死锁
- 概念
- 当一个进程在等待永远不可能发生的事件时,就会产生死锁
- 系统中有多个进程处于死锁状态,就会造成系统死锁
- 产生的必要条件
- 资源互斥
- 每个进程占有资源并等待其他资源
- 系统不能剥夺进程资源
- 进程资源图是一个环路
- 解决措施(打破四大条件)
- 死锁预防
- 采用某种策略限制并发进程对资源的请求
- 破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件
- 死锁避免
- 银行家算法:提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配
- 死锁检测
- 允许死锁产生
- 系统定时运行一个检测死锁的程序:检测到死锁就解除
- 死锁解除
- 强制剥夺资源
- 撤销进程
- 死锁计算问题
- 系统内有n个进程,每个进程都需要R个资源
- 发生死锁的最大资源数:n*(R-1)
- 不发生死锁得的最小资源数:n*(R-1)+1
- 系统内有n个进程,每个进程都需要R个资源
- 死锁预防
进程
- 可拥有资源的独立单位
- 可独立调度和分配的基本单位
- 拥有资源的最小单位
线程
- 线程是独立调度的最小单位
- 线程可以共享进程的公共数据、全局变量、代码、文件等资源
- 线程不能共享线程独有的资源,如线程的栈指针等标识数据
设备管理
分类方式
- 按数据组织分类
- 块设备
- 字符设备
- 按资源分配分类
- 独占设备
- 共享设备
- 虚拟设备
- 按数据传输速率分配
- 低速设备
- 中速设备
- 高速设备
I/O软件层次结构
- 用户进程:进行I/O调用、格式化I/O、Spooling
- 设备无关软件:命名、保护、阻塞、缓冲、分配
- 设备驱动程序:置设备寄存器:检查状态
- 中断处理程序:当I/O结束时唤醒驱动程序
- 硬件:执行I/O操作
输入输出技术
- 程序控制(查询)方式
- CPU主动查询外设是否完成数据传输,效率极低
- 程序中断方式
- 外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高
- 适用于键盘等实时性较高的场景
- DMA方式(直接主存存取)
- CPU只需完成必要的初始化等操作,数据传输的整个过程都是由DMA控制器完成
- 在主存和外设之间建立直接的数据通路,效率很高
虚设备和spooling技术
- 现状问题
- 一台物理设备(互斥资源),例如打印机,在同一时间只能由一个进程使用,其他进程只能等待
- 不知道什么时候打印空闲,极大的浪费了外设的工作效率
- spooling
- 外设上建立两个数据缓冲区
- 输入井
- 输出井
- 打印命令发出,数据会排队存储在缓冲区中
- 打印机会自动按顺序打印,实现物理外设的共享
- 每个进程都感觉在使用同一个打印机,这就是物理设备的虚拟化
- 外设上建立两个数据缓冲区
磁盘结构
- 结构
- 正反两个盘面
- 每个盘面由多个同心圆
- 每个同心圆是一个磁道,每个同心圆又被划分为多个扇区
- 数据存放在一个个扇区中
- 读取数据
- 磁头首先要寻找到对应的磁道
- 等待磁盘进行周期旋转,旋转到指定的扇区,读取对应的数据
- 寻道时间(耗时最长),指磁头移动到磁道所需的时间
- 等待时间,等待读写扇区转到磁头下方所用的时间
寻道调度算法
- 先来先去服务FCFS
- 根据进程请求访问磁盘的先后顺序进行调度
- 最短寻道时间优先SSTF
- 请求访问的磁道与当前磁道最近的进程优先调度
- 产生饥饿现象,远处进程可能永远无法访问
- 扫描算法SCAN(电梯算法)
- 磁头在磁盘上双向移动,会选择离磁头当前所在磁道最近的请求
- 磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似
- 单向扫描调度算法CSCAN
- 单向移动