Linux中进程调度笔记(1)

本文深入探讨了Linux中的进程调度,区分了实时进程和普通进程的调度策略。实时进程采用SCHED_FIFO、SCHED_RR和SCHED_DEADLINE策略,强调响应速度和优先级;而普通进程则使用SCHED_NORMAL、SCHED_BATCH和SCHED_IDLE策略,关注公平性和系统资源利用率。Linux的完全公平调度算法(CFS)确保普通进程的公平执行。此外,任务结构task_struct中的调度策略和优先级变量决定了进程的调度行为。

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

在Linux中,进程大至分为两类:实时进程 和 普通进程,这两种进程调度策略不同
实时进程:需要尽快得到响应的进程;
普通进程:常用的进程,优先级没有实时进程高
在内核里,不分进程线程,进程线程都是一种数据结构(任务),即task_struct结构体管理一个任务。
在task_struct中,有一个成员变量叫调度策略,即unsigned int policy; policy这个变量有以下几个定义:

#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6

配合调度策略的,还有优先级,在task_struct这样定义:

unsigned int rt_priority;
int prio, static_prio, normal_prio;

优先级是一个数值,数值越小,优先级越高,实时进程的优先级比普通进程的优先级高。

实时进程调度策略
实时进程有自己的调度策略,即实时调度策略,在上面policy变量的定义中SCHED_FIFO
SCHED_RRSCHED_DEADLINE属于实时进程的调度策略。
SCHED_FIFO:相同优先级情况下,先到先服务,类似队列的先进先出;但是优先级高的可以抢占优先级低的。
SCHED_RR:相同优先级情况下,采用时间片轮转的策略,当时间片用完后放到队列尾部;高优先级依然可以抢占低优先级。
SCHED_DEADLINE:DL调度器选择其deadline距离当前时间点最近的那个任务执行。

普通进程调度策略
在policy变量定义中,SCHED_NORMAL、SCHED_BATCH、SCHED_IDLE属于普通进程调度策略
SCHED_NORMAL:普通进程
SCHED_BATCH:后台进程,几乎不需要和前端交互,这类进程可以默默执行,不要影响需要交互的进程,可以降低它的优先级。
SCHED_IDLE:空闲时才调用的进程

以上讲的policy和priority,表示进程调度的策略和优先级,但还没有指明由谁去具体执行这些操作;在task_struct里定义了这样一个成员变量,它是真正去做事的。

struct sched_class *sched_class;

sched_class有以下几种实现
stop_sched_class:优先级最高的进程才会使用这种策略,它会中断其他所有正在运行的进程,并且自己本身不会被其他任务打断。
dl_sched_class:对应上面写的deadline策略
rt_sched_class:对应RR算法或FIFO算法的调度策略,具体调度策略由进程的task_struct->policy指定

fair_sched_class:普通进程调度策略
idle_sched_class:空闲进程调度策略

常用的是fair_sched_class调度策略;下面主要讲普通进程的调度策略
在Linux中,有一个CFS(完全公平调度算法)。CFS给每一个普通进程安排一个vruntime(虚拟运行时间),进程运行时间越长,vruntime越大,在进程管理中,进程的vruntime越大的,其优先级会逐渐降低,让vruntime小的先运行,这样随着进程的vruntime不断变化,其是否运行也在变化,不会一直不被运行或一直运行。
vruntime = 实际运行时间 * nice_0_load / 权重,同样的实际运行时间,权重高的vruntime小,,获得的实际运行时间就多了。

调度队列与调度实体
以后再写。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值