首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SCHED_RRSCHED_FIFO的区别

SCHED_RRSCHED_FIFO是Linux内核中用来调度进程的两种调度策略,它们有以下几点区别: 调度方式:SCHED_RR采用轮转调度方式,而SCHED_FIFO则采用先进先出调度方式。...优先级:在SCHED_RR中,每个进程有一个时间片,当时间片用完后,进程会被放到就绪队列的末尾;而在SCHED_FIFO中,进程只有在运行结束或者被阻塞前才会被切换,因此仅当当前进程优先级低于其他进程时才会被阻塞...响应时间:SCHED_RR对于I/O密集型的进程,可以确保系统对于每个请求的响应时间都是相等的;而SCHED_FIFO对于CPU密集型的进程,可以使得它们运行较长时间,减少进程上下文切换的开销。...因此,在选择使用SCHED_RRSCHED_FIFO时,需要根据具体的情况进行考虑。...如果要求对响应时间有严格的要求,并且进程的执行时间比较短,适合使用SCHED_RR策略;如果对于进程的响应时间要求不那么严格,更注重进程的执行顺序,则适合使用SCHED_FIFO策略。

59430

Linux 内核】实时调度类 ① ( 进程分类 | 实时进程、普通进程 | Linux 内核 SCHED_FIFO、SCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )

文章目录 一、进程分类 ( 实时进程 | 普通进程 ) 二、Linux 内核调度策略 1、SCHED_FIFO 调度策略 2、SCHED_RR 调度策略 三、实时调度实体 sched_rt_entity...内核】进程管理 - 进程优先级 ① ( 限期进程 | 实时进程 | 普通进程 | 进程优先级相关字段 ) 【Linux 内核】调度器 ⑧ ( 进程优先级源码 include\linux\sched\prio.h...| SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客中 , 介绍了 Linux 内核相关的调度策略 ; 1、...可以运行任意长的时间 ; 2、SCHED_RR 调度策略 SCHED_RR 是 " 实时进程调度策略 " , 使用的是 时间片轮转 机制 , 对应的 时间值 在 运行时会 减少 ; 进程 使用完 CPU...---- 实时调度实体 在 Linux 内核源码中通过 sched_rt_entity 结构体 表现 , sched_rt_entity 结构体 , 定义在 Linux 内核源码的 linux-5.6.18

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 )

文章目录 一、Linux 内核调度策略源码 二、SCHED_NORMAL 策略 三、SCHED_FIFO 策略 四、SCHED_NORMAL 策略 五、SCHED_BATCH 策略 六、SCHED_IDLE...策略 七、SCHED_DEADLINE 策略 一、Linux 内核调度策略源码 ---- " Linux 应用进程 " 可以根据 " Linux 内核 " 提供的 " 调度策略 " 选择 " 调度器..." ; Linux 内核 " 调度策略 " 源码在 linux-5.6.18\include\uapi\linux\sched.h 头文件中 , /* * Scheduling policies *.../ #define SCHED_NORMAL 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 /* SCHED_ISO...策略 ---- SCHED_RR 是 " 实时进程调度策略 " , 使用的是 时间片轮转 机制 ; 进程 使用完 CPU 时间片 后 , 会加入到 与 进程优先级 相应的 执行队列 的 末尾 ; 同时

1.5K20

Linux 内核】进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 | 进程优先级 )

文章目录 一、Linux 内核调度策略 1、SCHED_FIFO 调度策略 2、SCHED_RR 调度策略 二、进程优先级 一、Linux 内核调度策略 ---- Linux 内核调度策略 : SCHED_OTHER..., 就是 如果有 多个 相同优先级 的 " 实时进程 " , SCHED_FIFO 策略需要 等待进程主动放弃 才可以执行其它优先级相同的任务 , SCHED_RR 策略 每个 优先级相同的进程 ,...都可以执行一个时间片 ; 特别注意 : 进程的优先级计算出的 调度权重 是可以修改的 , 由开发者确定 ; 参考 【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL...策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客 , 介绍了 Linux 内核相关的调度策略 ; 1、SCHED_FIFO 调度策略..., 只能 等待其它进程主动释放 CPU 资源 ; SCHED_FIFO 调度策略中 , 被 调度器 调度运行后的 进程 , 其运行时长不受限制 , 可以运行任意长的时间 ; 2、SCHED_RR 调度策略

5.3K20

Linux 线程调度与优先级

放在队列尾保证了所有具有相同优先级的RR任务的调度公平 Linux线程优先级设置 首先,可以通过以下两个函数来获得线程可以设置的最高和最低优先级,函数中的策略即上述三种策略的宏定义:  int...下面的这个测试程序,创建了三个线程,默认创建的线程的调度策略是SCHED_OTHER,其余的两个线程的调度策略设置成SCHED_RR。我的Linux的内核版本是2.6.31。...在《深入理解Linux内核》中的第七章进程调度中,是这样描诉的,Linux采取单凭经验的方法,即选择尽可能长、同时能保持良好相应时间的一个时间片。...("SCHED_OTHER\n"); if(policy == SCHED_RR); printf("SCHED_RR 1 \n"); if(policy==SCHED_FIFO)...SCHED_OTHER\n"); if(policy == SCHED_RR); printf("SCHED_RR\n"); if(policy==SCHED_FIFO) printf

5.7K20

Linux 内核】进程优先级与调度策略 ② ( 获取调度策略对应的进程优先级函数 | sched_get_priority_max 函数 | sched_get_priority_min 函数 )

文章目录 一、获取进程优先级函数 二、调度策略参数 三、进程优先级说明 在上一篇博客 【Linux 内核】进程优先级与调度策略 ① ( SCHED_FIFO 调度策略 | SCHED_RR 调度策略 |...* Scheduling policies */ #define SCHED_NORMAL 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define...6 调度策略源码参考 【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL 策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH...策略 ) 博客 ; 三、进程优先级说明 ---- SCHED_OTHER 进程调度策略 不支持进程优先级机制 ; SCHED_FIFO 和 SCHED_RR 进程调度策略 , 支持 进程优先级机制 ,...进程优先级取值 1 ~ 99 , 优先级数值越大 , 优先级越高 ; SCHED_FIFO 、SCHED_RR 实时调度策略 , 进程优先级最大值为 99 SCHED_NORMAL、SCHED_BATCH

