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

Linux进程及其调度策略

批处理进程没有与用户交互的,往往在后台被默默地执行。 实时进程Linux操作系统创造,普通用户只能创建普通进程。两种进程的优先级不同,实时进程的优先级永远高于普通进程。...O(n)和O(1)调度器 下面介绍Linux调度策略。最原始的调度策略是按照优先级排列好进程,等到一个进程运行完了再运行优先级较低的一个,但这种策略完全无法发挥多任务系统的优势。...因此,随着时间推移,操作系统调度器也多次进化。 先来看Linux 2.4内核推出的O(n)调度器。O(n)这个名字,来源于算法复杂度的大O表示法。大O符号代表这个算法在最坏情况下的复杂度。...图2 过期队列和活跃队列(需要替换) 我们下面看一个例子,有五个进程,如表1所示。 ? 表1 进程 Linux操作系统中的进程队列(run queue),如表2所示。 ?...以上就是调度器的基本原理,以及Linux用过的几种调度策略调度器可以更加合理地把CPU时间分配给进程。现代计算机都是多任务系统,调度器在多任务系统中起着顶梁柱的作用。

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

进程调度策略

读书笔记 根据优先级 根据优先级,进程分为实时进程和非实时进程(普通进程),Linux进程优先级范围为[0, 139],其中实时进程优先级的范围为[0, 99],非实时进程的优先级为[100,...进程和线程都用task_struct表示,这个结构体里面包含了用到的所有的信息,线程的信息比较少,主要是进程里的一些资源和线程信息,而进程里包含的字段比较多,主要有标识符,状态,优先级,程序计数器,内存指针...其中static_prio是普通进程的优先级,rt_priority是实时进程的优先级 对于实时进程调度策略 SCHED_FIFO:先来先服务算法,高优先级可以抢占低优先级,低优先级可以主动让出CPU...SCHED_RR:轮转调度,按优先级调度,但优先级相同时,每个任务分配相同的时间片 SCHED_DEADLINE:选择离deadline时间点最近的进程执行 对于非实时进程调度策略 SCHED_NORMAL...:根据进程优先级和当前可用时间片来给进程分配一个固定的时间片,使用的是CFS调度管理器 SCHED_BATCH:批处理,类似NORMAL,用来调度侧重吞吐量的任务 SCHED_IDLE:用于调度

71520

linux 操作系统进程调度(上) -- 进程调度算法的演进

引言 上一篇文章中,我们介绍了内核调度的基本概念,知道了调度器设计中最核心的两个指标 -- 周转时间与响应时间: linux 操作系统进程调度(上) -- 进程调度的基本概念 本文,我们就继续顺着上文的思路...,来看看在操作系统进程调度设计中,都有哪些调度算法,他们的思路和优劣又分别体现在哪些方面。...如果进程是 IO 密集型,那么就频繁调度,但每次调度给与少量时间片。 如果进程是 CPU 密集型,那么就降低调度频率,但每次调度过于多个时间片。...由于 IO 密集型任务具有更高的优先级,那么进程编写者可能会通过故意进行 IO 操作来骗取操作系统的误判,从而将本是 CPU 密集型的任务被故意包装成 IO 密集型任务,进而被错误地优先调度。...结语 正是有了多级反馈队列算法,现代生产级操作系统中的进程调度器才得以真正建立起来。 下一篇文章,我们就来深入 linux,来了解具体的 linux 进程调度器的发展历史和实现机制,敬请期待。

1.6K10

Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)

调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1.2 进程的分类 linux进程区分为实时进程和非实时进程...当然与批处理进程相比, 调度程序有偏爱交互式进程的倾向 1.3 不同进程采用不同的调度策略 根据进程的不同分类Linux采用不同的调度策略....对于实时进程,采用FIFO或者Round Robin的调度策略. 对于普通进程,则需要区分交互式和批处理式的不同。传统Linux调度器提高交互式应用的优先级,使得它们能更快地被调度。...Linux调度器使用了环形队列用于可运行的任务管理, 使用循环调度策略. 此调度器添加和删除进程效率很高(具有保护结构的锁)。简而言之,该调度器并不复杂但是简单快捷....此外Linux 2.6内核支持内核态抢占,因此更好地支持了实时进程。 相对于前任,O(1)调度器还更好地区分了交互式进程和批处理式进程Linux 2.6内核也支持三种调度策略

2.1K20

linux 操作系统进程调度(上) -- 进程调度的基本概念

