我正在阅读有关Linux内核的信息,并且了解了cr0
控制寄存器,该寄存器存储有关分页,保护模式等的标志。
我想知道,是否有可能,如果我设法更改cr0
的值来修改标志,会发生什么?
我不想通过禁用分页或任何操作来破坏内存中的某些内容,所以我考虑过尝试自己,但我担心会发生什么。
最佳答案
如果您正在运行内核代码,则肯定有可能(并且在启动时有必要)修改CR0。在大多数情况下,对其进行修改只会导致您的系统立即或多或少地崩溃。
我不知道这是否值得“害怕”-取决于您对重启计算机的关心程度。您可以在this page上看到CR0控制的所有内容。对其进行修改将需要修改Linux内核或编写内核模块。如果您尝试从用户空间代码访问它(例如,使用内联汇编),则您的用户空间程序将仅遇到错误并退出,就像尝试从无效地址读取内容时一样。