【Linux内核及内核编程】Linux2.6 后的内核特点

2003 年发布的 Linux 2.6 内核是一个里程碑,它标志着 Linux 从 “极客玩具” 向全场景操作系统的蜕变。如果说 2.4 内核是 Linux 进入企业级市场的起点,那么 2.6 及后续版本则是一场从内到外的 “现代化革命”,不仅让 Linux 在服务器、桌面、嵌入式领域全面开花,更奠定了移动互联网和云计算时代的技术基石。


目录

一、调度器:从 “效率至上” 到 “公平优先”

1.1 完全公平调度器(CFS,2.6.23 引入)

1.2 内核抢占:让内核 “灵活刹车”

二、线程模型:从 “轻量级进程” 到 “真正的线程”

三、虚拟内存:管理更大、更复杂的内存空间

3.1 透明大页(Huge Pages,2.6.32 引入)

3.2 内存压缩(ZRAM,3.14 引入)

3.3 NUMA 支持增强

四、文件系统:从 “能用” 到 “好用又耐用”

4.1 ext4:ext3 的全面升级(2.6.28 集成)

4.2 Btrfs:面向未来的 “万能文件系统”(2.6.29 引入实验性支持)

4.3 设备文件系统(sysfs)与热插拔

五、音频与多媒体:从 “能响” 到 “高保真”

5.1 ALSA 取代 OSS 成为主流(2.6 早期版本)

5.2 内核模式设置(KMS,2.6.20 引入)

六、电源管理:让设备 “更省电、更智能”

6.1 ACPI 全面支持与动态调频(cpufreq,2.6.10 引入)

6.2 能源感知调度(2.6.35 引入)

七、网络:从 “连得上” 到 “快又稳”

7.1 IPSec 集成与 IPv6 支持(2.6.15 全面支持 IPv6)

7.2 网络命名空间(Network Namespace,2.6.29 引入)

7.3 流量控制与 QoS

八、ARM 架构的蜕变:从 “嵌入式小角色” 到 “移动芯片霸主”

8.1 设备树(Device Tree,3.1 引入)

8.2 big.LITTLE 架构支持(3.10 引入)

8.3 实时性优化

九、用户界面层:为桌面和移动设备铺路


一、调度器:从 “效率至上” 到 “公平优先”

1.1 完全公平调度器(CFS,2.6.23 引入)

老版本的 O (1) 调度器虽然速度快,但对交互式任务(比如鼠标点击、键盘输入)不够友好 —— 后台程序可能抢占前台任务的 CPU 时间,导致用户感觉卡顿。CFS 就像一个 “时间蛋糕分配器”,它把 CPU 时间切成小块,用红黑树记录每个进程的 “虚拟运行时间”,确保每个进程都能按优先级获得近似相等的时间片。

  • 公平性:比如你一边看视频一边下载文件,CFS 会让视频解码进程优先获得 CPU,避免画面卡顿。
  • 实时性:支持实时进程优先级抢占,工业控制等场景的实时任务响应更快。

1.2 内核抢占:让内核 “灵活刹车”

2.6 之前的内核只有在用户态才能抢占,内核态代码一旦运行就必须完成,这在实时场景中很危险(比如打印机卡纸时内核可能无法及时响应)。2.6 实现了完全内核抢占

  • 即使在内核处理复杂操作(如文件系统读写)时,也能被高优先级任务打断,就像开车时随时能踩刹车。
  • 配合 RCU(读 - 复制更新)机制,确保抢占时数据一致性,避免 “刹车失灵”。

二、线程模型:从 “轻量级进程” 到 “真正的线程”

早期 Linux 把线程当作 “共享资源的进程”,调度和资源管理不够精细。2.6 之后整合了NPTL(原生 POSIX 线程库),实现了符合 POSIX 标准的线程模型:

  • 线程组:多个线程属于同一个进程组,共享地址空间但有独立的调度上下文,比如浏览器的多个标签页线程。
  • 调度策略扩展:支持 FIFO、轮询等实时调度策略,满足多媒体处理、工业控制等场景的需求。
  • 线程局部存储(TLS):每个线程可以有独立的私有数据,比如 Web 服务器为每个连接线程保存用户会话信息。

三、虚拟内存:管理更大、更复杂的内存空间

3.1 透明大页(Huge Pages,2.6.32 引入)

传统 4KB 小页面对大内存程序(如数据库、虚拟机)效率低,频繁的页表查询会拖慢速度。透明大页自动将多个小页面合并为 2MB/1GB 的大页面:

  • 减少页表数量,CPU 缓存能存下更多页表信息,就像把书架上的书按类别打包,找书更快。
  • 虚拟机场景中,大页面让内存访问速度提升 30% 以上。

3.2 内存压缩(ZRAM,3.14 引入)