Linux 操作系统中,系统会为每个进程打一个分,这个分就是 PR 值,它是 Priority 的前两个字母。...但有时,用户可能会不认可操作系统的优先级数值,而是想要去手动调整进程的优先级。此时,如果让用户直接干预 PR 值,那风险就显得很大。Linux 为用户层设计了一个 Nice 值,翻译为“谦让值”。...操作系统调度策略调度进程时,操作系统有两种选择: 协作式调度 -- 进程一旦被调度运行,除非他运行结束或主动释放 CPU,否则它将一直占用 CPU。...而抢占式调度的模式下,操作系统尽管增加了进程切换的开销以及调度算法设计的复杂度,但却可以更加灵活地分配 CPU 的时间资源,所以常见的操作系统一般都采用抢占式调度策略。 5....结语 本文,我们从操作系统的整体层面,了解了操作系统进程调度的基本概念和设计思想,但我们尚未触及核心部分,到底 linux 系统中的调度器是如何设计的,又有着怎样的历史沿革,出现了哪些算法?

99410

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

文章目录 一、Linux 内核调度策略 1、SCHED_FIFO 调度策略 2、SCHED_RR 调度策略 二、进程优先级 一、Linux 内核调度策略 ---- Linux 内核调度策略 : SCHED_OTHER...都可以执行一个时间片 ; 特别注意 : 进程的优先级计算出的 调度权重 是可以修改的 , 由开发者确定 ; 参考 【Linux 内核】调度器 ⑨ ( Linux 内核调度策略 | SCHED_NORMAL...策略 | SCHED_FIFO 策略 | SCHED_NORMAL 策略 | SCHED_BATCH策略 ) 博客 , 介绍了 Linux 内核相关的调度策略 ; 1、SCHED_FIFO 调度策略..., 只能 等待其它进程主动释放 CPU 资源 ; SCHED_FIFO 调度策略中 , 被 调度调度运行后的 进程 , 其运行时长不受限制 , 可以运行任意长的时间 ; 2、SCHED_RR 调度策略..., 优先级越高 ; 就绪状态 的 实时任务 , 可以 立刻抢占非实时任务 ; 如果 所有的 进程都采用 Linux 分时调度策略时 , 创建该进程时 , 必须 指定 优先级计算参数 nice 值 ,

4.6K20

操作系统-进程调度

Hi~朋友,关注置顶防止错过消息 摘要 进程调度 调度原则 调度算法 线程调度 进程调度是指在进程之间选择一个进程将其送上CPU执行,通常这个是由操作系统中的调度程序执行。...调度原则 如果运行的程序发生I/O事件请求,CPU使用率会降低,因为此时进程在等待硬盘数据的返回。所以为了提高CPU运行效率,在由于I/O导致CPU空闲时,调度程序需要从就绪队列中选择一个进程运行。...周转时间:周转时间是运行时间和阻塞时间的总和,一个进程调度时间越小越好 等待时间:进程在就绪队列中等待时间尽可能的短 响应时间:在交互式较强的系统,调度算法需要尽可能的降低响应时间 调度算法 如果硬件提供某个频率的时钟中断...,根据如何处理时钟中断调度算法大致分为两类: 非抢占式调度算法:该算法挑选一个进程,让该进程运行直到被阻塞或者进程退出,才会调用另外一个进程,不会理会时钟中断 抢占式调度算法:该算法挑选一个进程,让该进程在某个时间段内运行...,调度优先级高的进程运行 优先级低的进程可能一直无法运行。

1.3K20

Linux进程调度_linux进程的查看和调度

进程调度含义 ---- 进程调度决定了将哪个进程进行执行,以及执行的时间。操作系统进行合理的进程调度,使得资源得到最大化的利用。 在单片机上,常常使用的方式是:系统初始化—->while(1){}。...没有太多的 I/O 需求,从系统响应的角度上来讲,调度器不应该经常让他们运行。对于处理器消耗型的进程调度策略往往是降低他们的执行频率,延长运行时间。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程的优先级越小 任何实时进程的优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总的调度结构...对于实时调度策略分为两种:SCHED_FIFO 和 SCHED_RR: 这两种进程都比任何普通进程的优先级更高(SCHED_NORMAL),都会比他们更先得到调度。...Linux 调度时机 ---- 一、进程切换 从进程的角度看,CPU是共享资源,由所有的进程按特定的策略轮番使用。

20.5K10

linux进程调度

进程提供了两种优先级,一种是普通的进程优先级,第二个是实时优先级。前者适用SCHED_NORMAL调度策略,后者可选SCHED_FIFO或SCHED_RR调度策略。...不同调度策略的实时进程只有在相同优先级时才有可比性:    1. 对于FIFO的进程,意味着只有当前进程执行完毕才会轮到其他进程执行;    2....总而言之,对于实时进程,高优先级的进程先执行,它执行到没法执行了,才轮到低优先级的进程执行。 2.非实时进程调度 Linux对普通的进程,根据动态优先级进行调度。...Linux下,静态优先级是用户不可见的,隐藏在内核中。...Linux2.6认为,交互式进程可以从平均睡眠时间这样一个measurement进行判断。进程过去的睡眠时间越多,则越有可能属于交互式进程

