An operating system has a complex structure that is broken down into components and layers to simplify its design and implementation. There are several common structures used to implement operating systems, including simple, monolithic, layered, and micro-kernel structures. In a layered structure, the operating system is divided into hierarchical layers with hardware on the bottom layer and the user interface on the top layer. A micro-kernel structure designs the operating system by removing non-essential components and implementing them as separate user programs or services.