Linux内核进程管理子系统有什么第七十四回 —— 进程调度(1)

接前一篇文章:Linux内核进程管理子系统有什么第七十三回 —— 进程主结构详解(69)

 

本文内容参考:

Linux内核进程管理专题报告_linux rseq-优快云博客

《趣谈Linux操作系统 核心原理篇:第三部分 进程管理》—— 刘超

《图解Linux内核 基于6.x》 —— 姜亚华 机械工业出版社

特此致谢!

 

之前用了七十回左右的篇幅,讲解了进程管理主结构 —— struct task_struct,本回开始就着上一回task_struct结构中进程调度相关成员的热乎劲儿,开启一个新的篇章 —— 进程调度。

进程调度的概念

前文书已提到,一个计算机中可以同时执行的进程的数量是有限的,进程的数量往往多于处理器的个数,进程争用处理器的情况在所难免。系统不可能让某些任务一直占用CPU,而其它任务一直等待,于是就有了进程的调度。

进程调度就是从就绪队列中,按照一定的算法(公平、髙效)选出最合适的一个进程,并将处理器分配给它运行。进程调度的本质是让进程更好地分时复用处理器资源。

进程调度的核心知识点

  • 调度策略

就绪进程有很多,为什么要选择某一个进程X而不选择其它进程(比如Y、Z),依据是什么?

  • 调度时机

调度什么时候发生?进程X正在运行,现在要用进程Y替换进程X,什么时候进行替换?

  • 调度步骤

当发生调度的时候,怎么去完成调度,具体需要做哪些工作?

进程调度的相关概念

  • 时间片

时间片(TimeSlice)指的是分时复用过程中每个进程允许持续运行的最大时间配额单位。假设进程1持续运行了一个TimeSlice,那么它必须考虑让出CPU资源给其它进程。不过有两点需要注意:一是进程持续运行时间可以小于TimeSlice(上文描述中强调了“最大”);二是进程持续运行时间也可以大于TimeSlice,比如当进程1的时间片耗尽,考虑让出CPU,但此时并没有其它可运行进程,那么进程1会持续运行(上文描述中强调了“单位”)。

  • 优先级

优先级(Priority)指的是在所有进程中,谁更有资格优先获得处理器资源。一般来说,现代的进程调度器是基于优先级的调度,也就是说倾向于先运行优先级高的进程,再运行优先级低的进程,同优先级之间轮转调度。不过凡事也有例外,也会存在“优先级倒挂(反转)”的情况,即某些高优先级进程挂起而低优先级进程运行的情况。

Linux内核中的优先级分为静态优先级和动态优先级(见前文书struct task_struct结构中进程调度相关成员)。静态优先级一般是进程创建时确定的,也可以通过特定的系统调用改变;动态优先级的初始值取决于静态优先级,但是随着进程的运行不断低调整改变。调度策略选择进程时考量的是动态优先级。

更多进程调度的相关概念请看下回。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值