Linux进程调度的概述

Linux进程调度的概述,第1张

Linux的调度程序是一个叫Schedule()的函数,由它来决定是否要进行进程的切换。而所谓的调度时机则是在什么情况下执行调度程序。

Linux进程调度采用的是抢占式多任务处理,所以进程之间的挂悉孝胡起和继续运行无需彼此之间的协作。

主要分为以下几种情况:

1、进程状态转换的时刻:进程终止、进程睡眠

进程要调用sleep()或exit()等函数进行状态转换,这些函数会主动调用调度程序进行进程调度。

2、当前进程的时间片用完时(current->counter=0)

由于进程的时间片是由时钟中断来更新的,因此,这种情况和时机4是一样的。

3、设备驱动程序

当设备驱动程序执行长而重复的任务时,直接调用调度程序。在每次反复循环中,驱动程序都检查need_resched的值,如果必要,则调用调度程序schedule()主动放弃CPU。

4、进程从中断、异睁拦常及系统调用返回到用户态时

不慎升管是从中断、异常还是系统调用返回,最终都调用ret_from_sys_call(),由这个函数进行调度标志的检测,如果必要,则调用调度程序。

就绪到执行:处于就绪状态的进程,在调度程序为之分配了处理器之后,段备该进程就进入执行状态。

执行到就绪:正在执行的进程,如果分配给它的时间片用带枝完,则暂停执行,该进程就由执行状态转变为就绪状态。

执行到阻塞:如果握行毁正在执行的进程因为发生...

一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。

 (1) 就绪->执行

就绪状态是指进程获得了调度程序为之分配的除了CPU时间之外的其他必要资源,只要CPU时间一到位就可执行了。

处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

 (2) 执行->就绪

处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。

 (3) 执行->阻塞

正在执行的进程因等待某种事件发生而姿消无法继续执行时,便从执行状态变成阻塞状态。

 (4) 阻塞->就绪

处于阻塞状态的进程清手,若其等待的事件已经发生,于答册嫌是进程由阻塞状态转变为就绪状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12373673.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存