net/publication/328031606
CITATIONS READS
0 85
4 authors:
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Mahmoud H. Qutqut on 02 October 2018.
Abstract: The Internet of Things attract a great deal of research and industry attention recently and are envisaged to support
diverse emerging domains and disciplines including smart cities, health informatics, and smart sensory platforms. Operating sys-
tem support for IoT plays a pivotal role in developing scalable and interoperable applications that are reliable and efficient. IoT is
implemented by both high-end and low-end devices that require operating systems. Recently, we have witnessed a diversity of
OSes emerging into the IoT environment to facilitate IoT deployments and developments. In this paper, we present a comprehen-
sive overview of the common and existing open source OSes for IoT. Each OS is described in details based on a set of designing
and developmental aspects that we established. These aspects include architecture and kernel, programming model, scheduling,
memory management, networking protocols support, simulator support, security, power consumption, and support for multimedia.
We present a taxonomy of the current IoT open source OSes. The objective of this survey is to provide a well-structured guide
to developers and researchers to determine the most appropriate OS for each specific IoT devices/applications based on their
functional and non-functional requirements. We remark that this is the first such tutorial style paper on IoT OSes.
3.2 Programming Model and Development Environment Another important aspect of choosing or designing an OS is the com-
munication and networking protocol supported. Protocols specify
Programming model represents the style of programming applied to interactions among different communicating entities. They exist at
create a software which is primarily used to guide the development different levels in a telecommunication connection [37]. Choosing
through programming languages. Many factors influence the choice an optimized communication and networking protocol for a particu-
of an appropriate programming model such as concurrency control lar application is highly essential [37]. Especially, with a wide range
mechanism, memory hierarchy design, and other factors [31]. There of communication and networking protocols such as WiFi, ZigBee,
are two types of programming models, Multithreading, and event- Bluetooth and 2G/3G/4G cellular technologies, etc. [37]. There are
driven programming [31]. Multithreading is the most familiar model also several new growing communication and networking protocols
for developers, but it is not considered well suited for resource- such as, Thread as an alternative for home applications, and Whites-
constrained devices such as sensors. Event-driven programming is pace TV technologies that can be applied in cities. Relying on the
the most common model for writing programs. It is useful for application and its factors such as data requirements, security, power
developing IoT devices but deemed inconvenient for traditional consumption will dictate the choice of the most appropriate commu-
application developers [27]. nication and networking protocols [38]. IoT devices can be directly
Sometimes the behavior of devices and their algorithms may connected using cellular technologies such as 2G/3G/4G cellular,
need to be modified either because of their functionality or energy- or they can be connected through a gateway, making a local area
consumption properties. Hence, the OS should be able to be repro- network (LAN), to get a connection to the Internet [37, 38]. The
grammed and upgraded when required [32]. However, a development mentioned technologies of ubiquitous computing such as embedded
kit (SDK) for an OS provides the software framework for the sensors, light communication, and Internet protocols are essential
programmers for interfacing with different microcontrollers, sen- for IoT [37]. However, they impose several challenges and introduce
sors, and devices to run on IoT devices. SDK consists of a set of the need for specific standards and communication protocols [37].
cannot run by traditional OSes. An example of low-end IoT devices component to do a specific task. Events are mechanisms for enter-
is Arduino. ing component communication, while tasks are used to represent
In this paper, we target the most used and state of the art open component concurrency [49].
source IoT OSes due to the limit on the number of pages. For
the closed source IoT OSes, we recently published a paper on this 5.1.1 Architecture and kernel models: TinyOS has a mono-
topic [46] . Fig. 2 shows a proposed taxonomy of open source IoT lithic architecture and uses a component-based architecture depends
OSes based on low-end or high-end IoT devices, and on Linux based on the application requirements. This reduces the size of the code
and non-Linux based from a high-level perspective either. needed to setup hardware [47]. Different components are grouped
with the scheduler to run on the mote platform. The mote plat-
form has very insufficient physical resources depending on which
5 Operating Systems for Low-End IoT Devices components are active. Typical TinyOS motes consist of a 1-MIPS
processor and tens of kilobytes of storage. A component is an inde-
In this section, we will describe the most widely used low-end OSes pendent computational element that shows one or more interfaces.
for IoT devices from the aspects and criteria presented in Section 3. Components have three computational abstractions; commands,
The main objective of this section is to provide an exhaustiveness events, and tasks. Mechanisms for inter-component communica-
understanding of each low-end IoT OS. tion are commands and events; whereas tasks are used to express
intra-component concurrency. A command is a request to perform
some service while the event signals represent the completion of
5.1 TinyOS service [27, 47]. Fig. 3 shows the architecture of TinyOS. The
scheduler schedules operation of those components. Each compo-
TinyOS is an open source non-Linux based operating system nent consists of four parts; command handlers, event handlers, an
designed explicitly for low-end IoT devices, embedded and wire- encapsulated fixed-size frame, and a group of tasks. Commands and
less devices such as sensor node networks, smart buildings, and tasks are performed in the context of the frame and operate on its
smart sensory platforms [47]. TinyOS is built based on a set reusable state. Each component declares its commands and events to allow
software component [47]. It is written using NesC programming the modularity and easy interaction with other components [32].
language; which has a similar syntax to C language [47]. Each
TinyOS component has a frame and a structure of private vari- 5.1.2 Programming model and development environment:
ables. These components have three computational abstractions; TinyOS supports an event-driven concurrency model which consists
commands, events, and tasks [47, 48]. Commands are used to call a of split-phase interfaces, deferred computation, and asynchronous
5.4 LiteOS
5.5 FreeRTOS
5.5.10 More about FreeRTOS: This OS is recommended to 5.7.1 Architecture and kernel models: ARM Mbed OS sup-
handle time-critical tasks that require user control and sensor moni- ports monolithic architecture [25]. ARM Mbed OS runs on 32-
toring as it can be handled through multiple threads, software timers, bit ARM embedded architecture and supports a few other plat-
and semaphores along with tickless mode for low consumption of forms [91]. Fig. 8 shows the architecture of ARM Mbed OS and
resources while running various applications. its different layers.
5.7.2 Programming model and development environment:
5.6 Apache Mynewt OS ARM Mbed OS uses a single thread and adopts an event-driven pro-
gramming model [91]. ARM Mbed OS is developed using C and
Apache Mynewt is an open source, Linux-based and real-time oper- C++ programming languages. Moreover, it has many programming
ating system originally developed by Runtime Inc. and hosted by features that allow developers to select from different types of micro-
Apache. Mynewt OS targets low-end devices that have limited mem- controllers. Also, Mbed API can keep application code readable,
ory and storage capabilities that need to operate for a long time under simple and portable [91].
power constraints. Additionally, Mynewt OS has many powerful fea-
tures such as precise reconfigurability of concurrent connections and 5.7.3 Scheduling: Mbed OS includes a basic non-preemptive
granular power controls [87]. scheduler with limited synchronization and communication primi-
tives to support its communication and cloud protocols [91].
5.6.1 Architecture and kernel models: Mynewt OS has a
modular architecture. Mynewt targets ARM Cortex M0 to M4 5.7.4 Memory management and performance: ARM Mbed
and RISC-V architectures with a plan to extend the hardware sup- OS supports dynamic memory allocation [91].
port to MIPS architecture [88]. Also, Mynewt OS is supported
5.7.5 Communication and networking protocols support:
on the Arduino Zero, Arduino Zero Pro, and Arduino M0 Pro
Mbed OS provides support for many communication protocols such
processors [87–89].
as WiFi, Bluetooth low energy, Lightweight M2M (LwM2M), and
5.6.2 Programming model and development environment: Ethernet [93]. Also, it supports several networking protocols includ-
Mynewt OS supports multithreading tasks [89]. Developers can ing HTTP/CoAP stack with TLS and DTLS for end-to-end IP (v4
debug code by setting breakpoints, avoiding stack smashes and and v6) security with 6LoWPAN, SSL, and MQTT [10, 92].
eliminating stolen interrupts [89]. 5.7.6 Simulation support: Mbed OS can be simulated using
QEMU, which is a generic and open source machine emulator and
5.6.3 Scheduling: Mynewt OS supports tickless preemptive
virtualizer [94].
priority-based scheduling [89].
5.7.7 Security: Untrusted and malicious codes are blocked in
5.6.4 Memory management and performance: Mynewt OS Mbed OS for IoT platforms as the communications between device
supports memory heap and memory pool allocation [87]. and cloud, and the life cycle of the system itself occurs through uVi-
sor which separate security domains on Arm Cortex-M3, M4 and M7
5.6.5 Communication and networking protocols support:
microcontrollers with a Memory Protection Unit (MPU) [91].There
Mynewt OS provides full support for the TCP/IP suite. It also
are two mechanisms to guarantee security in Mbed by integration
supports protocols for constrained networks such as CoAP and
with the application development. The first is Mbed TLS for crypto-
6LoWPAN [87]. Also, Mynewt OS has full implementation of the
graphic and SSL/TLS capabilities. The second is Mbed OS uVisor
Bluetooth low energy 4.2 stack, Bluetooth mesh, LoRa PHY and
for hardware-enforced secure domains [94].
LoRaWAN [87].
5.7.8 Power consumption: The Mbed OS has support for an
5.6.6 Simulation support: Mynewt can be simulated using the advanced power management technique that increases power effi-
QEMU emulator. ciency and improves throughput [94]. This technique allows to turn
5.6.7 Security: Apache Mynewt OS enables secure remote
updates to maintain ongoing security. Also, Mynewt OS provides
safe bootloader to verify firmware integrity and authenticity [89],
and uses Security Manager Protocol (SMP) for pairing and transport
specific key distribution for securing radio communication [89].
Raspbian is an open source Linux-based operating system for high- Pi Mode Pi State Power Consumption
end devices based on Debian (Linux) and optimized for Raspberry Pi
hardware [101]. Raspbian provides more than 35,000 packages that
can be installed from the terminal. It has a pre-compiled software in A+ Idle, HDMI disabled, LED 80 mA (0.4 W)
a simple format for easy installation [102]. Raspberry Pi (RPi) is a disabled
credit-card-sized and inexpensive single board computer that can to
be run by Linux and other lightweight OSes [103]. It can be run on A+ Idle, HDMI disabled, LED 160 mA (0.8W)
multiple low-performance ARM processors [103]. disabled, USB WiFi adapter
6.2.1 Architecture and kernel models: Similar to uClinux B+ Idle, HDMI disabled, LED 180 mA (0.9W)
OS, Raspbian OS follows a monolithic architecture [105]. Fig. 10 disabled
shows the architecture of Raspbian OS.
B+ Idle, HDMI disabled,LED 220 mA (1.1W)
6.2.2 Programming model and development environment: disabled,USB WiFi adapter
Like uClinux OS, Raspbian OS supports multi-threading [106]. It is
written using Python programming language, and the code can be model 2 B Idle, HDMI disabled, LED 200 mA (1.0W)
modified according to the requirements of an application [106]. A disabled
considerable number of programming languages have been adapted
for Raspbian OS such as Python, C, C++, Java, Scratch, and Ruby; model 2 B Idle, HDMI disabled, LED 240 mA (1.2W)
all installed by default on the Raspbian OS [106]. Also, scripting lan- disabled,USB WiFi adapter
guages such as HTML5, Javascript, and JQuery are supported [106].
6.2.3 Scheduling: Raspbian utilizes real-time preemptive schedul- Zero Idle, HDMI disabled, LED 80 mA (0.4W)
ing [107]. disabled
6.2.4 Memory management and performance: Raspbian Zero Idle, HDMI disabled, LED 120 mA (0.7W)
OS supports a virtual memory technique that is performed by hard- disabled, USB WiFi adapter
ware through MMU. Raspbian also offers virtual memory swapping
which divides the hard disk into parts to exchange fractions of
main memory. Hence, allowing occupied regions that did not take
sufficient time to become available for allocation [105]. Raspbian repositories. Customized security requirements can be eas-
ily integrated into Raspbian OS even if it requires modification
6.2.5 Communication and networking protocols support:
in core libraries. Encryption algorithms such as AES 128, AES-
Raspbian OS supports a wide range of communications through SPI,
256, DES, and Blowfish are available in all framework libraries in
UART, I2c, and USB. It also implements the full stack of TCP/IP
addition to HTTPS and VPN protocols [106]. Selective encryption
and Bluetooth. Similar to other Linux distributions, Raspbian OS
algorithms for multimedia streaming are also supported in Raspbian
has support for almost all networking protocols that are imported
OS [108].
from Debian distribution. In addition, a free open source library for
LTE and other wireless protocols are available to be used easily with 6.2.8 Power consumption: One of the great things about creat-
Raspbian [106]. ing a cluster with ARM-based processors is low power consumption;
6.2.6 Simulation support: Raspbian OS can be simulated each RPi uses about 2 W of power (when running at 700 MHz) [103].
using QEMU ARM which is a CPU architecture emulator and virtu- Raspbian OS power consumption is based on the RPi boards used
alization tool. QEMU is capable of emulating an ARM architecture and type of applications running on the device itself. Table 1 sum-
which is very similar to the RPi boards. This allows booting an RPi marized the power consumption using different RPi boards [106].
image directly to x86 or x86-64 systems. However, to deal with the
QEMU virtualized hardware which is not a core component of the
Raspberry Pi, Raspbian OS must have a Raspberry Pi kernel for 6.2.9 Supporting multimedia: Raspbian OS can perform live
QEMU to control the QEMU kernel image [103]. audio and video streaming by using SIP and RTP protocols [106].
Raspbian OS employs CELP compression algorithms to ensure low
6.2.7 Security: Raspbian OS supports many encryption, authen- latency and high-quality communication [102, 104]. Moreover, it
tication and authorization techniques that suit most IoT applications. supports HD videos and music [106]. Also, GStreamer is supported
The open source community provides support for this operating on Raspbian OS; which supports streaming, encoding and packing
system and for most encryption algorithms that are available from of various multimedia formats such as flv and H264 [106]. A full
list of supported plugins can be found in [101]. In addition, a special
camera module is available for RPi boards and Raspbian OS [106].
The module supports 1080p30, 720p60 and VGA90 video modes.
The camera is connected through CSI port available on RPi, and
there are several third-party libraries built for it, including the Python
Picamera library [106].
6.3.2 Programming model and development environment: Other Open Source OSes
Similar to Raspbian OS, Android Things OS supports multithreading
and a number of Android SDKs, such as APIs and AdMob where There are a few open source OSes that are still growing and not
authentication is required for user input [112]. Moreover, Android popular or deprecated that are not covered in this paper such as
Things OS developers can develop their programs using C and C++ Pyxis, Ubuntu Snappy Core, and Ostro. For example, through many
programming languages in addition to Java [111]. searches, we revealed very little about Pyxis OS which has been dep-
recated and replaced by Pyxis 2. It does not seem to be a PPC64, nor
6.3.3 Scheduling: Android Things OS scheduler supports it is CentOS/Linux-based. It looks like a custom OS written in C#
either prioritized preemptive or cooperative depending on the con- for Arduino microcontrollers. It also appears to be a small project
figuration of the scheduler [113]. developed around 2010 with no updates afterward. Other Operating
systems still work very hard to shine in the field, but the competition
6.3.4 Memory management and performance: Android is high as this area is growing dramatically.
Things OS implements dynamic memory allocation through system
calls [77] and it has small memory footprint [111].
7 Comparisons of IoT Operating Systems
6.3.5 Communication and networking protocols support:
Android Things OS supports WiFi, BLE, ZigBee, IPV6 and other In this section, we provide several summarized tabular overviews
networking protocols [112]. of all operating systems listed in this survey. Table 2 summarizes
the programming features of all operating systems discussed in this
6.3.6 Simulation support: Android Things OS is not yet sup- paper. This table lists the programmability features for each OS in
ported on Android Studio AVD as other Android platforms. How- terms of the kernel and architectural usage for a basic application,
ever, it can be employed on RPi 3, Intel Edison, and NXP Pico in scheduling type, programming model, supported programming lan-
order to be used for the initial Simulation [111]. guage, the ability of reprogramming, and supporting of real-time.
We noticed that the common programming languages used in IoT
6.3.7 Security: As Android Things OS is an open software OSes include C, C++, and Java. Java always runs on top of an IoT
based on Android, it allows building applications smoothly and OS. So, the choice is not between C/C++ or Java; it is whether C or
quickly. Hence, there will be more security loopholes such as C++ and Java.
virus attacks and hacking [111]. Android Things OS uses verified Table 3 provides a summary of the hardware requirements for the
secure boot and signed over-the-air updates which make it more surveyed IoT OSes. This table defines the operating system hardware
secure [111]. Android Things OS provides full disk encryption so configuration requirements in terms of RAM and ROM usage for a
all data will be protected. Everything on the drive will be encrypted basic application, processor, and main supported hardware platform.
including the files which keep exact copies of the data that the user The purpose of hardware specifications is to give appropriate design
has been working on such as temporary files [111]. decisions for devices that will run by IoT OSes.
Finally, we briefly summarize the primary technical aspects of
6.3.8 Power consumption: Android Things OS is running on IoT OSes in Table 4. It highlights implementation aspects in terms of
WiFi and Bluetooth Low Energy using the minimum system require- the remote scriptable wireless shell, remote file system interface for
ments such as low memory and small processors. Hence, it needs less networked nodes, file system, online debugging, dynamic memory,
power requirement to run [111]. simulation support, and list of supported network technologies and
protocols.
8 Conclusion
The proliferation of the Internet of Things (IoT) is dramatically
increasing and already covers many prominent domains and disci-
plines such as smart cities, smart sensory platforms, and intelligent
transit systems. Operating System (OS) support is vital in facili-
tating the development and subsistence of IoT. In this paper, we
provide a comprehensive study of the most used and state-of-art
open source OSes for IoT. We first investigate the design and
development aspects of IoT OSes. Then, we propose a taxonomy
Fig. 11: The Architecture of Android Things OS (reproduced to classify and categorize the state-of-the-art and most used IoT
from [111]) OSes. We provide an extensive overview of open source IoT OSes
where each OS explained in details based on the established design- choosing an appropriate OS for IoT applications is critical to the suc-
ing and developmental aspects. These aspects are; architecture and cess of IoT deployments and implementations. The developer must
kernel models, programming model and development environment, carefully study the strengths and weaknesses of the candidate OSes
scheduling, memory management and performance, communication to make the best choice. As each IoT OS has its pros and cons that
and networking protocols, simulator, security, power consumption, can be used to identify the appropriate operating system based on
and multimedia support. We survey each OS’s characteristics, advan- the functional, non-functional, power consumption, sensors connec-
tages, and disadvantages. Also, several comparisons concentrating tivity, communication methods and many other requirements. Thus,
on the similarities and differences between the discussed OSes are this research is designed to bridge the existing gap in knowledge
presented. We remark that this is the first such tutorial style paper on of the adoption and implementation of OSes for IoT from different
IoT OSes. aspects. This survey provides an easy to follow and well-structured
Finally, we argue that each IoT OS has some limitations depend- guide in a tutorial style for researchers and developers targeting IoT
ing on the targeted deployment scenario. For that reason, it is OSes.
challenging to have an OS that satisfies all requirements. Moreover,
Acknowledgement
This work made possible by a financial support from Applied
Table 3: Recommended hardware requirements for IoT OSes. Science Private University in Amman, Jordan.
OS Remote Remote file File system Online Dynamic Simulator Network Stack and
scriptable system Debugging memory Supported protocol Supported
shell
TinyOS No1 No Single Yes4 No TOSSIM, BLIP, TinyRPL,
level (ELF, PowerTossim CoAP, WiFi, LTE,
Matchbox) MQTT, LoWPAN,
TCP, BBR, IPv6,
Bletooth, Multi Path
Routing
Riot OS Yes Yes Hierarchical Yes Yes Cooja simulator TCP, UDP, IPv6,
6LoWPAN, RPL,
CoAP, CBOR, UBJ-
SON, OpenWSN,
WiFi, Bluetooth, LTE,
MQTT
LiteOS Yes3 Yes Hierarchical Yes Yes AVRORA simulator NBIoT, 6LoW-
Unix-like PAN, ZigBee, LTE,
Bluetooth
FreeRTOS Yes Yes Hierarchical Yes Yes QEMU uIP, lwIP, TCP, LoW-
PAN, CoAP, MQTT
Mynewt Yes Yes Hierarchical Yes Yes QEMU BLE, IPv6, 6LoW-
PAN, HTTP, TCP,
CoAP, MQTT,
UDP, LoRa PHY,
LoRaWAN
uClinux Yes Yes Hierarchical Yes Yes GDB/ ARMulator uIP, lwIP, WiFi, Blue-
tooth, LTE, IPv6,
MQTT
Raspbian Yes Yes Hierarchical Yes Yes QEMU RTP, LTE, HTTP,
TCP, MQTT
Android Yes Yes Hierarchical Yes Yes RPi 3, Intel Edison, IPv6, Zigbee, Z-Wave,
Things and NXP Pico Bluetooth Smart
1
Through the application specific shell such as Simple cmd exists.
2
Through the mote shell.
3
Through the base PC, Unix commands.
4
Through the Clairvoyant.
pp. 2347–2376. 17 D. Miorandi, et al.: ’Internet of things: Vision, applications and research chal-
10 Why the Need for Special Operating Systems for IoT and Wearable Devices?, lenges’, Ad Hoc Networks, 2012, 10, (7), pp. 1497–1516.
available at https://dzone.com/, accessed Jun 2017. 18 F. Al-Turjman, and S. Alturjman, âĂIJContext-sensitive Access in Industrial
11 Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update, Internet of Things (IIoT) Healthcare ApplicationsâĂİ, IEEE Trans. on Industrial
2016-2021, available at https://www.cisco.com/. Informatics,14, (6), pp. 2736–2744, 2018.
12 M. Razzaque, et al.: ’Middleware for Internet of Things: A Survey’, IEEE Internet 19 R. Roman, J. Zhou, and J. Lopez: ’On the Features and Challenges of Security
of Things J., 2016, 3, (1), pp. 70–95. and Privacy in Distributed Internet of Things’, Comput. Networks, 2013 57, (10),
13 R. Roman, P. Najera, and J. Lopez: ’Securing the internet of things’, IEEE Comput. pp. 2266–2279.
Networks, 2011, 44, (9), pp. 51–58. 20 C. Balakrishna: ’Enabling Technologies for Smart City Services and Applications’,
14 Internet of Things (IoT) Connected Devices Installed Base Worldwide from 2015 in Proc. IEEE Int. Conf. on Next Generation Mobile Applications, Services and
to 2025 (in billions), available at https://www.statista.com/, accessed Aug 2017. Technologies (NGMAST), Paris, France, Sept 2012, pp. 223–227.
15 J. Lee, Y. Sung, and J.Park: ’Lightweight Sensor Authentication Scheme for 21 L. Wang and C. Alexander: ’Big Data Analytics and Cloud Computing in Internet
Energy Efficiency in Ubiquitous Computing Environments’, Sensors, 2016, 16, (12), of Things’ (Wiley, 2016, 1st edn.).
pp.2044–2059. 22 C. Sarkar, et al.:’DIAT: A Scalable Distributed Architecture for IoT’, IEEE Internet
16 S. Tarkoma and H. Ailisto: ’The Internet of Things Program: The Finnish of Things J., 2015, 2, (3), pp. 230–239.
Perspective’, in IEEE Commun. Mag., 2013, 51, (3), pp. 10–11.