In a monolithic kernel, all operating system services run together with the main kernel thread. Monolithic kernels have traditionally been used in Unix-like operating systems and are generally faster since less software is involved. However, monolithic kernels can become very large and difficult to maintain over time as bugs in one part of the kernel can have system-wide effects and debugging is challenging.