 FreeBSD 's kernel provides support for some essential tasks such as managing processes , communication , booting and filesystems . FreeBSD has a monolithic kernel , with modular design . Different parts of the kernel such as drivers , are designed as modules . The user can load and unload these modules at any time . ULE is the default scheduler in FreeBSD since version 7 @.@ 1 , it supports SMP and SMT . The FreeBSD kernel has also a scalable event notification interface , named kqueue . It has been ported to other BSD @-@ derivatives such as OpenBSD , NetBSD . Kernel threading was introduced in FreeBSD 5 @.@ 0 , using an M : N threading model . This model works well in theory , but it is hard to implement and few operating systems support it . Although FreeBSD 's implementation of this model worked , it did not perform well , so from version 7 @.@ 0 onward , FreeBSD started using a 1 : 1 threading model , called libthr . 
