资讯动态

【译】《心悟内核:先懂设计,再读代码》—21、执行是逻辑层面的,放置是物理层面的

发布时间:2026/10/14 9:01:23 来源:尧图企业网站定制
作者Moon Hee Lee原文 The Kernel in the Mind执行是逻辑层面的放置是物理层面的在 Linux 中运行进程时进程仿佛在中断处原样恢复执行。寄存器被恢复栈保持有效内存布局符合预期。中断处理程序在已知的 CPU 上下文内执行系统调用可以无中断地完成。从正在运行的代码视角来看环境保持一致。在这种稳定表象之下系统始终处于变化之中。为均衡负载、提升内存局部性或响应硬件事件内核会将各类实体在不同 CPU 和内存节点间迁移。任务、内存页、中断处理程序的这类移动称为迁移。迁移是系统运行中的常态并且不会打断执行逻辑。实现这一点的核心是内核对执行与放置做了严格隔离。执行状态通过上下文切换保存。一个任务可能在另一颗 CPU 上运行但在恢复执行前它的程序计数器、栈以及虚拟内存都会完整复原。进程感知不到这种变化。内存迁移遵循相同原理。内存页可以在 NUMA 节点间移动或在内存整理过程中重排。内核更新页表、失效过期的 TLB 表项维持一致的虚拟地址视图。只要映射关系不变底层物理页可以自由移动。中断同样可以迁移。设备中断请求IRQ会在多个 CPU 间重路由以分担负载。但中断处理程序仍在正确上下文内运行使用有效的每 CPU 结构体。中断投递路径发生改变处理程序的执行环境却保持不变。亲和性为执行的可选位置施加约束但不会将执行位置固定。任务的 CPU 亲和性规定了其可被调度的位置范围调度器会遵守该边界。在该范围内迁移可以自由发生。IRQ 亲和性、内存策略以及每 CPU 基础设施也遵循同样规则。这套机制能够生效依赖各个子系统间的协同与状态感知。迁移线程安全地将任务跨 CPU 迁移内存子系统跟踪反向映射并更新引用调度器管理运行队列与抢占机制保证执行的一致性。各个组件保障自身正确性因此即便系统在重新调整物理位置逻辑模型依旧稳定。正是这种隔离让系统能够扩展和自适应同时不破坏完整性。代码持续运行感知不到底层正在发生的物理重组。内核移动需要移动的对象保留不可改动的状态。执行属于逻辑范畴迁移属于物理范畴。二者的边界并非抽象概念而是由各类机制维护这些机制让进程、内存页或中断处理程序可以迁移同时不破坏正在运行的逻辑。如本文对你有些许帮助欢迎大佬支持我一下点赞收藏关注、关注公众号等您的支持是我持续创作的竭动力支持我的方式

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