Choose a perfect IoT Operating system for your IoT operation...!!!
Published: 2020-07-31 10:22:49

First of all, what is an embedded OS:-An embedded operating system (OS) is a specialized operating system designed to perform a specific task for a device that is not a computer. The main functions of an embedded operating system are to run the code that allows the device to do its job and it also makes the device’s hardware accessible to the software that is running on top of the OS.

Some examples of the embedded operating system are:-
__-Symbian:__ It is used in mobile phones mainly in Nokia.
__-BlackBerry Operating System:__ It is particularly used in BlackBerry Phones.
__-Embedded Linux:__ It is used in Android phones and other devices
like printers.
__-IOS:__ It is used in MAC operating systems and other Apple devices.
__-Windows Mobile Operating System:__ It is used in window phones.

While in the other hand an IoT Operating system is an operating system that is designed to perform within the constraints that are particular to the Internet of Things devices, including restrictions on memory, size, power, and processing capacity. IoT operating systems are a type of embedded OS but by definition are designed to enable data transfer over the internet.
The use of operating systems for IoT hardware is often categorized into two groups: end devices and gateways. End devices or nodes are often a lot smaller in capability as compared to gateways.
While IoT OS is an evolution of embedded OS, IoT brings its own additional set of constraints that need to be addressed. A mix of open source and closed source IoT OS exist in the market.

Examples of IoT Operating system:-TinyOS, RIOT, Contiki, Mantis OS, Nano RK, LiteOS, FreeRTOS, Apache Mynewt, Zephyr OS, Ubuntu Core 16, ARM mbed, Yocto, Raspbian, Andriod Things, Huawei LightOS, Snappy, etc.![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/tpw8zo1i1nn7wyby99ms.jpg)
Some of these have come from academic institutions. TinyOS and Contiki are among the oldest. RIOT is more recent and has an active community of developers. FreeRTOS is among the popular ones apart from Linux and Windows.

The top 5 IoT operating systems which are mostly preferred by newcomers are TinyOS, RIOT, Contiki,  Amazon FreeRTOS, Raspberry Pi OS.

__TinyOS:-__TinyOS is a component-based open-source operating system. The core language of TinyOS is nesC which is a dialect of C language. TinyOS is popular among developers for its memory optimization characteristics. A component of TinyOS neutralizes some abstractions of IoT systems, for example, sensing, packet communication, routing, etc. The developer group of this IoT Operating System is TinyOS Alliance. (Tutorial-http://tinyos.stanford.edu/tinyos-wiki/index.php/TinyOS_Tutorials)
__-RIOT:-__Riot is one of the free open-source IoT operating systems built for IoT services. RioT has a huge development community, and it was released under an unclonable GNU Lesser General Public License. For these two reasons, RioT is called Linux of the IoT world. Academics, hobbyists, and different companies put their contributions together to develop Riot Operating System. (Tutorial-https://github.com/RIOT-OS/Tutorials)
__-Contiki:-__Invented in 2002, Contiki is an open-source IoT operating system particularly popular for low power microcontrollers and other IoT devices to run effectively using Internet protocol IPv6, and IPv4. These operating systems support wireless standard CoAP, 6lowpan, RPL. Mostly this IoT OS is very suitable for low powered internet connectivity. (Tutorial-https://www.youtube.com/watch?v=tVsYMb2Y5QU)
__-Amazon FreeRTOS:-__Amazon FreeRTOS is an open-source microcontroller-based operating system for IoT development invented by Amazon. Enriched software libraries make it easy to connect with small IoT devices. This IoT Operating System uses the cloud service of Amazon Web Service called AWS IoT Core to run the IoT applications. The memory footprint is only 6-15kb which makes it a more adaptable small powered microcontroller. (Tutiorial-https://www.freertos.org/tutorial/index.html)
__-Raspberry Pi OS:-__Raspberry Pi is one of the most used devices for IoT development, and Raspbian is its own operating system. Raspbian is highly flexible for Raspberry Pi lines CPUs. Raspbian provides a huge number of pre-installed IoT software for general use, experimental, educational purposes, etc. This is Debian based IoT Operating System for all models of Raspberry Pi. (Tutorial:-https://jsandler18.github.io/)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4ipwaq7mf82d5qtzdx2a.png)

_And Finally how to choose an operating system for your needs._

According to the parameters, you should choose an IoT Operating System:-
__-Footprint:__ Since devices are a constraint, we expect OS to have low memory, power, and processing requirements. The overhead due to the OS should be minimal. The size of RAM and ROM pre-required for the operation plays a vital role in the selection of OS and hardware.
__-Portability:__ OS isolates applications from the specifics of the hardware. Usually, OS is ported to different hardware platforms and interfaces to the board support package (BSP) in a standard way, such as using POSIX calls.
__-Modularity:__ OS has a kernel core that’s mandatory. All other functionality can be included as add-ons if so required by the application. (The kernel is responsible for memory management, process and task management, and Disk management. The kernel connects the system hardware to the application software.)
__-Connectivity:__ OS supports different connectivity protocols, such as Ethernet, Wi-Fi, BLE, IEEE 802.15.4, and more. You should check whether the os is supporting the latest internet protocols or not.
__-Scalability:__ OS must be scalable for any type of device. This means developers and integrators need to be familiar with only one OS for both nodes and gateways.
__-Reliability:__ This is essential for mission-critical systems. Often devices are at remote locations and have to work for years without failure. Reliability also implies OS should fulfill certifications for certain applications. (DO-178B, IEC 61508, ISO 62304, SIL3/SIL4 IEC are some examples of certification for IoT OS)
__-Security:__ OS has add-ons that bring security to the device by way of secure boot, SSL support, components, and drivers for encryption. Security plays a very vital role in IoT OS because if it is ignored your system may get hacked and it will result in the break down of the whole system.

These were some of the factors one should keep in his/her mind while he/she is going to work in this field. Apart from these, one thing which really matters for a newbie is, community support and easy availability of tutorials, because many of these are still in development and some of the OS are getting regular updates and some are not so while choosing it one should also keep this in his mind and you should also see which programing language is used and whether you are comfortable with it or not.

At last, I want to say you choose your desired IoT operating system wisely and start working on it because IoT is going to lead us to a new tomorrow and IoT OS is playing a vital role in its development.
So, guys, this is my first post and am waiting for all of your reviews, comments, and doubts. Please feel free to comment.
Thank You...!!!