1. 指令与处理器模式
指令执行周期: 取指, 译码, 执行
指令分类(根据权限)
特权指令: 只能被操作系统内核使用(启动 IO, 置 PC 值)
非特权指令: 所有程序都能使用
处理器模式:
共有四种: 0 内核模式, 1 系统调用, 2 共享库程序, 3 用户模式
一般来说: 只有 0 内核模式 (能执行全部指令) 和 3 用户模式(只能执行非特权指令)
模式切换:
用户模式 --> 内核模式(系统调用, 异常, 响应中断)
内核模式 --> 用户模式(中断返回指令)
2. 中断
概念:
操作系统是中断驱动的. 即中断是激活操作系统的唯一方式
广义中断: 停止 CPU 正在执行的进程, 转而执行中断处理程序, 处理完后返回原进程或调度新进程
狭义中断: 源于处理器之外的中断事件, IO 中断, 时钟中断, 外部信号中断
中断源:
处理器硬件故障中断事件: 内存故障
程序性中断事件: 除 0 异常, 缺页异常
自愿性中断事件: 系统调用
IO 中断事件: IO 完成
外部中断事件: 鼠标点击
中断系统:
实现: 硬件完成中断响应, 软件完成中断处理
中断装置:
处理器外中断: 由中断控制器实现
处理器内中断(陷阱): 由指令控制逻辑实现
系统调用(系统陷阱): 执行陷入指令时直接触发, 即系统陷阱
中断处理流程
多中断处理: 中断屏蔽, 中断优先级, 中断嵌套
3. 进程
进程: 操作系统进行资源分配和调度的独立单位
进程解剖: OS 管理进程的数据结构 P + 内存代码 + 内存数据 + 通用寄存器 R + PSW
进程状态:
进程数据:
进程控制块 PCB: 是 OS 用于记录进程状态和环境信息的数据结构
标识信息: 进程标识(进程标识号, 进程组标识号)
现场信息: 用户可见寄存器内容, 控制 / 状态寄存器内容, 栈指针内容
控制信息: 进程调度信息, 进程组成信息, 队列指引元, 通信相关, 进程特权信息, 处理器使用信息, 资源清单信息
进程映像: 某一时刻进程的内容及执行状态集合
进程控制块, 进程程序块, 进程数据块, 核心栈
进程上下文: 进程执行的环境支持(CPU 现场, Cache 中的执行信息)
用户级, 寄存器级, 系统级
进程的管理
进程实现的队列模型
进程控制流程
进程创建: 进程表增加一项, 申请 PCB 并初始化, 生成标识, 建立映像, 分配资源, 移入就绪队列
进程撤销: 从队列中移除, 归还响应资源...
进程阻塞: 保存现场, 修改 PCB, 移入等待队列
进程唤醒: 从等待队列移出, 修改 PCB, 进入就绪队列
进程挂起: 修改进程状态并出入相关队列, 收回内存等资源送至对换区
进程激活: 分配内存, 修改状态并出入相关队列
原语
概念: 由若干指令构成的完成某种特定功能, 有原子性
应用: 修改 OS 核心数据结构(进程表, PCB 池)
进程切换与模式切换
流程: 俩进程上下文切换(保存被中断的上下文, 进程调度, 恢复待运行的上下文)
模式切换: 用户态到内核态这种. 进程切换必须在内核态完成, 所以必须经理模式切换
4. 线程
多线程技术: 一个进程内有多个线程
思路: 将进程的两个功能 "独立分配资源" 和 "调度执行" 功能分开
分类:
KLT: 内核级多线程
ULT: 用户级别多线程
多线程实现的混合策略
一个 ULT 绑定多个 KLT
5. 处理器调度
处理器调度的层次: 高级, 中级, 低级
处理器调度算法
原则: 资源利用率, 响应时间, 周转时间(进入系统到出系统时间), 吞吐量(单位时间处理进程数), 公平性
算法: 优先数算法, 时间片轮转, 分级调度算法, 彩票算法
来源: https://www.cnblogs.com/flashsun/p/10669853.html