操作系统笔记——调度

进程调度

    

调度简介

    

历史

早期批处理时代
    没有调度

大型机的多道程序设计
    多个用户同时使用计算机
    多个程序同时运行
    CPU资源至关重要
        • 好的调度→提高性能、提高用户满意度
    在操作系统中的地位:非常重要

PC机
    单用户,程序少,CPU性能提升快,调度不算重要

网络服务器
    进程线程多,变得重要

移动嵌入式系统
    资源受限,进程多样化,非常重要

相关概念

进程行为

计算密集型IO密集型
在这里插入图片描述

调度时机

进程结束,阻塞,IO中断,时钟中断

调度算法

非抢占式:等
抢占式:可以被打断

调度算法目标

all OS公平,平衡,策略强制执行
批处理吞吐量
周转时间(从提交到终止间的平均时间)
交互式响应时间,均衡性
实时满足截止时间(避免数据丢失)
可预测性 (多媒体系统)
进程切换

· 切换全局页目录以加载一个新的地址空间
· 切换内核栈和上下文

批系统中的调度

目的:吞吐量和周转时间

主要类型
❑ 先来先服务( FCFS :First Come First Serve)
❑ 最短作业优先(SJF:Shortest Job First)
❑ 最短剩余时间优先(SRTN:Shortest
Remaining Time Nest)
❑ 最高响应比优先(HRRN:Highest Response
Ratio Next )

FCFS

方式:按照进程创建的次序运行,非抢占式
缺点:长进程后面的短进程需要等很长时间,不利用户体验

在这里插入图片描述

最短作业优先SJF

    有最短的平均周转时间

最短剩余时间优先SRTN

    当一个新就绪的进程比当前运行进程具有更短的完成时间时,系统抢占当前进程,选择新就绪的进程执行

优点缺点
最短平均周转时间不公平,不精确,没有优先级

最高响应比优先(HRRN)

折衷权衡

过程
    先计算每个进程的响应比R,总是选择R最高的进程执行。
R = 周 转 时 间 / 处 理 时 间 R=周转时间/处理时间 R=/
     = ( 处 理 时 间 + 等 待 时 间 ) / 处 理 时 间 =(处理时间 + 等待时间)/ 处理时间 =+/
     = ( 1 + ( 等 待 时 间 / 处 理 时 间 ) =(1 +(等待时间 / 处理时间) =1+/

交互式系统中的调度

目标:响应时间、均衡性

❑ 轮转调度(RR-Round Robin)
❑ 最高优先级调度(HPF—Highest Priority First)
❑ 多级反馈队列(Multiple feedback queue)
❑ 最短进程优先(Shortest Process Next)

轮转调度

古老,简单,公平,广泛

过程
    排队列
    时间片
    当前进程时间片用完,让出处理器,排入队尾。

优点缺点
公平,响应速度快进程切换多,开销高

对于多种不同时间的进程,时间片流转是有利的,但是对于相同大小的进程,平均周转时间就变长了。

设计原则
    时间片应略大于一次典型的交互所需要的时间

最高优先级调度

    进程控制块TCB中加入优先级属性,可以是静态不变的,也可以是动态调整的。

    简单,不公平

静态调整

    重要性,系统进程、前台进程、I/O进程。

动态调整

    每个进程的优先级设置为1/f;

     f = 历 史 占 用 C P U 时 间 / ( 历 史 I O 阻 塞 时 间 + 历 史 占 用 C P U 时 间 ) f=历史占用CPU时间/(历史IO阻塞时间+历史占用CPU时间) f=CPU/(IO+CPU)

    如果存在时间片,那么f就是上一次进程时间片CPU运行时间;

    I/O型进程优先级应该较高。

优先级调度+时间片轮转

过程

  1. 把一组进程按照优先级分为若干类,
  2. 同一优先级 – 时间片
  3. 不同优先级 – 最高优先级调度

综合优先级调度+时间片轮转

    维护n个就绪队列,每个队列对应一个优先级
    
调度时机
    新的进程创建,一个进程时间片用完,一个阻塞进程进入就绪态时,系统将根据优先级,把该进程放入到响应队列的队尾。
特点
 只有高优先级类的队列为空时,其他队列的进
程才有可能运行
 队列存在多个进程,这些进程以时间片轮转的方式平等运行
 高优先级进程会抢占当前进程

多级反馈队列调度

BSD 5.3(Unix的分支)使用的调度算法

结构

  1. 多个优先级就绪队列
  2. 不同优先级队列有不同的时间片长度,第一级最少,优先级降低,时间片增大
  3. 高队列为空时,调度第二级队列
  4. 各级队列按时间片流转
  5. 进程用完当前时间片,让出cpu,进入下一级就绪队列。
  6. 阻塞而放弃cpu,进入等待队列,等待的结果发生后,回到原先一级队列
用户优点
终端型用户提交作业小,在第一队列完成就可以让用户满意
短进程用户平均周转比较短
长进程用户不会担心饥饿现象

漏洞
要长时间运行,且持续交互的进程不友好,用户可以作弊:每隔几秒敲一下键盘就可以让自己的进程优先级永远最高。
    

最短进程优先

选时间最短的运行,但是运行前不能确定运行时间。

方法
    预测:根据过去行为预测
    老化技术:
在这里插入图片描述

保证调度

❑对用户作出明确的性能保证并实现它
 n个进程,则每个CPU处理能力的1/n
 必须跟踪各个进程自创建以来已使用了多少CPU时间

彩票调度

方法
❑给每个进程发彩票
❑优先级越高,发的彩票越多
❑每隔一段时间(一个时间片)抽奖,抽出来是谁就运行谁。

优点不会出现某个进程一直等待,轻量高效
缺点不能很好的解决IO进程

公平分享调度

调度进程本身,不关心用户
    ❑ 进程多的用户有优势

实时系统中的调度

  

基本条件

必要信息:

  1. 就绪时间、开始截止时间、完成截止时间、处理时间
  2. 系统处理能力强
    在这里插入图片描述

基于时钟中断的抢占式优先权调度算法

在这里插入图片描述

立即抢占式优先权调度算法

在这里插入图片描述

 

μC/OS-II中的调度

立即抢占式优先权调度算法+基于时钟中断的抢占式优先权调度算法

任务改变状态、新建任务立即抢占式
定时阻塞基于时钟

策略和机制

调度算法不知道用户的具体需求,很少能做出最优选择。

调度机制与调度策略分离
 调度算法以某种形式参数化,而参数可以由用户进程填写。

线程调度

用户级线程

  1. 内核不知道该线程存在,调度以进程为单位
  2. 线程之间协同运行,“主动”交出运行权
  3. 运行时系统:轮转和优先级调度,用户也可以自定义

内核级线程:以线程为单位

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值