我目前正在为我的 LFCS 学习,并且已经达到了关于用户创建的进程和内核创建的进程之间的区别的部分。在内核创建的进程中,它们定义了两种进程子类型。
- 内部内核进程
- 外部用户进程
他们给出了内部内核进程的示例,例如将缓冲区刷新到磁盘并确保负载在 CPU 之间均匀分布的维护工作。但是只为外部用户进程指定了:
这些进程像普通应用程序一样在用户空间中运行,但由内核启动。这些很少,而且它们通常是短暂的。
我的第一个想法是这些东西会在像 systemd 这样的初始化系统下运行,但我的直觉告诉我这可能不是这种情况,因为它提到它们通常是短暂的。
什么是外部用户进程的例子?
/proc/sys/kernel/hotplug
。/sbin/v86d
助手。uvesafb
进一步阅读
plug-and-play-event-handler
. 小吃指南。软件。“外部用户进程”的一个例子是
init
. 内核在没有来自用户空间的任何请求的情况下启动init
进程(即,不响应fork()
或相关的系统调用)。你的想法systemd
是有道理的,既然systemd
起到了作用init
。内核还可以在某些事件上触发用户空间进程的执行。例如,历史上内核会
hotplug
在添加或删除设备时执行用户空间可执行文件。这样的过程是短暂的。(虽然这是一个可能的例子,但我不认为这种方法今天仍用于该用例。)