内核模块是特定于linux还是通用机制?

尼古拉斯·R。

我在Tanenbaum的书中读到有关操作系统的信息,其中有保护环,而环0属于内核。通常是有人说“内核模块处理环0的I / O和内存管理”,还是“内核模块”特定于linux,不适用于OpenBSD和MULTICS?

约翰·迈瑞恩(JohanMyréen)

Andrew Tanenbaum提出的想法通常不适用于Linux(或任何传统的整体式Unix内核)。这个问题的答案比您建议的要简单得多:Linux内核模块是已编译并链接到单独文件中的内核代码,而不是链接到内核映像中。可以在运行时根据需要将此单独的内核目标文件(.ko)加载到内核地址空间中。实际上,所有可以编译为内核模块的驱动程序也可以静态链接到内核映像,一旦加载代码,功能就不会有任何差异。

模块代码是内核代码,并且以与所有其他内核代码相同的特权运行。内核模块原则上可以替换任何内核代码,但要完全做到这一点,内核本身必须提供一种模块可以挂接到的机制。

有关术语的附加说明:保护环是Multics操作系统中引入的一个概念。“ Ring 0”到“ Ring 3”是特定于Intel处理器的术语。其他处理器体系结构使用其他术语,例如用户/管理员模式。尽管Intel处理器提供了四个不同的特权级别,但是大多数操作系统仅使用了两个:Ring 3(用于用户级代码)和Ring 0(用于内核代码),以镜像其他处理器的User / Supervisor模式。(OS / 2是例外,它使用了三个特权级别。)

随着硬件级虚拟化技术的出现,特权级概念最近得到了扩展。例如,ARM体系结构定义了三个特权级别:用户,主管和管理程序。开玩笑地说,最后在基于Intel的计算机上使用了四个环:用于用户级代码的环3,用于(虚拟机)内核代码的环0,用于管理程序代码的环-1和用于SMM模式的环-2。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档