The OSAL consists of a set of interfaces (abstract classes) that provide all the required operating system services for the application, including:
The OSAL separates the OXF from the underlying RTOS using the layered approach.

The OSAL supports each of these services by implementing thin wrappers around real operating system entities, adding minimal extra effort.
These abstract interfaces need an implementation, which is a set of concrete classes that inherit from the abstract interfaces and provide an implementation for the pure, virtual operations defined in the interface. The OSAL enables you to encapsulate any RTOS by changing the implementation of the relevant framework classes (but not their interface) to meet the requirements of the given RTOS.
Mediation between the concrete classes, which are RTOS-dependent, and the neutral interfaces is accomplished using an abstract factory class, which returns to the application the concrete class that implements a particular interface. This singleton class acts as a broker that constructs the proper adapter class once requested by the application. The OSAL classes describes the abstract factory in greater detail.
Most of the adapter classes have direct counterparts in the targeted RTOS and their implementation is straightforward. However, sometimes a certain operating system does not provide a certain object, such as a message queue. In this case, you must implement the object from primitive constructs.