The kernel is dynamically extendable and can be expanded by adding routines that belong to any of the functional classes.
A process executing in user mode can customize the kernel by using the sysconfig subroutine, if the process has appropriate privilege. In this way, a user-mode process can load, unload, initialize, or terminate kernel routines. Kernel configuration can also be altered by changing tunable system parameters.
Kernel extensions can also customize the kernel by using kernel services to load, unload, initialize, and terminate dynamically loaded kernel routines; to create and initialize kernel processes; and to define interrupt handlers.