图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片

在 Linux 中,MCE 代表 Machine Check Exception(机器检查异常),它用于处理硬件错误和异常情况。MCE 可以分为 CE(Corrected Error,已纠正的错误)UE(Uncorrected Error, 未纠正的错误) 两种类型。MCE 是 Linux 内核的一部分,用于监视和响应这些硬件错误,以提高系统的可靠性和稳定性。当发生 MCE 时,通常会生成系统日志(例如 /var/log/mcelog),以帮助管理员诊断和解决硬件问题。在服务器和关键应用中,监控和处理 MCE 错误非常重要,以确保系统的可靠性和可用性. CE 和 UE 的区别如下:

  • CE(Corrected Error,已纠正的错误): CE 是指硬件错误,但系统可以自动纠正这些错误,而不会导致系统崩溃或严重问题。通常这些错误是由于内存或其他硬件组件的临时问题引起的,例如内存中的单个位翻转。内核会记录这些 CE 错误,但不会采取进一步的行动,因为它们被认为是暂时性的,不需要干预
  • UE(Uncorrected Error,未纠正的错误): UE 是指硬件错误,但系统无法自动纠正这些错误,因此可能会导致系统崩溃或数据损坏。UE 错误通常是更严重的硬件问题,例如内存模块中的多个位错误或其他硬件组件的不可恢复故障。内核会尝试采取适当的措施来处理UE错误,例如记录错误信息并尝试停机以防止进一步损坏

图片无法显示,请右键点击新窗口打开图片

在 Linux 里,当硬件检测到硬件错误或者异常,这些硬件错误可能包括内存位翻转、缓存错误、总线错误、内存单元故障等,那么硬件会触发 MCE 异常,MCE 异常处理函数能处理很多硬件错误,其中对于内存 UE 的处理逻辑如上图, 其核心是调用 memory_failure() 函数进行出来,该函数主要完成一下几个任务:

  • 标记物理页: 将发生 UE 对于的物理页标记为 PG_hwpoison
  • 解除映射: 通过 TTU 机制解除用户进程映射到物理页的映射
  • 更新页表: 构造 UE Entry 并更新页表,以防止进程再次访问

图片无法显示,请右键点击新窗口打开图片

图片无法显示,请右键点击新窗口打开图片

BiscuitOS 内存管理之分页大专题订阅入口

图片无法显示,请右键点击新窗口打开图片