To the use of those devices in critical

To enable good usability and connectivity between different devices operating systems should support common network protocols such as 6LoWPAN, IEEE 802.15.4 and Bluetooth for low power data transfer and reliability in lossy networks. Because of the growing amount of devices connected in IoT networks the usage of IPv6 is obligatory to provide unique addresses for each device.~cite{reviewOS}item Another important point is standardization. The system should support standard protocols e.g. TCP/IP and certain APIs as well as standard programming languages to reduce complexity and to act developer-friendly.~cite{baccelli} POSIX compliance also helps to ensure compatibility between different applications and operating systems.item In order to establish a huge user and developer community, providing development tools and a developer-friendly environment is necessary.item Furthermore, the OS should offer a high security and privacy standard extbf{ as well as regarding the augmentation of IoT devices in future and the use of those devices in critical infrastructures}. Therefore authentication, data integrity and access control are essential.~cite{OSDevicesIoT}item Also significant are regular software updates to stay up-to date and maintain the system.end{itemize}According to the requirements an operating system should fulfill there is the need to consider the system’s architecture. The kernel can be built by using different approaches. The choice of the structure will determine the architecture and how modular the system will be. The most simple way to structure a kernel is in a monolithic way. This approach is efficient and works well within smaller environments. But it will become hard to understand and to expand when the size of the system exceeds a certain level. Furthermore, maintenance is not easy for huge systems because the whole kernel needs to be recompiled after bug fixing and it can be hard to keep the overview of dependencies throughout the whole kernel.~cite{baccelli}
ewline The microkernel approach is modular and more fault tolerant compared to the monolithic kernel. The main concept here is to split the system into smaller pieces that only include the most necessary parts that the system needs to work with. This will make the OS easier to expand afterwards, but at the same time the system will be slower because of the split structure. Furthermore, due to the lack of a memory management unit (MMU) in IoT systems, the risk of buffering and stack overflows increases which will have negative influence on the system.~cite{OSDevicesIoT}
ewline Another possibility to structure the kernel is an exokernel. The main approach here is to provide a communication as effortless as possible between hardware and application layers, which means that there are as few abstractions between those two parts as possible. ~cite{OSDevicesIoT}
ewlineWhen choosing the structure of the kernel, the decision is based on the question what kind of system to develop. If the system requires more robustness and flexibility a microkernel should be chosen. But if a more efficient and less complicated system is needed a monolithic kernel should be chosen. In most cases a hybrid approach is used. That is a combination between microkernel and monolithic structure.~cite{OSDevicesIoT}
ewlineAnother part of operating systems that is influencing its functionalities is the scheduler. It is for instance acting on energy efficiency, on the programming model and on how real-time responsive the system can be. Usually the scheduler is either Preemptive or Cooperative (non-preemptive). Preemptive Schedulers are able to interrupt running tasks and assign CPU time to another task according to the schedulers metrics (e.g. time, priority, etc.).
ewlineIn cooperative scheduling every thread works on its own and can not be interrupted except for the kernel itself. So every task needs to wait for the former task to execute. Sometimes there are different schedulers available for an operating system and the choice can be made during its build time