1.2K40

linux 系统调度器(四) -- 利用 chrt 命令查询与修改进程调度器

引言 上一篇文章中,我们介绍了 linux 调度器的演进: linux 进程调度器(下) -- 调度器演进 在上一篇文章中,我们知道,到 Linux 2.6.23 版本后,linux 实际上维护了一组调度器来实现不同的调度需要...,它们被分为了四层: DL 调度器:采用 sched_deadline 策略; RT 调度器:采用 sched_rrsched_fifo 策略; CFS 调度器:采用 sched_normal 和...那就需要使用 linux 提供的十分有用的工具 -- chrt 来实现了,本文我们就来介绍一下这个命令的使用。...; SCHED_FIFO:使用 RT 调度器的 sched_fifo 策略,先入先出任务队列; SCHED_RR:使用 RT 调度器的 sched_rr 策略,采用轮询机制实现调度算法; SCHED_OTHER...和 SCHED_RR 两个调度器可以让我们去指定,因为 RT 调度器是采用传统的 O(1) 调度算法来实现的基于时间片调度的策略的。

4K30

Linux 内核】线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )

文章目录 一、pthread_attr_init 初始化线程属性对象 二、完整代码示例 一、pthread_attr_init 初始化线程属性对象 ---- 在之前的博客 【Linux 内核】线程调度示例一...① ( 获取线程调度策略 | 断言 assert | 代码示例 ) 【Linux 内核】线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 ) 【Linux 内核】线程调度示例一...:\n"); set_thread_policy(&p_attr, SCHED_FIFO); printf("\n设置当前线程调度策略为 SCHED_RR :\n"); set_thread_policy..., SCHED_RR, SCHED_OTHER int ret = pthread_attr_getschedpolicy(p_attr, &policy); // 断言操作 , 保证下面的代码正常执行...: printf("SCHED_FIFO 类型调度策略\n"); break; case SCHED_RR: printf("SCHED_RR

61630

linux线程调度策略

SCHED_RR: Round-robin scheduling(轮询调度) SCHED_RRSCHED_FIFO做了简单增强。...除每个线程仅允许运行在一个最大时间段下外,SCHED_FIFO中的所有规则都适用于SCHED_RR。如果一个SCHED_RR线程已经运行了等于或大于该最大时间段时,该线程会被放置到其优先级列表的末尾。...当一个SCHED_RR线程被更高优先级的线程抢占,并在后续恢复运行后,会在先前未过期的时间段下运行。最大时间段可以通过sched_rr_get_interval(2)获得。...从Linux 2.6.12开始,RLIMIT_RTPRIO(可以使用ulimit -e设置)资源限制定义了非特权线程设置SCHED_RRSCHED_FIFIO策略的静态优先级的上限。...从Linux 2.6.25开始,引进了其他技术手段来处理实时(SCHED_FIFO,SCHED_RR)和deadline(SCHED_DEADLINE)进程。

4.7K30

操作系统 | 源码分析

