操作系统(二)
来源:互联网 发布:2017双十一交易数据 编辑:程序博客网 时间:2024/06/06 06:33
处理器调度(CPU调度)
CPU调度:
按一定调度算法从就绪队列中选择一个进程,然后把CPU的使用权交给被选中的进程
CPU调度要解决的三个问题:
WHAT:按什么原则选择下一个要执行的进程 —— 调度算法
WHEN:何时进行选择 —— 调度时机
HOW:如何让被选中的进程上CPU执行 —— 调度过程(进程的上下文切换)
CPU调度的时机:
事件发生 -> 当前运行的进程暂停运行 -> 硬件机制响应后 -> 进入操作系统,处理相应的事件 ->结束处理后:某些进程的状态发生了变化,也可能又创建了一些新的进程 ->就绪队列改变了 ->需要进程根据预设的调度算法从就绪队列选一个进程
四个时机:
1. 进程正常终止或由于某种错误而终止
2. 新进程创建或一个等待进程变成就绪、
3. 当一个进程从运行态进入阻塞态
4. 当一个进程从运行态变为就绪态
进程调度程序从就绪队列选择了要运行的进程:
这个进程可以是刚刚被暂停执行的进程,也可能是另一个新的进程
如果是一个新的进程要进行进程切换
进程切换:是指一个进程让出处理器,由另一个进程占用处理器的过程。
进程切换主要包括两部分工作:
切换全局页目录以加载一个新的地址空间
切换内核栈和硬件上下文,其中硬件上下文包括了内核执行新进程需要的全部信息,如CPU相关寄存器
小例子:
进程 A下CPU,进程B上CPU
保存进程A的上下文环境(程序计数器,程序状态字,其他寄存器)
用新状态和其他相关信息更新进程A的PCB
把进程A移至合适的队列(就绪,阻塞..)
将进程B的状态设置为运行态
从进程B的PCB中恢复上下文(程序计数器,程序状态字,其他寄存器…)
上下文切换是有开销的:
直接开销:内核完成切换所用CPU时间
保存和恢复寄存器…
切换地址空间(相关指令比较昂贵)
间接开销:
高速缓存,缓冲区缓存,TLB失效
调度算法的衡量指标:
吞吐量:每单位时间完成的进程数目
周转时间:每个进程从提出请求到运行完成的时间
响应时间:从提出请求到第一次回应的时间
CPU利用率:CPU做有效工作的时间比例
等待时间:每个进程在就绪队列中等待的时间
- 操作系统(二)
- Trampoline操作系统(二)
- 操作系统结构(二)
- 操作系统(二)
- 操作系统复习(二)
- Linux操作系统(二)
- 操作系统基础(二)
- 操作系统(二)
- 操作系统学习指南(二)
- 操作系统学习笔记(二)操作系统结构
- 操作系统笔记(二) 操作系统类型
- 操作系统(二)--------操作系统的作用
- 操作系统框架整理(二)
- 软考(二)-操作系统
- Linux操作系统基础(二)
- 操作系统面试题(二)
- 操作系统简要笔记(二)
- 第一章 操作系统概述(二)
- java4
- dubbo zk应用
- c语言 typedef
- Python学习笔记 —— 对象
- 百度IP定位和百度地图API定位
- 操作系统(二)
- 领域驱动设计和开发实战
- ImportError–usr-lib-liblapack.so.3- undefined symbol- ATL_chemv 解决方法
- cygwin和mingw的区别
- MOOC浙江大学陈月、何钦铭老师《数据结构》学习笔记02
- canvas.arc绘制原理
- jQuery获取JSON数据
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Windows apache httpd 卡死解决办法