A hardware abstraction layer is a method of hiding the physical hardware from the computer’s software. The layer works as an intermediary, separating the hardware and software from one another. In addition, it masks the actual processes of the two systems from one another. The main purpose of this layer is to allow software to run on hardware that it wasn’t specifically meant to run on. While nearly all operating systems use these layers to some extent, they are most common in emulation and embedded systems.
Computer architecture is set up in layers. The computer starts with the hardware layer and builds up to the application, or software, layer. Each step up in layer goes closer to software and further from hardware. In addition, each step up requires more processing and resources to operate. For instance, the system’s kernel is one of the most fundamental pieces of software on the system, but it is more complex and resource-intensive than the hardware it sits on and less so than the operating system that requires it to run.
Typically, each of these layers is made up of real components, either hardware or software. A hardware abstraction layer is a little of both. It is a software system that acts like a hardware system. It sits between the computer’s kernel and the hardware systems. The hardware abstraction layer's job is to mask the majority of the system and make the kernel believe it is operating on a different set of hardware. When the hardware and kernel communicate, the hardware abstraction layer translates the information back and forth.
The most common reason to use a hardware abstraction layer is to allow software to run on hardware that it isn’t supposed to be on. The layer sits on top of the hardware and allows the installation of an operating system and applications. In essence, it causes the layers inside the computer to branch into two different paths. One path follows the system's true hardware while the other follows the abstracted version.
Nearly every operating system has a small amount of abstraction built right into it. This allows the system to run a wider range of machines, provided they are within a broad set of parameters. This type of abstraction is so minor and commonplace that it is rarely referred to as a hardware abstraction layer.
Real abstraction is typically found in one of two places. Hardware emulation allows a full operating system and programs to operate on a computer they were not built for. This form of abstraction is common in nearly all modern computers, as several web programs work through virtual systems. Embedded systems are the second kind. These small operating systems run everything from cars to coffeepots and often use a hardware abstraction layer to increase the number of devices that can use the system without modification.