Linux操作系统——进程调度

本文详细介绍了Linux2.4中的进程调度原理,包括时间片轮转、优先级调度(非抢占式与抢占式)、多级反馈队列调度和实时调度。还讨论了Linux调度程序如何根据进程的优先级动态调整时间片,以及调度的时机和选择进程的依据。最后,提到了schedule()函数在内核中的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以Linux2.4中的调度算法来说明进程调度原理。

一、基本原理

进程运行时需要各种各样的系统资源,调度的实质就是资源的分配。系统通过不同的调度算法来实现资源的分配。通常,选择什么样的调度算法取决于资源的分配策略,一个好的调度算法应当考虑以下几个方面:

(1)公平:保证每个进程得到合理的CPU时间。

(2)高效:使CPU保持忙碌状态,总是有进程在CPU上运行。

(3)响应时间:使交互用户的响应时间尽可能短。

(4)周转时间:使批处理用户等待输出的时间尽可能短。

(5)吞吐量:使单位时间内处理的进程数量尽可能多。

下面介绍主要的调度算法和基本原理

1、时间片轮转调度算法

时间片是分配给进程运行的一段时间。

在分时系统中,为保证人机交互的及时性,系统使每个进程依次地按时间片轮流地执行,应采用时间片轮转进行调度。在通常的轮转法中,系统将所有的可运行(就绪)进程按照先来先服务的原则,排成一个队列,每次调度时把CPU分配给队首进程,并令其执行一个时间片,当执行的时间片用完时,系统发出信号,通知调度程序,调度程序根据这个信号来停止该进程的执行,并将它送到运行队列的末尾,等待下一次执行;然后,把处理器分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样保证就绪队列中的所有进程,在一个给定的时间内,都能获得一个时间片的处理器执行时间。

2、优先级调度算法

为了使得紧迫型进程在进入系统后获得优先处理,引入最高优先级调度算法。当将该算法用于进程调度时,系统将把处理器分配给运行队列中优先级最高的进程,可进一步把该算法分为两种方式:

1)非抢占式优先级调度算法

在这种方式下,系统一旦将CPU分配给运行队列中优先级最高的进程后,该进程便一直执行下去,直到完成;或因发生某事件使该进程放弃处理器时,系统方可将处理器分配给另一个优先级高的进程。这种调度算法主要用于批处理系统中,也可用于某些对实时性要求不严格的实时系统中。

2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值