(資料圖片僅供參考)
FreeBSD 維護者Colin Percival發帖稱,他們已經為 SYSINIT 采用合并排序 (mergesort) 來取代冒泡排序 (bubblesort)。
SYSINIT 是通用調用排序和調度機制的框架,FreeBSD 目前使用它來動態初始化內核。
當加載內核或其模塊之一時,SYSINIT 允許在內核鏈接時對 FreeBSD 的內核子系統進行重新排序、添加、刪除和替換,而無需編輯靜態排序的初始化路由并重新編譯內核。
該框架還允許內核模塊(目前稱為 KLD)在引導時單獨編譯、鏈接和初始化,甚至在系統運行時加載。該操作使用“內核鏈接器”和“鏈接器集” ("kernel linker" and "linker sets") 來完成。
viaFreeBSD 文檔
Colin Percival 表示,使用合并排序后的運行速度比之前快了大約 100 倍。
他此前解釋過更換算法的原因,當 FreeBSD 內核在 Firecracker(單核 CPU、128 MB RAM)中啟動時,會花費 7% 的時間在其 SYSINIT 上運行冒泡排序。當對一千多個項目進行排序時,O(N^2) 會變得非常復雜,所以需要用更快的算法取代冒泡排序。
關鍵詞: