铃声和运行级别

Ble*_*ers 8 kernel architecture runlevel

下面陈述的问题在技术上可能不正确(误解),因此如果误解也得到解决,那将是可观的。

不同的 *nix运行级别在哪个级别运行

戒指标签不可用。

pet*_*rph 9

Unix 运行级别与保护环是正交的(在“无关”、“独立于”的意义上——见注释)。

运行级别基本上是操作系统作为一个整体的运行时配置/状态,它们描述了可用的服务(“对用户”)——比如 SSH 访问、MTA、文件服务器、GUI。

环是一个硬件辅助概念,它允许对硬件进行更精细的控制(如您链接到的维基百科页面中所述)。例如在更高的 Ring 中运行的代码可能无法执行某些 CPU 指令。

x86 架构上的 Linux 通常将 Ring0 用于内核(包括设备驱动程序)和 Ring3 用于用户空间应用程序(无论它们是由 root 还是其他普通或特权用户运行)。

因此,您不能真正说某个运行级别正在某个特定的 Ring 中运行 - 总是有1 个用户空间应用程序(至少 PID 1 - the init)在 Ring3 和内核 (Ring0) 中运行。


1与往常一样,“总是”真正意味着“几乎总是”,因为您可以在 Ring0 中运行“正常”程序,但在现实生活中您不太可能看到这一点(除非您在 HPC 上工作)。

  • 是的,高性能计算 - 问题是,通常应用程序会发出大量*系统调用*(对内核的请求,如访问文件、网络等),并且这些会因在环之间交叉执行而招致惩罚。现在,如果你把你的代码和内核放在同一个 Ring 中,你可以通过消除对这些开关的需要来获得一些性能。您的代码必须更仔细地编写/测试,因为它可以访问通常没有的东西,因此可能会导致更大的灾难。:) (3认同)
  • 高性能计算(HPC)? (2认同)
  • @peterph 我认为正交是一个很棒的词,但不幸的是,我认为很多人可能不知道这个词。可能值得放入一个更简单的术语,至少在正交之后的括号中。 (2认同)