Operating-system-level virtualization uses a Hardware Abstraction Layer (HAL) which is a Application Programming Interface that allows a computer Operating System to interact with a hardware device at a Abstraction level rather than at a detailed hardware level.