The Internet of Things (IoT) is considered the next revolution in technology circles these days. With sky-high expectations on the value that a connected world of sensors, devices, and cloud infrastructures can bring, device manufacturers are rushing to offer ever more novel ways to connect devices and harness data to drive insights.
Operating systems for the IoT
It is thus not surprising that several development platforms have proliferated in a short span of time and are now competing to lure in developers and manufacturers alike. In keeping up with the trends of miniaturization in devices, ubiquitous internet connectivity has become a priority, and the marketplace is witnessing an explosion in hardware-platform options targeted at IoT implementations. Large scale deployments, however, require rapid development tools, standardization, easy maintenance, and porting of applications across a wide variety of hardware platforms. Only robust operating systems that are hardware agnostic can guarantee these capabilities. Windows, Apple iOS, and Android stand as prominent examples of the dominance and impact an operating system can have in shaping not just the evolution of new technology paradigms but also in controlling the availability of applications to serve stakeholder needs. Many vendors are now vying for similar dominance.
In this article, we examine the key requirements that characterize operating systems for IoT and distinguish between systems for devices/end nodes and gateways. We’ll also present an assessment of the key OS players in the space, market share trends, and the relative popularity of open sourced and proprietary systems.
Considerations for operating systems for IoT
Unlike personal computers and mobile devices, the architecture of IoT systems involves a large number of end-nodes (ex. sensors) connected to aggregating devices (gateways), which in turn are connected to remote cloud platforms. Figure 1 represents a simplified view of an IoT system.

Figure 1: An IoT system – from sensors to applications
The functions of sensor nodes and their form factors and target applications vary considerably and create context for the suitability of any specific operating system for IoT implementations. The key characteristics and requirements that differentiate OS for IoT are below:
• Small memory footprint – Sensor nodes are typically small and have limited memory available. This restricts the memory footprint of the OS
• Real-time capabilities – IoT applications like medical devices, automotive controls, and security systems are critical and require precision in timing. An IoT OS thus has to perform similar to real time operating systems that are deployed in industrial settings
• Energy efficient operation – Sensors nodes are characterized by low power draws and are often battery powered. Furthermore, it is commonly prohibitively expensive to replace batteries etc. It is thus crucial that the OS be highly energy efficient
• Hardware agnostic operation – Owing to the diversity of hardware platforms available for various IoT applications, it is important that the OS support a variety of platforms to simplify interconnectivity and drive standardization and to lower costs of ownership
• Network Connectivity & Protocol Support – Crucial to IoT device operation is continuous connectivity to the network and to devices in immediate proximity. This requirement is achievable by providing support for a variety of connectivity protocols like Wi-Fi, Cellular, Bluetooth, etc. Operating system should simplify the connectivity process
• Security – it is imperative that the OS for IoT adhere to strict security expectations and meet stringent requirements imposed by deployments in sensitive and critical settings
• Eco-system & Application Development – the degree to which the OS can act as an eco-system for application development can make a big impact on the speed of development and time-to-market. OS that come with toolkits to ease the development and deployment of IoT applications are clearly beneficial
Sensor end-nodes function as sensors or actuators, and at a basic level sense, they transmit and receive data. Gateways, on the other hand, are responsible for providing data services: routing, data shaping, and decision making. In addition, they act as firewalls to protect downstream devices (sensors, actuators, and other embedded systems). Gateways form the crucial bridge between the real-world devices and virtual IT environments. New generation IoT gateways open up huge opportunities to push processing closer to the edge, improving responsiveness and supporting new operating models. Full on-board processing capabilities allow gateways to filter out routine information and alert only on important events. Similarly, gateways can perform their own analytics and operations on real-time data and take independent action with minimal human intervention. To perform these important functions, additional requirements need to be met by the OS at the gateway level:
• Protocol Support and data bridge – In addition to supporting a variety of wired (USB, Serial, Ethernet, etc.) and wireless (Wi-Fi, BT, ZigBee, LoRA, etc.) protocols, the gateway OS should also support web protocols that typically have low transmission overhead like CoAP, MQTT, or UDP in addition to HTTP.
• Data aggregation, local processing and storage – The gateway OS should support decision making processes in real time and minimize the amount of data going to the cloud (ex: building management or video surveillance systems).
• Security – Gateway OS Security should afford protections at both the hardware and the network levels. Support for encryption, SSL/TLS certification management, user authentication, VPN connectivity, firewall, and application whitelisting is essential.
• Reliable communication to cloud-based IoT platforms – Capabilities to back up transmissions and to manage data and devices in the event of network disruption is a key attribute of OS at the gateway.
• End device management – Since a key function of gateways is end-device management, the OS should support remote upgrades, provisioning, and two-way communication to the cloud and the devices. Simultaneously, support for web-based tools to configure the gateways and end-devices is needed.
Clearly, the choice of operating system at the end-node and gateway can severely limit or dramatically enhance the capabilities and flexibility of IoT implementations. It is therefore necessary to make OS choices by carrying out a rigorous assessment of current and future needs of the IoT system. Both commercial off-the-shelf OS options and open sourced roll-your-own OS can be viable based on the needs of the application and skills of the implementation team. In the subsequent sections, we review the OS market for IoT.
IoT OS market landscape
Figure 2 portrays survey results when respondents are asked to identify which operating systems they employ for IoT. 70% of the respondents identify Linux as the OS of choice, and most other mainstream OS range in the single digit percentages. Windows Embedded comes in a distant second. It is not atypical for IoT ecosystems to consist of more than one OS to address the application space effectively.

