一 基本概念
1 队列中的记录通常是进程的进程控制块。
2 CPU调度决策可在如下四种环境下发生
a 当一个进程从运行状态切换到等待状态 例如,I/O请求或调用wait以等待一个子进程的终止
b 党一个进程从运行状态切换到就需状态 例如,当出现中断
c 当一个进程从等待状态切换到就需状态 例如,I/O完成
d 当一个进程终止
当调度只能发生在第一和第四种种情况时,称调度方案是非抢占的,否则调度方案是可抢占的。
采用非抢占调度,一旦CPU被分配给一个进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态时释放CPU
3 分派程序
功能包括:
切换上下文
切换到用户模式
跳转到用户程序的合适位置以重新启动这个程序
二 调度准则
CPU使用率: 40%到90%
吞吐量:一个时间单元内所完成进程的数量。
周转时间:从进程提交到进程完成的时间间隔称为周转时间。周转时间是所有时间段之和,包括等待进入内存、在就绪队列中等待
,在cpu上执行和I/O执行
等待时间:CPU调度算法并不影响进程运行和执行I/O的时间量。它只影响进程在就需队列中等待所花费的时间。
响应时间:从提交请求到产生第一响应的时间。是开始响应所需要的时间,而不是输出该响应所需要的时间。
CPU使用率和吞吐量最大化,周转时间、等待时间和相应时间最小化
三 CPU调度算法
1 先到先服务调度
FCFS(first-come,first-served)
当一个进程进入到就需队列,其pcb就被链接到队列的尾部,当CPU空闲时,CPU被分配给位于队列头的进程。接着,该运行进程从队
列中被删除。
FCFS策略的平均等待时间相当长
FCFS调度算法是非抢占式的。
2 最短作业优先调度
SJF(shortest-job-first)
SJF算法的真正困难时如何知道下一个CPU请求的长度。SJF调度经常用于长期调度。
3 优先权调度
每个进程都有一个优先权与其关联,具有最高优先权的进程会被分配到CPU。具有相同优先权的进程按FCFS顺序调度。
优先权可以通过内部或外部方式来定义。
优先权调度可以使可抢占的或者非抢占的。
优先权调度算法的一个主要问题是无穷阻塞。解决办法是老化,老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先
权。
4 轮转法调度
轮转法(RR)调度算法是专门为分时系统设计的。定义一个小时间单元,称为时间量或时间片。时间片通常为10ms到100ms。就绪队
列作为循环队列处理。CPU调度程序循环就需队列,为每个进程分配不超过一个时间片间隔的CPU。
如果上下文切换时间约为时间片的10%,那么约10%的CPU时间会浪费在上下文切换上。
5 多级队列调度
(multilevel queue-scheduling algorithm)
不同队列可用于前台和后台进程,前台队列可能使用RR算法调度,而后台队列可能使用FCFS算法调度。
6 多级反馈队列调度
对于多级队列调度算法,通常进程进入系统时,被永久地分配到一个队列,进程并不在队列之间移动。
四 多处理器调度
堆成多处理器
非对称多处理器
五 实时调度
实时计算分为两种类型:硬实时,软实时
硬实时:系统需要在保证的时间内完成关键任务。通常,在提交进程时,同时有一条语句告诉系统用来完成或执行I/O所需要的时间
软实时:要求关键进程要比其他较弱进程拥有更高的优先权。
实现软实时要求自习设计调度程序和操作系统的有关方面:
第一,系统必须有优先权调度,且实时进程必须有最高的优先权。实时进程的优先权不随时间而下降,尽管非实时进程的优先权可
以。
第二,分配延迟必须小
分派程序停止一个进程而启动另一个进程执行所需要花费的时间成为分派延迟
六 linux
linux提供了两种独立进程调度算法。一种是分时算法,用于在多个进程之间进行公平可抢占调度
一种是为实时任务设计的,
linux只允许在用户模式下运行的进程被抢占
第一种调度类型是用于分时进程的,对于传统的分时进程,linux使用了优先权的、基于信用度的算法。每个进程都有一定数量的调
度信用度,党要选择一个新任务运行时,具有最多信用的进程会被选择。每次出现定时器中断时,当前运行进程会失去一个信用,
党其信用为0时,它会被暂停且另一个进程会被选择。
linux使用两种实时调度类型:先到先处理和轮转。
时间片轮转(RR)调度对于分时系统更为适合。
FCFS算法是非抢占的,RR算法是可抢占的。SJF和优先级算法可以使可抢占的也可以使非抢占的。
多级队列算法允许多个不同算法用于各种类型的进程,最为常用的是前台交互队列(RR)和后台批处理队列(FCFS)。多级反馈队
列允许进程在队列之间迁移。
solaris 2和windows2000都采用可抢占的、基于优先级的调度算法,包括支持实时线程,来调度线程
linux进程调度程序也使用基于优先级的算法,并提供实时支持。

