操作系统 | CPU调度
CPU调度概述
CPU调度是多任务操作系统的基础,目的是使得CPU尽可能用于执行指令,从而提高CPU效率。
进程之间存在竞争,需要操作系统选择一个进程来进行这种转换。
长程和短程调度
长程调度
- 又称作业调度、高级调度。
- 指从“新建”状态转换到“就绪”状态的调度过程。
- 控制躲到程序的“道/度”。“道/度”:允许在内存运行的最多进程数。
短程调度
- 又称CPU调度、低级调度。
- 指调度进程选择下一个执行的进程。
长程与短程调度比较
切换频率 | 切换开销 | 操作系统中的应用 | |
---|---|---|---|
长程调度 | 低 | 大(秒/分,切换慢) | 可选,非必须 |
短程调度 | 高 | 小(毫秒级,切换快) | 必需 |
调度队列
为了方便进行CPU调度,操作系统需要对不同状态的进程进行组织和管理。为此,为某些特定的状态设立了一个或多个进程队列,用于管理这些进程。
就绪队列 -- 在内存中处于就绪状态并等待执行的所有进程的集合。
设备队列 --- 等待某一I/O设备的进程队列。
进程的执行过程实际上就是进程在各种队列之间的迁移。
图示有一个就绪队列;四个设备队列,四个设备队列均处于等待状态。
中程调度
中程调度,又称“交换”。指将进程在内存和外存间换进换出。(严格区别不属于进程调度,属于内存管理范畴)
目的:为了节省内存空间资源。
CPU脉冲周期
CPU调度过程
调度程序(Scheduler)
- 根据某种策略选择一个就绪进程。
- 一个CPU同时只能运行一个进程。
分派程序(Dispatcher)
- 负责把CPU的控制权转交给CPU调度程序。
- 切换上下文。
- 切换到用户态。
- 跳转到用户程序的适当位置并重新运行之。
分派延迟(Dispatch latency)--- 分派程序终止一个进程的运行并启动另一个进程运行所花的时间。
CPU调度方式和时机
非抢占调度(nonpreemptive)
- 一旦把CPU分配给某进程后,系统不可以抢占已分配的CPU分配给其他进程。
- 只有当进程自愿释放CPU,才可以把CPU分配给其它进程。
- 优点:容易实现,调度开销小,适合批处理系统。
- 缺点:响应时间长,不适合交互式系统。
抢占式调度(preemptive)
- 调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的CPU重新分配给另一个进程。
- 可以防止单一进程长时间独占CPU资源。
- 系统开销大。
抢占式和非抢占式区别:运行的进程是否自愿放弃CPU资源。
CPU调度时机
- 从运行转到等待(非抢占式)
- 从运行转到就绪(抢占式)
- 从等待转到就绪(抢占式)
- 终止运行(非抢占式)
CPU调度准则
调度准则--基本指标
CPU利用率 --- 固定时间内CPU运行时间的比例。
吞吐量 --- 单位时间内运行完的进程数量。
周转时间 --- 进程从提交到运行结束的全部时间。
等待时间 --- 进程等待调度(不运行)的时间片总和。
响应时间 --- 从进程提交到首次运行(而不是输出结果)的时间段,也就是第一段的等待时间。
周转时间 = 等待时间 + 运行时间
响应时间 <= 等待时间
调度准则--优化方法
通过调度算法,使得达到下述的优化方法:
- 最大的CPU利用率
- 最大的吞吐量
- 最短的周转时间
- 最短的等待时间
- 最短的响应时间
CPU调度算法1(FCFS和SJF)
先来先服务调度算法(FCFS)
先来先服务(First-Come, First-Served - FCFS)
按照进程请求CPU的先后顺序使用CPU。
算法特点
- 实现简单,可使用FIFO队列实现。
- 非抢占式。
- 当一个长进程后面的多个短进程,让长进程先执行,会让后面的短进程等待较长的时间,从而导致CPU和设备利用率降低。
- 公平。
短作业优先调度算法(SJF)
短作业优先(Shortest-Job-First, SJF)
关联到每个进程下次运行的CPU区间长度,调度最短的进程。
两种模式
非抢占式SJF调度,一旦进程拥有CPU,它的使用权限只能在该CPU区间结束后让出。
抢占式SJF调度,发生在有比当前进程剩余时间片更短的进程到达时,也称为最短剩余时间优先调度(Shortest-Remaining-Time-First, SRTF)。
SJF最优
对一组指定的进程而言,它给出了最短的平均等待时间。
下一个CPU区间长度的预测
SJF算法困难:如何知道下一个CPU区间的长度。
SJF通常用于长程调度。
指数估算法:通过先前的CPU区间长度及其指数平均进行预测。
CPU调度算法2(PR和RR)
CPU调度算法3(MLQ, MLFQ和多处理调度)
操作系统 | CPU调度相关推荐
- 操作系统 cpu调度_CPU调度| 操作系统
操作系统 cpu调度 调度标准 (Scheduling Criteria) There are many criteria which have been suggested for comparin ...
- 操作系统—CPU调度与内存管理
CPU调度与内存管理 1.CPU调度算法 1>先来先服务调度算法 (FCFS): 就是按照各个作业进入系统的自然次序来调度作业. 这种调度算法的优点是实现简单, 公平. 其缺点是没有考虑到系统中 ...
- 操作系统——CPU调度
基本概念 进程执行由CPU区间和I/O区间组成,I/O为主程序里短CPU区间多,CPU为主程序里长CPU区间多. CPU调度程序:抢占调度,非抢占调度 分派程序:切换上下文,切换到用户模式,跳转到用户 ...
- 操作系统原理第五章:CPU调度
目录 1 CPU调度基本概念 1.1 基本概念 1.2 CPU调度的时机 1.3 CPU调度方案 2 CPU调度算法 2.1 先来先服务(FCFS) 2.2 短作业优先(SJF) 2.3 优先级 2. ...
- 【操作系统原理及Linux实践】 四cpu调度scheduling
课程: 操作系统原理及Linux实践 cpu调度 调度算法 先来先服务算法(FCFS) Round robin 时间片轮转 最短作业优先 优先级调度算法
- 操作系统实验报告16:CPU 调度
操作系统实验报告16 实验内容 实验内容:CPU 调度. 讨论课件 Lecture19-20 中 CPU 调度算法的例子,尝试基于 POSIX API 设计一个简单调度器(不考虑资源竞争问题): 创建 ...
- 操作系统系列笔记(四) - 进程,线程及CPU调度
进程和线程 进程 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程 进程包含了正在运行的一个程序的所有状态信息, 代码, 数据, 状态寄存器, 通用寄存器, 进程占用系统资源等 进 ...
- 操作系统第六章笔记---CPU调度
本文内容整理自西安交通大学软件学院田丽华老师的课件,仅供学习使用,请勿转载 操作系统系列笔记汇总:操作系统笔记及思维导图汇总附复习建议_Qlz的博客-CSDN博客 文章目录 文章目录 文章目录 思维导 ...
- 【操作系统笔记6】CPU调度
cpu调度 上下文切换 a. 切换CPU的当前任务,从一个进程/线程切换到另一个 b. 保存当前任务/线程 在 PCB/TCB 中的执行上下文(CPU 状态) c. 读取下一个进程/线程 的上下文 C ...
最新文章
- deepin--配置sublime Text 3 Python环境 迁移
- IHttpHandler 介绍演示(from 张子阳)
- kitkat-s5p4418drone 记录
- 实现根据id查询房源数据的GraphQL服务
- 来自未来团队伙伴的一封信
- pthread 简要使用指南
- “互联网从此没有 BAT”
- typedef有什么用_我是怎么用C++恰饭吃的
- Java内存运行机制
- java代码审查工具_APP开发常用的一些工具包、软件工具
- 弹出窗弹出两次的原因
- BZOJ 3897: Power
- 使用装机软件后,删除开机启动项的方法
- 报表工具都支持哪些数据源类型?
- U盘引导网络安装CentOS 7
- USYD悉尼大学DATA1002 OralExam 复习(可能会考的内容)
- MacBook Pro电脑一键切换输入法
- FSL之bet颅骨剥离
- Bootstarp:网站导航栏的编写设计
- 2016晔子小跟班行走城市第一站深圳仙湖植物园游记
热门文章
- 服务器记录的定位信息,服务器资讯:巧用机器学习定位云服务器故障
- CTF比赛中常见的MISC解题方法(不涉及内存取证和流量分析)仅供菜鸟,大佬绕道
- 前端开发面试题整理(摘抄)
- 2023学习Linux云计算可以做什么岗位的工作?
- 如何使用Snap功能同时运行两个Windows 8应用程序
- 【English】The Summer in July
- 读解忧杂货铺--深夜的口琴声有感
- 事件驱动框架(二)——状态机
- 河北工程科技学院计算机专业,计算机科学与技术系与河北工程大学信息与电气工程学院联合召开一流专业建设交流会...
- 让你用sublime写出最完美的python代码--windows环境