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

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

引言 上一篇文章中,我们介绍了内核调度基本概念,知道了调度器设计中最核心两个指标 -- 周转时间与响应时间: linux 操作系统进程调度(上) -- 进程调度基本概念 本文,我们就继续顺着上文思路...,来看看在操作系统进程调度设计中,都有哪些调度算法,他们思路和优劣又分别体现在哪些方面。...时间片轮转算法 RR Round-Robin 算法是现代操作系统调度器诞生基石。它按照 CPU 时钟芯片产生若干个时钟脉冲为单位,将 CPU 时间进行切分,每个分片就是 CPU 调度时间片。...所以,光是有多级队列是远远不够,还需要反馈机制,周期性地对进程类型进行重新评估,避免上述问题。综上,这就是多级反馈队列 Multi-Level Feedback Queue 算法。 7....结语 正是有了多级反馈队列算法,现代生产级操作系统进程调度器才得以真正建立起来。 下一篇文章,我们就来深入 linux,来了解具体 linux 进程调度发展历史和实现机制,敬请期待。

1.6K10

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

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

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

操作系统调度

处理机调度,就是从就绪队列中按照某种算法选择一个进程并将处理机分配给它,以实现进程并发运行。 操作系统调度有三个层次,分别是高级调度、中级调度和低级调度。下面分别介绍它们。...高级调度 (外存 –> 内存) 我们知道是计算机内存空间是有限,所以有时操作系统无法将用户提交作业全部放入内存 (在单道批系统时),因此操作系统就需要确定某种算法,决定作业调度内存顺序。...作业调入时会建立相应PCB,作业调出时才撤销PCB。高级调度主要是指调入问题,因为只有调入时机需要操作系统来确定,而调出时机必然是作业运行结束后。...中级调度 (外存 –> 内存) 背景:在引入了虚拟存储技术之后,操作系统可将暂时不能运行进程调至外存等待。等它重新具备了运行条件且内存稍有空闲时,操作系统再把它调回内存。...低级调度 (内存 –> CPU) 低级调度主要任务是按照某种规则从就绪队列中选取一个进程,将CPU分配给它。低级调度操作系统中最基本一种调度,在一般操作系统中都必须配置低级调度

72520

《现代操作系统》—— 调度

只要有2个或更多进程处于就绪状态,那么这种情形就发生了:CPU必须要在多个就绪进程中选择下一个要运行程序。在操作系统中,完成这个选择工作程序叫做调度程序(scheduler)。...该程序使用算法叫做调度算法。 许多适用于进程调度方法同样也适用于线程调度。内核管理线程时候,调度是按照线程级别进行,与线程所属进程没有关联。本文主要讨论同样适用于进程和线程调度问题。...调度算法分类 不同应用领域有不同目标,也就需要不同操作系统。所以,不同操作系统,需要有不同调度算法。常见操作系统分为3类: 批处理系统 批处理系统是弱交互。...调度算法目标 说是调度算法目标,其实也是衡量调度算法指标。下面将介绍一些适合于所有系统通用指标,然后再介绍衡量不同类型系统调度算法指标。...静态调度算法要求事先掌握所完成工作和必须满足截止时间等所有必要信息时,才能工作,动态调度算法没有这个要求。 策略和机制 采用调度机制调度策略分离原则。

1K00

操作系统-进程调度

Hi~朋友,关注置顶防止错过消息 摘要 进程调度 调度原则 调度算法 线程调度 进程调度是指在进程之间选择一个进程将其送上CPU执行,通常这个是由操作系统调度程序执行。...进程周转时间越小越好,调度程序需要保证周转时间尽可能调度程序需要让就绪队列中等待时间尽可能短 对于交互式比较强应用,比如键盘、鼠标,调度程序要考虑程序响应时间尽可能快。...总上所述,调度程序主要从以下几个系统参数来考虑: CPU利用率:调度程序尽可能让CPU繁忙,提高调度程序利用率 系统吞吐量:吞吐量是单位时间内CPU完成进程数,长作业会降低吞吐量,短作业提高吞吐量...周转时间:周转时间是运行时间和阻塞时间总和,一个进程调度时间越小越好 等待时间:进程在就绪队列中等待时间尽可能短 响应时间:在交互式较强系统,调度算法需要尽可能降低响应时间 调度算法 如果硬件提供某个频率时钟中断...这种抢占式调度需要在时间段结束时发生时钟中断,以便把CPU控制权返回给调度程序进行调度。这就是常说时间片机制