手机、平板等嵌入式设备内存有限,当物理内存不足时,传统 swap 会把数据写到速度慢的闪存上。ZRAM 直接在内存中压缩不常用数据,速度比 swap 快 10 倍以上:

  • 比如手机同时开 10 个 APP 时,后台 APP 的数据会被压缩存储,前台 APP 依然流畅。
  • 配合 Low Memory Killer 机制,优先杀死 “吃内存” 的进程,保证系统稳定。

3.3 NUMA 支持增强

多核 CPU 时代,不同核心访问本地内存和远程内存的速度差异很大(就像你在自己工位拿文件和去隔壁工位拿文件的区别)。2.6 之后的内核能感知 CPU 和内存的拓扑结构,优先让进程访问本地内存:

  • 服务器场景中,数据库集群的跨核心数据访问延迟降低 50%。

四、文件系统:从 “能用” 到 “好用又耐用”

4.1 ext4:ext3 的全面升级(2.6.28 集成)

  • 更大的文件和分区:支持单个文件 16TB,分区 1EB(1024PB),再也不用担心存不下 4K 电影或大型数据集。
  • 延迟分配:写入数据时先记录元数据,等真正写入时再分配物理块,减少磁盘碎片,就像打包快递时先规划好箱子空间再放物品。
  • 日志优化:更快的日志提交速度,文件系统崩溃后的恢复时间从小时级缩短到分钟级。

4.2 Btrfs:面向未来的 “万能文件系统”(2.6.29 引入实验性支持)

  • 快照和回滚:可以给系统拍 “照片”,误删文件或系统崩溃时一键恢复,比 Windows 的系统还原更灵活。
  • 校验和机制:自动检测数据错误并修复,适合存储重要数据(如科研数据、医疗影像)。
  • 写时复制(COW):修改文件时不直接覆盖原数据,而是生成新数据块,避免断电等意外导致的文件损坏。

4.3 设备文件系统(sysfs)与热插拔

2.6 统一了设备管理模型,通过/sys目录可以看到所有设备的详细信息(比如 USB 鼠标的厂商 ID、硬盘的分区表)。配合udev工具,实现了真正的即插即用:

  • 插入 U 盘时,内核自动识别并加载驱动,用户无需手动安装驱动程序。
  • 驱动模型分层为 “总线 - 设备 - 驱动” 三层,就像图书馆按 “书架 - 书籍 - 分类标签” 管理,开发新设备驱动更简单。

五、音频与多媒体:从 “能响” 到 “高保真”

5.1 ALSA 取代 OSS 成为主流(2.6 早期版本)

老的 OSS(开放声音系统)是收费的,且对多声卡、复杂音频设备支持差。ALSA(高级 Linux 声音架构)免费开源,支持:

  • 多通道音频(5.1、7.1 声道),在家看电影有影院级体验。
  • 软件合成器(如 FluidSynth),音乐制作爱好者可以用 Linux 编曲。
  • 低延迟模式,直播、游戏语音聊天时几乎没有延迟。

5.2 内核模式设置(KMS,2.6.20 引入)

以前的显卡驱动需要在用户态处理分辨率切换、刷新率调整,容易导致黑屏或卡顿。KMS 把这些操作放到内核态,配合 DRM(直接渲染管理器)实现:

  • 开机启动时就能显示正确的分辨率,不再有 “启动时屏幕闪烁” 的问题。
  • 硬件加速支持更好,4K 视频播放占用 CPU 资源降低 50%,手机看视频更省电。

六、电源管理:让设备 “更省电、更智能”

6.1 ACPI 全面支持与动态调频(cpufreq,2.6.10 引入)

  • ACPI(高级配置和电源接口):取代老旧的 APM,支持睡眠(S3)、休眠(S4)等更多电源状态,笔记本电脑合盖后能快速唤醒。
  • CPU 动态频率调节:看网页时 CPU 降频省电,玩游戏时自动超频,就像汽车在城市道路省油模式和高速动力模式切换。
  • 设备电源管理:USB 设备不使用时自动进入低功耗状态,无线鼠标几个月才换一次电池。

6.2 能源感知调度(2.6.35 引入)

内核会根据系统负载和电池电量自动调整策略:

  • 电池模式下,优先使用低功耗核心(如 ARM 的 Cortex-A53),延长续航时间。
  • 插电模式下,启用高性能核心(如 Cortex-A73),发挥设备最大性能。

七、网络:从 “连得上” 到 “快又稳”

7.1 IPSec 集成与 IPv6 支持(2.6.15 全面支持 IPv6)

  • IPSec:在内核层实现加密通信,企业 VPN 连接更安全,数据在互联网传输时就像加了一层密码锁。
  • IPv6:解决 IPv4 地址耗尽问题,每个设备都能有独立 IP,为物联网(如智能家电、穿戴设备)铺路。

