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