我在一次演示中遇到了“内核内存修补”这个术语。我用谷歌搜索但在某处找不到确切的答案。我的理解告诉我,内核内存修补是以某种方式添加或增加内核的内存大小或其访问的地址空间?有人可以纠正我吗?或者提供有关此过程的更多信息。
另外,以下之间可能存在什么区别:
- 内核内存修补
- 内核补丁
- 可加载内核模块
答案1
以相反的顺序,因为这样解释会更容易一些:
可加载内核模块:这是指可以在运行时被内核加载的一段代码。通常这些是驱动程序,但在某些情况下,它可能提供与硬件或协议无关的额外功能(例如,添加一些额外的记帐或调试信息)。从本质上讲,内核模块与用户空间程序的动态库具有相同的功能(尽管低级链接要复杂得多)。在 Linux 系统上,内核模块存储在 中
/lib/modules
,在 NetBSD(我认为除 OS X 之外的大多数其他 BSD 系统)上,它们位于 中/stand
,在 Windows 上,它们位于 中的各个位置C:\Windows
。内核修补:有两种形式:实时修补和离线修补。离线内核修补本质上只是内核升级(应该这样做,而不是对内核二进制文件应用补丁)。实时内核修补功能允许将更新应用于正在运行的操作系统内核,而无需停机。至少在 Linux 上,实时内核补丁包含在特殊的内核模块中。请注意,实时内核修补是不是与卸载旧版本后加载新版本的驱动程序相同(就像 Windows 更新某些类型的驱动程序时所做的那样)。
内核内存修补:这是一个脱离上下文的模糊术语,但在我见过的每个上下文中,它指的是更新正在运行的内核上内存中的数据结构,作为实时内核补丁的一部分。它还可以指某些恶意软件用来修改内核内存以触发漏洞利用的技术。它与系统中的内存量很少有任何关系,添加和删除内存通常称为“热插拔”。