导读 | FreeBSD 维护者 Colin Percival 发帖称,他们已经为 SYSINIT 采用合并排序 (mergesort) 来取代冒泡排序 (bubblesort)。 |
SYSINIT 是通用调用排序和调度机制的框架,FreeBSD 目前使用它来动态初始化内核。
当加载内核或其模块之一时,SYSINIT 允许在内核链接时对 FreeBSD 的内核子系统进行重新排序、添加、删除和替换,而无需编辑静态排序的初始化路由并重新编译内核。
该框架还允许内核模块(目前称为 KLD)在引导时单独编译、链接和初始化,甚至在系统运行时加载。该操作使用 “内核链接器” 和 “链接器集” ("kernel linker" and "linker sets") 来完成。
via FreeBSD 文档
Colin Percival 表示,使用合并排序后的运行速度比之前快了大约 100 倍。
他此前解释过更换算法的原因,当 FreeBSD 内核在 Firecracker(单核 CPU、128 MB RAM)中启动时,会花费 7% 的时间在其 SYSINIT 上运行冒泡排序。当对一千多个项目进行排序时,O (N^2) 会变得非常复杂,所以需要用更快的算法取代冒泡排序。
原文来自:
本文地址://q13zd.cn/free-sysint-linux.html编辑:xiangping wu,审核员:KSJXAXOAS
Linux大全:
Linux系统大全: