2 - 处理器管理
标签: 操作系统
处理器状态
- 处理器至少分用户态和内核态。
状态 | 指令 | 程序 | 资源 |
---|---|---|---|
用户态 | 非特权指令 | 运行用户程序 | 申请资源 |
内核态 | 可用特权指令 | 运行系统程序 | 管理、分配资源 |
处理器状态的转换
- 用户态->内核态
a. 请求操作系统服务
b. 程序运行时发生中断事件按
c. 程序运行时产生异常事件 内核态 -> 用户态
通过计算机提供的加载程序状态字特权指令- 用户栈、核心栈
- 用户栈:用户进程空间中的一部分,保存函数间相互调用的参数、返回值、返回点、函数的局部变量
- 核心栈:
- 保存中断现场
- 操作系统的函数间相互调用的参数、返回值、返回点、函数的局部变量
- 用户态->内核态
中断技术
中断源的分类
中断分为内中断和外中断。
• 内中断即中断,异步中断。包括时钟中断、键盘中断、、、可分为可屏蔽、不可屏蔽中断
• 外中断即异常,同步中断。可分为访管中断、硬件故障中断、程序性异常。
两者区别
- 中断与当前程序无关,与CPU异步,CPU是被动的,可发生在用户态or内核态。
异常由CPU控制单元产生,与CPU同步。基本发生在用户态,内核态只有缺页异常。 - 中断要快速处理,不能阻塞,异常可以被阻塞
中断可以嵌套,异常大多一重。异常可能产生中断,中断不会被异常打断。
进程及其实现
进程的属性
- 动态性
- 共享性
- 独立性
- 制约性
- 并发性
进程的状态和转换
- 三态模型
进程执行过程中,至少要定义的三种进程状态
a. 运行态
b. 就绪态
c. 等待态 - 七态模型
a. 新建态
b. 终止态
c. 挂起就绪态
d. 挂起等待态
进程的描述和组成 P75
- 进程映像:
- 进程控制块:
- 标识信息
- 现场信息
- 控制信息
- 进程程序块
- 进程核心栈
- 进程数据块
- 进程控制块:
- 进程上下文:
- 用户级上下文:程序块、数据块、共享内存区、用户栈
- 寄存器上下文:状态寄存器、指令计数器、栈指针、通用寄存器
- 系统级上下文:进程控制块、核心栈、内存管理信息
线程及其实现
线程
- 目的:减少程序并发执行所付出的时空开销,使得并发粒度更细,并发性力度更好。
- 方法:把进程的“独立分配资源”和“被调度分派执行”分离开。
- 线程的状态:运行、就绪、等待、终止
内核级线程
- 内核级线程:管理工作由内核完成,提供线程API来使用线程
- 优点:
- 在多处理器上同一进程中的多线程并行执行
- 若进程中的一个线程被阻塞,内核能够调度同一进程的其他线程占有处理器。
- 具有小数据结构和堆栈,切换速度快。
- 缺点:控制权在线程间转换时需经历 用户态-内核态-用户态
用户级线程
- 用户级线程:管理工作由应用程序来做,在用户空间内实现,内核不知道线程存在。
- 运行环境:线程库
- 优点:
- 切换无需内核特权方式
- 允许进程按照特定的调度算法
- 跨平台
- 缺点:
- 一个用户级线程的阻塞会引起进程的阻塞
- 用户级线程不能利用多重处理的优点。
线程调度
- 用户级线程:内核不知道线程的存在,以进程为单位调度。
- 内核级线程:选择一个优先级高的线程运行,不考虑线程属于那个进程。
处理器调度
- 调度层次:高级、中级、低级
- 高级调度:控制多道程序的道数。
- 中级调度: