Linux进程调度过程

本文详细介绍了Linux操作系统中的进程调度,包括进程调度程序的工作原理、多任务操作系统的概念、时间片分配、调度策略、进程优先级管理、内核抢占和上下文切换等关键概念。调度程序通过合理分配处理器时间,确保系统的高效运行和进程的公平调度。

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

目录

什么是进程调度程序?

多任务操作系统

时间片

进程调度的策略

进程优先级

优先级数组

重新计算时间片

schedule函数

schedule函数如何找到下一个需要执行的进程?

计算优先级与时间片

睡眠与唤醒

Linux负载平衡程序

抢占与上下文切换

用户抢占

内核抢占

什么时候调度内核才是安全的呢?

内核抢占的发生时间点


什么是进程调度程序?

调度程序是内核的组成部分,负责选择下一个要运行的进程,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统。

调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行。只要系统中进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行。在一组处于可运行状态的进程中选择一个来执行,是调度程序所需完成的基本工作。

多任务操作系统

多任务操作系统就是能同时的并发交互执行多个进程的操作系统

非抢占式多任务:除非进城自己主动停下,否则他会一直执行,进程主动挂起自己的操作称为让步,有很多缺点一般不会使用。

抢占式多任务:由调度程序来决定什么时候停止一个进程的运行以便其他进程能够得到执行机会,这个强制的挂起动作就叫做抢占。

时间片

进程在被抢断之前能够独立运行的时间是之前预设好的,而且有一个专门的名字叫做进程的时间片。时间片实际上就是分配给每个可运行进程的处理器时间段,有效管理时间,便能使调度程序从系统全局的角度做出调动决定,还可以避免个别进程独占系统资源。

进程调度的策略

I/O消耗型:大部分的时间都在用来提交I/O请求,或者是等待I/O请求,这样的进程,经常处于可运行状态,但是运行时间较短,因为在等待更多的I/O请求时,总是会阻塞。

处理器消耗:把时间大多用在执行代码上,除非被抢断,否则他们通常都一直不停的运行,因为他们没有太多的io需求。

对于以上的两种可能出现的情况,对于io消耗型,我们可以提高它的优先级,快速的响应。对于消耗型系统我们可以降低它的优先级较低,时间片比较长。我们需要在两个矛盾的目标中寻找平衡,进程响应速度和最大系统利用率

进程优先级

调度算法中最基本的一类就是基于优先级的调度。是根据进程的优先级和其对处理器的时间需求来分配

Linux内部实现的是一个动态的优先级的调度方法,一开始,该方法设置基本的优先级,然而它允许调度程序根据需要来加、减优先级。

主要有两种独立的优先级范围

  1. nice值(-20 ~ 19),nice值越高表示该进程的优先级越低,nice值越低优先级越高
  2. 实时优先级:其值在0到99,任何事和操作进程的优先级都高于普通进程

优先级数组

每一个运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值