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