• 进程调度算法小结


    进程调度算法,说白了在有限的CPU资源下,如何充分的利用CPU 高效的为各个进程服务。

    村里新开了一个网吧        类比一台机器

    网吧里有一台可供上网的电脑       类比单核CPU

    来了一群小学生兴高采烈的想上网      类比一堆进程等着CPU来执行

    网吧的老板                          类比操作系统的进程调度器

    OK 到这里,一堆进程抢着一个单核CPU执行 被我们类比成了一群小学生去网吧抢一台电脑上网。

    非抢占式时代

    (任何一个小学生上机了,其他人必须等他玩够了才能上,他没玩够都只能在旁边看着)

    1.先来先服务算法

    很好理解了,按照小学生们进入网吧的顺序排队,一个一个的玩,上一个玩够了 下一个才能上。

    问题:来的晚的小明同学就很气,明明自己就想上网看一下拼嘻嘻买的练习册邮到哪了,五分钟都用不上的事,硬是要等前面的张三同学打一局50分钟还不投的LOL排位

    对于执行时间短来的晚的进程很不友好,执行时间长的进程排在前面会导致后面的进程响应时间大大增长

    2.短任务优先算法

    也很好理解,不论小学生们什么时候进的网吧,每次都按每个小学生想上网的时间排序,再按顺序上网

    问题:爱学习的小明同学早早的就能占上电脑,但是张三同学就很恼火,从早上八点来的想打一局LOL 排到晚上还没排到,后来的小马晚上五点来的都能排在他前边

    很容易使执行时间长的进程排在后面长时间饥饿

    3.高响应比优先算法

    既然光靠进网吧顺序排序不公平,光靠占用电脑上网时间排序也不中,那不如二者结合一下  

    响应比 = (等待时间+要求服务时间)/ 要求服务时间   根据响应比排序,这下小学生们都觉得公平多了。

    完全串行执行,用户体验不好,多个进程不能并行执行

    抢占式时代

    (不需要等上一个小学生玩够,根据网管的规则可以直接让下一个小学生上去爽一爽)

    抢占式相比较非抢占式,就是一天网吧老板来了,发现小学生们规规矩矩的排队,无论按什么规则,总有排在后面的小学生默默落泪

    网吧老板心里不是滋味,于是想办法打破之前的规则,制定新的规则,不需要上一个小学生玩够就可以根据规则,让下一个小学生上去爽一会,再轮给下一个小学生。没办法,一台电脑大家挤一挤嘛。

    4.时间片轮转算法

    小学生还是按照进网吧的先后顺序排队,网吧老板拿出一块秒表,每个小学生上机就开始计时,到了规定的时间就让下一个小学生上。

    问题: 老板如果把秒表设定十秒,结果每个小学生上机后光是开机+关机就要用掉5秒,那他娘的轮来轮去时间都浪费在开机关机上了。

    时间片设计的过端会导致CPU频繁的上下文切换,会浪费资源

    5.优先级调度算法

    老板根据想上网时间,来网吧顺序,以及家里有没有背景(是否是内核进程)来综合考虑,发给每个小学生发一张数字卡片,拿到的数字越小代表优先级越高

    然后根据优先级排序,顺序让小学生们上机

    老板还会动态的更新小学生手里的数字卡片,最大努力的保证公平,也最大努力的让家里有背景的同学赢在起跑线上。

    最后看一下进程调度切换的实现

  • 相关阅读:
    Ubuntu下配置PHP和CakePHP记录
    VMware Workstation “以独占方式锁定此配置文件失败。可能其它正在运行VMware进程在使用此配置文件”
    c语言结构体链表
    Linux下VNC配置使用总结:开启+桌面配置+安全访问
    git服务器使用
    MYSQL外键(Foreign Key)的使用
    MySQL 安装与使用(三)
    Percona XtraBackup的部分备份与恢复/单库备份/单表备份/指定库备份/指定表备份
    Percona XtraBackup 核心文档
    mysql 半同步复制 插件安装以及测试
  • 原文地址:https://www.cnblogs.com/ttaall/p/15790276.html
Copyright © 2020-2023  润新知