This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
An operating system is one of the most fundamental and integral units of devices which are capable of performing an array of tasks. This is basic software and the platform which forms the basis for other software applications. It contains programs and data which run on computers/cell-phones/gaming consoles, etc., providing the medium of interaction between the hardware and application programs.
The operating system provides the most fundamental level of control over all of the computer's hardware devices. Operating systems perform basic tasks for small systems, such as recognizing input from the keyboard, sending output to the display screen, controlling peripheral devices etc. For large systems, the operating system has additional functions, like making sure that different programs and users running at the same time do not interfere with each other. The operating system is also responsible for security, ensuring that unauthorized users do not access the system.
Components of an Operating System
A mobile processor is a CPU designed to save power. It is found in mobile computers and cell phones.
A CPU chip designed for portable computers, it is typically housed in a smaller chip package, but more importantly, in order to run cooler, it uses lower voltages than its desktop counterpart and has more "sleep mode" capability. A mobile processor can be throttled down to different power levels and/or sections of the chip can be turned off entirely when not in use. Further, the clock frequency may be stepped down under low processor loads. This stepping down conserves power and prolongs battery life.
User interface: The user interface allows a user to interact with the device. In a mobile phone, this interaction is possible through the Graphical User Interface (GUI); where the user interacts through images, graphical icons and subordinate representations like indentation, colour and position etc. This is possible through a touch pad, key pad, pointing device such as a thumb wheel etc.
The kernel: A kernel is the central basic part of the OS and provides the lowest level abstraction. It connects the application software to the data processing at the hardware level of a computer. The kernel performs various functions like:
Managing memory for programs in the RAM
Setting or resetting the CPU's operating states
Determining which programs get access to which hardware resources
Organizing the data for long-term non-volatile storage with file systems disks, flash memory etc.
The kernel performs all these duties with the help of firmware, which are the small, fixed programs and data structures which control the internal operations of devices.
Program Execution: A process, which is a â€¦ is needed to execute a program. The process is created by the kernel, which does so by allocating memory and other resources like registers, buses etc., prioritising the processes, updating the memory with the program code, and executing the program. The program then takes over; performing the task it was designed for, interacting with users and/or devices.
Interrupts: Interrupts are an essential part of operating systems, as they provide an efficient way for the operating system to interact with and react to its environment. Interrupts provide a computer with a way of automatically saving local register contexts, and running specific code in response to events. Even very basic computers support hardware interrupts, and allow the programmer to specify code which may be run when that event takes place.
When an interrupt is received, the computer's hardware automatically suspends whatever program is currently running, saves its status, and runs computer code previously associated with the interrupt; this is analogous to placing a bookmark in a book in response to a phone call. In modern operating systems, interrupts are handled by the operating system's kernel. Interrupts may come from either the computer's hardware or from the running program.
Multi-modes: The smooth functioning of the applications in a cell-phone can be attributed to the multiple modes of operation supported by modern CPUs.
A minimum of two modes are supported: the supervisor mode and the protected mode.
The supervisor mode is used by the kernel for tasks which require unbounded hardware access, such as controlling how memory is used and communication with devices like graphics cards/memory cards.
The protected mode is used for most of the other functions. Essentially, applications operate within the protected mode and their access to hardware is limited to communication through the kernel.
Multi-tasking: The feature by which numerous independent programs are run on the same device using the same resources. It is carried out through a technique called scheduling in which the kernel allocates the processes to run on the available processor, deciding the order of execution. i.e., each program uses a share of the computer's time to execute. The control is thus shifted to the process, then to the CPU and the memory. The reverse order is for shifting the control back to the kernel.
Memory management: In cell phones, the RAM is used to run applications and multi-task, whereas the inbuilt memory is used to store data. The kernel is responsible for managing memory which is in use by programs, ensuring that the program accesses only that portion which is allocated to it; ensuring independent access. Access to data stored on disks is a central feature of all operating systems. Computers store data on disks using files, which are structured in specific ways in order to allow for faster access, higher reliability, and to make better use out of the drive's available space. The specific way in which files are stored on a disk is called a file system, and enables files to have names and attributes. It also allows them to be stored in a hierarchy of directories or folders arranged in a directory tree.
Disk access and file systems: Disk access refers to the memory access of the disk on which information is stored. File system is the organization and storage of files in a logical fashion. All major OS have file systems in which files are placed in a hierarchical (tree) structure. A file is placed in a directory/folder or subdirectory at the desired place in the tree structure
Driver: The driver is responsible for interaction between high level programs like an applications software package or computer program running under the operating system kernel, and hardware devices. It is operating system specific and its chief design aspect is abstraction.
1.4 Mobile Operating System
The Mobile Operating System is also known as a mobile platform, or a handheld operating system.
It is very similar to a computer operating system; being the software platform on top of which other programs meant for mobiles are run. The various features, utilities and user components present in a particular device are dependent on the in-built OS of the device. Use of dedicated components like thumbwheel, keyboards; features like Wireless Application Protocol (WAP), GPRS, synchronization with applications, e-mail etc. are all under the control of the OS. The OS also determines which third-party applications can be used on the device. Mobile OS are currently somewhat simpler, and deal more with the wireless versions of broadband and local connectivity, mobile multimedia formats, and different input methods.
CHAPTER 2: INTRODUCTION TO SYMBIAN
2.1 History of Symbian
Symbian OS developed by Symbian Ltd is an open source OS managed by Nokia. Symbian OS was known as EPOC which was the OS for the Psion handset. It all started way back in the 90's.
In the year 1998 there was a joint venture called Symbian. It was unanimously decided by Ericsson, Nokia, Psion and Motorola. In order to join Symbian it was decided by these companies to sign the 'Memorandum of understanding'. When Symbian was being formed, Psion was responsible for bringing the change that remained thereafter by contributing EPOC. EPOC was thereafter rechristened as Symbian OS. It has progressively been upgraded to include voice and data technologies for every innovative product release.
In the year 2000 the Symbian EPOC OS was developed for the Nokia 9210 Communicator.
In the year 2001 it was decided by Nokia to use Symbian OS for 50% of its 3G phones from the year 2004. It came out with the Nokia 9290 Communicator using Symbian OS. It was also the same year when S60 that is Symbian 60 version platform was designed to support cell phone browsing, multimedia messaging, data downloading, managing personal information and other applications. It was developed to be customized and upgraded for individual and business users.
2.2 Architecture of the Symbian Operating System
The Symbian OS is a real time, open source OS, i.e. it responds to the input within a specific time period.
The characteristic features of Symbian are:
its pre-emptive multitasking, .i.e. the provision for interrupts and,
Memory protection, which is the isolating of memory from a process to which it is not allocated. This approach is inspired by high end server OS.
Symbian OS was created with three systems design principles in mind:
prime importance is to be given to the security of the user's data,
minimal loss of user's time and,
minimal use of resources
The Symbian architecture is based on the microkernel architecture, i.e. it contains the minimum software to implement sturdiness, availability and reaction. The kernel supports execution of both the applications as well as the software implementation of the protocols. Symbian contains a scheduler used to prioritize the processes, software for memory allocation/deallocation and device drivers; all of the features having been explained in 1.2. The specific Symbian kernel, EKA2 provides for minimum requirements and hence an additional kernel is required to implement abstractions.
Symbian OS core is common to all devices with respect to kernel, file server, memory management and device drivers. Above this core, we can add or remove components as per the product requirements. It has system layer, application engines, user interface software and applications.
The architecture of the Symbian OS has 5 layers, which are based on C++ as its primary language.
Fig. 1 The block diagram of the architecture
The layers present in the architecture from top to bottom, are:
User Interface Framework
Kernel Services & Hardware Interface
The description of the components of each layer is given below:
User Interface Framework: This layer provides the outlines and resources for constructing a user interface, including the basic class orders for user controls, and frameworks and utilities for elements of GUI used by the interface mechanisms. The UI Framework consists of the UI Application Framework and UI Support.
UI Application Framework - Controls the behaviour and layout of the windows, choice of fonts, toolbars etc. Front End Processors, responsible for the input of special characters and symbols other than numbers are also a part of this layer.
UI Support consists of UI Graphic Utilities and Graphic Effects - Contains features used by user interfaces, for example drawing window borders, effects etc. It equips the user with colour, icon, text, and font and number conversion provision.
Application Services: This layer provides services meant for applications and their framework engines by building on the basic services of the operating system. It also includes some common essential application framework used by applications, whether directly or indirectly. This layer is also used by the Java ME (Java Micro Edition, designed for embedded systems like a cell-phone) components.
technology support for specific applications,
services for particular applications,
Apart from common services used required by all application types.
OS Services: The OS Services layer contains the maximum number of components. It provides support for multimedia, graphics and network to the servers, frames and libraries which implement the core OS.
They are further categorised as:
Generic OS Services - provides a small number of common services for use by applications and some particular programming libraries (including the services for user interface).
Comms Service - Comms services imply communication services between various devices over several networks. Communication through Telephony services i.e. GSM, 2G, 3G; Short link services like Bluetooth, Infrared; Networking services like GPRS, Wi-fi is possible.
Multimedia and Graphics Services Block - This block provides graphics services for levels above hardware drivers and provides the structure for supporting various multimedia contents.
Connectivity Services: This block provides service to support basic devices or to host networks, data backup and restore, remote file browsing, software installation etc.
Base Services: The Base Services layer is that layer of the Architecture which together with the Kernel Services & Hardware Interface forms the minimal system using which the OS functions.
This layer contains the servers on the user's side, frameworks, libraries and functions that are built on the kernel layer. Thus the layer contains various sub-compartments like The Low Level Libraries and Frameworks block, Character Conversion, Media Device Framework, XML support etc.
Kernel Services & Hardware Abstraction: This layer is the most basic layer of the Symbian OS. It contains the Symbian OS kernel and supporting components needed to boot and run the kernel on the hardware platform. It performs the following functions:
Initialization of the system hardware
Creation and Management of abstractions, for eg. Processes, threads, address space etc.
Interrupt handling, scheduling of processes
Access to devices through device drivers
Connecting the lowest level of the base port to the newer installed hardware
2.3 Working of the Symbian Operating System
Symbian functions efficiently through the features of memory management, Context switching, processes, threads, event handling,
The Base Services layer and the Kernel Services and Hardware Interface layer together form the minimal system that is booted and run on the hardware.
The main points of execution of a program are:
Building of a process for the target
Non pre-emptive event handling using one thread
Active objects, which call asynchronous methods/required registers for events to take place
Active scheduler, which calls RunL method of active object
All connections with hardware are managed by the kernel.
The user input provides events that are taken up by the kernel to work upon. Different kernel extensions, i.e. peripherals associated with the user input - packed as DLLs, can be written for keyboard, keypad, digitizer, and navigation button and wheels. The appropriate kernel extensions are added into the image, where the kernel detects their presence at boot time and initializes them. The kernel itself has no dependency on the extensions, and no kernel extension functionality is accessible to applications.
2.3 Features of Symbian OS
Symbian is popular due to its various features:
Platform for wireless services
Symbian provides an advanced, open, flexible OS that is compatible with a variety of mobile phones to meet a wide range of user requirements to communicate with anyone, anywhere and at any time thereby maximizing the revenue.
Power management is built into the Symbian OS kernel and designed in a way to make efficient use of processor and peripherals and thus minimizing power consumption.
Symbian OS ensures that memory available is limited to minimize memory usage to further reduce the power consumption.
Symbian OS allows multiple applications to run simultaneously that is it enables multitasking.
Robust and dependable
Symbian OS ensures that every process runs in a protected address space that is it is not possible for one application to overwrite another application's address space. The kernel runs in a protected address space which means a bug in one application cannot overwrite the kernel's stack or heap.
Object oriented design
Symbian works on object oriented design which makes it easy to configure for different types of hardware and as its component based, manufacturers can add or remove components.
CHAPTER 3: INTRODUCTION TO ANDROID
What is Android?
Android is an Operating System for mobile devices, developed by Android Inc. for Google.
The Android platform consists of an operating system, middleware, a user-friendly interface and powerful applications.
Being a Google product, Android comes pre-installed with a variety of Google features such as Gmail (Android phones are capable of syncing the phone with the account), Google Calendar, Google Maps, and Google Web search, with Google as the default website for the web browser. The major advantage for carriers is that Android is easily modifiable. Therefore they can choose to change the default settings to cater to their specific needs.
Android is based on Linux Kernel and is an open source platform. The software development Kit (SDK) for Android is mainly Java based and can be easily downloaded to modify and write applications. Other programming languages such as Python and Ruby are used along with Android scripting Environment.
The Android operating system software stack is made up of Java applications running on a Java-based, object-oriented application framework built on top of Java core libraries which run on a Dalvik virtual machine featuring JIT compilation. C language libraries include the surface manager, OpenCore media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic lib. The Android operating system consists of 12 million lines of code including 3 million lines of XML, 2.8 million lines of C, 2.1 million lines of Java, and 1.75 million lines of C++.
Android based phones are ideally Touchscreen phones. Certain multi-touch gestures are supported by Android such as pinch-to-zoom in versions 2.1(Éclair) and above. Various versions of Android are used in Google TV, Barnes and Noble eBook reader and Samsung Galaxy tab.
How does Android work?
When the mobile phone is switched on, the CPU and the hardware sided code in the CPU is activated. The boot sequence is then checked and defined by this code. The boot loader, if it exists is then loaded into the RAM. A boot script is then executed by the boot loader with basic functions. The Linux Kernel is then loaded into the RAM. The Linux kernel then initializes the interrupt controllers, memory created protections, etc.
The final step is loading the init process (system/core/init). Like any Linux based Operating System, the init is the first process. Therefore it has: The process id. The rest of the processes are initiated after the init process execution.
When the init process is terminated, the operating system shut down. The following processes will load after the execution of init:
- kthreadd (kernel thread daemon)
- ksoftirqd/0 (Softirq daemon)
- events/0 (events threads process)
After this step, the init process will parse the init script called the init.rc. This script contains all the start parameters. Necessary parameters such as details about the system path and storage information (sd-card) are contained in this script.
The service processes are then executed.
The init process starts initializes the Dalvik VM. The first Java component to run on the Dalvik VM is the system server. All other android services such as telephony manager, GSM manager, Bluetooth are run by the system server.
After all the system services are successfully launched, the system sends a broadcast standard action (ACTION_BOOT_COMPLETED)
A corresponding broadcast receiver is required if the app to be started automatically is implemented at this stage.
The memory management in Android automatically "kill" old processes to reclaim resources. There is no need for the user to individually close old apps. When a new process is initiated, the memory manager checks if the available memory is enough to run both the old and the new apps together. If it isn't, then the older process is automatically terminated.
Android keeps a track of the sequence of activities with a Least Recently Used (LRU) list. This makes it easier and faster to terminate the oldest running apps. Another advantage of using a LRU is that accessing older apps/processes becomes much easier.
These processes when they run as 'closed apps' in the background, take up no CPU time and no power. However for efficient functioning, it is necessary for the developed to use the minimum amount of memory resources. The rules for using the available memory resources can be saved in a Linux Kernel source file. When the memory setting is directly changed in the Kernel source file, then it isn't necessary to use a task manager app which we would have had to keep running throughout in the background.
3.3 Android architecture
The diagram below shows the Android Architecture. We are going to study the architecture from lowermost to uppermost; i.e. is we are going to study about Linux Kernel, Libraries, android runtime and application frame work and applications.
Fig 3.2.1 Android Architecture
Fig. 3.2.2 Android architecture showing the language in which the corresponding source code is written
Android is built on 2.6.24 LINUX Kernel and it is used as a hardware abstraction layer. The reason they are using Linux kernel is, that it is proven driven model in lots of cases existing drivers. It provides memory management, process management, security module, networking and lot of co-operating systems infrastructures are robust and have been proven over time.
It has no glibc support. The glibc package contains standard libraries which are used by multiple programs on the system. In order to save disk space and memory, as well as to make upgrading easier, common system code is kept in one place and shared between programs. This particular package contains the standard C library and the standard math library. Without these two libraries, a Linux system will not function. But it does not support glibc due to open source platform and licensing reasons.
LINUX KERNEL - BINDER (IPC) driver:
Inter process communication
Every application and service run as a process
Separate processes must communicate and share data
Driver to facilitated inter-process communication (IPC)
Shared memory approach for IPC high performance
Per process thread pool for processing requests.
Reference counting and mapping of object references across processes
Synchronous call between processes
The green section is known as native libraries, this is the section where co-power of Android platform comes from. It is written in C and C++ internally. It is called through Java interfaces. The layer contains Surface manager for (compositing windows), 2D and 3D graphics, media framework, free types, SQLite, WebKit.
The surface manager is responsible for composing different drawing surfaces onto the screen and making sure the pixels end up on the screen when they are supposed to. The 2D and 3D graphics is related to two blocks as in the above figure Open GEL|ES and SGL and this two make up the core of Android graphics libraries Open GEL|ES is a 3D library, it has a software implementation that is hardware accelerator if the device has 3D chip on it. The SGL graphics is for 2D graphics that is the most of Android's application drawing is based on. A very interesting fact of Android graphics is that it can combine 2D and 3D application drawing.
The media framework has all the codes was provided by packet video one of the members of Open Handset Alliance (OHA) and that contains all of the codecs making the core of media experience. In there we will find Media codes (MPEG-4, AAC, H.264, MP3 etc.). Android uses SQLite for most of their data storage
It also has a native web browser engine (Web Kit) which is an open source browser engine, which is what Android is using as core of their browser. Android has worked with that engine to render well in small and movable devices.
The most important component in Android Runtime is the Dalvik Virtual Machine. Android Run time was designed specifically for Android to meet the need of running in better environment where we have limited battery, limited CPU and limited memory.
The Dalvik Virtual Machine (DVM) runs on .dex files and these are byte codes results of converting act built time.class.jar files. As converting into .dex files become much more efficient byte code that will run very well in small processors. They use memory very efficiently. The core libraries which boxed blue, it is written in Java programming language. And the core library consists of collection classes, data structures, file access, network access, graphics and other tools and utilities expected to be used.
The third level is application framework this all written in Java programming language. And application framework is the tool kit that all applications use. These applications include which come with the phone like home application or the phone application and also includes applications written by Google and will include application written by the users. All applications use the same framework and same APIs. The architecture of this layer includes activity manager, package manger, windows manager, resource manager, telephony manager, content providers.
The activity manager manages the lifecycle of applications and a common "back-stack" for user navigation. The package manager keeps a track of which applications are there on phone, application which are installed or downloaded and it is capabilities of those applications. The Windows Manager manages windows; it is mostly Java programming language abstraction on top of lower level surfaces that are provided by surface manager. The Resource Manager it has access to bitmaps, localized strings, graphics and layout files descriptions all of the external part of the application. The Telephony Manager contains the APIs that we use to build phone applications which is central to phone experience.
The most important are Content providers which are the most unique piece of the android platforms, which is the framework which allows applications to share the data with other applications. Android uses this in contact applications so all the information in contacts (phone number, addresses, name) is available to any application wants to make use of them.
The highest layer in the Android architecture diagram is the Applications and Widgets layer. The users will see only these programs, blissfully unaware of all the action going on below the waterline. Applications are programs that can take over the whole screen and interact with the user. An Android application consists of one or more of the following classifications activities, services, content providers and broadcast receivers.
An activity is an essential piece of UI. It typically corresponding to one screen that the user selects from the home screen or application launcher and then activity is started.
Example: A mail will be divided into three important parts which are list your mail, show an individual mail and compose your mail.
The next major component is service. A service doesn't have any UI, it is long lived and a task running in the background.
Example: If we wanted to play music we use UI and then if we want to do some other activity and we want music to be played then that is where service comes in use. And changing track or rewind we can go the respective component.
Content providers can be thought of as a database server as it allows sharing data with processes and other applications. And they can store the data in whatever manner the application understands like in files, SQLite database, whatever makes sense.
Example: Android has used content provider for the contact as the contact information can be accessed by any application.
Android was fundamentally designed to encourage reusing and replacing components. For instance,
Client component makes for a specific action
The system picks the best component for the action
3.4 Features of Android Operating system:
There are many advantages of Google's Android mobile operating system which is an open source platform.
The layman will be able to customize his mobile phone using Google Android platform like never before, owing to its open source nature.
The consumer will benefit from having a wide range of mobile applications to choose from.
Features like weather details, opening screen, live RSS feeds and even the icons on the opening screen will be open to customization.
As a result of many mobile phones carrying Google Android, companies will come up with such innovative products like the location.
In addition the entertainment functionalities will be taken a notch higher by Google Android as it enables users to play online real time multiplayer games. Some of these games are available free of cost to Android users such as Pocket Empires Online, Parallel Kingdom, etc
Table 3.4.1 Table listing the features of Android Operating System
In Handset layouts we have VGA, 2D graphics library and 3D library based on OpenGL|ES as mentioned earlier in the architecture of android and traditional smart phone layout.
For storage based purpose, Android has SQLite which is a relational database.
Android Connectivity centre has WIFI, LTE, Bluetooth, WiMax, GSM/EDGE, IDEN, CDMA, EV-DO, and UTMS.
In Android we have SMS and MMS and also Android push messaging service.
Most of the applications of Google's Android are in Java. But it doesn't consist of a Java Virtual Machine (JVM) and the byte code is not executed. Whereas as the Java classes are compiled to Dalvik executable and run on Dalvik Virtual Machine (DVM).
The following audio/video/still media formats are supported by Android:
WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, OggVorbis, WAV, JPEG, PNG, GIF, BMP.
Streaming Media Sup port
RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash 10.1 plugin.
Additional Hardware support
Google's Android can use video/still camera, touchscreen, GPS, pressure sensors etc.
In this section it includes a device emulator, tools for debugging and performance reporting. The IDE (Integrated Development Environment) is ECLIPSE (currently 3.4 or greater) using Android Development Tool (ADT) plugins. The languages used are Java and C++.
It is includes a catalogue of applications that can be downloaded or installed to the Android based device over the air, without being connected to the PC.
Android has native support for multi touch, which was firstly available in HTC Hero.It is now also available in Nexus One and Motorola Droid.
Android has Bluetooth support which allows wireless exchange of data with other Bluetooth devices. It can scan for Bluetooth device, exchange data and much more.
The main Android version doesn't support video calling, but some handsets can via the support of UTMS (Samsung) orIP( Galaxy S).
As discussed earlier in architecture, the service allows multitasking like playing music in background and writing a message.
Voice based Search
Google Android voice based search has been available since its initial version. Some actions include voice action for calling, texting, finding a contact, navigating.
Tethering means that it allows a phone to be used as a wireless/wired hot spot and Android supports this feature.
Chapter 4: Comparison of Android and Symbian
User Interface (UI)
Strong UI. Easier to build touch screen phones with differentiated UIs.
Relatively weak UI
Easy to set defaults due to availability of 3rd party apps
3rd party apps cannot be set as defaults
Faster and more accurate
Slower and lower accuracy
Updating contact information is automatic due to synching of Google account
Updating information has to be done manually by the user
Offer notifications to display information
Offer notifications but in lesser detail and take up more memory
Does not have apps to support websites such as Twitter very well
Apps such as Gravity are useful for accessing Twitter
.LastFM app does not support music and alarm features very efficiently
Mobbler app supports Music and Alarm features better
Complicated to use
Simpler to use and more user-friendly
Developers only require the SDK to develop apps
Developers can code from scratch in languages such as C, C++, Python, etc.
Table 1: Comparison of the features of Android and Symbian