Figure 2: Survey results for operating systems used for IoT devices (Source: IoT Developer Survey 2016)
In addition to supplying/supporting a variety of development tools and environments, operating systems for IoT gateways now furnish pieces of the entire software ecosystem. Elements of the ecosystem include aggregating IoT data, security and communications frameworks, and virtualization. Virtualization, which is used in under 20 percent of embedded projects today, is particularly attracting interest. These capabilities are afforded by feature rich traditional operating systems like Linux and Windows.
Linux dominates the OS market for gateways. Embedded Linux’s popularity is the result of important platform characteristics: reliability, configurability, and accommodation of low-energy and speed requirements for embedded devices. Beyond the technical attributes embedded Linux brings to IoT “openness” and the benefits of free-contributions from a vast army of development professionals. As with all open source operating systems, Linux delivers levels of transparency that traditional, proprietary technologies are reticent to provide. This transparency makes Linux highly flexible and amenable to easy customization to suit special purposes. Proprietary operating systems are particularly expensive when modifications are needed to match application requirements. With the full source code in hand, customizing an embedded Linux distribution to meet specific needs is a far simpler task. This flexibility, combined with consistency of behaviour across devices, architectural tiers, and physical, virtual, and cloud deployment environments gives Linux a position of advantage in the IoT OS landscape.
Windows 10 IoT Core is Microsoft's latest incarnation of OS for embedded development. Like other proprietary systems, Windows affords off-the-shelf functionality and easy integration to server and enterprise systems. These features greatly reduce time-to-market and also afford professional support. With variants suited for any size and type of applications (IoT Core, IoT Enterprise, and IoT Mobile Enterprise), the heavy lifting required in adapting to various device form factors and resources is eliminated. Android, despite dominating the consumer and handheld markets, is still an emerging OS in the embedded market. However, it is important to note that Android is expected to grow share in the coming years.
Traditional OSes are not suitable on low-end IoT devices as they cannot run on the limited resources afforded by the hardware. Simultaneously, some functions like wireless support are difficult to build from scratch without an operating system. For these situations, low footprint real-time operating systems (RTOS) have become the answer in recent years, and they are now increasingly being deployed in applications that previously had no formal OS. The advantages of openness have fueled the growth of several open source variants of RTOS such as FreeRTOS, mbed, Contiki, and TinyOS. In the commercial RTOS market, Micrium’s µC/OS is being more frequently adopted in a wide variety of IoT applications (Source: UBM 2015 Embedded Markets Study). The table below compares the architecture and features of various non-traditional open source OS for end-nodes.

