An operating system (OS) is a collection of programs that control the application software that users run and provide a link between the hardware and software currently running on the computer. The OS is also responsible for management and control of all resources such as memory, hard drive and monitor that are shared among the different application programs that may be running simultaneously.
A mobile OS is an OS for devices such as smartphones, tablets, PDAs and other mobile devices.
iOS (originally iPhone OS) is a mobile OS developed by Apple Inc. and distributed exclusively for Apple hardware. It was unveiled with the iPhone at Macworld Conference & Expo on January 9, 2007, and released in June of that year.
The iOS software development kit (SDK) contains the tools and interfaces needed to develop, install, run and test native apps that appear on an iOS device’s Home screen. Native apps are built using iOS system frameworks and Objective-C language and run directly on iOS. Unlike Web apps, native apps are installed physically on a device and are therefore always available to the user, even when the device is in Airplane mode. These reside next to other system apps, and both the app and any user data is synced to the user’s computer through iTunes.
At the highest level, iOS acts as an intermediary between the underlying hardware and the apps you create. Apps do not talk to the underlying hardware directly. Instead, these communicate with the hardware through a set of well-defined system interfaces. These interfaces make it easy to write apps that work consistently on devices having different hardware capabilities.
The implementation of iOS technologies can be viewed as a set of layers, which are shown in Fig. 3. Lower layers contain fundamental services and technologies. Higher-level layers build upon the lower layers and provide more sophisticated services and technologies.
Cocoa Touch layer. This layer contains key frameworks for building iOS apps. These frameworks define the appearance of an app. These also provide the basic app infrastructure and support for key technologies such as multitasking, touch based input, push notifications and many high-level system services.
High-level features available in Cocoa Touch layer are App extensions, Handoff, AirDrop, TextKit, UIKit Dynamics, Multitasking, Auto Layout, User Interface (UI) State Preservation, Apple Push Notification Service, Local Notifications and Gesture Recognisers, among others.
Described next are the frameworks of Cocoa Touch layer and the services these offer:
Address Book UI framework. Address Book UI framework (AddressBookUI.framework) is an Objective-C programming interface that you use to display standard system interfaces for creating new contacts and for editing and selecting existing contacts. This framework simplifies the work needed to display contact information in the app and also makes sure that the app uses the same interfaces as other apps, thus ensuring consistency across the platform.
EventKit UI framework. EventKit UI framework (EventKitUI.framework) provides view controllers for presenting standard system interfaces for viewing and editing calendar-related events.
GameKit framework. GameKit framework (GameKit.framework) implements support for Game Centre, which lets users share their game-related information online.
iAd framework. iAd framework (iAd.framework) lets you deliver banner based advertisements from your app. Advertisements are incorporated into standard views that you integrate into your UI and present when required.
MapKit framework. MapKit framework (MapKit.framework) provides a scrollable map that you can incorporate into your app’s UI. Beyond just displaying a map, you can use the framework interfaces to customise the map’s content and appearance.
In addition to displaying maps, MapKit framework integrates with Maps app and Apple’s map servers to facilitate directions.
Message UI framework. Message UI framework (MessageUI.framework) provides support for composing emails or SMS messages from your app. The composition support consists of a view-controller interface that you present in your app.
Notification Centre framework. Notification Centre framework (NotificationCenter.framework) provides support for creating widgets that display information in Notification Centre.
PushKit framework. PushKit framework (PushKit.framework) provides registration support for voice-over Internet protocol (VoIP) apps. This framework replaces the previous application program interfaces (APIs) for registering VoIP apps. Instead of keeping a persistent connection open, and thus draining the device’s battery, an app can use this framework to receive push notifications when there is an incoming call.
Twitter framework. Twitter framework (Twitter.framework) has been replaced by Social framework, which supports a UI for generating tweets and support for creating URLs to access Twitter service.
UIKit framework. UIKit framework (UIKit.framework) provides crucial infrastructure for implementing graphical, event-driven apps in iOS.
Media layer. Media layer contains graphics, audio and video technologies you use to implement multimedia experiences in your apps. Technologies in this layer make it easy for you to build apps that look and sound great.
iOS graphics technologies offer a wide range of support, working seamlessly with UIKit view architecture to make it easy to deliver content.
High-level features available in Media layer are UIKit graphics, Core Graphics framework, Core Animation, Core Image, OpenGL ES and GLKit, Metal, TextKit and Core Text, Image I/O and Photos Library.
AirPlay. AirPlay lets your app stream audio and video content to Apple TV and stream audio content to third-party AirPlay speakers and receivers. AirPlay support is built into numerous frameworks including UIKit framework, Media Player framework, AV Foundation framework and the Core Audio family of frameworks. So, in most cases, you do not need to do anything special to support it. Any content you play using these frameworks is automatically made eligible for AirPlay distribution. When the user chooses to play your content using AirPlay, it is routed automatically by the system.
Core Services layer. Core Services layer contains fundamental system services for apps. Key among these services are Core Foundation and Foundation frameworks, which define the basic types that all apps use. This layer also contains individual technologies to support features such as Location, iCloud, social media and networking.
High-level features available in this layer are Peer-to-Peer Services, iCloud Storage, Block Objects, Data Protection, File-Sharing Support, Grand Central Dispatch, In-App Purchase, SQLite and XML Support.
Described below are the frameworks of Core Services layer and the services these offer:
Accounts framework. Accounts framework (Accounts.framework) provides a single sign-on model for certain user accounts. Single sign-on improves the user experience by eliminating the need to prompt the user separately for multiple accounts.
Address Book framework. Address Book framework (AddressBook.framework) provides programmatic access to a user’s contacts database.
Ad Support framework. Ad Support framework (AdSupport.framework) provides access to an identifier that apps can use for advertising purposes.
CFNetwork framework. CFNetwork framework (CFNetwork.framework) is a set of high-performance C based interfaces that use object-oriented abstractions for working with network protocols.
CloudKit framework. CloudKit (CloudKit.framework) provides a conduit for moving data between your app and iCloud.
Core Data framework. Core Data framework (CoreData.framework) is a technology for managing the data model of Model-View-Controller app.
Core Foundation framework. Core Foundation framework (CoreFoundation.framework) is a set of C based interfaces that provide basic data management and service features for iOS apps.
Core Location framework. Core Location framework (CoreLocation.framework) provides location and heading information to apps.
Core Media framework. Core Media framework (CoreMedia.framework) provides low-level media types used by AV Foundation framework.
Core Motion framework. Core Motion framework (CoreMotion.framework) provides a single set of interfaces for accessing all motion based data available on a device.
Core Telephony framework. Core Telephony framework (CoreTelephony.framework) provides interfaces for interacting with phone based information on devices that have a mobile radio.
EventKit framework. EventKit framework (EventKit.framework) provides an interface for accessing calendar events on a user’s device.
HealthKit framework. HealthKit (HealthKit.framework) is a new framework for managing a user’s health-related information.
HomeKit framework. HomeKit (HomeKit.framework) is a new framework for communicating with, and controlling, connected devices in a user’s home.
Mobile Core Services framework. Mobile Core Services framework (MobileCoreServices.framework) defines low-level types used in uniform-type identifiers (UTIs).
Multipeer Connectivity framework. Multipeer Connectivity framework (MultipeerConnectivity.framework) supports discovery of nearby devices and direct communication with those devices without requiring Internet connectivity.
NewsstandKit framework. Publishers who want to deliver their magazine and newspaper content through Newsstand can create their own iOS apps using NewsstandKit framework (NewsstandKit.framework), which lets you initiate background downloads of new magazine and newspaper issues.
PassKit framework. PassKit framework (PassKit.framework) provides Objective-C interfaces you need, to integrate support for these items into your apps.
Quick Look framework. Quick Look framework (QuickLook.framework) provides a direct interface for previewing contents of files that your app does not support directly.
Safari Services framework. Safari Services framework (SafariServices.framework) provides support for programmatically adding URLs to the user’s Safari reading list.
Social framework. Social framework (Social.framework) provides a simple interface for accessing the user’s social media accounts.
StoreKit framework. StoreKit framework (StoreKit.framework) provides support for purchasing content and services from within your iOS apps, a feature known as In-App Purchase.
System Configuration framework. System Configuration framework (SystemConfiguration.framework) provides reachability interfaces, which you can use to determine the network configuration of a device.
WebKit framework. WebKit framework (WebKit.framework) lets you display HTML content in your app.
Core OS layer. Core OS layer contains low-level features that most other technologies are built upon. Even if you do not use these technologies directly in your apps, these are most likely being used by other frameworks. And in situations where you need to explicitly deal with security or communicating with an external hardware accessory, you do so using the frameworks in this layer.
Accelerate framework. Accelerate framework (Accelerate.framework) contains interfaces for performing digital signal processing (DSP), linear algebra and image-processing calculations.
Core Bluetooth framework. Core Bluetooth framework (CoreBluetooth.framework) allows developers to interact specifically with Bluetooth Low Energy (BLE) accessories.
External Accessory framework. External Accessory framework (ExternalAccessory.framework) provides support for communicating with hardware accessories attached to an iOS based device.
Generic Security Services framework. Generic Security Services framework (GSS.framework) provides a standard set of security-related services to iOS apps.
Local Authentication framework. Local Authentication framework (LocalAuthentication.framework) lets you use Touch ID to authenticate a user.
Network Extension framework. Network Extension framework (NetworkExtension.framework) provides support for configuring and controlling Virtual Private Network (VPN) tunnels.
Security framework. In addition to its built-in security features, iOS also provides an explicit Security framework (Security.framework) that you can use to guarantee the security of the data your app manages.
System. The system level encompasses the kernel environment, drivers and low-level UNIX interfaces of the OS.
64-bit support for iOS
iOS was initially designed to support binary files on devices using a 32-bit architecture. In iOS 7, however, support was introduced for compiling, linking and debugging binaries on a 64-bit architecture. All system libraries and frameworks are 64-bit ready, meaning that these can be used in both 32-bit and 64-bit apps. When compiled for 64-bit runtime, apps may run faster because of the availability of extra processor resources in 64-bit mode.
Android is a mobile OS based on Linux kernel and currently developed by Google. With a UI based on direct manipulation, Android is designed primarily for touchscreen mobile devices such as smartphones and tablet computers, with specialised UIs for televisions (Android TV), cars (Android Auto) and wrist watches (Android Wear). Android Inc. was founded in Palo Alto, California, the USA, in October 2003.
Architecture. Android is architected in the form of a software stack comprising applications, an OS, runtime environment, middleware, services and libraries. This architecture can, perhaps, best be represented visually as in Fig. 9. Each layer of the stack and the corresponding elements within each layer are tightly integrated and carefully tuned to provide an optimal application development and execution environment for mobile devices.
Linux Kernel. The basic layer is Linux Kernel. The whole Android OS is built on top of Linux Kernel with some further architectural changes.
Linux Kernel interacts with the hardware and contains all essential hardware drivers. It also acts as an abstraction layer between the hardware and other software layers. The kernel provides pre-emptive multitasking, low-level core system services such as memory, process and power management, in addition to providing a network stack and device drivers for hardware such as the device display, Wi-Fi and audio.
Libraries. The next layer is Android’s native libraries. It is this layer that enables the device to handle different types of data. These libraries are written in C or C++ language and are specific to a particular hardware.
Some of the important native libraries include the following:
Surface Manager. It is used for compositing window manager with off-screen buffering. Off-screen buffering means that the apps cannot directly be drawn into the screen, instead drawings go to the off-screen buffer. There, it is combined with other drawings and form the final screen that the user will see. This off-screen buffer is the reason behind the transparency of windows.
Media framework. Media framework provides different media codecs allowing the recording and playback of different media formats.
SQLite. SQLite is the database engine used in Android for data-storage purposes.
WebKit. It is the browser engine used to display HTML content.
OpenGL. This is used to render 2D or 3D graphics content to the screen.
Android Runtime. Android Runtime consists of Dalvik virtual machine and Core Java libraries.
Dalvik virtual machine. It is a type of JVM used in Android devices to run apps, and is optimised for low processing power and low memory environments. Unlike JVM, Dalvik virtual machine (VM) does not run .class files, instead it runs .dex files. Dex files are built from .class file at the time of compilation and provide higher efficiency in low-resource environments. Dalvik VM (DVM) allows multiple instances of virtual machines to be created simultaneously, providing security, isolation, memory management and threading support.
ART. Google has introduced a new virtual machine known as ART, which is short for Android Runtime, in their newer releases of Android. In 5.0, DVM is completely replaced by ART.
ART has many advantages over DVM such as Ahead of Time (AOT) compilation and improved garbage collection, which boost the performance of apps significantly.
Core Java libraries. These are different from Java SE and Java ME libraries. However, these libraries provide most functionalities defined in Java SE libraries.
Application framework. These are the blocks that our applications directly interact with. These programs manage the basic functions of phone like resource management and voice-call management.
Important blocks of Application framework are:
Activity manager. Manages the activity life cycle of applications
Content providers. Manages data sharing between applications
Telephony manager. Manages all voice calls. We use telephony manager if we want to access voice calls in our application
Location manager. Manages location using GPS or a mobile tower
Resource manager. Manages various types of resources we use in our application
Applications. Applications form the top layer in Android architecture. Several standard applications come pre-installed with every device such as SMS client app, Dialer, Web browser and Contacts Manager.
Firefox OS is a Linux kernel based open source OS for smartphones and tablet computers; it is set to be used on smart TVs. It is being developed by Mozilla, the non-profit organisation best known for Firefox Web browser.
Windows is a family of mobile OSes developed by Microsoft for smartphones as the replacement successor to Windows Mobile.
Windows Phone features a new UI derived from Metro design language. Unlike Windows Mobile, it is primarily aimed at the consumer market rather than the enterprise market.
BlackBerry OS is a proprietary mobile OS developed by BlackBerry Ltd for its BlackBerry line of smartphones. The OS provides multitasking and supports specialised input devices that have been adopted by BlackBerry Ltd for use in its handhelds, particularly the trackwheel, trackball and, most recently, trackpad and touchscreen.
Ubuntu Touch, also known as Ubuntu Phone, is a mobile version of Ubuntu OS developed by Canonical UK Ltd and Ubuntu Community. It is designed primarily for touchscreen mobile devices such as smartphones and tablet computers.
Ubuntu Touch was released to manufacturers on September 16, 2014. Aquaris E4.5, the world’s first Ubuntu based smartphone, went on sale in Europe on February 9, 2015.
With changing trends in the chipset industry, OS developers are not far behind. Software packages and applications are being developed to meet the demands of users and also to incorporate hardware additions like touch sensor, look-away to pause, etc. We might be seeing facial-recognition or retina-scanner software packages in the future.