【408操作系统】考点总结(更新ing)
文章目录
一、概述
1. 1 并发和并行
- 微观上程序还是分时地交替执行,操作系统的并发性是通过分时来实现的
1. 2 批处理、分时、实时
1. 3 用户态和核心态
- 通过PSW标志位标记当前CPU处于何种状态
- 内核态(管态):正在运行的是内核程序,可以执行特权指令
- 用户态(目态):正在执行的是应用程序,只能执行非特权指令
- 用户态到核心态是由硬件完成,通过中断实现的,且中断是唯一途径
常见用户态转向内核态
- 系统调用
- 发生了一次中断
- 用户程序产生错误状态
- 用户程序企图执行一条特权指令
1. 4 中断、异常
调用类型 | 中断 | 子程序调用 |
---|---|---|
入口地址 | 由中断隐指令根据中断向量得到 | 由调用程序根据寻址方式得到 |
保存环境 | 保存PC、PSW、通用寄存器 | 保存PC、通用寄存器 |
进程状态 | 从用户态到内核态 | 没有状态变化 |
1. 5 系统调用
- 系统调用发生在用户态。对系统调用的处理发生在核心态。
- 执行陷入指令会产生内容段,使处理器从用户态进入核心态。
一般内核提供的服务越少内核越稳定 - 大内核:执行效率高;不稳定
- 微内核:为用户提供服务时,至少进行4次上下文切换;易于维护;比较可靠
二、进程
2. 1 进程与线程
进程 | 线程 | |
---|---|---|
映像组成 | 由程序段、相关数据、PCB构成 | 共享其隶属晋城的进程映像,仅拥有线程ID,寄存器集合和堆栈等等 |
并发性 | 进程是独立运行的基本单位 | 线程是独立调度的基本单位,一个进程可以拥有多个线程 |
资源分配 | 进程是资源分配和拥有的基本单位 | 线程不拥有自己的系统资源,但它可以访问所属进程的所有资源 |
调度 | 独立调度与分配(无线程时) | 独立调度与分配(有线程时) |
通信 | PV;共享存储;消息传递;管道通信 | 统一进程之间各线程直接读写;不同进程的线程之间通信属于进程间通信 |
开销 | 开销较大 | 开销较小 |
地址空间 | 进程地址空间之间相互独立 | 同一进程的各线程间共享进程的地址空间 |
2. 2 用户级线程和内核支持线程
2. 3 进程状态切换
2. 4 处理机调度
2. 4.1 调度算法比较
指标 | 定义 |
---|---|
CPU利用率: | CPU工作时间在整个系统工作时间中所占的比例 |
系统吞吐量: | 单位时间内CPU完成作业的数量 |
周转时间: | 周转时间 = 作业完成时间 - 作业提交时间 |
平均周转时间: | 平均周转时间 = (作业1的周转时间 +作业2的周转时间+…+作业n的周转时间)/n |
带权周转时间: | 带权周转时间 = 作业周转时间 / 作业实际运行时间 |
平均带权周转时间: | 平均带权周转时间 = (作业1的带权周转时间 +作业2的带权周转时间+…+作业n的带权周转时间)/n |
响应比: | (等待时间 + 要求服务时间)/ 要求服务时间 |
2. 4.2 调度算法比较
2. 5 进程同步与互斥
软件实现
- 单标志法(违背空闲让进)
- 双标志法先检查(违背忙则等待)
- 双标志法后检查(违背有限等待)
- Peterson’s算法(违背让权等待)
硬件实现(不会被中断):
- 中断屏蔽方法(关中断、临界区、开中断);
- 硬件指令方法(TestAndSet指令、Swap指令)
2. 6 经典同步互斥问题
2. 7 死锁
- 区别死锁和饥饿
饥饿:由于长期得不到想要的资源,某进程无法向前推进
死锁:某进程执行过程中一直跳不出某个循环的现象
死锁产生的必要条件:(必须同时满足)
- 互斥条件:争夺互斥资源
- 不剥夺条件:进程所获得的资源在其使用完之前,不能由其他进程强行拿走
- 请求并保持条件:进程已经至少持有一种资源的条件下,又申请了别的资源的请求,而该资源被其他进程所占有,此时请求进程被阻塞,但是对该进程已持有资源保持不放
- 循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求
同类资源大于1时:发生死锁时一定有循环等待条件。但发生循环等待时未必发生死锁
同类资源 = 1时,循环等待链的出现一定导致死锁的发生,死锁的发生一定有循环等待链(充分必要条件)
死锁处理策略:破坏死锁的必要条件
2. 8 银行家算法
- 银行家算法:死锁避免
- 死锁检测方法:死锁检测
- 资源有序分配方法死锁预防
银行家算法:需要所需资源总量信息
死锁检测:不需要所需资源总量信息