1.3K20

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

大家好,又见面了,我是你们朋友全栈君。 进程调度含义 ---- 进程调度决定了将哪个进程进行执行,以及执行时间。操作系统进行合理进程调度,使得资源得到最大化利用。...(当然,单片机也可以跑类似 FreeRTOS,也可以有进程切换) 在带操作系统 CPU 上跑逻辑是,允许多个进程(其实就是程序) ”同时” 跑。...Linux 系统为了提升响应速度,倾向于优先调度 I/O 消耗型。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程优先级越小 任何实时进程优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总调度结构...Linux 调度时机 ---- 一、进程切换 从进程角度看,CPU是共享资源,由所有的进程按特定策略轮番使用。

20.5K10

golang调度机制

这和C、C++完全不一样,C、C++语言编译之后执行完全是交给操作系统内核来控制执行,而golang,在编译时会加入自己调度器代码,在执行上按照自己调度器进行调度执行。...M 代表一个操作系统线程;M代表着真正执行计算资源。...在绑定有效p后,进入schedule循环;而schedule循环机制大致是从各种队列、p本地队列中获取G,切换到G执行栈上并执行G函数,调用goexit做清理工作并回到m,如此反复。...P可以看作是一个抽象资源或者一个上下文,它需要获取以便操作系统线程(称之为M)可以运行G。...当你goroutine执行阻塞系统调用时候(syscall),阻塞系统调用会中断(intercepted),如果当前有一些G在执行,运行时会把这个线程从P中摘除(detach),然后再创建一个新操作系统线程

2.2K30

操作系统机制与页机制

引入是解决“ 地址总线宽度一般要大于寄存器宽度 ”这个问题。...例如,FFFFh:0010h所对应物理地址为00000h. 实模式: 是 段地址+偏移量 方式,得到物理地址,进而寻址。...保护模式: 不允许通过段寄存器取值得到段起始地址,而是把虚拟地址转进一个 MMU 硬件,经过额外转换和检查,进而得到一个物理地址。...段机制抛开了实际物理内存大小,从抽象层面提供给开发人员更大线性空间进行程序开发。但物理内存如果不足时情况仍需解决。 它通过将 物理内存空间 和 线性地址空间 分成若干相等页。...正如你将会看到,这种机制十分巧妙又实用。

65820

调度器简介,以及Linux调度策略

进程是操作系统虚拟出来概念,用来组织计算机中任务。但随着进程被赋予越来越多任务,进程好像有了真实生命,它从诞生就随着CPU时间执行,直到最终消失。不过,进程生命都得到了操作系统内核关照。...批处理进程没有与用户交互,往往在后台被默默地执行。 实时进程由Linux操作系统创造,普通用户只能创建普通进程。两种进程优先级不同,实时进程优先级永远高于普通进程。...如果进程不经常跟用户交互,内核将会把进程Bonus设置成小于5数。 O(n)和O(1)调度器 下面介绍Linux调度策略。...先来看Linux 2.4内核推出O(n)调度器。O(n)这个名字,来源于算法复杂度大O表示法。大O符号代表这个算法在最坏情况下复杂度。字母n在这里代表操作系统活跃进程数量。...表1 进程 Linux操作系统进程队列(run queue),如表2所示。 ? 表2 进程队列 那么在一个执行周期,被选中进程依次是先A,然后B和C,随后是D,最后是E。

2K21

3.2 Spark调度机制

3.2 Spark调度机制 Spark调度机制是保证Spark应用高效执行关键。本节从Application、job、stage和task维度,从上层到底层来一步一步揭示Spark调度策略。...宏观上来讲,这种对应用调度类似于FIFO策略。在Mesos和YARN模式下,底层资源调度系统调度策略都是由Mesos和YARN决定。...[插图] 图3-4 Job调度流程 图3-5则从Job调度流程中细节模块出发,揭示了工作流程与对应模块之间关系。从整体上描述了各个类在Job调度流程中交互关系。...[插图] 图3-5 Job调度流程细节 在Spark1.5.0调度目录下SchedulingAlgorithm.scala文件中,描述了Spark对Job调度模式。...调度池(pool)则用于调度每个SparkContext运行时并存多个互相独立无依赖关系任务集。调度池负责管理下一级调度池和TaskSetManager对象。

