Kernel
At the core of an OS is a piece of software known as the kernel. The kernel is the inner most piece of the operating system that controls the secure, controlled access to the computer hardware and to various computer processes (see Fig. 1). With the limited nature of hardware access and the abundance of applications, the kernel also handles scheduling. Scheduling is the concept of when and how long a program should be allowed to use a piece of hardware.

Fig. 1: Operating system layers
Due to the various number of designs for the same hardware component, accessing the hardware directly can be very difficult. Most modern kernels, like those used in Windows XP or Mac OS X, implement a level of hardware abstraction, or a set of instructions that are universal to all devices of a certain type. The hardware abstraction, provides a clean interface to the hardware and helps eliminate complexity. This allows software developers to more easily build applications that are capable of running on various different types of hardware. This hardware abstraction layer of the kernel depends on software drivers that provide detailed instructions for a given brand/model of device (see Device Drivers).
In Fig. 1, you might have noticed the layer labeled "Interfaces". There are two main types of interfaces, each serving a unique purpose; we will discuss those next.




