The kernel provides services so programs can request the use of the network card, the disk or other pieces of hardware. The kernel forwards the request to special programs called device drivers which control the hardware. It also manages the file system and sets interrupts for the CPU to enable multitasking. Many kernels are also responsible for ensuring that faulty programs do not interfere with the operation of others by denying access to memory that has not been allocated to them and restricting the amount of CPU time they can consume.