Mobile Operating System
What is the purpose of Mobile Operating System?
Functions of mobile operating system keep growing at a very fast pace. From Basic voice calling, sending text messages, setting alarms, playing music, movies, listening to radio, using GPS to find driving directions, find locations, locate addresses, video calling, all types of media transfer to a nearby device or to devices connected to internet, taking pictures, videos, shooting movies, zooming and taking pictures, watching TV shows and movies, temperature and pressure sensors, mobile based games, all internet based applications, ability to add third party applications and new applications that are added to latest mobile phones.
What are the functions of the mobile operating system?
- Access to hardware and devices
- Memory management
- Sensitive to swipe, tap, double tap, press and hold, and various actions on touchscreen
- Ability to respond to buttons like increase and decrease brightness and volume
- Ability to lock and unlock screens
- Ability to allow installation, removal, and management of applications and application data
Architecture of Android
Androd OS includes the following components:
- Linux Kernel
- Hardware Abstraction Layer
- Android Runtime
- Native C/C++ libraries
- Java API framework
- System Apps
Android has modified Linux kernel which has several hardware drivers one for each device: keypad, camera, audio, bluetooth, WiFi, Display, USB, Shared memory, flash memory, IPC driver and Power management
Hardware Abstraction Layer
HAL provides a way for developers to link Android OS to access the hardware of choice. Developers must implement HAL and device drivers
HAL is for each of the devices - Camera HAL, Automative HAL, TV HAL, Bluetooth HAL, Input HAL, Storage HAL, Digital Rights Management (DRM) HAL, Audio HAL, Graphics HAL, Sensors HAL, Storage HAL and other HAL.
Android Runtime (ART) is the application runtime of the Android operating system. ART converts the bytecode into native instructions. Android runtime takes care of Ahead-of-time(AOT) compilation, Garbage collection, Support for development, debugging, and detailed exception and crash reports
Native C/C++ libraries
Android runtime and Android system components are written in Native Libraries. Android provides
- Java Framework API to expose these Native Libraries
- Android NDK which is C/C++ API to access these Native Libraries
Java API framework
- View System - to create UI components like text box, list
- Resource Manager - to provide access non-code resources and static content like images and strings
- Notification Manager - to display notifications in the status bar
- Activity Manager - manages lifecyle of apps and keeps a stack of activities
- Content Providers- enables apps to access data from other apps
- System Apps - apps placed under /system/app folder. These apps provide functionalities like contacts, SMS, Email, voice call. These system apps cannot be uninstalled. Most system apps do not have special preference over other apps meaning any app providing the functionality can be the default app. For example, you can have a third-party contact manager, third party sms app, third party file manager, third party email manager
Architecture of Symbian OSSymbian is no longer in development. Symbian was the most popular mobile operating system until 2010 until the smartphones came in the market. Symbian OS was used on Nokia, Samsung, Motorola, Sony Ericsson, Fujitsu, Sharp and Mitsubhishi. Symbian OS had a microkernel architecture.
Architecture of FuchsiaGoogle Fuchsia is a operating system which is currently in development and can be a mobile operating system or may develop into a desktop operating system which is yet to be seen.
- Fuchsia is based on a derived version of Little Kernel named Zircon. Zircon is a microkernel.
- Fuchsia OS has support for Flutter framework, Android Framework and Python to run various applications that use the respective framework.
- Fuchsia OS code is maintained in GitHub repository.