7.2 网络命名空间(Network Namespace,2.6.29 引入)

这是容器技术(如 Docker)的核心基础之一,每个命名空间就像一个独立的 “网络小世界”:

  • 不同容器可以有自己的 IP 地址、端口号,比如两个 Web 服务都用 80 端口却互不冲突。
  • 隔离性增强,一个容器的网络配置错误不会影响其他容器。

7.3 流量控制与 QoS

通过tc命令可以精细控制网络流量,比如:

  • 限制下载速度,避免占用全部带宽导致网页打不开。
  • 优先转发视频会议数据,保证语音视频不卡顿。

八、ARM 架构的蜕变:从 “嵌入式小角色” 到 “移动芯片霸主”

8.1 设备树(Device Tree,3.1 引入)

以前 ARM 设备的硬件信息(如引脚配置、外设地址)硬编码在内核中,换个芯片型号就得改内核代码。设备树用 DTS 文件描述硬件,就像给内核一份 “硬件说明书”:

  • 开发新板子时只需修改 DTS 文件,无需改动内核代码,大大加快嵌入式设备开发速度。
  • 支持 64 位 ARM(ARMv8),为手机、平板的 64 位处理器铺路。

8.2 big.LITTLE 架构支持(3.10 引入)

ARM 的大小核设计(如 4 个 Cortex-A53 小核 + 4 个 Cortex-A73 大核)需要内核智能调度:

  • 看小说、刷微博时用小核,省电;玩游戏时用大核,性能拉满。
  • 支持 CPU 集群调度,多个核心可以组成集群协同工作,提升并行处理能力。

8.3 实时性优化

针对嵌入式实时场景(如工业控制、汽车电子),ARM 内核引入:

  • 抢占式调度增强,中断响应时间从毫秒级缩短到微秒级。
  • 内存屏障优化,确保关键数据操作的原子性。

九、用户界面层:为桌面和移动设备铺路

虽然内核不直接处理图形界面,但 2.6 之后的这些改进让桌面体验大幅提升:

  • 输入子系统:统一管理键盘、鼠标、触摸屏等输入设备,支持多点触控(如手机滑动操作)。
  • 帧缓冲(Frame Buffer):直接操作显卡显存,配合 Xorg/Wayland 实现高分辨率图形输出。
  • 电源按键管理:长按电源键弹出关机菜单,短按锁屏,操作更符合用户习惯。

 2.6 之后内核进化史: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/913039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GO 语言学习 之 结构体

在 Go 语言中,结构体(struct)是一种用户自定义的数据类型,它可以包含多种不同类型的数据组合在一起。结构体为组织和管理相关数据提供了一种有效的方式,常用于表示现实世界中的对象或概念。如果你懂C/C,那么…

ubuntu 启动SSH 服务

在Ubuntu系统中,启动SSH服务需要确保SSH服务已经安装,并且正确配置。以下是详细步骤: 一、检查SSH服务是否已安装 检查SSH服务是否安装 打开终端(Terminal)。 输入以下命令来检查SSH服务是否已安装: bash…

【3.4 漫画分布式共识算法】

3.4 漫画分布式共识算法 🎭 人物介绍 小明:对分布式共识算法好奇的开发者架构师老王:分布式系统专家,精通各种共识算法📚 共识算法概述 小明:“老王,分布式系统中为什么需要共识算法?” 架构师老王:“想象一下,你有多个服务器需要就某个决定达成一致,比如选出一…

程序计数器(PC)是什么?

程序计数器(PC)是什么? 程序计数器(PC)详解 程序计数器(Program Counter, PC) 是CPU中的一个关键寄存器,用于存储下一条待执行指令的内存地址。它控制程序的执行流程,是…

影楼精修-智能修图Agent

今天给大家介绍一篇令人惊喜的论文《JarvisArt: Liberating Human Artistic Creativity via an Intelligent Photo Retouching Agent》 论文地址:https://arxiv.org/pdf/2506.17612 Code(暂无代码):https://github.com/LYL1015/…

帕金森与健康人相关数据和处理方法(一些文献的记录)

主要的帕金森脑电数据进行一些分类分析的文章。 帕金森病 2004 年至 2023 年脑电图研究的文献计量分析对于研究的分析以及关键研究和趋势从脑电图信号中检测帕金森病,采用离散小波变换、不同熵度量和机器学习技术使用机器学习和深度学习方法分析不同模态的数据以诊…

优象光流模块,基于python的数据读取demo

优象光流模块,型号UP-FLOW-LC-302-3C,准备将其应用于设备的运行速度测量,物美价廉。 厂家提供的数据格式表: 实测用python的serial包readline()函数读取到的帧数据: 与官方的给定略有出入,不过主要字节的顺…

模型部署与推理--利用libtorch模型部署与推理

