我正在阅读有关Linux内核的信息,并且了解了cr0控制寄存器,该寄存器存储有关分页,保护模式等的标志。

我想知道,是否有可能,如果我设法更改cr0的值来修改标志,会发生什么?

我不想通过禁用分页或任何操作来破坏内存中的某些内容,所以我考虑过尝试自己,但我担心会发生什么。

最佳答案

如果您正在运行内核代码,则肯定有可能(并且在启动时有必要)修改CR0。在大多数情况下,对其进行修改只会导致您的系统立即或多或少地崩溃。

我不知道这是否值得“害怕”-取决于您对重启计算机的关心程度。您可以在this page上看到CR0控制的所有内容。对其进行修改将需要修改Linux内核或编写内核模块。如果您尝试从用户空间代码访问它(例如,使用内联汇编),则您的用户空间程序将仅遇到错误并退出,就像尝试从无效地址读取内容时一样。

10-07 20:10