• No results found

Figure 3-2 – Comparing different operating system software stacks

• The kernel layer contains the low level functions such as device drivers that interact directly with the hardware such as the specific camera built into the device, the graphics card, and USB ports. There is also: low level networking functionality such as for a WiFi card, power management, memory management and file management as well as inter-process communication and threads between communicating software components. The Android operating system uses the open source Linux kernel [138] as the basis for its low level functions.

• The core OS libraries layer contains a multitude of libraries performing numerous functions supported by different programming languages. For example a library supporting graphics functions both feeds into the application services layer

Desktop (classic)

Applications

Browser (android browser) Email (GMail,Outlook,Molto

etc)

Word processor (officeSuite Pro, Google docs, etc)

Android Windows 8 Style (modern) Activity Manager Window Manager Package Manager Resource Manager Location Manager Telephony Manager Notification Manager Internet messaging (XMPP) User Interface: Languages and API: Applications: Window management (Windows Forms), Media streaming (Silverlight), Graphics (GDI/GDI+) user interface, User interface Language support, Network, Storage, Media, Security Runtime lib, Database (SQL) H/W accelerator (Open GL) ... Languages: C,C++,VB, .NET etc, Runtime libs, Win32 API, Database (SQL) H/W accelerator (Open GL)

Device drivers e.g camera / USB / display WiFi / Bluetooth etc, Low level networking, Power management, Memory management,

File management, Synchronisation, Inter-process communication Android core libraries &

Dalvik Virtual Machine, Web kit, Graphics (SGL)

Security (SSL) H/W accelerator (Open GL)

C language library (Libc) Media framework Surface manager Database(SQLite),

Applications:

Application Framework:

Libraries and runtime:

Core OS kernel drivers: Linux Kernel:

Device drivers e.g camera / USB / display WiFi / Bluetooth etc, Low level networking, Power management, Memory management, File management, Synchronisation Inter-process communication Kernel Core OS libraries Application services Languages and runtime APIs: Browser (Safari) Email (iOS mail, Boxer etc) Word processor (Quickoffice,

elements)

iOS

Apple Apps

User interface framework, Multitasking, High level system services,

System level services e.g networking, data, media, system configuration

Database (SQLite)

Media:

Core services:

Core OS:

Device drivers e.g camera / USB / display WiFi / Bluetooth etc, Low level networking, Power management, Memory management, File management, Synchronisation, Inter-process communication hardware accelerator Security framework Cocoa Touch: Multimedia streaming, Graphics & audio & video

management, Text kit, H/W accelerator (Open GL) Browser (iexplorer) Email (Outlook) Word processor (MS word) Browser (iexplorer) Email (Outlook) Word processor (MS word)

Browser (Firefox, Opera etc) Email (Thunderbird, Opera

mail etc) Word processor (Apache,

OpenOffice)

Linux

Eg. Ubuntu / Linux Mint / Debian / Fedora etc

Applications:

Desktops (KDE, GNOME, LXDE, XFLE, Cinnamon, MATE, LXQt, Budgie, etc) Gui interface/graphics (FLTK,GNUstep, GTK+) Window Manager(EFL) Windowing (X11,Wayland)

Gaming (SFML)

GNU open source packages

Linux Kernel:

Device drivers e.g camera / USB / display WiFi / Bluetooth etc, Low level networking, Power management, Memory management,

File management, Synchronisation Inter-process communication Security (SELinux, TOMOYO)

GNU desktops & interfaces

Media library (SDL) Database ( MySQL) Web server (Apache) System (systemd,runit) Software management (APT)

Graphics (Mesa, AMD Catalyst, Synaptic) Web scripting (PHP) C language library (glibc)

to support the drawing of graphical user interface (GUI) windows, and communicates with the graphics card device driver in the kernel. Other notable libraries at this layer include networking and web support, database functions such as support for the Structured Query Language (SQL), media support such as multimedia streaming, video and audio capabilities including CODECs (Coder Decoder: coding and decoding of media files), and security such as Secure Sockets Layer (SSL) for establishing encrypted links between web servers and browsers.

• The application services layer is the level at which application frameworks are created, with functionality such as window managers that control the position, style and timing of windows drawn on the display screen. The open source Linux software stack has separate windows managers and desktop software packages. The GNOME desktop, for example, uses the GTK+ toolkit containing a collection of applications to form a graphical environment which itself uses the X11 windowing application program interface (API). The multimedia streaming package in Windows 8 (Silverlight) is an application framework for browser multimedia applications and is used by Netflix for streaming films and television programs. The Android application framework is comprised of a number of managers controlling different aspects.

• The applications layer is where all the user software is found. Applications utilise the application services layer of an operating system, and sometimes libraries in lower layers to create interactive user software. Internet browsers for example sit at this layer for which there can be different products that are compatible with the same operating system such as Firefox and Opera (plus others) for Linux, or

different versions of a product across operating systems such as Firefox for Linux or Firefox for Windows.

There are compatibility issues between different software stacks due to dependencies on lower layer libraries, with often only one choice available for a specific function. It is only at the application layer where there tends to be more choice of software, particularly with the introduction of “pp stores . The evolving suite of open source Linux software modules however at lower layers provides a wider choice of functions that can be mixed and matched as appropriate with the added benefit of being compatible. The development of open source software within the IoT is also growing [139] [140] [141] [142] [143] [144] [145]. This increased use of open source could provide a natural method of software diversity since there can often be alternative choices of modules providing similar functionality. Additionally open source is constantly under scrutiny meaning bugs tend to be fixed quickly, and it costs less in monetary terms for the end user than proprietary counterparts making it a cost effective way of introducing diversity and fixing vulnerabilities.

3.2.2 The Future Topology of Connected Devices

In the past, society has seen the integration of mobile phone networks and the Internet using smartphone devices, third generation (3G) networks and protocols, local wireless access points using WiFi and wireless peer-to-peer communication using Bluetooth [146]. In the future, the IoT will combine enabling technologies with many different types of objects, for a vast range of applications requiring improvements in networks and services [8] [6] [147] (Figure 3-3). Traditional internet networks are based upon the application layer client-server model [129]. In

the future, the IoT is likely to be constructed from different topologies utilising a multitude of communication protocols, depending upon the connected devices and their application (Figure 3-3). There will be more localised peer-to-peer communication such as device to device (D2D) or machine to machine (M2M) making more use of protocols such as Bluetooth, or the fourth generation (4G) WiFi Direct and LTE Direct, or their fifth generation (5G) equivalents when they are released [146]. They may also be connected in an ad hoc fashion, as and when the services are required, such as in the case of moving phones or vehicles creating localised ad hoc networks [148].