优先级调度算法实现_操作系统 | CPU调度

文章目录

  • 背景

    • CPU调度

    • 调度时间

  • 调度准则

    • 调度策略

    • 程序执行模型

    • 比较调度算法的准则

    • 吞吐量 VS 延迟

    • 公平的目标

  • 调度算法

  • 实时调度

    • 实时系统

    • 可调度行

    • 单调数据(RM)

    • 截止日期最早优先(EDF)

  • 多处理器调度

  • 优先级反转

背景

CPU调度

  • 上下文切换

    • 切换CPU的当前任务,从一个进程/现成到另一个

    • 保存当前进程/线程在PCB/TCP中的执行上下文(CPU状态)

    • 读取下一个进程/线程的上下文

  • CPU调度

    • 从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个进程/线程

    • 调度程序:挑选进程/线程的内核函数(通过一些调度策略)

    • 什么时候进行调度

调度时间

0510817c34449847378a53ddbb95992c.png
从一个状态到另一个状态变化时会触发一次调度
重点是运行相关的一些状态,例如从就绪态到运行态,从运行态到等待状态

758bf511fc36345f50153ccbc52d94ab.png
大部分情况下调度应用程序,程序在运行过程中以用户态进程形式存在。早期操作系统,非抢占式调度策略,一旦启动进程,那么从开始到结束不允许被打断,这种情况导致等很长时间,效率可能会不高。

上面策略主要针对用户态的进程,对于内核而言,当一个用户进程执行系统调用,如果这个系统调用在内核中不会导致这个进程处于等待状态,他还是处于运行状态的时候,当这个系统调用正常返回的时候一定会返回到发起这个系统调用的进程继续执行,也就是内核中不会出现抢断现象。在内核中发生一次切换,到另一个内核中执行

目前的操作系统,支持内核中抢占,系统更加灵活高效

调度准则

调度策略

93cffa5da274507ec6e1f48deeb80e86.png

程序执行模型

7007bdc0bc38d52fcf0a1ed3d64082d2.png

比较调度算法的准则

e3deb88d280ddc3c953e689420f34294.png

吞吐量 VS 延迟

6636b73d71a152c7e3b66a307bd303b9.pngd8a4afa22b5cc24b10e4b791d3b1aff7.png

公平的目标

8455b5ba7190c040bebd7d81ed82a498.png

调度算法

23a7869eb6793dd6d029af4dd13c59e1.png
常见简单的调度算法bc1b03577d024ec2047c161703f8114c.png4a2d03d9c8d733790f5e37147493d647.pngde9622da86d8f93f70c8ea35e3d3e3f7.pnge3877f96233193a6dc5731b61da3f832.png26ffb6da1410901c101bece48d38134d.png6b4786b53f96d244c601884dddc04073.png
通过预估,时间历史上来看,预测下一次执行时间5cd9a72e78bcc9b4fd1f12751dcaa8b2.png14b7b94d001f14cf9113403b079eb0fa.png
相比上一个考虑到进程等待时间857e6c3d0f925e6e4b92cd674ae44ff5.png5e30a956647ee52a4b3ec57afedfbf45.png
希望四个进程轮流占用CPU,每个进程都有机会占用CPU时间执行5fadaeb6e89d8a1666df872142a7c0f8.png036d3c32f3dc47c73f9009d1b79c56f0.png49b2e55582fcbd2229bc6e647394eacf.pngc8411940f3a151073eb4c503f4526392.png
IO密集的任务可以尽快的进行,也就是交互性比较多的可以优先执行,需要很多资源的进程可以跑的慢一点1de26961bf44c725cc512ab613e3ec16.png
FSS重点强调公平,由于计算机系统面想服务器之类的,需要多用户共享,这里要考虑不同用户开启不同进程数,用户是平等的,在用户级别实现对资源公平的共享,而不是进程这个级别。90c499c16d7b2714bc19d414ae2bf57f.png
评价方法faec781ebfeef7d59036a48797387318.png

实时调度

实时系统

8d75bde117259bc86bb384ce8d47d8d6.png3a8338ac129eb048044f1bf2a0096979.png

可调度行

8d4f78349fb26ddbdb63effe9732f1c6.png
衡量标准af722b8e3bf2992753e41e21b2a2e9ff.png
这个任务重复三次,执行一段时间然后等待到下一次,周期是54c4ffb52b385502a7d0a1964eb6546e4.png
静待优先级调度,在任务执行前确定优先级
动态优先级调度随着执行过程动态的变化

单调数据(RM)

截止日期最早优先(EDF)

f207307cd717f7bdd1bd5bf42850edb1.png

多处理器调度

1b92d11ce923de5e6c974e0894d740ea.png

优先级反转

f9ff9c559f4a42a47a3613c682dde804.png35a7129c7260416b4bca31bfaf5ef9a7.png
正常三个进程执行,T1>T2>T3按照优先级调度

T1如果不能及时完成,系统会判定操作系统不稳定,然后重启

T3开始执行,t1-t2,执行到t3,T1出现,开始执行,执行到结束,要去访问被T3占用的共享资源,但是T3占用资源还没有释放,等待T3共享资源执行完毕,T3从t4-t5,到t5时间,T2来了,抢占T3执行T2,T1虽然比T1优先级高,但是受制于T2的执行时间,因为T2抢占了T3的CPU资源执行,而T1又必须等待T3,导致T1 的执行时间被T2延长

9a2ec6974d4c37d4b27ae9993caacbe8.png
优先级继承办法

T3访问了共享资源,T1也需要访问时候,因为需要等待T3执行完毕,所以T3的优先级得到动态的提升,和T1一样,这种情况下,T2不能抢占T3bf17bd73cee467b5c8a8096729764b67.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值