Table 1: Overview of potential open-source OSes for IoT sensor nodes
(1) Target device class definition
a. Class 0 << 10kB data size (ex: RAM) and << 100kB code size (ex: Flash),
b. Class 1 ~10kB data size (ex: RAM) and ~100kB code size (ex: Flash), and
c. Class 2 ~50kB data size (ex: RAM) and ~250kB code size (ex: Flash)
(2) Mbed offers optional support for implementation of real-time functionality
Both traditional and emerging operating systems are making their mark in shaping the future of IoT. While they are occurring with startling rapidity, IoT developments are still in a nascent phase. As implementations become more complex and the feature sets offered by the various OS expand, it is likely that more standardization and application agnostic RTOSes will emerge.
Check list for choosing OS for IoT
Identifying application needs and matching OS capabilities to these needs is the first step in selecting an OS. Below is a list of criteria for choosing an OS for IoT that effectively considers the match between the capabilities of an OS and the needs of the IoT application.
1. Does the application need real-time or deterministic performance? “Real time” does not equate to “fast.” Instead, it connotes predictable or deterministic. It is important to consider the degree of predictably desired in the applications’ response to events and the impact of timing. UBM surveys reveal that real-time capability is the top reason for selecting a commercial operating systems.
2. What the available resources (memory, processing capability, etc.)?
a. Memory: Size is a major point of deliberation when considering an OS or an RTOS. If the OS does not fit in the internal memory of the processing unit (MCU or MPU), expensive external memory is required. Adding components increases the device form factor and the BOM costs.
b. Memory management unit (MMU): Many of the small MCUs used in sensor nodes do not support MMUs to manage caching, memory allocation, and protection. The chosen RTOS should be able to provide efficient memory management to minimize extra coding requirements.
c. Processing capability: CPU processing ability also dictates the optimal operating system. The processor should have enough margins to comfortably support the OS as well as run-time applications. This ensures a predictable performance, a key-requirement in IoT systems.
3. What are the security requirements? Security is a top consideration and should be accounted for in the hardware, OS, and network layers. Security features within the RTOS or OS include an integrated secure socket layer (SSL), drivers for on-chip security and encryption engines, secure boot functions, and support for wireless authentication protocols.
4. How is the device powered? Power efficiency is a major consideration for battery operated systems like sensor nodes. In certain cases, batteries need to last 10 years or longer. Although power usage is largely dependent on hardware selection, OSes that support power management features are able to efficiently manage applications to further improve battery life and heat dissipation.
5. What is the hardware chosen? The true value of IoT is in integrating devices from various domains and networks. As such, a wide range of HW platforms need to co-exist (example: 8-bit Atmel® AVR®, ARM® Cortex®-M, TI MSP430TM, etc.). The chosen OS should be able to support the various platforms, and efficient reuse of IP between platforms will go a long way in minimizing time-to-market. OS with a good hardware abstraction layer will enable easy adoption of new HW platforms and will require lower effort during migration of code.
6. What are the communication and networking requirements? Standardized communication protocols enable interoperability in IoT systems. TCP/IP protocols are inefficient for low-end devices in both data overhead and power consumption. Reduced overhead protocols such as CoAP and 6LoWPAN are highly efficient in constrained environments, and the operating system should support them.
7. Is enterprise system interoperability needed? It is necessary to consider process and systems used for the integration of field devices with enterprise systems. Microsoft Windows has an advantage here due to the large install base share of Microsoft in enterprise systems.
Effectively answering the above questions can help users avoid common pitfalls and mitigate the need for costly changes during implementation.
Summary
Operating system selection is crucial to the success of any IoT project. With a wide choice of OSes targeting the IoT space, it is important to understand the characteristic requirements for IoT in comparison to other settings like personal computers and phones. Ensuring the suitability of any particular OS to all components of the IoT ecosystem requires careful consideration. Linux currently dominates the OS market for IoT gateways. With the prevalence of both open source and commercial systems, the final choice is driven by the degree of development freedom and fast time-to-market considerations. With IoT, there is a wide variety of sensory devices that hitherto had no OS but are increasingly using small foot-print OSes. A wide variety of RTOSes targeting IoT end nodes are now available, and the numerous options vary in both capability and suitability for specific hardware architectures. Amidst all these developments, choosing the right OS for IoT implementations requires prioritizing for the optimal combination of OS feature sets.
