内核使用虚拟地址。已分配的内存、函数指针等都是虚拟地址。只有在与某些设备通信或进行某些类型的DMA时,您才会操作物理地址。“Linux”或“Linux内核”在许多体系结构上运行。其中一些体系结构可以具有内存错误检测或纠正硬件。我不知道这些设备如何受支持。但在大多数体系结构上,没有保护措施防止内存损坏。但是,您正在谈论软件错误。内核代码随机写入地址时没有保护措施。一些功能测试其接收到的参数以捕获错误,但如果在内核模式下溢出缓冲区或堆栈,则可能发生各种奇怪的事情。常量数据和代码通常放置在只读页面中,以便可以检测写入。因此,内核的内存保护仅限于:- 某些地方的参数检查。 - 一些结构中的魔术值。 - 代码和常量部分的只读属性。只读属性仅适用于内核使用虚拟内存的情况。