
每个新版本的 Linux 内核都会带来直接影响硬件交互、内存效率、系统性能和安全性的变化。这些发展不仅与大型企业服务器相关,也同样适用于嵌入式系统、多媒体平台和实时设备。
内核开发的动力来自于支持日益复杂的硬件、提供更安全的抽象以及降低开销的需求。本文档从技术角度概述了满足这些需求的若干新特性:SOF 动态流水线支持、io_uring、DAMON、Landlock LSM、memfd_secret 和 IOMMU FD API。每个特性都配有其目的、相关系统设计场景以及可能的实际应用说明。
io_uring 是一个异步 I/O 操作接口,首次出现在 Linux 5.1 中,并在后续版本中不断改进。传统的 Linux I/O 操作需要在用户空间和内核空间之间进行上下文切换,每个请求都需要一次系统调用。当应用程序中存在大量并发 I/O 操作时,这种开销会变得非常显著。
为了解决这一问题,io_uring 公开了两个在内核和用户空间之间共享的环形缓冲区:提交队列(SQ)和完成队列(CQ)。应用程序将 I/O 请求放入提交队列,内核在完成事件后将其报告到完成队列。这种设计大大减少了系统调用,提高了吞吐量和延迟表现。
在视频录制系统中,原始高分辨率帧需要不间断地写入存储。传统的阻塞式 write() 调用可能会中断采集循环。使用 io_uring 异步排队写请求,可确保采集线程保持不被阻塞,同时维持稳定的吞吐量。
DAMON(数据访问监控器)从 Linux 5.15 开始引入。它为活跃系统中的内存访问模式提供了高效的可观测框架。与全量追踪工具不同,DAMON 通过基于采样的机制保持较低的运行时开销。它将内存区域标记为“热”、“冷”或访问频率较低。
系统开发者可以通过 DAMON 的 sysfs 和 debugfs 接口将内存分析集成到运行时流程中。它可以与策略结合使用,根据观察到的访问行为自适应地迁移、分配或回收内存。
在相机流水线中,可能会分配多个帧缓冲区。某些缓冲区保持“热”状态(活跃于处理中),而其他缓冲区则处于“冷”状态(等待下游阶段)。DAMON 可以识别这些模式,从而动态调整驱逐或缓冲区分配策略。
Landlock 是一个 Linux 安全模块(LSM),于 Linux 5.13 引入,用于实现沙箱机制。与 SELinux 或 AppArmor 不同,后者需要特权配置,而 Landlock 允许无特权应用程序限制自身对资源的访问。
它引入了一种规则集模型,应用程序定义文件访问规则,由内核强制执行。一旦限制生效,就无法移除,即使进程被入侵也无法逃脱。
一个音频录制工具可能限制自己只能读写 /media/audio 目录。即使被入侵,它也无法访问 /etc/passwd 或其他无关目录。同样,相机应用程序可以将其文件访问限制在 /media/camera,从而保护文件系统的其他部分。
memfd_secret:安全的内存存储memfd_secret 系统调用于 Linux 5.14 合并,允许进程创建其他进程无法访问的内存区域,即使使用 ptrace 或读取 /proc/<pid>/mem 也不行。这些内存区域也不会包含在核心转储中。
memfd_secret 返回的内存是页对齐的,并带有硬件特定的保护标记,防止创建进程之外的访问。这为存储敏感应用程序或加密数据提供了安全空间。
TLS 库可以通过分配秘密内存来存储会话密钥,确保即使进程被追踪或获取内存转储,私密信息也能得到保护。
IOMMU FD API 随 Linux 6.0 发布,提供了基于文件描述符的 IOMMU 管理新接口。过去,映射和取消映射 DMA 缓冲区需要内核驱动程序。新 API 允许用户空间驱动程序直接安全地管理 DMA 映射。
该模型在保持隔离并防止未授权访问的同时,简化了硬件设备和用户空间之间的零拷贝缓冲区共享。
在相机设计中,可以将相机传感器的原始图像缓冲区直接映射到 GPU 或 AI 加速器内存中。这降低了图像处理流水线中的延迟,并避免了内核复制。
Sound Open Firmware(SOF)是一个用于音频系统的开源内核驱动栈和 DSP 固件。在近期的内核版本(5.17 及以后)中,引入了动态流水线管理,允许在运行时创建、修改和销毁流水线。
过去,音频路由流水线必须静态定义,任何更改都需要重新加载模块或重启。动态支持使得在不中断 DSP 的情况下,可以在不同音频路径之间切换。
在智能手机上,可能正在播放音乐时有电话呼入。系统可以使用 SOF 动态流水线将流水线切换为优先处理电话音频,然后在无需重启 DSP 的情况下恢复媒体播放。
这些特性展示了 Linux 内核如何持续发展以满足现代系统的需求:
io_uring 降低了 I/O 延迟和系统调用开销memfd_secret 防止敏感内存泄露它们共同提供了微小但有意义的改进,提升了安全性、简化了系统架构并提高了性能。对于在消费平台、数据中心或嵌入式设备上使用 Linux 的工程师来说,了解这些特性有助于做出更好的架构决策。
sound/soc/sof/ipc4-topology.csound/soc/sof/topology.c翻译:https://dzone.com/articles/linux-kernel-features-system-design