如果我ps -aux
在没有 GUI 的 Ubuntu(或任何 GNU/Linux 发行版)上,我会看到大约 100 个进程正在运行。如果我ps -aux
使用没有 GUI 的 OpenBSD,那么我会得到大约 10 个进程。
对此有何解释/原因? *BSD 系统是否“更清晰”(代码)或者他们只是把所有东西都放在内核中吗?
答案1
进程数量和操作系统的“清晰度”之间没有相关性。您正在比较苹果和醋栗。
在Linux系统上,ps ax
会显示很多不消耗内存且名称放在方括号中的进程,如下所示:
root 2 0.0 0.0 0 0 ? S Nov02 0:01 [kthreadd]
root 3 0.0 0.0 0 0 ? S Nov02 4:39 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S Nov02 0:00 [migration/0]
root 7 0.0 0.0 0 0 ? S Nov02 0:01 [watchdog/0]
root 8 0.0 0.0 0 0 ? S Nov02 0:00 [migration/1]
这些进程是内核的一部分。它们以内核权限运行,但它们像用户进程一样由调度程序管理(其中许多具有高优先级,因为它们处理硬件请求)。我写这篇文章的机器有超过 100 个这样的进程——有多少个进程取决于很多因素,包括你的内核版本、你的硬件以及你运行的内核服务(例如,某些文件系统有内核守护进程)。
这些过程可能占不同数字的很大一部分。据我所知,没有一个 BSD 单独报告此类任务,这使得您的比较毫无意义。
此外,默认的 OpenBSD 安装只包含很少的服务,而默认的 Ubuntu 安装则运行普通用户期望找到的所有服务。如果您在两台计算机上安装相同的软件,您会发现相似数量的非内核进程。
答案2
正在运行的进程数量不一定是“清晰度”的良好指标。
以 FreeBSD 为例,devd
它使用套接字进行通信,而udev
使用 D-Bus(因此需要另一个dbus-daemon
进程)。进程数:1:2
. 但 D总线带来了更多的功能和可能性,许多其他系统守护进程也使用它(由同一dbus-daemon
进程处理)。 现在哪一个更清楚?
另外,我猜你可以通过牺牲功能(即不使用任何 *Kits)来让任何非 GUI GNU/Linux 系统“使用更少的进程”——以及 BSD 和这个系统之间的公平比较(为了什么)这是值得的)只有当功能集匹配时才能完成。
答案3
也许这意味着您是 Linux 的重度用户?当您在 BSD 机器上加载了更多服务时,随着时间的推移,它会很高兴地充满像 Linux 那样的粗糙守护进程。
这或许也反映了现代 Linux 发行版中垃圾的数量。 FreeBSD 基础系统确实非常轻量。将其与干净的 Slackware 安装之类的东西进行比较可能是更好的比较。我怀疑它是否带有五十个开箱即用的进程。