Linux内核的进程调度与定时器实现 (linux内核进程调度以及定时器实现机制)

Linux内核是一个经典的操作系统,它无处不在,每天都在我们身边,为我们的生活提供着可靠的保证。在这个操作系统中,关于进程调度与定时器的实现是非常关键的一部分。本文将重点介绍。

一、进程调度

进程调度是指为了保证系统的高效运行,将CPU时间片分配给不同的进程以供其运行的过程。在许多操作系统中,进程调度都是以时间片轮转为基础的,也就是在一段时间内,每个进程都能够平均地获得CPU时间片,而在Linux内核中,采用的是基于优先级的时间片轮转算法。

在Linux内核中,进程的优先级可以分为两类:实时进程和非实时进程。实时进程是指要求立即响应的进程,比如说实时视频等,而非实时进程则是普通的进程,比如查看文件等。因此,实时进程的优先级比非实时进程的优先级高。

在进程调度中,Linux内核采用了“完全公平调度器”(Completely Fr Scheduler)来保证公平性。这个调度器将每个进程都看做是一个运行周期的一部分,而每个进程运行所花费的时间则取决于进程的nice值,这个值越小,进程的优先级越高。同时,Linux内核还设置了一个调度策略,用于在不同的负载条件下优化进程调度。

二、定时器实现

在Linux内核中,定时器是一个非常重要的概念。定时器可以用于延迟执行某些代码或者周期性地执行某些代码。在Linux内核中,定时器的实现方式可以分为两种:硬件定时器和软件定时器。

硬件定时器的核心是计时器,它可以通过特殊的硬件插件来实现,例如芯片、声卡等。硬件定时器在系统中的延迟非常小,可以借助CPU的时钟来完成,定时器的精度非常高。但是,硬件定时器的实现需要硬件支持,所以它的可移植性非常差。

软件定时器则是指由操作系统内核提供的定时功能。软件定时器不需要特殊的硬件支持,因此其可移植性非常好。Linux内核中,软件定时器是由内核代码实现的,可以在任何平台上使用。

在Linux内核中,定时器的实现原理是使用了内核中的工作队列方法。这个方法可以在指定的时间间隔内执行指定的工作任务,这个任务可以是等待、唤醒、延迟等操作。工作队列还可以根据不同的策略实现优化,例如睡眠等待策略、分隔策略等。

三、

进程调度和定时器是操作系统中非常重要的部分。在Linux内核中,进程调度通过时间片轮转算法和完全公平调度器来实现,同时根据负载条件自动调节调度策略。定时器的实现则是通过工作队列的方式来完成,并且可以利用不同的策略实现优化,保证系统的稳定性和高效性。了解进程调度和定时器的实现原理对于理解操作系统的基本原理非常有帮助。

相关问题拓展阅读:

  • linux进程、线程及调度算法(三)

linux进程、线程及调度算法(三)

调度策略值得是大家都在ready时,并且CPU已经被调度时,决定谁来运行,谁来被调度。

两者之间有一定矛盾。

响应的优化,意味着高优先级会抢占优先级,会花时间在上下文切换,会影响吞吐。

上下文切换的时间是很短的,几微妙就能搞定。上下文切换本身对吞吐并多大影响,

重要的是,切换后引起的cpu 的 cache miss.

每次切换APP, 数据都要重新load一次。

Linux 会尽可能的在响应与吞吐之间寻找平衡。比如在编译linux的时候,会让你选择 kernal features -> Preemption model.

抢占模型会影响linux的调度算法。

所以 ARM 的架构都是big+LITTLE, 一个很猛CPU+ 多个 性能较差的 CPU, 那么可以把I/O型任务的调度指源 放在 LITTLE CPU上。需要计算的放在big上。

早期2.6 内核将优先级划分了bit的优先级。数值越低,优先级越高。0-99优先级 都是 RT(即时响应)的 ,都是非RT的,即normal。

调度的时候 看哪个bitmap 中的 优先级上有任务ready。可能多个任务哦。

在普通优先级线程调度中,高优先级并不代表对低优先级的绝对优势。会在不同优先级进行轮转。

就是比101高,101也会比102高,但100 不会堵着101。

众丝进程在轮转时,优先级高的:

初始唯并态设置nice值为0,linux 会探测 你是喜欢睡眠,还是干活。越喜欢睡,linux 越奖励你,优先级上升(nice值减少)。越喜欢干活,优先级下降(nice值增加)。所以一个进程在linux中,干着干着 优先级越低,睡着睡着 优先级越高。

后期linux补丁中

红黑树,数据结构, 左边节点小于右边节点

同时兼顾了 CPU/IO 和 nice。

数值代表着 进程运行到目前为止的virtual runtime 时间。

(pyhsical runtime) / weight * 1024(系数)。

优先调度 节点值(vruntime)最小的线程。权重weight 其实有nice 来控制。

一个线程一旦被调度到,则物理运行时间增加,vruntime增加,往左边走。

weight的增加,也导致vruntime减小,往右边走。

总之 CFS让线程 从左滚到右,从右滚到左。即照顾了I/O(喜欢睡,分子小) 也 照顾了 nice值低(分母高).所以 由喜欢睡,nice值又低的线程,最容易被调度到。

自动调整,无需向nice一样做出奖励惩罚动作,个人理解权重其实相当于nice

但是 此时 来蔽拍一个 0-99的线程,进行RT调度,都可以瞬间秒杀你!因为人家不是普通的,是RT的!

一个多线程的进程中,每个线程的调度的策略 如 fifo rr normal, 都可以不同。每一个的优先级都可以不一样。

实验举例, 创建2个线程,同时开2个:

运行2次,创建两个进程

sudo renice -n -5(nice -5级别) -g(global), 会明显看到 一个进程的CPU占用率是另一个的 3倍。

为什么cpu都已经达到200%,为什么系统不觉得卡呢?因为,我们的线程在未设置优先级时,是normal调度模式,且是

CPU消耗型

调度级别其实不高。

利用chrt工具,可以将进程 调整为 50 从normal的调度策略 升为RT (fifo)级别的调度策略,会出现:

chrt , nice renice 的调度策略 都是以线程为单位的,以上 设置的将进程下的所有线程进行设置nice值

线程是调度单位,进程不是,进程是资源封装单位!

两个同样死循环的normal优先级线程,其中一个nice值降低,该线程的CPU 利用率就会比另一个CPU的利用率高。

linux内核进程调度以及定时器实现机制的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux内核进程调度以及定时器实现机制,Linux内核的进程调度与定时器实现,linux进程、线程及调度算法(三)的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/192645.html<

(0)
管理的头像管理
上一篇2025-04-01 16:41
下一篇 2025-04-01 16:43

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注