操作系统概念学习笔记三 cpu调度算法的更多相关文章

  1. 操作系统概念学习笔记 10 CPU调度

    操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...

  2. 《30天自制操作系统》笔记(06)——CPU的32位模式

    <30天自制操作系统>笔记(06)——CPU的32位模式 进度回顾 上一篇中实现了启用鼠标.键盘的功能.屏幕上会显示出用户按键.点击鼠标的情况.这是通过设置硬件的中断函数实现的,可以说硬件 ...

  3. 操作系统学习笔记:CPU调度

    CPU调度的目的在于提高CPU利用率,不让CPU闲着.CPU是宝贵的资源,如果有一个进程,本来在CPU中运行,忽然因为要使用IO资源,于是转而请求IO,这边CPU挂起,造成就绪队列中的其他进程等待,这 ...

  4. 操作系统学习笔记4 | CPU管理 && 多进程图像

    操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈 ...

  5. 操作系统学习笔记(三) windows内存管理

    //系统物理页面是由 (Page Frame Number Database )简称PFN数据库来进行管理,实际上是一个数组,每个物理页面都对应一个PFN项. 进程的地址空间是通过VAD(Virtua ...

  6. 操作系统学习(三)-- CPU调度

    操作系统之进程与线程 L14 CPU调度策略 如何设计调度算法? 调度关键在:折中和综合 IO约束型的任务一般是前台任务,和用户交互:CPU约束型关注周转时间 进程切换过程需要系统内耗,切换时间长则系 ...

  7. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  8. 清华大学ucore操作系统课笔记

    操作系统 清华大学ucore操作系统课笔记 全文思维导图 1. 操作系统概述 1.1 什么是操作系统? 操作系统的定义 没有公认的精确定义 一个控制程序 一个系统软件 控制程序执行过程,防止错误和计算 ...

  9. 操作系统学习笔记5 | 用户级线程 && 内核级线程

    在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操 ...

随机推荐

  1. JavaScript中继承的实现

    继承是类和类之间的关系,继承使得子类别具有父类别的属性和方法. js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言, ...

  2. video.js分段自动加载视频【html5视频播放器】

    突发奇想的需求,要在官网上放一个一个半小时的视频教程…… 然而,加载成了问题,页面是cshtml的.net混合网站,不知道哪儿的限制,导致视频加不出来. 没有办法,只能前端想办法了. 于是将视频切割成 ...

  3. spring_150902_hibernatedaosupport

    实体类: package com.spring.model; import javax.persistence.Entity; import javax.persistence.Id; import ...

  4. HDU 6025 Coprime Sequence

    枚举,预处理. 预处理前缀$gcd$与后缀$gcd$,枚举删哪一个即可. #include <bits/stdc++.h> using namespace std; int T,n; ]; ...

  5. Void运算符 与 undefined类型

    void 运算符 对给定的表达式进行求值,然后返回 undefined. 何为求值,就是执行之后的表达式. 我们最常见的就是 <a href="javascript: void(0)& ...

  6. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

  7. 6大原则java

    1.开闭原则(Open Close Principle)定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.    开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好 ...

  8. FastReport.Net使用:[1]屏蔽打印对话框

    1.如何设置默认打印机 在FastReport设计界面找到File->Printer Setup菜单,运行该菜单显示“打印机设置”对话框.在打印机(Printer)列表中选择默认打印机,并勾上“ ...

  9. 【BZOJ 3729】3729: Gty的游戏 (Splay维护dfs序+博弈)

    未经博主同意不得转载 3729: Gty的游戏 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 448  Solved: 150 Description ...

  10. java 软引用,弱引用,强引用

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 强引用 ,有用的对象. 强引用 不会被回收. 软引用,有用 但不是必须的对象. 系统在发 ...