1K70

Linux操作系统IO机制原理(流程图详解)

我们之前文章提到了操作系统三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。...它还应该在设备和操作系统其余部分之间提供一个简单易用接口。操作系统如何管理 I/O 是我们接下来重点。 不同的人对 I/O 硬件理解也不同。...通过写入这些寄存器,操作系统可以命令设备发送数据,接收数据、开启或者关闭设备等。通过从这些寄存器中读取信息,操作系统能够知道设备状态,是否准备接受一个新命令等。...所有 I/O 端口集合形成了受保护 I/O 端口空间,以便普通用户程序无法访问它(只有操作系统可以访问)。...在内存映射中,控制寄存器只是内存中变量,在 C 语言中可以和其他变量一样进行寻址。 第二,对于内存映射 I/O ,不需要特殊保护机制就能够阻止用户进程执行 I/O 操作。

99610

Linux进程调度设计--Linux进程管理与调度(十七)

但是普通进程调度策略就比较麻烦了, 因为普通进程不能简单只看优先级, 必须公平占有CPU, 否则很容易出现进程饥饿, 这种情况下用户会感觉操作系统很卡, 响应总是很慢,因此在linux调度发展历程中经过了多次重大变动...CFS算法和实现都相当简单,众多测试表明其性能也非常优越 字段 版本 O(n)调度算法 linux-0.11~2.4 O(1)调度linux-2.5 CFS调度linux-2.6~至今...2 Linux调度器组成 2.1 2个调度器 可以用两种方法来激活调度 一种是直接, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性机制, 以固定频率运行, 不时检测是否有必要...SCHED_RR实现了轮流调度算法, 一种循环时间片方法, 而SCHED_FIFO实现了先进先出机制, 这些并不是由完全贡品调度器类CFS处理, 而是由实时调度类处理. 3.1.3 调度策略相关字段...可以透过rq机制使用该群主下资源。

3.4K41

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

多任务 并发和并行 Linux作为一个多任务操作系统,必须支持程序并发执行。 分类 非抢占式多任务 除非任务自己结束,否则将会一直执行。...采用抢占式多任务基础是使用**时间片轮转**机制来为每个进程分配可以运行时间单位。...Linux进程调度 发展历史 Linux从2.5版本开始引入一种名为调度器,后在2.6版本中将公平调度概念引入了调度程序,代替之前调度器,称为算法(完全公平调度算法)。...Linux调度算法 调度器类 Linux调度器是以模块方式提供,这样使得不同类型进程按照自己需要来选择不同调度算法。...简单来说有以下两种情况会发生用户抢占: 从系统调用返回用户空间 从中断处理程序返回用户空间 内核抢占 Linux和其他大部分Unix变体操作系统不同是,它支持完整内核抢占。

14.7K113

操作系统中常用进程调度算法有_调度算法有哪些

此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统进程调度算法,还可用于实时系统中。当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高作业装入内存。...6、Unix、Linux与Windows进程调度策略比较 无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。...Linux 从整体上区分实时进程和普通进程,因为实时进程和普通进程度调度是不同,它们两者之间,实时进程应该先于普通进程而运行,然后,对于同一类型不同进程,采用不同标准来选择进程。...而且Windows 2000/XP在单处理器系统和多处理器系统中线程调度是不同线程调度机制,Windows操作系统调度系统总是运行优先级最高就绪线程。...实时操作系统(Real-time operating system, RTOS)最大特点是对响应时间有严格要求,linux尚且不能称为完全实时操作系统,USA宇宙飞船常用操作系统是VxWorks

2.2K40

操作系统运行机制

操作系统内核程序 系统外层应用程序 操作系统内核程序 内核算是位于计算机系统 较为底层软件,密切管理着计算机硬件资源。...操作系统通过时钟管理,向用户提供标准系统时间。 通过时钟中断来实现进程切换。...中断机制 最初引入中断是为了提高外部设备在多道程序运行环境中 CPU 利用率,并在后来得到发展,成为了操作系统各项操作基础。...中断机制只有一小部分功能属于内核,它们负责保护和恢复中断现场信息,转移控制权到相关处理程序中,从而减少中断处理时间,提高系统并行处理能力。...系统控制数据结构及处理 系统中资源常常都是通过大量数据结构存储,为了实现对系统资源有效管理,则出现了下面三个常见操作: 进程管理:进程状态管理、进程调度与分派、创建与撤销进程控制块等。

