首页 > 新闻资讯 > 公司新闻
嵌入式操作系统的调度算法(嵌入式多任务调度过程)

linux环境下的进程调度算法有哪些?

先来先去服务 (FCFS)FCFS调度算法以进程进入就绪队列的先后顺序进行调度。它只考虑进程的等待时间,而不考虑其执行时间。算法简单直接,易于实现,有利于长作业和CPU繁忙的作业。然而,它不支持抢占式调度,可能导致短作业或I/O繁忙的作业长时间等待。

Linux内核的三种调度策略分别是SCHED_OTHER、SCHED_FIFO和SCHED_RR。SCHED_OTHER通常用于分时进程,通过nice值和counter值决定进程的调度优先级。nice值越小,counter值越大,进程被调度的概率越大。反之,进程曾经使用CPU最少时会得到优先调度。

我们可以通过两种方法来实现比例共享调度算法[Nieh01]:第一种方法是调节各个就绪进程出现在调度队列队首的频率,并调度队首的进程执行;第二种做法就是逐次调度就绪队列中的各个进程投入运行,但根据分配的权重调节分配个每个进程的运行时间片。

完全公平调度算法,是Linux内核中一种调度策略,旨在实现资源分配的公平性。其核心在于计算进程在调度周期内的实际运行时间和虚拟运行时间。实际运行时间由调度周期、进程权重及所有进程权重之和决定。具体计算如下:实际运行时间 = 调度周期 * 进程权重 / 所有进程权重之和。

从Linux 23内核版本开始,普通进程(采用SCHED_NORMAL策略)采用了CFS,即绝对公平调度算法,不再区分进程的睡眠时间或交互性,确保所有进程得到平等对待。CFS基本原理概述 CFS引入了一种创新的调度模型,为cfs_rq(CFS运行队列)中的每个进程赋予一个虚拟时钟——虚拟运行时间(vruntime)。