With the layered approach, the bottom layer is the hardware, while the highest layer is the user interface. The main advantage is simplicity of construction and debugging. The main difficulty is defining the various layers. The main disadvantage is that the OS tends to be less efficient than other implementations.