19浏览
查看: 19|回复: 0

[讨论] Linux内核三大核心模块深度解析:调度、内存与I/O

[复制链接]
Linux内核作为操作系统的核心,其进程调度、内存管理和文件I/O三大模块共同决定了系统的性能与稳定性。无论是多核服务器的高并发处理,还是嵌入式设备的资源受限场景,深入理解这些底层机制都是进行性能调优与系统开发的基石。
一、进程调度:从CFS到EEVDF的演进
进程调度负责决定哪个任务获得CPU执行权。在Linux中,进程是资源的容器,而线程才是实际的调度单元,两者均通过kernel_clone系统调用创建。写时拷贝技术使得fork操作几乎不消耗额外内存,子进程与父进程共享物理页,仅在写入时复制,大幅提升创建效率。类似地,文件描述符表、文件系统上下文和信号处理也采用广义的写时拷贝机制。
调度器通过多个调度类管理不同优先级的任务:截止期限调度类(DL)满足硬实时要求,实时调度类(RT)提供确定性响应,公平调度类(CFS/EEVDF)处理普通进程,而可编程EXT调度类允许通过eBPF定制策略。每个CPU维护独立的运行队列(runqueue),调度器遍历各调度类选择最合适的任务。
多核系统中,负载均衡至关重要。wake_affine机制尝试将唤醒任务放回原CPU以利用缓存,定期负载均衡则迁移任务以平衡负载。在NUMA架构下,调度器优先考虑本地内存访问,超线程(SMT)场景则需平衡物理核心上的逻辑线程。实时Linux内核(PREEMPT_RT)通过减少不可抢占区间,将最坏延迟降至微秒级。perf sched、trace-cmd等工具可深入分析调度行为。
二、内存管理:从硬件分页到智能回收
内存管理子系统负责虚拟地址到物理地址的映射、分配与回收。硬件分页机制通过页表控制访问权限,内核将物理内存划分为DMA、NORMAL等区域(zone),每个区域由buddy系统以2的幂次管理连续物理页。struct page及其封装struct folio简化了复合页的处理。
针对不同需求,内核提供多种分配器:连续内存分配器(CMA)为DMA等设备预留连续内存;slab分配器缓存频繁分配的小对象;kmalloc用于小于一页的分配,vmalloc分配虚拟连续但物理不连续的大内存。用户进程通过malloc/mmap申请内存,内核以虚拟内存区域(VMA)管理地址空间,首次访问触发缺页异常分配物理页。
页缓存(page cache)加速文件I/O,匿名页(如堆、栈)在内存紧张时可通过交换分区(swap)换出。内核维护活跃/非活跃LRU链表,最近访问的页位于活跃链表,不常访问的逐渐移至非活跃链表并被回收。多代LRU(MGLRU)进一步优化回收效率,减少扫描开销。透明大页(THP)和HugeTLB减少TLB缺失,提升性能。内存cgroup限制进程组内存使用量,OOM killer在耗尽时选择合适进程终止。
三、文件I/O:从阻塞模型到高性能异步
文件I/O子系统连接存储与应用程序,其性能直接影响系统吞吐。传统阻塞I/O简单但低效,非阻塞I/O配合多路复用(select/poll/epoll)成为高并发基石。信号驱动I/O(SIGIO)和异步I/O(AIO)进一步解耦,io_uring通过共享环形缓冲区将性能推向极致。C10K问题曾推动事件驱动模型发展,如今已迈向C10M级别。
文件系统在内存中以超级块(superblock)、索引节点(inode)和目录项(dentry)表示。硬链接共享同一inode,符号链接则存储目标路径。日志(journaling)保证崩溃后文件系统一致性。页缓存通过address_space关联文件与页,iomap替代传统buffer_head,与大型页(large folios)无缝协作。文件读写流程经过VFS层调用具体文件系统操作,最终通过块层访问设备。
I/O调度器(如mq-deadline、bfq)合并请求以优化机械硬盘寻道或SSD并发。I/O cgroup(blkio)限制进程组带宽。iostat、blktrace、bcc/eBPF等工具可深入追踪I/O延迟。
结语
调度、内存和I/O三者环环相扣:调度决策影响内存访问局部性,内存回收可能触发I/O,I/O完成唤醒等待进程。唯有从原理层面理解这些机制及其相互作用,才能在复杂场景下做出精准优化。工程师高培针对宋宝华老师课纲分析认为,只有学透Linux内核三大核心模块,才能真正掌握系统级开发与调优能力。无论是开发高性能应用还是诊断系统瓶颈,这三大模块都是技术人员的必修课。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail