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