文章目录 1从pytorch导出pt文件2下载并配置libtorch3推理4结果:时间对比:推理结果: 参考 以deeplabv3plus为例讲解怎么利用libtorch部署在c上模型。关于libtorch和pt文件请参考我之前的博客。 1从pytorch导出pt文件 if __name__ __main__: …

芯得EP.21丨基于极海APM32F4的TencentOS Tiny实时操作系统移植详解

《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。 如遇技术问题,可前往 极海半导体开发者论坛 1 前言 最近在了解TencentOS的特性&#xf…

【Docker基础】Docker数据持久化与卷(Volume)介绍

目录 1 Docker数据持久化概述 1.1 为什么需要数据持久化 1.2 Docker数据管理方式对比 2 Docker卷(Volume)核心概念 2.1 数据卷基本特性 2.2 卷类型详解 2.2.1 命名卷(Named Volumes) 2.2.2 匿名卷(Anonymous Volumes) 2.2.3 主机绑定卷(Host Volumes) 3 数据卷操作全…

yolo8,10,11之处理不平衡类别问题

一、前言 使用 yolo11进行目标检测时,发现训练数据集存在类别数量不平衡的情况,查阅了一下资料,可采取以下方法。 二、样本增强 少数类的框是独立存在于图片中,则可通过颜色、亮度、几何变换等方法人为增加少数类的样本数&#x…

基于 51 单片机做的二十四点小游戏

用 51 单片机做的二十四点小游戏 一、任务要求 设计一个模拟纸牌 24 点玩法的单片机模拟器,由单片机随机发出四个牌点,测试者在实验板按键上输入计算过程,单片机判断计算结果是否正确,并评定测试者的成绩。 【基本要求】&#…

Hadoop WordCount 程序实现与执行指南

Hadoop WordCount 程序实现与执行指南 下面是使用Python实现的Hadoop WordCount程序,包含完整的Mapper和Reducer部分。 这个程序可以在PyCharm中本地测试,也可以部署到远程Hadoop集群上运行。 mapper.py import sys# 从标准输入读取数据 for line in sys.stdin:# 移除行首…

数据可视化:5 分钟读懂其核心价值与技术实践

为什么数据可视化成为企业数字化转型的“必修课”?在信息爆炸的时代,企业每天产生海量数据,从客户行为到销售业绩,从供应链运作到市场趋势。如何从这些原始数据中快速提炼有价值的信息?如何将复杂数据转化为直观易懂的…

Python 量化交易安装使用教程

一、什么是量化交易? 量化交易是通过数学模型和计算机程序,自动化地执行证券买卖决策的交易方式。Python 凭借其丰富的生态和强大的数据处理能力,成为量化交易的首选语言。 二、环境准备 建议使用 Anaconda 安装 Python 3.8,方便…

从 PostgreSQL 到 DolphinDB:数据实时同步一站式解决方案

随着越来越多的用户使用 DolphinDB,各种不同的应用的场景也对 DolphinDB 的数据接入提出了不同的要求。部分用户需要将 PostgreSQL 的数据实时同步到 DolphinDB 中来,以满足在 DolphinDB 中使用数据的实时性需求。本篇教程将介绍使用 Debezium 来实时捕获…

关于联咏(Novatek )白平衡色温坐标系探究

目录 一、疑问 二、结论 三、分析 四、释疑 五、仿真模拟 一、疑问 为什么Novatek的白平衡色温坐标系是这个样子的呢?各条直线和曲线分别代表什么含义呢?色温坐标系中所标定的参数代表什么含义呢?如何标定新增一些特殊的光源呢?二、结论

Protein FID:AI蛋白质结构生成模型评估新指标

一、引言:蛋白质生成模型面临的评估挑战 近年来,AI驱动的蛋白质结构生成模型取得了令人瞩目的进展,但如何有效评估这些模型的质量却一直是一个悬而未决的问题。虽然实验验证仍然是金标准,但计算机模拟评估对于快速开发和比较机器…

Vim 高效编辑指南:从基础操作到块编辑的进阶之路

文章目录🔠 一、基础编辑命令(生存必备)⚡ 二、进阶操作:可视化块模式 (Ctrl+v)典型应用场景🚀 三、效率提升技巧💡 四、配置建议(~/.vimrc)结语作为开发者最强大的文本编辑器之一,Vim 的高效操作离不开其命令模式(Normal Mode)。本文将系统性地介绍 Vim 的核心编…

docker学习第一天框架学习以及在redhat7.9安装操作

一.docker是什么。 Docker 是一个开源的容器化平台,通过将应用程序及其依赖项(如代码、运行时环境、系统工具等)打包到轻量级、可移植的容器中,实现「一次构建,处处运行」的现代化开发模式。它利用了 Linux 内核特性来…