* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download comparison between smartphone operating systems
Survey
Document related concepts
Unix security wikipedia , lookup
Android (operating system) wikipedia , lookup
Process management (computing) wikipedia , lookup
Spring (operating system) wikipedia , lookup
Security-focused operating system wikipedia , lookup
Distributed operating system wikipedia , lookup
Copland (operating system) wikipedia , lookup
Transcript
COMPARISON BETWEEN SMARTPHONE OPERATING SYSTEMS BY Mohamed Eltuhami Mohamed Abdulmageed A report submitted in partial fulfillment of the requirements for the Degree of: B.Sc. (Hon.) In Electrical and Electronic Engineering 2011 Supervised By Utz Hiba Hassan Imam Department of Electrical and Electronic Engineering, Faculty of Engineering, University of Khartoum DECLARATION I hereby declare that this thesis is my own work and effort, and that it has not been submitted anywhere else for any award. Where other sources of information have been used, they have been cited or acknowledged Signature ……………………………………………………… Date …………………………………………………………… i DEDICATION This thesis is dedicated to my beloved mother and dear father who supported me with their encouragement throughout my life. ii ACKNOWLEDGMENT I would like to express my deep gratitude and appreciation to my supervisor, Ustaza Hiba Hassan Imam, who has been extremely supportive and quite encouraging throughout the different phases of this research project. Her guidance and support have always been an enticement for me to work hard. I am also thankful to all members of my family for their unfailing encouragement and trust during execution of the project phases, in addition to the support they have always given me as a University Student and before. My special thanks are due to my father Professor Eltohami M Abdel-Magied for encouragement and the time he devoted for going through the manuscript. I am also grateful to my friends and colleagues for their continuous support. iii ABSTRACT This study was undertaken in an effort to reveal the strengths and weaknesses of the operating systems (OSs) of the four most popular Smartphone, namely Symbian, Android, iPhone and Blackberry. The four OSs were evaluated on the characteristics of six base categories that included Supported phones and Platforms, Development Environment, Hardware Support, Power Management, Multimedia Features, and Software Features (that comprise multitasking, system calls, memory management, threads management, interrupts and networking). Symbian and Android OSs were found to be supported by more phones than iPhone and Blackberry OSs. Moreover, Symbian, Android and iPhone OSs were found to support the ARM platform - the most widely used 32-bit architecture. In addition, both Symbian and Android support the X 86 platform. Blackberry OS on the other hand was found to support only the BlackBerry platform. As for the development environment, the four OSs showed different software developer’s kits (SDKs); The SDK being Windows for Blackberry and Mac OSX for iPhone. Symbian and Android utilize multiplatform SDK. Accordingly, iPhone and Blackberry have limited programming language choices and development software. The four Smartphones showed a wide array of hardware components and input options, and power management capabilities. Symbian, Android and BlackBerry OSs showed great multitasking capabilities, whereas iPhone OS was found to have limited multitasking facilities, even in its latest version, the iOS4. Furthermore, all four OSs showed great system call capabilities; accomplished by different methods. As for multimedia features, Symbian OS showed a noticeable superiority for both audio and video support. Blackberry showed the least capability for audio support and video support. Taking users needs along with OS capabilities it is concluded that iPhone is the most suitable for gamers, Android OS for casual users, BlackBerry for business users and Symbian for third party developers. iv المستخلص شيوعا يف العامل، أجريت ىذه الدراسة للكشف عن نقاط القوة والضعف يف نظم تشغيل أربعة من اهلواتف الذكية األكثرة ً وىي نظم تشغيل مسبيان وأندرويد وآي فون وبالك بريي ،والتعرف على مالءمة كل منها على الفئات املختلفة من مستخدمي اهلواتف الذكية . اعتمادا على ست فئات أساسية ىي :اهلواتف واملنصات املدعومة ،وبيئة التطوير ،ودعم مت تقييم نظم التشغيل األربعة ىذه ً األجهزة ،وإدارة الطاقة ،ومسات الوسائط املتعددة ،ومسات الربجميات (واليت تشمل تعدد املهام ،ونداءات النظام ،وإدارة الذاكرة ،وإدارة مؤشرات الًتابط ،واملقاطع ،الربط الشبكي). اعا من اهلواتف أكثر دما يدعمو نظامي آي فون وبالك بريي. أظهرت ىذه الدر اسة أن نظام مسبيان وأندرويد يدعمان أنو ً شيوعا. إضافة لذلك ،أظهرت الدراسة أن نظم تشغيل مسبيان وأندرويد وآي فون تدعم منصة ARMوىي أكثر املنصات ً كذلك ،فإن نظام تشغيل ٍ كل من مسبيان وأندرويد يدعمان املنصة ، X86.ومن ناحية أخرى ،وجد أن نظام تشغيل بالك بريي يدعم منصة بالك بريي فقط .أما فيما يتعلق ببيئة التطوير ،فقد ًوجد أن لنظم التشغيل األربعة أدوات تطوير برجميات SDKخمتلفة ،حيث تكون األدوات متوافقة مع ويندوز بالنسبة لبالك بريي وماك Mac OSXبالنسبة آلي فون فيما يستطيع كل من مسبيان وأندرويد استخدام ادوات تطوير برجميات عديدة املنصات .وىكذا ،فإن لكل من آي فون وبالك بريي خيارات لغات برجمة حمدودة فيما يتعلق بنطوير الربجميات مقارنة بسمبيان وأندرويد .وبالنسبة لألجهزة وخيارات اإلدخال وقدرا ت إدارة الطاقة وجدت الدراسة أن لكل نظام من نظم النشغيل األربعة جمموعة كبرية من املكونات وخيارات التشغيل وتفاوتًا يف إدارة الطاقة. تتميز أنظمة تشغيل مسبيان وأندرويد وبالك بريي مبقدرات تعدد مهام عالية خالفًا لنظام تشغيل آي فون الذي يفنقر إى ىذه املقدرات العالية حىت يف آخر إصداراتو (آي فون .)4أما فيما خيتص نداءات النظام ،فقد ُوجد أن أنظمة التشغيل األربعة هلا قدرات نداءات نظام عالية رغم اختالف آليات العمل يف كل منها. وفيما يتعلق بسمات الوسائط املتعددة وجدت الدراسة أن نظام تشغيل مسبيان يتفوق على األنظمة األخرى يف دعم الصوت ودعم الفيديو ،وأظهرت الدراسة أن نظام تشغيل بالك بريي ىو األقل دعما هلذه الوسائط. ً وخلصت الدراسة ،بعد أخذ احتياجات املستخدمني وقدرات كل نظام من ىذه األنظمة يف احلسبان أن نظام تشغيل آي فون ىو األنسب ملستخدمي األلعاب ،وأن نظام أندرويد ىو األنسب للمستخدمني العابرين ،وأن نظام بالك بريي ىو األنسب لرجال األعمال ونظام مسبيان ىو األنسب للمطورين من الطرف الثالث. v TABLE OF CONTENTS Declaration of Originality i Dedication ii Acknowledgment iii Abstract iv المستخلص v Table of Contents vi List of Figures x List of Tables xi Abbreviations xii 1 Introduction 1 1.1 Problem Definition 1 1.2 Objective 2 1.3 Operating Systems Comparison Domains 2 1.4 Overview 3 1.4.1 A brief history of mobile communication 3 1.4.2 Mobile Device Categories 3 1.4.3 Definition of Smartphone 4 1.4.4 Smartphone Market Share 5 1.4.5 Apple iPhone 6 1.4.6 Google Android 6 1.4.7 RIM Blackberry 7 1.4.8 Symbian 7 1.5 Expected Outcome 7 1.6 Thesis Layout 8 2 Literature Review 9 2.1.1 Platform design 9 vi 2.1.1.1 Microkernel Design 9 2.1.2 Development Environment 11 2.1.3 Threads Management 12 2.1.4 System Calls 13 2.1.5 Interrupts 13 2.1.6 Memory Management 14 2.1.7 Hardware 14 2.1.8 Networking 18 2.1.9 Multitasking 19 2.2 Android 19 2.2.1 Platform design 20 2.2.1.1 Monolithic kernel (Modified Linux version 2.6 OS) 20 2.2.2 Development Environment 23 2.2.3 Threads Management 23 2.2.4 System Calls 24 2.2.5 Interrupts 24 2.2.6 Memory Management 24 2.2.7 Hardware 25 2.2.8 Networking 27 2.2.9 Multitasking 28 2.3 iPhone OS 28 2.3.1 Platform design 30 2.3.1.1 Darwin (Hybrid) kernel (XNU) 30 2.3.2 Development Environment 31 2.3.3 Threads Management 31 2.3.4 System Calls 32 2.3.5 Interrupts 32 2.3.6 Memory Management 33 2.3.7 Hardware 33 2.3.8 Networking 35 vii 2.3.9 Multitasking 35 2.4 Blackberry OS 36 2.4.1 Platform Design 38 2.4.2 Development Environment 38 2.4.3 Interrupts 38 2.4.4 Memory Management 39 2.4.5 Hardware 40 2.4.6 Networking 42 2.4.7 Multitasking 42 3 Comparison 43 3.1 Platform 43 3.2 Development Environment 44 3.3 Software Features 46 3.4 Hardware 50 3.5 Multimedia Support 52 3.6 Power Management 53 4 Conclusion 55 4.1 Strength and Weakness 55 4.1.1 Symbian 55 4.1.2 Android 56 4.1.3 iPhone OS 57 4.1.4 Blackberry OS 58 4.2 Conclusion 59 4.2.1Gaming 59 4.2.2 Business Users 60 4.2.3 Casual Users 60 4.2.4 Third Party Developers 60 References 62 viii List of Figures Figure (1.1) Worldwide Smartphone OS sales in 1Q11…………………………..……..5 Figure (2.1) Model-View-Controller ……………………………………………………9 Figure (2.2) Structure of Symbian OS kernel……………………………….....……….10 Figure (2.3) Microkernel design………………………………………………..………12 Figure (2.4) Symbian OS moving model memory ………………………………………16 Figure (2.5) Symbian OS multiple memory map ………………………………………..17 Figure (2.6) Nokia N8 Smartphone………………………………………………….......19 Figure (2.7) Android Platform Architecture…………………………………………..…22 Figure (2.8) Android Application priority……………………………………………….26 Figure (2.9) Nexus S Smartphone …………………………………………….…………28 Figure (2.10) Android multitasking…………………………………………………..….29 Figure (2.11) iPhone OS Architecture………………………..........................................30 Figure (2.12) iPhone 4 Smartphone…………………………………………………….34 Figure (2.13) Multitasking capabilities of the iPhone OS……………………………...36 Figure (2.14) Multitasking in a recent iPhone OS operated Smartphone………………37 Figure (2.15) BlackBerry Torch 9800 Smartphone…………………………………….41 Figure (4.1) Smartphone OS Users Types………………………………………..…….59 ix List of Tables Table (1.1) Worldwide Smartphone OS Sales in 1Q11……………………………….…..6 Table (3.1) Comparison between the four operating systems as regards to supported phones and supported platforms…………………………………………………………43 Table (3.2) Compares the main elements of the development environments of the four operating systems………………………………………………………………………...46 Table (3.3) Comparison between software features of Symbian, Android, iPhone and Blackberry OS……………………………………………………………………………48 Table (3.4) Comparison between the hardware components of Symbian, Android, iPhone and Blackberry OS……………………………………………………………………….51 Table (3.5) Comparison between multimedia support capabilities of Symbian, Android, iPhone and Blackberry OS……………………………………………………………….53 Table (3.6) Power Management of Symbian, Android, iPhone OS and Blackberry OS………………………………………………………………………………….…….54 x ABBREVIATIONS 2D = Two-Dimensional 2G = Second Generation 3D = Three-Dimensional 3G = Third Generation ADT = Android Development Tools API = Application Programming Interface ARM = Advanced RISC Machine ASIC = Application-Specific Integrated Circuit CDMA = Code Division Multiple Access CPU = Central Processing Unit DFC = Deferred Function Calls DLL = Dynamic-Link Library DMA = Direct Memory Access EDGE = Enhanced Data rates for GSM Evolution EKA2 = EPOC Kernel Architecture 2 EV-DO = Evolution-Data Optimized GPRS = General Packet Radio Service GPS = Global Positioning System GPU = Graphics Processing Unit GSM = Global System for Mobile Communications HAL = Hardware Abstraction Layer HDMI = High-Definition Multimedia Interface HSUPA = High-Speed Uplink Packet Access HTML = Hyper Text Markup Language xi I/O = Input/Output IDE = Integrated Development Environment iOS = iPhone Operating System IP = Internet Protocol ISA = Instruction Set Architecture ISP = Image system processor Java ME = Java Micro Edition JDE = Java Development Environment JVM = Java Virtual Machine KB = Kilo Byte Mac OS X = Macintosh Operating System X MB = Mega Byte MHZ = Mega Hertz MIDP = Mobile Information Device Profile MIPS = Microprocessor without Interlocked Pipeline Stages MMU = Memory Management Unit MVC = Model–View–Controller N/A = Not Applicable Obj-C = Objective-C OpenGL ES = Open Graphics Library for Embedded Systems OS = Operating system OTG = On The Go PDA = Personal Digital Assistant xii RAM = Random-Access Memory RedBoot = Red Hat Embedded Debug and Bootstrap firmware RIM = Research In Motion RISC = Reduced Instruction Set Computing RISC = Reduced Instruction Set Computing ROM = Read-Only Memory SDK = Software Development Kit SMS = Short Message Service SRAM = Static Random-Access Memory SWI = Software Interrupt UFD = USB Flash Drive UI = User Interface UMTS = Universal Mobile Telecommunications System USB = Universal Serial Bus VM = Virtual Machine VoIP = Voice over IP WAP = Wireless Application Protocol WRT = Web Runtime XML = Extensible Markup Language xiii Comparison between Smartphone Operating Systems Chapter One: Introduction Smartphones are electronic handheld devices that integrate the functionality of mobile phones, personal digital assistants (PDAs) and other information appliances. Smartphones are considered to be the newest personal computers, and the most personal devices people can own. Today’s mobile phones are being used as computers for multipurpose functions. The number of mobile internet users is growing rapidly and may overcome the desktop internet users by 2013-2014 [29]. The Smartphone operating system is an operating system that manages the hardware and software resources of the Smartphone. The Smartphone operating system movement has grown to include competitors such as Apple, Google, RIM and Symbian. Although these operating system platforms have come a long way since their initiation, none of these companies provide an OS that is perfect for all users. They claim that their platforms perform the best in all endeavors and will definitely not advertise any weakness with their systems. This makes it difficult for end users to know which platform is best suited for their need. 1.1 Problem Definition The rapidly growing market of Smartphones makes it difficult for the consumer to choose from. Thus, there is high need for providing information that will enable the consumer to choose the Smartphone that he needs. To do so a systematic comparison between the different types of Smartphone that are taking the lead in the market is essential for identifying their weakness and strengths. Such a comparison is a requisite for 3rd party developers to know about the design, the features and the development environment of the platforms. 1 Comparison between Smartphone Operating Systems 1.2 Objectives This study aims at disclosing the advantages and drawbacks of the most common Smartphone operating systems (OS), namely Symbian, Android, iPhone and Blackberry OSs. Perform a comparison between operating systems in order to identify strengths and weaknesses of each of the four Smartphones under investigation. 1.3 Operating System Comparison Domains A set of base categories has been chosen to compare the Smartphones in question as regards to the various usage modes. These categories include Supported Smartrphones and Supported Platforms, Development Environment, Software Features, Hardware Support, Power Management, and Multimedia Features. This study aims at selecting a few categories that are especially important for a specific usage model and then determine which operating system performs the best. The Software Features category lists out the operating system features that are supported which demonstrate how well the operating system handles multitasking, system calls, and memory management. Supported Phones and Supported Platforms is a category which describes the existing market in which each phone resides. The Development Environment category describes how easy it is for third party developers to make applications for the platform. The Multimedia Features category enumerates the image support and audio and video formats supported by the operating system The Hardware Support category gives us information on what kind of hardware features are supported by the operating system. The Power Management category shows what power saving features are available. 2 Comparison between Smartphone Operating Systems 1.4 Overview 1.4.1 A Brief History of Mobile Communication Commercially thinking, the history of mobile communication is brief. First real mobile phones in 1980s were heavy and large as they required enormous batteries to reach the nearest cellular network site. In the late 1990s cellular technologies were made financially feasible. Mobile phones evolved to be smaller, lighter and cheaper devices that would fit into everyone’s budget and pocket. One of the main reasons that made this evolution possible was the increased density of cellular sites [31]. The 2nd generation (2G) GSM mobile phones were mostly used for making voice calls and sending SMS messages. They did not have web browsers, and did not have any software installation facilities [31]. All the software was factory installed. In the early 2000s the use of the Internet was introduced to the mobile phones, as well as multimedia features such as listening to music and taking photos [31]. GSM network providers added GPRS, which is a packet oriented data service, and these two together are often described as 2.5G as it is a technology between the 2nd and 3rd generations. Web reached the mobile phones. However, using the World Wide Web by mobile browsers was not a success because of the many limitations of the devices of that time and because of high prices. Network operator portals sold installable applications and downloadable ringtones and wallpapers [31]. When 3rd generation (3G) mobile networking became widespread, starting from 2002 and continuing to the end of the decade, the foundation was laid for Smartphone’s penetration to the market. The high speed Internet of the 3G made user experience of web browsing better, thus, making it possible for providers to offer new services like streaming video or VoIP-calls [31]. 1.4.2 Mobile Device Categories Mobile device types available on the market today need to be defined [28]. The following types of mobile devices are currently available: 3 Comparison between Smartphone Operating Systems Mobile phones Mobile phones are phones with call and SMS support, but without web browser, connectivity or software installation possibilities. One example of this category is the Nokia 1100. The problem with this type of very low-end mobile phones is that it is not possible for everyone to develop applications or web content for it. However, the situation is changing as even cheaper mobile devices have inbuilt browser support [28]. Low-end mobile devices Low-end mobile devices have web support, basic camera and a music player, but there is no touch support and the memory is limited. Price is an advantage for mobile devices of this class. People who buy this kind of phones are usually not heavy Internet users [28]. Mid-end mobile devices Mid-end devices usually offer a medium-sized screen, basic HTML-browser support, sometimes 3G, a decent camera, a music player, games, and application support [28]. states that one of the key features of mid-end devices is that they do not have a wellknown operating system, as High-end and smartphones do. Usually even with the mid-end devices native applications are not available publicly; instead custom applications are run through a runtime, like JAVA ME [28]. High-end mobile devices High-end devices are near the Smartphone category, but according to Firtman (2009) the differences are that high-end devices are generally non-multi-touch. Still they have many advanced features, as Smartphones do, such as accelerometer, camera, Bluetooth and a good web support [28]. 1.4.3 Definition of Smartphone A Smartphone is an advanced mobile phone with a modern day mobile operating system and advanced hardware features. It is possible to install 3rd party mobile applications to a Smartphone and it has an advanced browser and an advanced user interface with a touch screen. 4 Comparison between Smartphone Operating Systems 1.4.4 Smartphone Market Share There are many Smartphone manufacturers on the market, with many mobile operating systems [32] [45]. If the maximum audience for mobile applications were to be reached, it would be wise to focus on some main Operating Systems to reach the largest audience [32] [33]. According to Gartner research (Table 1.1), Android, Symbian, Research In Motion and iPhone OS are the four most commonly sold operating systems for mobile devices in 1Q11 (1st Quarter 2011) [33]. Figure 1.1 Worldwide Smartphone Sales to End Users by Operating System in 1Q11 5 Comparison between Smartphone Operating Systems Table 1.1 Worldwide Smartphone Sales to End Users by Operating System in 1Q11 (Thousands of Units): [Gartner 2011] [33] 1Q11 1Q11 Market Share (%) 1Q10 Units 1Q10 Market Share (%) 36.0 5,226.6 9.6 27.4 24,067.7 44.2 16.8 8,359.7 15.3 13,004.0 12.9 10,752.5 19.7 3,658.7 3.6 3,696.2 6.8 3.3 2,402.9 4.4 100.0 54,505.5 100.0 Company Android Units 36,267.8 Symbian iOS 27,598.5 16,883.2 Research In Motion Microsoft Other OS Total 3,357.2 100,769.3 1.4.5 Apple iPhone When Apple introduced the first iPhone in 2007 it started a new era in the Smartphone market [31]. By the end of the fourth fiscal quarter of 2010, Apple had sold over 70 million iPhones [45]. In addition to the right business model and successful marketing, Apple had some factors that contributed to the success of the iPhone. iPhone had a rich mobile Internet browsing experience and a broad range of installable applications, in particular entertainment applications, clearly meeting the needs of their consumers [46]. 1.4.6 Google Android In 2005 Google started development of the Android platform. In 2007, industry leaders such as Google, Motorola, Samsung, Sony Ericsson and Intel formed the Open Handset Alliance and its first key outcome was the Android Platform. In same year, the first version of the Android SDK was released [40]. The first Android phone was released in 2008, and now there are hundreds of different types of Android mobile devices, including phones and tablets, provided several vendors [1]. The Android mobile operating system supports several features, such as 2D and 3D 6 Comparison between Smartphone Operating Systems graphics, common media formats, animated transitions and multi-touch input. The Android’s web browser is the WebKit base and includes Google Chrome’s JavaScript runtime. 1.4.7 RIM Blackberry BlackBerry is a product of Research In Motion (RIM). The first BlackBerry Smartphone was released in 2002 in Canada. The BlackBerry has the second largest market share of the Smartphones in the US. [1] Worldwide, the Research in Motion (RIM) was the third most sold mobile operating system in the world in 2010 [56] and the forth in 2011 [33]. BlackBerry is specialized into the enterprise market, and should be taken into account when developing applications for enterprise markets [1]. 1.4.8 Symbian The historical background of Symbian is in the EPOC operating system for the Psion family of PDAs. From the commercial point of view, Symbian is strongly linked to Nokia, which used the Symbian OS for the majority of its Smartphones [61]. Originally the Symbian Company was formed by a group of manufacturers including Nokia, Ericsson and Motorola. Later Samsung and Sony Ericsson joined the Symbian Company. In 2008 Nokia bought Symbian Ltd. and created the Symbian Foundation to migrate the Symbian operating system to open source [28]. In February 2011, Nokia and Microsoft announced new partnership plans. The new strategy includes Windows Phone serving as Nokia's primary Smartphone platform. 1.5 Expected Outcome It is anticipated that this study will Reveal the capabilities of each of these four Smartphone (Symbian, Android, iPhone and BlackBerry) OSs are regards to platform design, development environment, threads management, system calls, interrupts, memory management, hardware, networking multitasking, and power management. Make it easier for end users to know which platform is best suited for their need 7 Comparison between Smartphone Operating Systems and may as well verify what phone is best suitable for third party development, gaming, business applications, and multimedia. 1.6 Thesis Layout Chapter 1 – Introduction: This chapter comprises a brief introductory paragraph on Smartphones and Smartphone operating systems, followed by problem definition, objectives, operating system comparison domains, and an overview on mobile devices and Smartphones. Chapter 2 – Literature Review: In this chapter, an account is given on the capabilities and features of four Smartphone operating systems. Features of each OS including the platform design, development, threads management, system calls, interrupts, memory management, hardware, networking, and multitasking is looked into. Chapter 3 – Comparison: This chapter compares the four Smartphone operating systems as regards to their Supported Platforms, Development Environment, Software Features, Hardware, Multimedia Support and Power Management. Chapter 4 – Conclusion: This chapter points out to the strengths and weaknesses of each of the four OSs and lists the conclusions reached as regards to suitability of each for the various categories of users. 8 Comparison between Smartphone Operating Systems Chapter Two: Literature Review In this chapter, an account is given on the capabilities and features of four popular Smartphone operating systems (OS); namely the Symbian, Android, iPhone and Blackberry OS. Features of each OS including the platform design, development, threads management, system calls, interrupts, memory management, hardware, networking, and multitasking will be looked into. 2.1 Symbian 2.1.1 Platform design A number of principles are taken into consideration when thinking of designing an operation system. Symbian designers satisfied a number of principles when creating the Symbian OS. Most important of these were securing the user data, maintaining data integrity, and making sure that the user time is not wasted. To satisfy these principles Symbian designers decided upon a microkernel that maintains separation between user interface and engine, and capable of request-and-callback approach to services. The designers made sure that the Symbian OS follows an object-oriented design namely, a Model-View-Controller1 (MVC) optimized for low-power battery-based devices and for ROM-based systems. In recent years, and in response to market demands and invention of new forms of computer programs and OS iterations Symbian designers introduces a real- time kernel and a platform security model in Symbian versions 8 and 9 [58]. Figure 2.1 Model-View-Controller 1 MVC is a software architecture, currently considered an architectural pattern used in software engineering. 9 Comparison between Smartphone Operating Systems The strong weight put by Symbian designers on conserving resources is exemplified by the introduction of Symbian-specific programming idioms such as descriptors2 and a cleanup stack3. Disks on Symbian devices are usually flash memories, but nevertheless, the designers introduced new techniques for conserving disk space. Not only that but they also made sure that all Symbian programming is event-based, and that the CPU is switched into a low power mode when applications are not directly dealing with an event. This was achieved through a programming idiom called the activeobjects4. Moreover, the Symbian approach to threads and processes is driven by reducing overheads [58]. The Symbian kernel (EKA2) supports sufficiently-fast real-time response to build a singlecore phone around it that is, a phone in which a single processor core executes both the user applications and the signaling stack. This has allowed Symbian EKA2 phones to become smaller, cheaper and more power efficient than their predecessors (Figure 2.2) [58]. Figure 2.2 Structure of Symbian OS kernel 2 Descriptors are a part of the segmentation unit, used for translating a logical address to linear address. Segment descriptors describe the memory segment referred in the logical address 3 When an application notes a memory allocation may fail, it places the earlier allocated memory address to a location which Symbian is aware of. That location is called Cleanup Stack 4 Active object design pattern decouples method execution from method invocation that reside in their own thread of control.[Doglas reff] The goal is to introduce concurrency, by using asynchronous method invocation and a scheduler for handling requests[Bass] 10 Comparison between Smartphone Operating Systems 2.1.1.1 Microkernel Design Microkernel Design of the Symbian OS exemplifies the object oriented nature of the operating system. The kernel encompasses minimal system functions and data, many system functions being pushed out to user-space servers. The servers accomplish jobs by obtaining handles to system objects and making system calls through these objects into the kernel when necessary. Typically, user-space applications interact with the servers rather than making system calls directly. It is to be mentioned here that microkernel-based operating systems typically take up much less memory upon boot and their structure is more dynamic. In such system, not all servers are required at boot time. Not only that but also servers can be started as needed. Moreover, microkernels usually implement a pluggable architecture with support for system modules that can be loaded as needed and plugged into the kernel. This indicates that microkernels are very flexible; thus for example code to support new functionality -such as new hardware drivers- can be loaded and plugged in at any time. As referred to previously, Symbian OS was designed as a microkernel-based operating system. Access to the system resources is done by opening connections to resource servers that in turn coordinate access to the resources themselves. An important feature of the Symbian OS is a pluggable architecture for new implementations. Thus, new implementations for system functions can be designed as system objects and dynamically inserted into the kernel. For instance, new file systems can be implemented and added to the kernel as the operating system is running. However, there are some issues that this microkernel design carries. Thus, where a single system call is sufficient for a conventional operating system, the microkernel uses message passing. Performance can suffer because of the added overhead of communication between objects. The efficiency of functions that stay in the kernel space in conventional operating systems is diminished when those functions are moved to the user space. For example, the overhead of multiple function calls to schedule processes can diminish performance when compared to process scheduling in the Windows kernel that has direct access to kernel 11 Comparison between Smartphone Operating Systems data structures. Switches in privilege levels is likely to occur because messages pass between the user space and the kernel space objects which further complicates the performance. Finally, in conventional designs system calls work in a single address space, thus the process of message passing and privilege switching implies that two or more address spaces must be used to implement a microkernel service request [48]. The aforementioned performance issues have forced the designers of Symbian OS (as well as designers of other microkernel based systems) to pay careful attention to design and implementation details. The emphasis of design is for minimal, tightly focused servers [48]. Figure 2.3 Microkernel design 2.1.2 Development Environment In the year 2010, Symbian switched to a standard C++ with Qt5 as its SDK [29],thus making it possible for its OS to be used with either Qt Creator or Carbide. An advantage of the Qt is its ability to supports both the older Symbian S60 3rd and 5th editions, as well as the new Symbian platform. Not only that but it also supports Maemo and MeeGo, Windows, Linux and Mac OS X. Moreover, alternative application development can also be done using Python , Adobe Flash or Java ME. Symbian OS previously used a Symbian specific C++ version along with Carbide C++ integrated development environment (IDE) as the native application development environment. Web Runtime (WRT) is a portable 5 Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI). 12 Comparison between Smartphone Operating Systems application framework that allows creating widgets on the S606 Platform; it is an extension to the S60 WebKit based browser that allows launching multiple browser instances as separate JavaScript applications [29]. 2.1.3 Threads Management Symbian operating system has a lightweight thread known as the active object. Active objects are specialized threads that have some unique characteristics including the following: Each active object is specifically focused on an event that causes a thread or process to block a function; such lockable functions include communication and device I/O. Each active object works with a single active scheduler that listens for events for which the object is waiting. All active objects within a process use the same scheduler; different schedulers can be used between processes. An active object defines a specific entry point in its code that is used by the active scheduler when an event is generated. The entry point is represented by a standard function call that is defined for each active object. When waiting for an event, all active objects within a single process are maintained by the same scheduler. Hence, they act as a single thread to the system. Accordingly, active objects in a single process can be coordinated by a single scheduler implemented in a single thread. Active objects form an efficient and lightweight version of standard threads by combining code into one thread that would otherwise be implemented as multiple threads, building fixed entry points into the code and by using a single scheduler to coordinate their execution. 2.1.4 System Calls The Symbian kernel EKA2 is multi-threaded, thus allowing the preemption of low-priority kernel operations by high-priority ones [58]. The EKA2 has five threads, namely [58]: 6 S60 Platform (Series 60 User Interface) is a software platform for mobile phones that runs on Symbian OS. 13 Comparison between Smartphone Operating Systems The null thread which idles the CPU, de-fragments RAM. The null thread is also known as the idle thread. The supervisor thread which cleans up killed threads and processes, and also provides asynchronous object deletion. DFC thread 0 which runs DFCs for general device drivers, such as the comms, keyboard and digitizer. DFC thread 1 which runs the nanokernel's timer queue. Timer thread which runs the Symbian OS relative and absolute timers. 2.1.5 Interrupts Programs never link directly to the Symbian OS kernel, but interface to it through a shared library known as the user library. This library contains the necessary instructions to interface to the OS and request its service programs, calls the user library functions, which are preprogrammed to cause a software interrupt; It is the only mechanism for a program to interface outside it’s process. It is to be mentioned that Executive Calls are the user library calls that allow a user thread to enter a processor privileged mode so that it can access, in a controlled and predefined way, the hardware resources or kernel space objects or services. What are called Executive Calls for Symbian OS are known as System Calls for some other types of OS. All Executive Calls are implemented in terms of the SWI instruction (on the ARM) [58]. 2.1.6 Memory Management An essential characteristic of Symbian OS is that it is designed for devices where the amount of memory and resources available is limited. So, it needs a very efficient memory management. Run-time errors may occur in any application due to lack of resources. There errors are known as exceptions and it is impossible to prevent them occurring by modifying the program. Therefore, programs should be able to recover from exceptions when they occur. So, the key requirements for Symbian OS for good memory management are [48]. Program efficiency that does not let the program to use RAM unnecessarily. Release of resources as soon as possible (remember resources are limited). 14 Comparison between Smartphone Operating Systems Coping with out-of-memory errors. In Symbian EKA2, the memory model encapsulates significant MMU differences, such as whether a cache is virtually tagged or physically tagged, or whether there is an MMU at all. In the EKA1, assumptions about memory and the MMU were spread throughout the operating system, making it difficult, for example, to produce a mobile phone based on an ASIC7 without an MMU. This has become much easier with the advent of the EKA2, since the memory model allows you to model memory in different ways, and to change that decision relatively easily [48][42]. Currently, Symbian provides four different memory models; these are the moving model, the direct model, the multiple model and the emulator model. 1. The moving model: The moving model was designed for the superseded ARM architectures. The page directory of the moving model is 4-KB long and each entry holds 4 bytes, giving the directory a 16-KB size. Memory pages are protected by access bits associated with memory frames and by labeling memory access with a domain. Domains are recorded in the page directory and the MMU enforces access permissions for each domain. While segmentation is not overtly used, there is an organization to the layout of memory; that is to say there is a data section for user-allocated data and a kernel section for kernel- allocated data (Figure 2.4). 2. The direct model: The direct memory model assumes that there is no MMU at all. This model is rarely used and is not allowed on Smartphones. The lack of an MMU would cause severe performance issues. This model is useful for development environments where the MMU must be disabled for some reason. 7 ASIC is an integrated circuit (IC) customized for a particular use, rather than intended for general-purpose use 15 Comparison between Smartphone Operating Systems Direct Memory Access8 (DMA) is used by Symbian OS to offload the burden of high bandwidth memory to peripheral data transfers and allow the CPU to perform other tasks. DMA can reduce the interrupt load by a factor of 100 for a given peripheral, saving power and increasing the real-time robustness of that interface. A DMA engine is a bus master peripheral. It can be programmed to move large quantities of data between peripherals and memory without the intervention of the CPU. Multi-channel DMA engines are capable of handling more than one transfer at one time. Figure 2.4 Symbian OS moving model memory 8 Direct memory access (DMA) is a feature that allows certain hardware subsystems within the computer to access system memory for reading and/or writing independently of the central processing unit. 16 Comparison between Smartphone Operating Systems 3. The multiple model: The multiple model was developed for versions 6 of the ARM architecture and the subsequent versions. The MMU in these versions differs from that used in earlier versions. For example, the page directory requires different handling, since it can be sectioned into two pieces, each referencing two different sets of page tables. These two are used for user page tables and for kernel page tables. The new version of the ARM architecture revised and enhanced the access bits on each page frame and deprecated the domain concept. Although the multiple memory model is an improvement on the moving memory model, yet it has its own complexities. The most awkward issue is related to the solution for the synonym problem - providing a second or alias virtual address for the same physical address. The problem stems from the use of the virtual address as the initial index into the cache to select the small set of lines from which to determine an exact match using the physical address. Figure 2.5 illustrates the ideal situation with a synonym mapping - where the cache resolves both virtual addresses to the same cache line and data. Figure 2.5 Symbian OS multiple memory map 17 Comparison between Smartphone Operating Systems 4. The emulator model: This model was developed to support the Windows-hosted Symbian OS emulator. The emulator has few restrictions in comparison to a real target CPU. The emulator runs as a single Windows process, therefore the address space is restricted to 2 GB, not 4GB. All memory provided to the emulator is accessible to any Symbian OS process and therefore no memory protection is available. Symbian OS libraries are provided as Windows-format DLLs and therefore Windows handles the allocation and management of memory. The memory model helps in the creation of processes as an instantiation of an executable image loaded by the file server, and takes part in making inter-process data transfers. The memory model provides low-level memory management services, such as a perprocess address space and memory mapping. It performs the context switch when asked to do so by the scheduler and is involved in inter-process data transfer [48]. 2.1.7 Hardware To date, the Nokia N8 is the latest Symbian (Symbian^3) Smartphone (Figure 2.6) [54]. Its processor is a ARM11 processor (ARM v6 architecture), Broadcom GPU, VideoCore III Multimedia Engine with dedicated 3D Graphics HW Accelerator with OpenGL-ES 1.1/2.0 . It has Capacitive multi-touch display , External functional hardware keys, Virtual keyboard; Multiple text-entry options, Bluetooth 3.0 , HDMI mini C connector and High-Speed USB 2.0 Micro USB connector. Internal memory 16 GB. 18 Comparison between Smartphone Operating Systems Figure 2.6 Nokia N8 Smartphone 2.1.8 Networking Like many other general-purpose operating systems, Symbian OS embraces networks and allows implementations that use networking to expand its core functionality. Symbian OS supports many kinds of communication. Since it is a Smartphone operating system, it naturally supports telephony. It also supports many other communication technologies, including Bluetooth, wireless networking, GPS and messaging protocols. In addition, it allows for the implementation of new technologies that might be added in the future [54]. 2.1.9 Multitasking Symbian OS is designed to optimize the system for efficient event handling. Traditional programming models that regularly survey for events and then perform the appropriate action require multiple threads to perform these actions; this results in problems of synchronization of access to application resources. Symbian OS multitasking eliminates this problem by having a single thread that responds to events as they happen. It incorporates 19 Comparison between Smartphone Operating Systems an Active Scheduler that implements non-preemptive multitasking within the context of the single thread. The Active Scheduler grasps events as they occur and then runs the appropriate Active Object for that event [39]. The Active Object does the processing for the event and then returns control to the Active Scheduler. If several events occur in quick succession, they can be stored and then run one by one. There is a priority system that determines which Active Object should run first. To keep the system responsive, each event has to be quick so that control is returned in order for the next event to be processed. Traditional multi-threading is also implemented in Symbian OS. Multiple applications and servers can be run simultaneously [39]. Threads are scheduled preemptively by the kernel. Each thread may be suspended while waiting for a given event to occur and may resume whenever appropriate. The kernel controls thread scheduling, allowing the threads to share the system resources by timeslice division, preempting the running of a thread if another, higher priority thread becomes eligible to run. This constant switching of the running thread is the basis of pre- emptive multitasking, which allows multiple servers and applications to run simultaneously. A context switch occurs when the currently running thread is suspended (for example, if it is blocked, has reached the end of its time-slice, or a higher priority thread becomes ready to run) and another thread is made current by the scheduler. The context switch incurs a runtime overhead in terms of the kernel scheduler and, potentially, the memory management unit and hardware caches, if the original and replacing threads are executing in different processes [39]. 2.2 Android 2.2.1 Platform Design Android is an open and comprehensive platform. It includes an operating system, middleware, user-interface and applications. It has the ability to run in many different types of Smartphones. Android OS is often referred to by Google as a software stack. The software stack is divided into four layers that include five different groups; these are the application layer, the application framework, the libraries, the runtime and the kernel. 20 Comparison between Smartphone Operating Systems Each layer of the stack groups together several programs that support specific operating system functions (Figure 2.7) [7] [8]. The Kernel is located at the base of the software stack (Figure 2.7). Google utilized Linux version 2.6 OS to build the Android kernel, which comprises Android's memory management programs, security settings, power management software and several hardware drivers. Drivers are programs that control hardware devices. Android Libraries occupy the next layer of software stack (Figure 2.7). The libraries are sets of instructions that inform the device how to handle different kinds of data. For example, the media framework library supports playback and recording of various audio, video and picture formats. Other libraries include a three-dimensional acceleration library (for devices with accelerometers) and a Web browser library. Android Runtime layer is located at the same level as the libraries layer (Figure 2.7). It includes a set of core Java libraries. Android application programmers build their applications using the Java programming language. This layer also includes the Dalvik Virtual Machine. A virtual machine is a software application that behaves as if it were an independent device with its own operating system. Virtual machines can be run on a device that operates on a completely different OS than the physical machine's OS. The Android OS uses virtual machines to run each application as its own process. This is important because no application is dependent upon another. Not only that but also when an application crashes it does not affect other applications running on the device. Moreover, it simplifies memorymanagement. The Dalvik virtual machine operates like a translator between the application side and the operating system. Every application which runs on Android is written in Java. As the operating system is not able to understand this programming language directly, the Java programs will be received and translated by the Dalvik virtual machine. The translated code can then be executed by the operating system. 21 Comparison between Smartphone Operating Systems Figure 2.7 Android Platform Architecture The Application Framework layer is the second layer of the software stack (Fig 2.7). It includes the programs that manage the phone's basic functions like resource allocation, telephone applications, switching between processes or programs and keeping track of the phone's physical location. Application developers have full access to Android's application framework. This allows them to take advantage of Android's processing capabilities and support features when building an Android application. The application framework is a set of basic tools which a developer can use to build up much more complex tools [8]. The Applications’ layer is at the top of the software stack (Fig 2.7). This layer incorporates the basic functions of the device such as making phone calls, accessing the Web browser and accessing the contacts list. This is the layer which is most frequently used by the 22 Comparison between Smartphone Operating Systems average user. This accomplished with the help of the user interface. Only Google programmers, application developers and hardware manufacturers access the other layers further down the stack [8]. 2.2.1.1 Monolithic kernel (Modified Linux version 2.6 OS) Monolithic is a free available, open source implementation of Unix, developed by thousands of individuals. Android is a typical representing of a monolithic kernel. Continuously enhanced, it often changes its structure. Changing parts of the kernel means complete recompilation. All system functions, including the whole process and memory management, process and thread scheduling, I/O functionality and drivers are implemented in kernel space. The I/O communications are provided by modules, which may be inserted and removed during runtime. Modules are built against the kernel, i.e.: If the kernel changes, the set of modules changes too. The estimated size of an average monolithic kernel is about twenty to thirty megabytes resulting in a tedious maintenance process [38]. 2.2.2 Development Environment The Android software development kit (SDK) includes a comprehensive set of development tools. These include a debugger, libraries, a handset emulator (based on QEMU9), documentation, sample code, and tutorials. The SDK is downloadable on the android developer website. The officially supported integrated development environment (IDE10) is Eclipse using the Android Development Tools (ADT) Plugin, though developers may use any text editor to edit Java and XML files then use command 11 line tools (Java Development Kit and Apache Ant are required) to create, build and debug 9 QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures. 10 IDE is a software application that provides comprehensive facilities to computer programmers for software development 11 Apache Ant is a software tool for automating software build processes. 23 Comparison between Smartphone Operating Systems Android applications as well as control attached Android devices [6][5]. 2.2.3 Threads Management The Android OS has a rather sophisticated threading system that puts a lot of responsibility on the developer to build a thread safe application. By default applications including the UI are single threaded. This means that all “long running” tasks within an application must split off a background thread [2]. The Android OS thinks of applications as being made up of combinations of four building blocks. These building blocks are: Activities, Services, Broadcast receivers and Content providers. Activities denote all of the UI elements of the application. Services are the threads that perform all of the background work needed for the application to perform its job. Broadcast receivers are essentially listeners that allow an application to respond to system or application events. Content providers are data sets that the application has made available to other applications. A major advantage of this split is that applications may reuse components that are provided by other applications, thus reducing the need for duplicated codes [2]. 2.2.4 System Calls In Android, system calls is dispatched from the applications’ threads. User thread handles system calls with altered permissions. Some of system calls are executed through the same interfaces that are provided to applications, others are done by querying classes that are built-in. A example of this is the android.location; Location class which provides access to the current GPS coordinates [4]. 2.2.5 Interrupts The Android OS makes extensive use of events to handle the interrupts, interprocess communication and system calls needed to make a cutting edge application [3]. A brief overview of how it all works is as follows: 24 Comparison between Smartphone Operating Systems An application fires onCreate, onStart and onResume when it initially begins. Then if at any point another window covers any part of the application onPause is fired. It is highly recommended that applications save their state when onPause is fired as they may not get another chance to do so before being killed. When the entire application becomes no longer visible after the onPause is fires, then the onStop may be called followed by The onDestroy as the application is totally closed. However, the onStop and the onDestroy may not be called if system resources run low. The OS may then simply kill the application. This same basic concept of creating events and firing them at appropriate times is the method used by the Android OS to pass data between threads in a single application. 2.2.6 Memory Management Android OS is famous for its unique process and memory management capabilities. It resembles Java and NET in that it uses its own run time and virtual machine to manage application memory. However, it differs these two frameworks in that it uses its runtime to manage the process lifetimes. Android OS ensures application responsiveness by stopping and killing processes as necessary to free resources for higher-priority applications [57]. A characteristic feature of the Android application is that it runs in a separate process within its own Dalvik instance, relinquishing all responsibility for memory and process management to the Android run time, which stops and kills processes as necessary to manage resources. All Android applications will remain running until need arises for the system resources for utilization by another application. The order in which processes are killed to reclaim resources is determined by the priority of the hosted applications. It’s important to structure the application correctly to ensure that its priority is appropriate for the work it is doing. If not, the application could be killed while it is still in the middle of something important. At any given time, application is in one of the following states (Figure 2.8): 25 Comparison between Smartphone Operating Systems Active Process, Visible Process, Started Service Process, Background Process or Empty process. An application’s priority is equal to its highest-priority component. Figure 2.8 Android Application priority Dalvik and the Android runtime are seated on top of a Linux kernel that handles low-level hardware interaction including drivers and memory management, while a set of APIs provides access to all of the underlying services, features and hardware. Dalvik Virtual Machine is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instances efficiently. It relies on the Linux kernel for threading and lowlevel memory management. The Dalvik virtual machine is one of the key elements of Android. Android uses its own custom virtual machine (VM) instead of traditional Java virtual machines such as Java ME (Java Mobile Edition) used by others. The Android VM is designed to ensure that multiple instances run efficiently on a single device [65]. All Android hardware and system service access is managed using Dalvik as a middle tier. A great advantage of using a VM to host application execution is that developers have an 26 Comparison between Smartphone Operating Systems abstraction layer that ensures they never have to worry about a particular hardware implementation. Low-level functionality -including security, threading, process and memory management- are handled by the Dalvik VM using the device’s underlying Linux kernel. The Dalvik VM executes Dalvik executable files, a format optimized to ensure minimal memory foot- print. The executables are created by transforming Java language compiled classes using the tools supplied within the SDK. The Android OS is built on Java. Accordingly, it utilizes garbage collection to prevent memory leaks. However, as in all other languages that include garbage collection, it is not an ironclad protection against leaking memory. However, the Android OS documentation provides some help on how to avoid those situations that would leak memory even with a garbage collector. Furthermore, the low level memory management is handled by the Linux Kernel itself (version 2.6). 2.2.7 Hardware At present the Nexus S is the newest Smartphone that runs the Android 2.3 OS (Figure 2.9) [35].The Nexus S is equipped with a Samsung processor PowerVR SGX 540 GPU with OpenGL ES 1.1/2.0 FM Transmitter/Receiver, Wi-Fi (A, B, G & N) Bluetooth 2.1 + EDR GPS Dual microphone for noise cancelation, External Speaker and Headphone Jack. Three-axis gyroscope Accelerometer Digital compass Proximity sensor Light sensor 27 Comparison between Smartphone Operating Systems Figure 2.9 Nexus S Smartphone 2.2.8 Networking As with memory management the low level details are handled by the Linux Kernel. The currently released Android Smartphones have Wi-Fi A/B/G/N ,GPS and Bluetooth in addition to the telephony and messaging protocols [35]. 2.2.9 Multitasking One of the best features of Android is its ability to multi-task. Android is fairly unique in the ways it allows multiple applications to run at the same time. Developers coming from a different platform may find the way it operates surprising [58]. The multitasking of the Android operating system works more like a traditional computer 28 Comparison between Smartphone Operating Systems operating system than traditional Smartphone operating systems. It will allow the user to run as many applications as the memory of the phone can handle. This gives the user the freedom to determine of how the phone runs. There is no freezing of the apps in the background. Instead, when a process is running in the background it still is functional and will complete the process that it has been set for. In this way things are done quicker. In Android these are no tightly coupled entities: applications may seem present to the user without an actual process currently running the app; multiple applications may share processes, or one application may make use of multiple processes depending on its needs; the process(es) of an application may be kept around by Android even when that application is not actively doing something. Android lets the entire application continue to run in the background (Figure 2.10). If you use one of these applications then switch to something else, it'll keep running in the background, sound and all, until you decide to close it or your phone runs out of memory [58]. Figure 2.10 Android multitasking exemplified by some tasks running in the background of a Smartphone 29 Comparison between Smartphone Operating Systems 2.3 iPhone OS 2.3.1 Platform Design The figure below illustrates the iPhone OS architecture (Figure 2.11) [22]. Figure 2.11 iPhone OS Architecture Hardware: In iPhone, Hardware refers to the physical chips soldered to the iPhone’s circuitry. The actual processor falls under this layer, but the instruction set and in-memory descriptor tables are contained within the “processor” layer [22]. Firmware: It refers to the chip-specific code that is either contained with memory in/around the peripheral itself, or within the drive for said peripheral [22]. Processor: It is refers to the ARM instruction set and the interrupt descriptor table as set up by the iPhone OS during boot and driver initialization [22]. iPhone OS: It is the kernel, drivers, and services that comprise of the iPhone Operating System. It sits between the user space and hardware [22]. Objective-C Runtimes: It is comprised of both the Objective-C dynamically-linked runtime libraries, as well as the underlying C libraries [22]. Frameworks/API: Frameworks/API layer has API calls which are Apple-distributed headers with the iPhone SDK, with some dynamic linking occurring at runtime. These 30 Comparison between Smartphone Operating Systems reside on top of the Objective-C runtime, as many of these are written in Objective-C [22]. Application: The application stored in iPhone has to be purchased through the application store. This application was compiled to native code by the Apple-distributed iPhone compiler, and linked with the Objective-C runtime and C library by the linker. The application also runs entirely within the user space environment set up by the iPhone OS [22]. 2.3.1.1 Darwin (Hybrid) kernel (XNU) Is built around XNU, a hybrid kernel that combines the Mach12 3 microkernel, various elements of BSD (including the process model, network stack, and virtual file system), and an object-oriented device driver API called I/O Kit [59]. Some of the benefits of this choice of kernel are the Mach-O13 binary format, which allows a single executable file (including the kernel itself) to support multiple CPU architectures, and the mature support for symmetric multiprocessing in Mach. The hybrid kernel design compromises between the flexibility of a microkernel and the performance of a monolithickernel [59]. 2.3.2 Development Environment The SDK was released on 2008 by Apple14 Inc., and allows developers to make applications for the iPhone and iPod touch, as well as test them in an "iPhone simulator". However, loading an application onto the devices is only possible after paying an iPhone Developer Program fee. Since the release of Xcode 3.1, where Xcode is the development environment for the iOS SDK, iPhone applications, like iOS and Mac OS X, are written in Objective-C [34]. 12 Mach is an operating system kernel developed at Carnegie Mellon University to support operating system research, primarily distributed and parallel computation 13 Mach-O is a file format for executables, object code, shared libraries, dynamically-loaded code, and core dumps. A replacement for the a.out format, Mach-O offered more extensibility and faster access to information in the symbol table. 14 Apple Inc. is an American multinational corporation that designs and markets consumer electronics, computer software, and personal computers founded in 1976. 31 Comparison between Smartphone Operating Systems 2.3.4 Threads Management The iPhone OS has all of the thread management technologies that are now considered standard. You can spawn threads and synchronize them using all the usual technologies like Mutexes, Read-write locks, Distributed locks, etc. However Apple strongly discourages using threads in this manner. They feel that the direct programming of threads is too hard and can be made far more efficient by allowing the OS to handle the thread management. They recommend using operation queues. These are queues that you assign tasks to and the OS handles the necessary thread work to make it happen. This allows the OS to handle the thread load and processing of tasks more efficiently [10] [55]. 2.3.5 System Calls System calls in iPhone is achieved by the combination of API, framework and library calls. It is for providing a high-level, developer-friendly interface to UNIX kernel (XNU). To begin with, the frameworks/API is the set of functions the developer wants to see in order to make his/her application interact with the device and underlying iPhone OS. The framework, which is part of the overall Objective-C runtime, is a series of upper-level function calls (and C extensions, in the case of the Obj-C runtime) in order to allow a more developer-friendly interface to the grimy, obfuscated (and undocumented) C library [64]. The C library lies underneath the Objective-C runtime. It provides true object oriented dynamic-typing extensions to the C language (unlike C++, which just looks objectoriented). The C library is dynamically linked to, from the Objective-C runtime to translate messages requiring lower-level intervention into UNIX system calls, where the iPhone OS can process them as needed [64]. For example, when we use graphics display: First, the application is loaded into memory and starting its execution, wishes to display an image for a splash screen. Secondly, it makes API (framework) call. The API/framework receives the function call, and does the work of translating the higher-level image processing interface into a collection of calls to the Objective-C runtime, which will then make the 32 Comparison between Smartphone Operating Systems appropriate calls to the C library. The (dynamically-linked) C library, having received a series of function calls from the Objective-C runtime and corresponding frameworks and APIs, will further refine the functions into assembly-level system calls (via a software interrupt) which the iPhone OS kernel can process. The iPhone OS kernel, having received the system calls in assembly format from the C library, will then call upon the appropriate drivers (the touchscreen display drivers, in this case) to interact with the hardware. 2.3.6 Interrupts The iPhone OS allows two different methods of handling interrupts: UIApplicationDelegate protocol which allows an application to be notified of a variety of activities and take appropriate action. Some of the actions that can be responded to are [11]. i. Finished loading, ii. Low memory warning, iii. Orientation changed, iv. About to be deactivated, etc. NSNotification class. This class allows you to be notified of any interrupts, or other custom activities that occur within the OS. However, to take advantage of this you need to be aware of the activities that you are looking for and trap them specifically. This is a lower level construct that can be more complicated to use [12]. 2.3.7 Memory management One of the biggest sources of confusion for new iPhone developers is memory management. Most developers are familiar with using automatic garbage collection. Since iPhone OS has no garbage collection, the developer has to clean up the variables after using them, otherwise the program will leak memory. Though NSObject class has an accounting material that helps to keep the track of how many other objects are currently using the 33 Comparison between Smartphone Operating Systems object, but it is not automatic and developers have to adjust that by themselves [13]. The rule for managing memory is to make sure the number of ownership methods called on an object will equal the number of loss-of-ownership methods by the time the program has finished executing. When creating or copying an object, its retain count is 1. But when other objects express an ownership interest in your object, it’s retain count is incremented. The owners of an object may also relinquish their ownership interest in it, which decrements the retain count. When the retain count becomes zero, the object is deallocated (destroyed) [24][49]. Memory Management Initialization takes place as follows: When An abstract memory object is mapped on a given host for the first time The kernel sends a message to its abstract memory object. This message informs the memory manager that the object is being mapped on a new host. The message carries the names of the kernel generated memory cache object control port and the memory object name port, the one of two things happen: i. If the memory manager responds with memory-cache-object-control by calling memory-object-ready, then this informs the kernel that this is a “new form” memory manager. The memory-object-ready call also allows the specification of the “object cache” attribute and the copy strategy ii. The memory manager can respond with the old call memory-cache- objectcontrol through memory-object-set-attributes, which can also set the “object cache” and copy strategy attributes. This call also allows a “ready” attribute to be set; this has the same effect as memory-object-ready but indicates to the kernel that this is an “oldform” memory manager. These calls inform the kernel that the memory manager is now ready to respond to requests on behalf of this memory object. 34 Comparison between Smartphone Operating Systems 2.3.8 Hardware To the best of my knowledge, the iPhone 4 is the latest iPhone OS utilizing Smartphone (Figure 2.10). It is powered by the Apple A4 chip, which was designed by Intrinsity and manufactured by Samsung similar to all previous iPhone models. This system-on-a-chip is composed of a Cortex-A8 CPU integrated with a PowerVR SGX 535 GPU. The Apple A4 is also used in the iPad where it is clocked at its rated speed of 1 GHz. The clock speed in the Figure 2.12 iPhone 4 Smartphone 2.3.8 Networking The iPhone OS abstracts away all of the networking functionality. However, it does provide a sample class entitled Reachability, which allows an application to determine if a networking resource is available and if so on what type of connection. However, Bluetooth is handled entirely separately from Wi-Fi. Bluetooth is handled through the Game Kit Framework. This framework creates an easy interface to find other Bluetooth devices and to share data with them. In addition it obviously has GPS [49.] 35 Comparison between Smartphone Operating Systems 2.3.9 Multitasking One of the major drawbacks of older versions of iPhone OS was the lack of multitasking capabilities. OS designers argued that although there are certain benefits to being able to run multiple applications at once, there are also a series of reasons why they deliberately chose to use a security model in the iPhone OS that only allows one app to run at once. According to them, the first is the limited resources. Mobile devices have a finite amount of RAM and CPU power, so allowing multiple apps to be loaded and running all at once introduces new problems related to the mobile device's performance and battery life. Their second justification is that it increases the system's complexity, as users will now be forced to monitor and manage the processes running in the background. Another problem relates to security. If apps are not terminated by the user in a straightforward way as they are on the iPhone OS, users may not be aware they are still running. Background apps might provide a valuable service, but without any restrictions, they're also able to install spyware, viruses and other malicious software (Figures 2.13 and 2.14) Figure 2.13 Multitasking capabilities of the iPhone OS 36 Comparison between Smartphone Operating Systems Nevertheless, in its most recent version, Apple's iPhone OS (iOS4) supports more multitasking behaviors, which had been one of the most-requested features since the release of the original iPhone in 2007. However, multitasking in iOS4 has been implemented with a very specific user experience in mind. Thus, iOS4 lets applications keep certain features running in the background (but not full apps), have its state saved (as with previous versions of the iPhone OS), both, or neither, as desired. Thus, most recent versions of the iPhone OS has the ability to preemptively schedule multiple concurrent tasks but lacks ability to install third party applications that runs in the background. It does not allow viruses and spyware to install and run in the background [60]. Figure 2.14 Multitasking in a recent iPhone OS operated Smartphone 37 Comparison between Smartphone Operating Systems 2.4 BlackBerry OS 2.4.1 Platform Design The BlackBerry OS has a Java based kernel, and utilizes an ARM architecture with an Intel XScale processor. ARM is a Reduced Instruction Set Computer15 (RISC) type with instruction set architecture16 (ISA). It uses 16 x 32-bit registers, 1 processor status register and a load/store architecture ARM does not manufacture its own CPU chips, but licenses it to other manufacturers to integrate them into their own system. The latest series of BlackBerry phones (the 9000 series) uses a XScale microprocessor [20] [37]. This processor utilizes an open source bootstrap firmware called RedBoot or (Red Hat Embedded Debug and Bootstrap), designed for embedded systems. 2.4.2 Development Environment The BlackBerry Java Development Environments (BlackBerry JDE) is a fully integrated development and simulation environment for building a BlackBerry Java Application for BlackBerry devices was developed by RIM and released in 16 December 2008. Utilizing the BlackBerry JDE, developers can build applications using the Java ME programming language and the extended Java APIs for BlackBerry [16]. The BlackBerry Java Development Environment includes the following development tools [16]; BlackBerry Integrated Development Environment (IDE), BlackBerry Smartphone Simulator, Java ME APIs and BlackBerry APIs Sample applications. The BlackBerry IDE includes a full suite of editing and debugging tools that are optimized for the development of a BlackBerry Java Application. The BlackBerry Smartphone Simulator provides a complete Windows type environment, and is designed to simulate UIs and user interaction, network connections, email services, and wireless data synchronization. Fundamentals, Guide Release cycles for versions 6. The BlackBerry Java Development 15 RISC is a CPU design strategy based on the insight that simplified (as opposed to complex) instructions can provide higher performance if this simplicity enables much faster execution of each instruction. 16 ISA is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O. 38 Comparison between Smartphone Operating Systems Environment Component Package includes the following development tools for development within third-party IDEs such as NetBeans or Eclipse: RAPC command can be used to prompt compiler to compile .java and jar files into .cod files that you can run in the BlackBerry Smartphone Simulator or on a BlackBerry device. JavaLoader tool can be used to add or update an application on a BlackBerry device for testing, and to view information about application files. BlackBerry Signature Tool can be used to send code signature requests to the BlackBerry Signing Authority The Preverify Tool can be used to partially verify the classes before loading an application onto a BlackBerry device. The JDWP tool can be used to debug applications using third-party integrated development environments. 2.4.3 Interrupt A feature of the ARM architecture is to allow designers to make the decision between performance and latency tradeoffs. For example, instructions that would normally run to completion can be made interruptible where low latency is a priority. This is particularly useful in the case of mobile phones or other telecommunication devices, which run on embedded systems that require low latency to perform adequately [44]. 2.4.4 Memory Management The BlackBerry Java Virtual Machine (JVM) manages memory usage on the BlackBerry device. The BlackBerry JVM allocates memory, performs garbage collection17, and automatically swaps data between SRAM and flash memory. The BlackBerry JVM must also share available memory between the BlackBerry device applications and the BlackBerry Java Application. The memory capabilities represent the total amount of available memory, which is larger than the available working memory when all of the applications and associated application data exist on the BlackBerry device. Garbage collection is performed at three levels: (RAM garbage collection, Full garbage collection and Idle 17 Garbage collection is a form of automatic memory management. The garbage collector attempts to reclaim garbage or memory occupied by objects that are no longer in use by the program. 39 Comparison between Smartphone Operating Systems garbage collection) [17]. RAM garbage collection of the BlackBerry Java Virtual Machine initiates a RAM garbage collection operation only when the BlackBerry JVM cannot allocate an object because of a lack of space in RAM. The RAM garbage collection operation typically takes 500 to 600 milliseconds to execute. The garbage collection operation removes any freshly allocated variables that are no longer referenced in RAM. To make sure that the lack of a reference in RAM is a sufficient condition for removing the object, a RAM garbage collection operation can only be performed when objects have not been paged out to flash memory. Full garbage collection operation executes for 1 second on average and should take less than 2 seconds to complete. Idle garbage collection does not occur every time that the BlackBerry device idle; it occurs only when the system considers a garbage collection operation to be beneficial for optimal system performance and maximized battery performance. Access to memory: The BlackBerry Java Development Environment is designed to inhibit applications from causing problems accidentally or maliciously in other applications or on the BlackBerry device. BlackBerry applications can write only to the BlackBerry device memory that the BlackBerry Java Virtual Machine uses; they cannot access the virtual memory or the persistent storage of other applications (unless they are specifically granted access to do so). A BlackBerry Java Application can only access persistent storage or user data, or communicate with other applications, through specific BlackBerry APIs. Research In Motion18 must digitally sign a BlackBerry Java Application that uses these BlackBerry APIs, to provide an audit trail of applications that use sensitive APIs. 2.4.5 Hardware The Blackberry Torch 9800 is the latest Blackberry as of this writing (Figure 2.7) [15]. CPU Marvell Tavor (ARMCortexA8) 512MB RAM, 18 Research In Motion is a Canadian telecommunication and wireless device company best known as the developer of the BlackBerry Smartphone. 40 Comparison between Smartphone Operating Systems 4GB storage, microSD slot and Image System Processor (ISP):STmicroelectronics STV0987,3.2 inch HVGA +(480x360) Synaptics controlled touch screen display. Figure 2.15 BlackBerry Torch 9800 Smartphone 41 Comparison between Smartphone Operating Systems 2.4.6 Networking In Blackberry phones there is WiFi A GPS, Bluetooth, WAP, GSM/GPRS/EDGE networks: 850/900/1800/1900MHz and 3G UMTS networks: 2100/1900/850/800 MHz. The Blackberry can be used on almost every carrier in the world (over 475 of them) [15]. 2.4.7 Multitasking The BlackBerry OS provides multitasking and supports specialized input devices that have been adopted to Research in Motion (RIM) for use in its Smartphones including trackweel, trackball, trackpad and touch screen. BlackBerry is primarily a messaging phone which consists of the largest number of messaging features in a Smartphone. The blackberry platform is renowned for its native support for corporate e-mail and allows complete wireless activation and synchronization with Microsoft Exchange, Lotus or Novell e-mail, calendar, tasks, notes …etc. . It can thus run more than one application at a time. For example: while making a call, you can switch to the calendar or contacts application. These applications run in the background while carrying out current task. However, the more applications that are running, the more memory the device uses. Third-party developers can write software using the available BlackBerry API classes, although applications that make use of certain functionality must be digitally signed [18] [43]. 42 Comparison between Smartphone Operating Systems Chapter Three: Comparison This chapter will compare the four Smartphone operating systems (Symbian OS, Android OS, iPhone OS and Blackberry OS) as regards to their Supported Platforms, Development Environment, Software Features, Hardware, Multimedia Support and Power Management. 3.1 Platform This section compares between the four operating systems as regards to the supported phones and supported platforms. Supported Phones As for supported phones, Symbian OS and Android OS are evidently more supported than iPhone OS and Blackberry OS (Table 1.1). Thus, whereas each of Symbian OS and Android OS are utilized by three different smart phone brands (Nokia, Sony Ericsson and Samsung for Symbian, and HTC, GI and Sony Ericsson for Android) iPhone OS and Blackberry OS are utilized by only one brand each. Not only that each of these two latter OSs is utilized by a smart phone of its own make i.e. iPhone OS supports iPhone smart phone whereas Blackberry OS supports Blackberry smart phone. Table 3.1: Comparison between the four operating systems as regards to supported phones and supported platforms [7] [8] [20] [22] [37] [58] Smartphone OS Symbian OS Android OS iPhone OS Blackberry OS Supported Phones NOKIA Sony Ericcson SAMSUNG HTC G1 Sony Ericcson Iphone Blackberry Supported platforms X86 ARM X86, ARM , MIPS ARM BlackBerry line of Smartphones Supported Platforms As regards to supported platforms, ARM is supported by Symbian OS, Android OS and iPhone OS. ARM is a 32-bit reduced instruction set computer instruction set architecture (ISA) 43 Comparison between Smartphone Operating Systems developed by ARM Holdings. The ARM architecture is the most widely used 32-bit ISA in terms of numbers produced. They were originally conceived as a processor for desktop personal computers. The relative simplicity of ARM processors makes them suitable for low power applications. As a result, they have become dominant in the mobile and embedded electronics market, as relatively low-cost, small microprocessors and microcontrollers. X86 is supported by both Symbian OS and Android OS. In the year 2005, about 98% of the more than one billion mobile phones sold each year used at least one ARM processor. As of 2009, ARM processors account for approximately 90% of all embedded 32bit RISC processors. ARM processors are used extensively in consumer electronics, including PDAs, mobile phones, digital media and music players, hand-held game consoles, calculators and computer peripherals such as hard drives and routers. Over the years, the ARM family has progressed for over 10 versions (ARM1-ARM11). The present study has shown that both Symbian and Android support the X 86 platforms (Table 3.1). The term x86 refers to a family of instruction set architectures (ISA) based on the Intel 8086 CPU that was launched in 1978. Many additions and extensions have been added to the x86 instruction set over the years, almost consistently with full backward compatibility. The architecture has been implemented in processors from Intel, Cyrix, AMD, VIA, and many others. As for the Blackberry OS, the present study reveals that it only supports the BlackBerry platform (Table 3.1) which is perhaps best known for its native support for corporate email through mobile information device profile MIDP 1.0 and MIDP 2.0, which allows complete wireless activation and synchronization with Microsoft Exchange, email, calendar, tasks, notes, and contacts, when used with the Blackberry Enterprise Server. 3.2 Development Environment In computer program and software product development, the development environment is the set of processes and programming tools used to create the program or software product. The term may sometimes also imply the physical environment. An integrated development environment is one in which the processes and tools are coordinated to provide developers an orderly interface to and convenient view of the development. 44 Comparison between Smartphone Operating Systems Software Development Kit (SDK) Software developer's kit (SDK) is a set of programs used by a programmer to write application programs. Typically, an SDK includes a visual screen builder, an editor, a compiler, a linker, and sometimes other facilities. This study has shown that the Smartphone OSs in question (Symbian, Android, iPhone and Blackberry OS) are furnished with different SDKs. The official SDK for Blackberry is Windows and for iPhone is Mac OSX. Symbian and Android have multiplatform SDK. Programming Language As for the programming language, the review done for this study indicates that three (Android, Symbian and Blackberry) out of the four smart phones support Java. In addition to capability of being programmed by Java, Symbian and Android can also be programmed in C++ (Table 3.2). Moreover, Android OS can be programmed in C core. Symbian OS can also be programmed in Python. It is to be mentioned here that Python is an object-oriented programming language that has gained popularity because of its clear syntax and readability. Python is said to be relatively easy to learn and portable. iPhone OS on the other hand, is programmed Objective-C (COCOA). While Objective-C remains the most powerful iPhone development language, JavaScript has been gaining traction as a viable alternative, particularly for basic applications and rapid prototyping. The benefits of JavaScript are a far larger audience of programmers and development tools, and a number of bridges have emerged to help JavaScript take advantage of native iPhone resources. JavaScript alone does not give the developer access to all of the native resources of the iPhone but there are ways of accessing iPhone functionality for basic applications or prototyping. For more sophisticated applications, developers will have to turn to Objective-C, the native Mac programming language, which is not as popular as other languages like JavaScript. Thus, among these operating systems, iPhone OS and Blackberry provide limited programming languages choices and development software. Currently, Java program cannot be fully run on iPhone and C++ program cannot be run on blackberry. It means that a program written for other Smartphones cannot easily be ported for iPhone or Blackberry because of lack 45 Comparison between Smartphone Operating Systems compatibility with their native application development framework. Furthermore, Symbian OS and android OS are open source programs that can be used or modified to suit the needs of users and other developers; Blackberry and iPhone OS are not (table 3.2). Table 3.2: Compares the main elements of the development environments of the four operating systems [5][6][16][29][34] Smartphone OS SDK Available Programmed in Open source Official SDK platform(s) Company / developer Latest OS version (Smartphone) Symbian OS Yes C++ , Java ME , Python YES Android OS iPhone OS Blackberry OS Yes Yes Yes C (core) ,C++, ,Java (UI) ObjectiveC (COCOA) Java YES NO NO Multiplatform (Qt) Multiplatform Mac OS X Windows Symbian Foundation Google Inc. , Open Handset Alliance Apple Inc. Research In Motion Symbian^3 ( Nokia n8 ) Android 2.3 (Nexus S ) IOS 4.0 (Iphone 4) Blackberry 6.0 (Blackberry Torch 9800) 3.3 Software Features The Kernel Comparison of the software features of the four operating systems reveals that that Blackberry has a Java based kernel, iPhone has a hybrid (Darwin / XNU) kernel, Android has a Linux 2.6v kernel, whereas Symbian has a microkernel EKA2 (table 3.3). It is to be mentioned here that the kernel is an essential center of the operating system, the core that provides basic services for all other parts of the operating system. 46 Comparison between Smartphone Operating Systems Multitasking Multitasking, in an operating system, allows the user to perform more than one task at a time. The operating system is able to keep track of where the user is in these tasks and go from one to the other without losing information. When comparing multitasking facilities of the four operating systems it is evident that all four of them have multitasking capabilities. However, iPhone OS has multitasking facility only in its newest version, the iOS4, and this too is still limited. As for memory management, this study has shown that the Blackberry has Java virtual machine (JVM) that allocates memory, performs garbage collection, and automatically swaps data between SRAM and flash memory. The iPhone OS has no garbage collection facilities; when an object is created or copied its retain count is 1, when the retain count becomes zero the object is deallocated or destroyed. The Dalvik VM of Android OS uses the device’s underlying Linux kernel to handle lowlevel functionality, and executes Dalvik executable files. Symbian on the other hand, has no virtual memory (Table 3.3). Multitasking Handling As for multitasking handling, the operating system itself controls most of the multitasking. Symbian OS implements pre-emptive multitasking so that it can run multiple applications and servers concurrently. Active objects are used to implement non-pre-emptive multitasking within the context of a single thread, whereas Android lets the entire application continue running in the background until you decide to close it or the phone runs out of memory. On the other hand, Blackberry OS can run more than one application at a Time. These applications run in the background while carrying out current task. However, the more applications that are running, the more memory that is used by device. As for the iPhone OS, it is only the iOS 4 that lets applications keep certain features running in the background and the background application state saved. The iOS4 allows developers to choose how their app behaves; in older versions only one 3rd party application can run at a time (Table 3.3). System Call A System call is a mechanism used by an application for requesting a service from the operating system. Examples of the services provided by the operating system included 47 Comparison between Smartphone Operating Systems allocation and deallocation of memory, reporting of current date and time etc. These services can be used by an application with the help of system calls. Many of the modern OSs have hundreds of system calls. In Android, system calls are dispatched from the applications’ threads, whereas system calls in iPhone are achieved by a combination of application program interface (API), framework and library calls. It is for providing a highlevel, developer-friendly interface to a UNIX kernel (XNU). The Symbian EKA2 is multithreaded, allowing the preemption of low-priority kernel operations by high-priority ones (table 3.3). Table3.3. Comparison between software features of Symbian, Android, iPhone and Blackberry OS [4] [13][17][18][24][38][39][42][48][49][57][58][59][60][64] Smartphone OS Symbian OS Android OS iPhone OS Blackberry OS Kernel Microkernel (EKA2) Linux 2.6v kernel Hybrid (Darw in) (XNU) Java based Multitasking Yes Yes Only in IOS 4 Yes Multitouch interface Yes Yes Yes No • No Virtual Memory. Memory Management • Addressing memory (direct, multiple, moving, emulator). •Dalvik VM uses the device’s underlying Linux kernel to handle lowlevel functionality. •The Dalvik VM executes Dalvik executable files. • iOS has no garbage collection. • When creating or copying an object, its retain count is 1. • When the retain count becomes zero, the object is deallocated (destroyed). The BlackBerry JVM allocates memory, performs garbage collection, and automatically swaps data between SRAM and flash memory. 48 Comparison between Smartphone Operating Systems Multitasking Handling System calls Symbian OS implements pre-emptive multitasking so that it can run multiple applications and servers concurrently. Active objects are used to implement non-preemptive multitasking within the context of a single thread.. EKA2 multithreaded, allowing the preemption of low-priority kernel operations by high-priority ones. • Android lets the entire app continue to run in the background until you decide to close it or your phone runs out of memory, • the operating system itself controls much of the multitasking, In Android, system calls are dispatched from the applications’ threads. • In iOS 4 only ,it lets apps keep certain features running in the background. have its state saved . • iOS4 allows developers to choose how their app behaves. • before iOS 4 Only one 3rd Party application can run at a time. System calls in iPhone is achieved by the combination of API, framework and library calls. It is for providing a high-level, developerfriendly interface to UNIX kernel(XNU). • Blackberry OS can run more than one application at a time. • These applications run in the background while carrying out current task. However, the more applications that are running, the more memory used by device . N/A 49 Comparison between Smartphone Operating Systems 3.4 Hardware Hardware Components Smart phones contain various hardware components for networking, GPS support, input options, memory expansion, etc….in addition to the CPU. Regarding networks and connectivity hardware components in the Smartphones dealt with in this study, Symbian was found to be furnished with hardware components for Bluetooth, WiFi, 3G, HSDPA, HSUPA and Outband, whereas Android was found to have hardware for Bluetooth, 3G, Wi-Fi, GSM/GPRS/EDGE. Blackberry on the other, has hardware components for Bluetooth, WiFi, 3G, GPRS/EDGE/UMTS, CDMA, Iden, GSM. iPhone seems to have hardware components for GSM/GPRS / EDGE, UMTS /HSDPA / HSUPA, CDMA / EV-DO, Bluetooth, WiFi. All four Smartphones have aGPS (internal GPS sensor) and all four have memory expansion slots (table 3.4). Input Options Regarding input options, all four smart phones were characterized by a wide array of input options. These included captive multi-touch display, external functional hardware keys, virtual keyboard, and multitext entry option components for Symbian. Android has components for the following input options: 3-axis gyroscope, Accelerometer, Ambient light sensor, Capacitive touch-sensitive buttons, Digital compass, Microphone, Multi- touch capacitive touch-screen, Proximity sensor, Push buttons, whereas iPhone input options comprised Multitouch touch screen display, Push-buttons, Dual microphone, 3- axis gyroscope ,3-axis accelerometer ,Digital compass , Proximity sensor and Ambient light sensor. Least input options are found in Blackberry Smartphones; they included multi-touch screen, keyboard and trackpad. The CPU The CPU of Symbian is a Samsung ARM11 680 MHz K5W4G2GACA - AL54 processor, that of Android is a Samsung HummingbirdS5PC110 (ARM Cortex A8), that of iPhone is an Apple A4 (ARM Cortex-A8) processor whereas that of Blackberry is a Marvell Tavor PXA940 (ARM Cortex A8) compliant processor (Table 3.4). 50 Comparison between Smartphone Operating Systems Table 3.4. Comparison between the hardware components of Symbian, Android, iPhone and Blackberry OS [9] [15] [35] [49] [54] Smartphone OS Networks and connectivity Symbian OS Android OS iPhones OS Blackberry OS Bluetooth, WiFi , 3G, HSDPA, HSUPA ,Quadband Bluetooth, 3G , WiFi , GSM/GPRS/ EDGE Bluetooth, WiFi,3G, GPRS/EDGE/ UMTS ,CDMA , Iden , GSM GPS Support Yes aGPS (Internal GPS sensor ) Yes aGPS (Internal GPS sensor ) GSM/GPRS/ EDGE , UMTS/HSDPA/ HSUPA , CDMA/EV-DO ,Bluetooth, WiFi Yes aGPS (Internal GPS sensor ) Input Options Capacitive 3axis gyroscope multi-touch Accelerometer. display Ambient light sensor. External functional hardware keys Virtual keyboard; multiple Multitouch touch Trackpad, screen display. keyboard, Push-buttons. Dual Capacitive touc h-sensitive buttons. Microphone. Digital compassMicrop hone. Gyroscope. Multitouch Digital 3-axis Multitouch touch screen 3-axis Accelerometer Capacitive touch screen. compass. Supported Supported Not Supported Supported ARM11 SAMSUNG (ARM Cortex A8) Apple A4 (ARM CortexA8) Marvell Tavor (ARM Cortex A8) text-entry option Memory Expansion Slot CPU Yes aGPS (Internal GPS sensor ) SAMSUNG Ambient light sensor. processor 51 Comparison between Smartphone Operating Systems 3.5 Multimedia support Audio and Image Support A very wide array audio and image formats are supported by the four types of smart phone operating systems, Symbian OS showing a noticeable superiority and the blackberry showing the least capabilities in this respect. Thus whereas the Symbian OS has the capability of supporting all types of audio formats, Blackberry OS supports only nine formats; these are: MP3, WAVE, WMA, AAC+, MIDI, AMR, eAAC+, FlAC, OGG. Of the two other operating systems that of Android is apparently more capable than iPhone as regards to audio support (Table 3.5). Video Support As regards to video support again Symbian OS seems superior being capable of supporting the widest range of types of video formats, iPhone OS being the least capable (table 3.5). Similarly Symbian OS surpasses in capability for image support, capable of handling about 20 types of image formats, followed by iPhone OS (7 formats), then by Blackberry OS (6 formats) and finally by Android OS which capable of supporting five formats only (Table 3.5) Table 3.5: Comparison between multimedia support capabilities of Symbian, Android, iPhone and Blackberry OS [9] [15] [35] [49] [54] Smartphone OS Audio support Symbian OS Android OS iPhones OS Blackberry OS AAC (8 to 320 Kbps), Protected AAC (from iTunes Store), HEAAC, MP3 (8 to 320 Kbps), MP3 VBR, Apple Lossless, AIFF, WAV MP3, WAVE, WMA, AAC+, MIDI, AMR, eAAC+, FlAC, OGG All AAC LC/LTP 3GPP, HEAACv1 (AAC+), HE-AACv2 (enhanced AAC+), AMR-NB, AMR-WB, MP3, MIDI, Ogg Vorbis, 52 Comparison between Smartphone Operating Systems Video support Image support H.263, H.264, WMV, MPEG4, MPEG4@ HD 720p 30fps, MKV, DivX, XviD BMP, DIB, FPX, PNG, RLE, TGA, WBMP, GIF, JPEG, JPG, JPE, JIFF,PCD, PCX, PDS, PSF,TIF, TIFF, EMF, WMF H.263, H.264 AVC, MPEG-4 SP, DivX, XviD, VP8 H.264 AVC, MPEG-4, MJPEG MP4, WMV, H.263, H.264, DivX, WMV, XviD, 3gp JPEG, GIF, PNG, BMP , JPG GIF, JPG, PNG, BMP, TIF, WMF, EMF • BMP • JPG • GIF • PNG • TIF • WBMP 3.6 Power Management The four types of Smartphones OSs in question have different Power Management capabilities. Symbian OS has a wide array of Power management capabilities. Its power manager has a variant power controller for CPU and other hardware, in addition to power handlers for peripherals, wakeup events for each low power state, CPU idle mode, as well as Power HAL API. Android OS has also great power management capabilities. It has screen on / off capabilities, toggle screen and keyboard back-light, brightness control, sleep and standby CPU mode, RCP call, battery state change event, and power setting change event. Iphone OS manages hardware for power consumption. Moreover, it has screen power saving capabilities that third parties can turn off. Blackberry OS is a closed source; thus, information regarding its features are meager. The only information available regarding power utilization is that it is furnished with a Battery Plus and battery status add-on to display remaining battery life in hours and minutes based on historical average battery charge cycle. 53 Comparison between Smartphone Operating Systems Table 3.6 : Power Management comparison between Symbian,Android,iPhone OS and Blackberry OS [50] Smartphone OS Power Management Symbian Power manager. Power Controller. Variant power. controller for CPU and other hardware Power handlers for peripherals Wakeup events for each low power state CPU idle mode Power HAL API Android Screen on/off Toggle screen & keyboard back‐light Brightness Sleep & standby CPU mode RPC call Battery state change event Power Setting change event iPhone OS Blackberry OS Third parties can turn off the screen power saving feature BatteryPlus BatteryStatus add-on to display remaining battery life in hours and minutes based on historical average battery charge cycles OS manages hardware for power consumption 54 Comparison between Smartphone Operating Systems Chapter Four: Conclusion 4.1 Strength and Weakness This study has revealed the following weaknesses and strengths for the four Smartphone OSs 4.1.1 Symbian Strengths: Compared to the previous versions, Symbian^3 is now more finger friendly and responsive when input the data. Some innovative new facility on the system presented NOKIA Symbian^3, such as Web TV, Real multitasking, multiple home screen, and USB OTG (USB On The Go). USB OTG provides facilities for users of Symbian^3 – based Smartphones, for example Nokia N8 to directly access files stored on the USB external hard disks, USB Flash Drive (UFD), or any other Smartphone (if assigned as a media storage). Users can do better multitasking with Symbian^3 than with previous versions of Symbian. The possibility of running out has been greatly reduced because memory management has been improved and can thus run more applications.. The Symbian^3 not only allows easy multitasking but also allows users to run features with better battery efficiency. This allows the phone to run longer times thus permitting users to make more out the phone. Symbian^3 provides much better graphic display. It is more advanced in graphics architecture, and is faster in integrating hardware and software. It has a more responsive interface, is quick and stylish. A Qt cross-platform application framework is installed in the latest version of Nokia OS which destined to be a standard development environment for releasing Symbian in the future. With Qt framework integrated in Symbian^3, writing apps that works across all devices will be easier, and users will be able to load necessary libraries onto the phone with a smart installer, that reduces file sizes [51][62][63]. 55 Comparison between Smartphone Operating Systems Weaknesses Like previous versions of Symbian, a user who daily uses this Smartphone may complain about the navigation menus that are a bit less practical and sometimes difficult to understand (menu names are too short). In addition, the guidance is minimal when navigating the interface. Indeed this is a problem for the veteran Symbian users. Other points of weakness include the performance browser and the standard touch screen keyboard. 4.1.2 Android Strengths: Android OS has become the top of the class by being customizable. Virtually, there seems to be no limits to what the users can do with an Android device. If the hardware can handle what they wish to do, users can probably utilize an Android application to do it [63]. The ability to run tasks in the background is a huge plus. There are many things that can only be accomplished by having two or more applications running at the same time, and Android allows that. Moreover, the Android OS allows for memory cards. This means that you are not limited to the internal storage space that comes with the device. It is possible to fill a memory card up with applications and another with music, and switch them out as needed. Furthermore, with Android people can use the phone as Wi-Fi Hotspot19. 19 Hotspot is a site that offers Internet access over a wireless local area network through the use of a router connected to a link to an Internet service provider. 56 Comparison between Smartphone Operating Systems Weaknesses The Android OS is already having problems with the fact that applications are not always portable across devices, with a number of developers complaining about how hard cross device compatibility is [36]. Moreover, Android has run into the problem of having to manage a tiny amount of internal memory. This is most notable on the brand new Nexus S which has only 512 MB available to install applications on, and most applications can only be installed on the internal memory. It is also worth noting that the user interface of the Android OS is not nearly as neat and polished as the iPhone OS. It appears much rougher and less perceptive than the iPhone OS. 4.1.3 iPhone OS Strengths: iPhone Os superior as regards to its easy to use system and its third-party applications that are always consistent with Apple. What is also positive about iOS is grouping of applications in one folder for ease of management. Apple made a big improvement by creating a system that supports multitasking, although it is still limited [62]. Moreover, and through iTunes, iPhone is now more easily managed, for example to perform data synchronization, backup and search applications on the App Store, which is still the largest and most complete [63] Weaknesses: The iPhone OS does not allow for multiple user applications to be run at the same time. This removes a number of very useful functionalities from the platform. Moreover, Developing for the iPhone is limited to just the Mac platform. This makes the entry cost to develop iPhone applications very high for anyone who does not already own the necessary hardware. Also, developing for the iPhone requires 57 Comparison between Smartphone Operating Systems learning a language that is not valuable outside of the Apple community. In short developing for the iPhone requires learning a large number of Apple specific items. Furthermore, the iPhone OS has comparatively limited multitasking capabilities and has less Hardware Options [62][51]. 4.1.4 BlackBerry OS Strengths: One of the strengths of the BlackBerry OS is that the Home Screen is presented in three parts. The top two display mobile phone settings and presents news updates on screen. The bottom part shows screen menus that can be opened. These menus contain all the applications, which are divided into five categories. Each icon can be quickly used and grouped in folders [62] [63]. Moreover, the Blackberry OS supports transfer of multimedia data easily via WLAN and PC to the Smartphone. Furthermore, the RIM Smartphone business is characterized by a series of security facilities in the system. Facility data encryption and smartcard needed for such applications as e-mail are also present. Weaknesses: The user application in BlackBerry OS is less sensitive than in others. As a result there are some configurations that can be run through the touch screen and the other that have to be done through the menu button. The presence of a trackpad on the Blackberry 9800 Torch makes easier for the users to “maneuver” in every part of the interface on the screen. Nevertheless, some menus are elaborate and have become redundant. RIM needs to refine the input mechanism between the input on the display and slider QWERTY keyboard to be more in harmony [62]. 58 Comparison between Smartphone Operating Systems 4.2 Conclusion After studying the OS architectures and taking into account the different features provided, The following conclusions are drawn as regards to which Smartphone OS is best suited for each of the user domains, and for developers as well. This evaluation is purely based on the findings of this research and on the opinion of the researcher. It is to be mentioned here that the users are divided into three categories: Users Business sers Gamers Figure 4.1 Smartphone OS Users Types Casual Users 4.2.1 Gaming Smartphones are increasingly being used for gaming purposes as well as for web access and communication. Many devices are currently being decked out with features that are especially made for gaming enjoyment. In this respect, this study considers iPhone OS to be the top and followed by Android, Symbian and Blackberry OS respectively. Apple’s iPhone 4 is a great choice for anyone who wants to enjoy games. The primary attributes that are important for gamers are Software Features, Power Management and Multimedia Features. The secondary attribute considered are Supported Platform, Hardware Support. The iPhone 4 comes with a Multi-touch touch-screen display, 3-axis accelerometer, great graphics (OpenGL and DirectX), and a processor that is up to the task of running most games seamlessly .The iPhone 4 has a number of things going for it in terms of gaming, not the least of which is the huge size and variety of titles available from the App Store. 59 Comparison between Smartphone Operating Systems Along with all the other applications available at the store, there are around 70,000 games. 4.2.2 Business Users This study considers Blackberry OS as the top OS for business users, followed by Symbian, Android and iPhone OS respectively. The primary attributes for this, are software features and power management. The secondary attributes are hardware support and supported platform. The Blackberry Torch 9800 supports e-mail through the BlackBerry Internet Service (BIS) or the BlackBerry Enterprise Service (BES). Microsoft Word, Excel and PowerPoint documents can be viewed and edited through Word To Go and Sheet To Go applications. 4.2.3 Casual Users For casual users Android is considered here to be the top OS, followed by Symbian, iPhone and BlackBerry OS respectively. The primary attributes here are hardware support and multimedia features. The secondary features include software features and supported platform. Android OS provides casual users with the multimedia features that allow them to play music, watch videos, stream clips and do audio and video editing on the phone. It supports instant messaging, superior internet browsing, email and Bluetooth. 4.2.4 Third Party Developers Symbian OS is considered to be the top OS for third party developers, followed by Android, iPhone and BlackBerry OS . The primary attributes that are important for the third party developers are Development Environment and Software Features. The secondary attributes are Supported Platform, Hardware Support and Multimedia Features. As far as third party developers are concerned Symbian provides extensive hardware and multimedia support to developers. Symbian supports multiple UI’s. The top layer of the 60 Comparison between Smartphone Operating Systems architecture is completely removed. The Symbian does not provide the UI, instead it provides the infrastructure to create the UI. It is designed to be GUI-neutral. The application model and the application-event loop are enshrined in the operating system itself and in the UI Framework support, and not in the variant user interface. Also the SDK provides the developers extensive access to control and access features including power management options which allow them to control the power usage. 61 Comparison between Smartphone Operating Systems REFERENCES [1] Allen, S., Graupera, V. & Lundrigan, L. (2010). Pro Smartphone Cross-Platform Development: iPhone, Blackberry, Windows Mobile and Android Development and Distribution. 1st Ed. New York: Academic Press. [2] Andriod Developers . (2011). Painless Threading. http://developer.android.com/ resources/articles/painless-threading.html [3] Android Developers . (2011). Activity . http://developer.android.com/reference /android/app/Activity.html#ActivityLifecycle [4] Android Developers . (2011). Content Providers. http://developer.android.com/guide / topics/providers/content-providers.html [5] Android Developers . (2011). Developing tools. http://developer.android.com/guide/ developing/tools/index.html [6] Android Developers . (2011). SDK tools . http://developer.android.com/sdk/toolsnotes.html [7] Android Developers . (2011). Whats Android ? . http://developer.android.com/g uide/basics/what- is- android.html [8] Android Developers .(2011). Application Fundamentals. http://developer.android.com/ guide /topics/fundamentals.html [9] Apple . iPhone 4 Technical Specifications . http://www.apple.com/iphone/specs.html [10] Apple Developer. Thread Management. http://developer.apple.com/iPhone/library /documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.ht ml [11] Apple Developers. UIApplicationDelegate Protocol Reference. http://developer .apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Prot oco/Reference/Reference.html [12] Apple Developers. NSNotification Class Reference. http://developer.apple.com /iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSNotification_Cl ass/Reference/Reference.html [13] Apple Developers. NSObject Class Reference http://developer.apple.com/library/ mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/ Reference.html [14] Bass, L., Clements, P., Kazman, R. (2003). Software Architecture in Practice. Addison Wesley, 2003 [15] Blackberry. Blackberry torch 9800. http://us.blackberry.com/smartphones /blackberrytorch/ [16] Blackberry Documents. BlackBerry Java Development Environment. http://docs.black berry.com/en/developers/deliverables/638/Release_Notes_and_Known_Issues_List. Pdf [17] Blackberry Documents . Garbage Collection on blackberry devices http://docs.black berry.com/tr-tr/developers/deliverables/9095/Garbage_collection_on _a_BB_device _ 447120_11.jsp 62 Comparison between Smartphone Operating Systems [18] Blackberry Documents. About multitasking. http://docs.blackberry.com /en/smartphone_users/deliverables/11777/About_multitasking_834913_11.jsp [19] Butler, M. (2011). Android: Changing the Mobile Landscape. Pervasive Computing, IEEE , vol.10, no.1, pp.4-7, [20] Buzzle .2011. What is Blackberry Technology. http://www.buzzle.com/articles/whatis-blackberry-technology.html [21] Cantrell, C. (2011). iOS features in Adobe AIR 2.6. Article on Adobe Developer Http://www.adobe .com/devnet/air/articles/ios [22] Cargail A. (2009). An Overview of the iPhone Architecture .http://www.the coffeedesk.com/news/index.php/2009/05/17/iphone-architecture/ [23] Devitt, S., Meeker, M. & Wu, L. 2010. Internet Trends. Morgan StanleyResearch. Http://www.morganstanley.com/institutional/techresearch/pdfs/Interne t_Trends_041210.pdf. [24] Dilger D. E.. iPhone OS X Architecture: the Mach Kernel and RAM. Roughly Drafted Magazinehttp://www.roughlydrafted.com/2007/07/13/iphone-os-x-architecturethe-mach-kernel-and-ram [25] Douangboupha, P. (2009). Smart Phone Platform Comparison. A Comparative Analysis. Http://www.r2integrated.com/Portals/21/PDFs/SmartPhoneComparison.pdf. [26] Douglas C. Schmidt; Michael Stal, Hans Rohnert, and Frank Buschmann (2000). Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. John Wiley & Sons. [27]eCosCentric .2011. RedBoot Debug and Bootstrap Firmware. http://www.ecoscentric.com/ecos/redboot.shtml [28] Firtman, M. (2010). Programming the Mobile Web. O’Reilly Media, Inc. Sebastopol, CA. [29] Fitzek F. , Mikkonen T. and Torp T. (2009) . Qt for Symbian. John Wiley and Sons. [30] Flavio (2011). Symbian and Meego wont die: Symbian will become a franchise http://flapic.amplify.com/2011/02/11/symbian-and-meego-wont-die-symbian- becomesa-franchise-meego-an-open-source-project/ [31] Fling, B. (2009). Mobile Design and Development. O’Reilly Media, Inc. Sebastopol, CA. [32] Flosi, S. 1. (20 I 0). comScore report August 20 I 0 U.S. mobile subscriber market share.http://www.comscore.comlPress_EventslPress_Releases 120 0/ 1O/comScore [33] Gartner research: http://www.gartner.com/technology/research.jsp [34] Goldstein N. (2009). IPhone Application Development for Dummies . For Dummies. [35] Google Nexus S . (2011) . Nexus S. http://www.google.com/nexus/#/tech-specs [36] Gruman, G. (2010). Google Android's self-destruction derby begins. from InfoWorld: http://infoworld.com/d/mobilize/google-androids-self-destruction- derby-begins-863 [37] Hachman M. (2002).ARM Cores Climb Into 3G Territory http://www.extremetech. com/extreme/52180-arm-cores-climb-into-3g63 Comparison between Smartphone Operating Systems territory?kc=ETTH102099TX1K0100486 [38] Haldar S. and Aravind A. (2010) . Operating Systems . Pearson Education . [39] Harrison R. and Shackman M. (2007) .Symbian OS C++ for Mobile Phones, Volume 3 . John Wiley and Sons. [40] Hashimi, S., Komatineni, S. & MacLean, D. (2010). Pro Android 2. New York: Academic Press. [41] ifixit. http://www.ifixit.com/Teardown/iPhone-4-Teardown/3130/2 [42] Jipping M. (2007) .Smartphone Operating System Concepts with Symbian OS Wiley. [43] Kao R. and Sarigumba D. (2010). Blackberry For Dummies. For Dummies [44] King C. (2011). Advanced BlackBerry 6 Development. Apress [45] Kumparak, G. (2010). Apple sold 14.1 million iPhones last quarter, over 70 million [46] Laugesen, J. & Yuan, Y. (2010). "What Factors Contributed to the Success of Apple's iPhone?," Mobile Business and Ninth Global Mobility Roundtable (ICMB-GMR), 2010 Ninth International Conference pp.91-99, 13-15. [47] Meeker, M., Devitt, S., and Wu, 1. (2010). Internet trends. Morgan Stanley. http://www.morganstanley.comlinstitutional ltechresearchlpdfsIMS-Intemet_ Trends_ 060710. [48] Morris, B. (2007). The Symbian OS architecture sourcebook: design and evolution of a mobile phone OS. V10. John Wiley and Sons. [49] Muchow J. iPhone Memory Management . http://iphonedevelopertips.com/objectivec/memory-management.html [50] Nachi K. Nithi and Adriaan J. (2011) . Smart Power Management for Mobile Handsets.Bell Labs Technical Journal. [51] Ngineer.net (2011). Battle Between Mobile Platforms - iPhone, Android, WinMo, Symbian, Blackberry. http://www.ngineer.net/technology/battle-between-mobileplatforms/ [52] Nithi N. K. and Wijngaarden A. (2011). Smart Power Management for Mobile Handsets. Bell Labs Technical Journal [53] Nokia outlines new strategy, introduces new leadership, operational structure. Nokia Press Releases(2011). Http://www.nokia.com /press/press-releases/ show press release? newsid=1488004. [54] Nokia web site . (2011). Nokia N8 specifications . http://mea.nokia.com/find- productsen/devices/nokia-n8/specifications [55] Nutting J., Mark D., LaMarche J. (2011) . Beginning IPhone 4 Development: Exploring the IOS SDK. Apress. [56] Pettey, C. and Stevens, H. (2011). Gartner Says Android to Command Nearly Half of Worldwide Smartphone Operating System Market by Year-End 2012. Gartner Press Releases website.Http://www.gartner.com/it/page.jsp?id=1622614. [57] Preston G. (2011). Droid X: The Missing Manual . O'Reilly Media, Inc. [58] Sales, J. (2005) . Symbian OS internals: real-time kernel programming . Volume 12. 64 Comparison between Smartphone Operating Systems Wiley. [59] Singh A. (2007). Mac OS X internals: a systems approach . Addison-Wesley Professional [60] Smyth N. (2011). iPhone iOS 4 Development Essentials . Payload Media . [61] Udell, S. (2009). Pro Web Gadgets Across iPhone, Android, Windows, Mac, iGoogle and More. New York: Academic Press. [62] Vintu, Andrian (2010). Comparison of Android vs iPhone vs Nokia vs BlackBerry vs Windows Mobile 7. http://www.codeproject.com/Articles/73089/Comparison-ofAndroid-vs-iPhone-vs-Nokia-vs-BlackB.aspx [63] Wiki (2011). Smartphones: Palm, Smartphone, IPhone, Android, Comparison of smartphones, Windows Phone 7, Symbian, Nexus One, Videophone, Nokia N900, IOS . Books LLC [64] Zhang J. (2010). Android vs. iPhonehttp://www.cs.ucf.edu/~dcm/Teaching/COP5611Spring2010/Project/Junya oZhang-Project.pdf [65] Ehringer D. 2010. The Dalvik virtual machine http://www.davidehringer.com /software/android/The_Dalvik_Virtual_Machine.pdf 65