3.2K140

linux进程调度

调度策略 进程可以分为实时进程和普通进程,对于这两种不同类型的进程肯定有不同的调度策略,task_struct中的policy就用来表示调度策略。...实时调度策略有SCHED_RR, SCHED_FIFO, SCHED_DEADLINE。 SCHED_FIFO,对于高优先级可以抢占低优先级,对于同等优先级先来先服务。...普通调度策略有 SCHED_NORMAL, SCHED_BATCH,SCHED_IDLE SCHED_NORMAL:普通的进程 SCHED_BATCH:后台进程 SCHED_IDLE:空闲时运行的进程...stop_sched_class:优先级最高的进程使用该策略,可以打断所有其他进程,并且该进程不会被抢占 rt_sched_class:RR算法或者FIFO算法的调度策略,具体由该进程的task_struct...fair_sched_class:普通进程调度策略 CFS调度算法 CFS(completed fair Schedule)完全公平调度,适用于普通进程调度

8K20

Linux内核调度分析(进程调度

多任务 并发和并行 Linux作为一个多任务操作系统,必须支持程序的并发执行。 分类 非抢占式多任务 除非任务自己结束,否则将会一直执行。...Linux进程调度 发展历史 Linux从2.5版本开始引入一种名为的调度器,后在2.6版本中将公平的的调度概念引入了调度程序,代替之前的调度器,称为算法(完全公平调度算法)。...策略 I/O消耗型和处理器消耗型 I/O消耗型进程是指那些大部分时间都在等待I/O操作的进程,处理器耗费型的进程则是指把大多数时间用于执行代码的进程,除非被抢占,他们一般都一直在运行。...Linux调度算法 调度器类 Linux调度器是以模块的方式提供的,这样使得不同类型的进程按照自己的需要来选择不同的调度算法。...简单来说有以下两种情况会发生用户抢占: 从系统调用返回用户空间 从中断处理程序返回用户空间 内核抢占 Linux和其他大部分的Unix变体操作系统不同的是,它支持完整的内核抢占。

14.7K113

操作系统 进程线程模型 进程线程调度

调度是分层次的,在操作系统中,一般将调度分为高级调度、中级调度和低级调度。 高级调度也称作业调度,其主要任务是按一定的原则,对磁盘中的处于后备状态的作业进行选择并创建为进程。...中级调度的主要任务是按照给定的原则和策略,将处在磁盘对换区中切具备运行条件的就绪进程调入内存,或将处于内存就绪状态或内存阻塞状态的进程交换到对换区。...低级调度进程(线程)调度,是决定就绪队列中哪个进程将获得处理机,并使即将处理及分配给该进程的操作。 进程(线程)调度即处理机调度。...进程(线程)调度算法 进程(线程)调度算法解决以何中次序对各就绪进程(线程)进程处理机的分配以及按何种时间比例让进程(线程)占用处理机。...速率单调调度算法:适用于可抢先的周期性进程的经典静态实时调度算法是速率单调调度RMS。 每个周期性进程必须在其周期内完成。 没有进程依赖于任何其他进程

1.9K20

linux线程调度策略

目录 linux线程调度策略 linux线程调度策略 这是一篇非常好的关于线程调度的资料,翻译自shed 从Linux 2.6.23开始,默认的调度器为CFS,即"完全公平调度器"(Completely...SCHED_OTHER是标准的Linux分时调度策略(不需要实时机制)。 如何从静态优先级为0的列表中选择运行的线程取决于列表中的dynamic优先级。...在Linux内核源码中,SCHED_OTHER被称为SCHED_NORMAL。 The nice value nice值用于影响CPU调度器对进程调度偏好。...当设置该标识后,使用fork(2)创建的子进程不会继承特权调度策略。...如果没有补丁且在这些补丁完全合并到主线之前的内核还提供了额外的配置表项CONFIG_PREEMPT_RT,如果选择该表项,Linux会转变为正式的实时操作系统

4.6K30

Linux进程调度(三)

一、抢占式调度和主动调度: 前面我们说过,进程的切换总是通过 shedule 函数发生的,而 schedule 函数可以是在系统调用返回、中断返回等时机被调用,也可以进程在驱动程序中主动调用 我们把在系统调用返回等时机调用...schedule 函数的这种非进程自愿情况称为抢占式调度。...把进程在驱动程序中主动调用 schedule 函数来发生进程切换的这种情况称为主动调度 本文将讨论主动调度,抢占式调度将在下一篇文章中讲解: 二、主动调度的发生的情况: 主动调度一般在应用程序读取某个设备时...,设备此时数据还没有准备好,进程就进入睡眠,发生进程调度切换到其它进程运行 例如应用想从网卡读取数据,但是此时网卡没有数据,那么驱动程序就会让进程睡眠,然后发生进程调度。...四、总结: 进程发生切换总是调用 schedule 函数进行的,进程调度分抢占式调度和主动调度,主动调度表示的是进程主动调用 schedule 函数发生进程切换 schedule 函数主要做了两件事,

2.3K10

Linux进程调度分析

尽管我们平常接触的很多计算机(如桌面系统、网络服务器、等)负载都比较低,但是linux作为一个通用操作系统,不能假设系统负载低,必须为应付高负载下的进程调度做精心的设计。...实时进程的优先级都高于普通进程,除此之外,它们的调度策略也有所不同。 实时进程调度 实时,原本的涵义是“给定的操作一定要在确定的时间内完成”。...而中断处理程序的处理过程中又可能发生新的硬件中断,中断永远嵌套不止……; 等等…… 而像linux这样号称实现了“实时”的通用操作系统,其实只是实现了“软实时”,即尽可能地满足进程的实时需求。...在linux下,用户程序可以通过sched_setscheduler系统调用来设置进程调度策略以及相关调度参数;sched_setparam系统调用则只用于设置调度参数。...进程的优先级和调度策略都由用户定死了,内核只需要总是选择优先级最高的实时进程调度执行即可。唯一稍微麻烦一点的只是在选择具有相同优先级的实时进程时,要考虑两种调度策略

2.3K31

操作系统CPU调度策略---07

操作系统CPU调度策略---07 多进程图像与CPU调度 CPU调度(进程调度)的直观想法 面对诸多场景,如何设计调度算法? 如何做到合理?...如果一直有前台任务… 还有很多问题… 一个实际的schedule函数 Linux 0.11的调度函数schedule() counter的作用: 时间片 counter的另一个作用: 优先级 counter...这样可以实现IO约束型和CPU约束型任务,二者并行的局面 ---- 各种CPU调度算法 折中和综合让操作系统变得复杂, 但有效的系统又要求尽量简单… 因此,对于CPU调度算法而言,一定要尽可能的简单,执行尽可能的快...阻塞的进程再就绪后,其优先级会高于非阻塞进程。阻塞是因为发生了I/O,而I/O则是前台进程的特征,所以该调度策略照顾了前台进程。...扮演了时间片的角色,每一次8253产生中断会调用中断服务程序,使当前进程 counter 减1,减到0则调用调度函数 schedule(),这是一个十分明显的round robin(时间片轮转)策略

68220

Linux内核】进程调度

Linux 提供了抢占式的多任务模式。在此模式下,由调度程序来决定什么时候停止一个进程的运行以便其他进程能够得到执行机会。这个强制的挂起动作就叫抢占(preemption)。...但是,因为它们不属于I/O驱动类型,所以从系统响应速度考虑,调度器不应该经常让它们运行。对于这类处理器消耗型的进程调度策略是尽量降低它们的运行频率,而将它们的运行时间拖长一些。...优先级高的进程先运行,低的后运行,相同优先级的进程按轮转方式进行调度(一个接一个,重复进行)。在包括Linux在内的某些系统中,优先级高的进程使用的时间片也较长。...调度策略必须规定一个默认的时间片,但这并不是一个简单的事。 时间片过长会导致系统对交互的响应表现欠佳,让人觉得系统无法并发执行应用程序。...很多操作系统中都特别重视这一点,所以默认的时间片很短如20毫秒。 注意,进程并不是一定非要一次就用完它所有的时间片。

2.8K20

Linux进程调度学习!

进程调度含义: 进程调度决定了将哪个进程进行执行,以及执行的时间。操作系统进行合理的进程调度,使得资源得到最大化的利用。 在单片机上,常常使用的方式是:系统初始化---->while(1){}。...没有太多的 I/O 需求,从系统响应的角度上来讲,调度器不应该经常让他们运行。对于处理器消耗型的进程调度策略往往是降低他们的执行频率,延长运行时间。...Linux 调度算法: Linux 中有一个总的调度结构,称之为 调度器类(scheduler class),它允许不同的可动态添加的调度算法并存,总调度器根据调度器类的优先顺序,依次去进行调度器类的中的进程进行调度...: 对于实时调度策略分为两种: SCHED_FIFO 和 SCHED_RR 这两种进程都比任何普通进程的优先级更高(SCHED_NORMAL),都会比他们更先得到调度。...Linux 调度时机: 1、进程切换: 从进程的角度看,CPU是共享资源,由所有的进程按特定的策略轮番使用。

1.8K30
领券