18800

操作系统实验三 进程调度

大家好,又见面了,我是你们朋友全栈君。 实验三 进程调度 一、实验目的 1、 理解有关进程控制块、进程队列概念。 2、 掌握进程优先权调度算法和时间片轮转调度算法处理逻辑。...二、实验内容与基本要求 1、 设计进程控制块PCB结构,分别适用于优先权调度算法和时间片轮转调度算法。 2、 建立进程就绪队列。 3、 编制两种进程调度算法:优先权调度算法和时间片轮转调度算法。...四、实验报告 1.时间片轮转调度算法(round robin) a.该算法采取了非常公平方式,即让就绪队列上每个进程每次仅运行一个时间片。...若选择很小时间片,将有利于短作业,但意味着会频繁地执行进程调度和进程上下文切换,这无疑会增加系统开销。...若一个进程在时间片还没结束时就已完成,此时立即激活调度程序,将它从执行队列中删除。若一个进程在时间片结束时还未运行完毕,则调度程序将把它送往就绪队列末尾,等待下一次执行。

1.3K40

Linux进程调度器概述--Linux进程管理与调度(十五)

操作系统是应用程序和可用资源之间媒介。...调度一般原理是, 按所需分配计算能力, 向系统中每个进程提供最大公正性, 或者从另外一个角度上说, 他试图确保没有进程被亏待. 1.2 调度策略 传统Unix操作系统都奥杜算法必须实现几个互相冲突目标...但是普通进程调度策略就比较麻烦了, 因为普通进程不能简单只看优先级, 必须公平占有CPU, 否则很容易出现进程饥饿, 这种情况下用户会感觉操作系统很卡, 响应总是很慢....CFS调度linux-2.6~至今 4 Linux调度器设计 4 Linux调度器设计 2个调度器 可以用两种方法来激活调度 一种是直接, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性机制...新唤醒进程不必一定由完全公平调度器处理, 如果新进程是一个实时进程, 则会立即请求调度, 因为实时进程优先极高, 实时进程总会抢占CFS进程 内核为了实现完全公平, 对一些交互式进程有补偿机制, 这些交互式进程多数情况下属于睡眠状态

3.5K20

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

操作系统CPU调度策略---07 多进程图像与CPU调度 CPU调度(进程调度)直观想法 面对诸多场景,如何设计调度算法? 如何做到合理?...如果一直有前台任务… 还有很多问题… 一个实际schedule函数 Linux 0.11调度函数schedule() counter作用: 时间片 counter另一个作用: 优先级 counter...这样可以实现IO约束型和CPU约束型任务,二者并行局面 ---- 各种CPU调度算法 折中和综合让操作系统变得复杂, 但有效系统又要求尽量简单… 因此,对于CPU调度算法而言,一定要尽可能简单,执行尽可能快...因此前后台任务都应该采用时间片机制,并且后台任务还需要体现出短作业优先策略。 该怎么设计,才能保证前台任务响应快,后台任务短作业优先,周转快呢?...这是未来信息… ---- 一个实际schedule函数 Linux 0.11调度函数schedule() kernel/sched.c schedule() 目的是找到下一个任务 next,切换到下一个任务

68220

linux进程调度

总而言之,对于实时进程,高优先级进程先执行,它执行到没法执行了,才轮到低优先级进程执行。 2.非实时进程调度 Linux对普通进程,根据动态优先级进行调度。...Linux下,静态优先级是用户不可见,隐藏在内核中。...系统调度时,还会考虑其他因素,因而会计算出一个叫进程动态优先级东西,根据此来实施调度。因为,不仅要考虑静态优先级,也要考虑进程属性。...例如如果进程属于交互式进程,那么可以适当调高它优先级,使得界面反应地更加迅速,从而使用户得到更好体验。Linux2.6 在这方面有了较大提高。...Linux2.6认为,交互式进程可以从平均睡眠时间这样一个measurement进行判断。进程过去睡眠时间越多,则越有可能属于交互式进程。

3.2K140
领券