进程的引入是为了让操作系统可以同时执行不同的任务。而进程从创建到销毁也就对应不同的状态,进程状态,本质上就是为了用有限的计算机资源合理且高效地完成更多的任务
而不同的任务如何进行合理的分配,被CPU执行,其实就是不同的调度算法。
调度算法
考虑到不同任务的耗时和优先级两项指标
- 抢占式
- 非抢占式
抢占式其实就是类似只有一个资源,大家谁抢到就是谁的。比如只有一双筷子。但是有一定的缺点就是,带来更多的切换次数,上下文切换的成本。而非抢占式其实就类似与大家排队,谁排到谁处理,容易出现饥饿现象。
适用场景:
1.非抢占式调度,适合忍受延迟执行的普通进程
2.抢占式调度,适合交互性要求高的实时进程
Round-Robin算法
这个算法其实就是类似于负载均衡,比如有5个进程,那么每个进程分配的时间片都是一样的,执行完之后立马切到下一个进程执行。主要特点就是平衡性比较好。
先来先服务
先来先服务,其实就是构建一个队列,那个进程先来,就先执行哪个。或者出现阻塞的时候,退出。
缺点是不公平,对于短作业来说容易出现长时间的等待。
短作业优先
上面的先来先服务,可能出现短作业获取不到执行权的情况,那么一个就是短作业优先执行。
但是短作业先执行,长作业可能获取不到执行权。
最短剩余时间优先
还有一种就是按照最短剩余时间,这种方式会考虑整体的IO阻塞情况,按照任务剩余时长进行排队。
文章来源:https://www.toymoban.com/news/detail-708802.html
小结
由此可看,不同的调度算法有不同的使用长, 都是在公平性、效率、吞吐量、等待时间等做了不同的取舍。文章来源地址https://www.toymoban.com/news/detail-708802.html
到了这里,关于【操作系统】聊聊进程是如何调度的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!