操作系统实验之源码分析 1.1 实验目的 通过阅读源代码,分析研究linux的进程调度策略和算法 1.2 实验内容 完成操作系统的源码分析 1.3 实验步骤 实验步骤: 1.在网站下载linux-2.4.22...的调度函数schedule(),并将全部代码导入如图6-2. 3.进程调度队列的组织如图6-3. 4.三种调度类型(SCHED_FIFO、SCHED_RRSCHED_OHTER)实现过程如图6-4...它与优先级的关系如图6-9. 7.对实时进程和多CPU的支持如图6-10. 8.评价linux的调度策略,提出改进意见如图6-11. 1.4 实验过程 ​​ 图6-1 ​​ 图6-2 ​​ 图6...、SCHED_RR还是SCHED_OTHER,在判断结束后都会统一进行判断是否需要重新计算每个进程的时间片,判断的依据是所有正准备进行调度的进程时间片耗尽,这需要对就绪队列中的每一个进程都重新计算时间片...,然后返回前面的调度过程,重新在就绪队列当中查找优先级最高的进程执行调度,而除了SCHED_RR用到了时间片外,其余两种调度并未直接使用时间片,所以对此可以将该判断专门放入SCHED_RR调度,对于SCHED_FIFO

13410

Linux 内核】实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )

| 实时调度类 | 公平调度类 | 空闲调度类 ) ---- 在 linux-5.6.18\include\linux\sched.h 头文件中 task_struct " 进程描述符 " 结构体 中定义的...sched_class 字段 , 表示该进程所属的调度类 ; const struct sched_class *sched_class; 源码地址 : linux-5.6.18\include\linux...\sched.h#680 上述可设置的调度类参考 【Linux 内核】调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类...| 公平调度类 | 空闲调度类 ) 博客 , 在 Linux 内核中 , sched_class 调度器 分为以下 5 种类型 : stop_sched_class : 停机调度类 ; dl_sched_class...调度类 结构体 类型 的 , 在 Linux 内核源码的 linux-5.6.18\kernel\sched\rt.c 源文件中定义 ; const struct sched_class rt_sched_class

72810

聊聊Linux内核进程调度下篇

实际调度器 调度器通用元素 CFS(完全公平)调度器 Linux内核中所有动态优先级的进程都是有CFS调度器处理,通常Linux内核中大部分都是非实时进程,所以CFS进程调度器也是最繁忙的调度器。...// CFS完全公平调度器 const struct sched_class fair_sched_class = { .next = &idle_sched_class, .enqueue_task...= get_rr_interval_fair, .update_curr = update_curr_fair, #ifdef CONFIG_FAIR_GROUP_SCHED .task_change_group...当调度器遇到优先级更高的可执行的fifo、rr、deadline任务时候,fifo进程会被抢占; rr调度策略是采用轮询的方法来调度实时进程,这个策略和fifo类型类似,不同的是rr调度策略是给进程分配了时间片来运行...// fifo和rt的实时进程调度器 const struct sched_class rt_sched_class = { .next = &fair_sched_class, .enqueue_task

1.2K20

图解Linux进程调度(二)

想一想,进程调度其实是一个非常复杂的问题,想使用一种算法来实现良好的进程调度是不可能的,Linux内核实现了好几种调度算法。...0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 #define SCHED_IDLE 5 #define SCHED_DEADLINE...6 Linux内核的进程大概可分为两类,一类是普通进程,一类是实时进程 其中属于实时进程的调度策略是: SCHED_FIFO SCHED_RR SCHED_DEADLINE 属于普通进程的调度策略是...,直到更高优先级的进程抢占或者自己让出CPU SCHED_RR:这也是实时进程的调度策略,RR是时间片轮转调度,每个使用该调度策略的进程都有自己的时间片,进程运行直到时间片耗尽,再将其添加到运行队列尾部...如果进程采用 SCHED_FIFO 或者 SCHED_RR 调度策略,那么优先级就等于 99 - rt_priority,rt_priority 的范围是0~99。

1.6K10

CPU进程优先级

二.NICE值 nice值应该是熟悉Linux/UNIX的人很了解的概念了,我们都知它是反应一个进程“优先级”状态的值,其取值范围是40-20至19-0,一共40个级别。...但是这里并没有说明的是,这五种调度策略是分别给两种进程用的,对于实时进程可以用的调度策略是:SCHED_FIFO、SCHED_RR,而对于非实时进程则是:SCHED_OTHER、SCHED_OTHER、...实时进程可以指定的优先级范围为1-99,将一个要执行的程序以实时方式执行的方法为: 刚才说过,SCHED_RRSCHED_FIFO都是实时调度策略,只能给实时进程设置。...SCHED_RRSCHED_FIFO的调度策略只有当两个实时进程的优先级一样的时候才会发生作用,其区别也是顾名思义: SCHED_FIFO:以先进先出的队列方式进行调度,在优先级一样的情况下,谁先执行的就先调度谁...SCHED_RR:以时间片轮转的方式对相同优先级的多个进程进行处理。时间片长度为100ms。

3K30
领券