0

假设我正在通过 L1/L2 缓存写入 Core Duo 系统上的 RAM 位置。

假设我要写入 RAM 中的一个持久位置,然后很快就会出现恐慌 Linux 内核。该位置是持久的,这意味着它不会在 CPU 重新启动期间重新启动,并且会在重新启动后被拾取。

作为重启/恐慌的一部分,Linux 会刷新 CPU 缓存吗?

CPU会在重启前刷新缓存吗?

还是我应该手动执行?如何?

更新:我的缓存不是直写的。

问题是,CPU 规范是否定义了这种行为?

4

3 回答 3

1

可能最合适的方法是将包含持久位置的页面标记为不可缓存。这样,对持久位置的写入将始终绕过缓存(有效地直写)。当然,你的缓存可能是直写的,所以这可能是多余的——你应该先检查一下。

于 2010-12-03T16:00:10.990 回答
0

缓存可能不会被刷新,因为用户、系统工程师或 IT 支持人员可能需要运行系统诊断或调试器来诊断和转储计算机状态。缓存可能在启动时刷新或不刷新,这取决于操作系统的类型和版本、编程语言和事件中使用的应用程序。它可能是启动时的可选选项(来自任何 BIOS),但它可能会在开机时初始化,但不一定在热重启时(如果可用)。

于 2010-12-03T15:59:23.063 回答
0

我想这可能会派上用场:) http://lxr.linux.no/#linux+v2.6.30/arch/x86/kernel/reboot.c

于 2010-12-03T16:02:00.483 回答