Friday, August 2, 2019

Android Essay

|Google Android |November 15 | | |2011 | |An operating system for mobile devices such as smartphones and tablet computers. Developed by the Open |Operating System | |Handset Alliance led by Google. | | Table of Contents Introduction3 About 4 Architecture7 System Threading11 CPU Scheduling 12 Process States14 Memory Management18 Synchronization Techniques19 Event Handling 20 Security21 Networking22 Evaluation23 Bibliography24 Introduction Since its initial launch on the T-Mobile G1 in October of 2008, Google's Android operating system has evolved rapidly, perhaps more rapidly than any other operating system in recent memory, to become one of the most important and prolific smartphone platforms in the market today. The Android OS is the name of the Linux based operating system owned by Google and supported by the Open Handset Alliance. Android is used as an operating system for devices such as cell phones, tablets and netbooks. Google bought the original developer of the software, Android Inc. , in 2005. Android's kernel (core of the OS) was derived from Linux but has been modified by Google developers. Android is also open source, which means developers can customize the OS for different phones and applications. This is why different phones may have different looking graphical interfaces and features even though they are running the same OS. Android OS is completely open source, which means that developers can use the core OS functions to develop applications, unlike iphone OS which is a closed system. About The version history of the Android operating system began with the release of version 1. 0 in September 2008. Android is a mobile operating system developed by Google and the Open Handset Alliance. Android has seen a number of updates since its original release. These updates to the base operating system typically fix bugs and add new features. Generally, each version is developed under a code name based on a dessert item. The code names were released in alphabetic order: Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, and Ice Cream Sandwich. Like Apple's Appstore, Google opened its Android market, allowing the apps developers to publish their apps without any restrictions. Unlike Apple's Appstore, Google Android market does not have any restrictions for third party development and will not run an apps approval system. Android is an open source platform. The entire stack, from low-level Linux modules all the way to native libraries, and from the application framework to complete applications, is totally open. More so, Android is licensed under business-friendly licenses (Apache/MIT) so that others can freely extend it and use it for variety of purposes. Even some third-party open source libraries that were brought into the Android stack were rewritten under new license terms. Therefore, every developer has access to the entire platform source code. There are several advantages of the Android OS for developers, besides the fact that it’s completely open source, let’s mention a few: Advantages [pic] †¢ The entire Application framework can be reused and replaced by selective components Wi-Fi network applications support (Depends on hardware) †¢ Dalvik[1] virtual machine enhances the power management systems †¢ Supports 2D and 3D graphics †¢ Supports common media file formats †¢ Reliable and enhanced data storage using SQLite framework[2] †¢ Open source Web-Kit Engine-based web-browser †¢ GPS, Navigational compass, Touch-Unlock, and acceleromet er applications support †¢ Androids development environment includes a device emulator, debugger, performance profiling tool, and an Eclipse IDE plug-in [pic] Logo of Android OS Architecture [pic] The main components of the Android architecture: 1. Applications: These are applications written in Java. Some of basic applications include a calendar, email client, SMS program, maps, making phone calls, accessing the Web browser, accessing your contacts list and others. [pic] 2. Application Framework: This is the skeleton or framework which all android developers has to follow. The developers can access all framework APIs an manage phone’s basic functions like resource allocation, switching between processes or programs, telephone applications, and keeping track of the phone’s physical location. The architecture is well designed to simplify the reuse of components. Think of the application framework as a set of basic tools with which a developer can build much more complex tools. [pic] 3. Libraries: This layer consists of Android libraries written in C, C++, and used by various systems. These libraries tell the device how to handle different kinds of data and are exposed to Android developers via Android Application framework. Some of these libraries include media , graphics, 3D, SQLite, web browser library etc. The Android runtime layer which includes set of core java libraries and DVM (Dalvik Virtual Machine) is also located in same layer. [pic] 4. Runtime Android: This layer includes set of base libraries that are required for java libraries. Every Android application gets its own instance of Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently and it executes files in executable (. Dex) optimized for minimum memory. [pic] 5. Kernel – Linux: This layer includes Android’s memory management programs, security settings, power management software and several drivers for hardware, file system access, networking and inter-process-communication. The kernel also acts as an abstraction layer between hardware and the rest of the software stack. pic] The basics of the Android kernel are just like any other monolithic architecture, all services (file system, VFS, device drivers, etc. ) as well as core functionality (scheduling, memory allocation, etc) are a tight knit group sharing the same space. The kernel of this system is both a hybrid and a monolithic modular design. It is br oken down into five major subsystems: †¢ Process Scheduler: (SCHED) responsible for controlling process access to the CPU. The scheduler enforces a policy that ensures that processes will have fair access to the CPU, while ensuring that necessary hardware actions are performed by the kernel on time. Memory Manager: (MM) permits multiple processes to securely share the machine's main memory system. In addition, the memory manager supports virtual memory that allows Linux to support processes that use more memory than is available in the system. Unused memory is swapped out to persistent storage using the file system then swapped back in when it is needed. †¢ Virtual File System: (VFS) abstracts the details of the variety of hardware devices by presenting a common file interface to all devices. In addition, the VFS supports several file system formats that are compatible with other operating systems. Network Interface: (NET) provides access to several networking standards an d a variety of network hardware. †¢ Inter-Process Communication: (IPC) subsystem supports several mechanisms for process-to-process communication on a single Linux system. System Threading By default, an Android application runs on a single thread[3]. Single-threaded applications run all commands serially, meaning the next command is not completed until the previous one is done. Another way of saying this is that each call is blocking. This single thread is also known as the UI thread because it’s the thread that processes all the user interface commands as well. The UI thread is responsible for drawing all the elements on the screen as well as processing all the user events, such as touches on the screen, clicks of the button, and so on. Threads may suspend themselves or be suspended either by the Garbage Collector (GC), debugger or the signal monitor thread. The VM controls all the threads through the use of a internal structure where all the created threads are mapped. The GC will only run when all the threads referring to a single process are suspended, in order to avoid inconsistent states. CPU Scheduling The Linux kernel uses the Completely Fair Scheduler (CFS), which has the objective of providing balance between tasks assigned to a processor and applies fairness in the way that CPU time is assigned to tasks. This balance guarantees that all the tasks will have the same CPU share and that, each time that unfairness is verified, the algorithm assures that task rebalancing is performed. Although fairness is guaranteed, this algorithm does not provide any temporal guarantees to tasks, and therefore, neither Android does it, as its scheduling operations are delegated to the Linux kernel. Android uses its own VM named Dalvik (see footnote 2), which was specifically developed for mobile devices and considers memory optimization, battery power saving and low frequency CPU. It relies on the Linux kernel for the core operating system features such as memory management and scheduling and, thus, also presents the drawback of not taking any temporal guarantees into consideration. [pic] In terms of execution, the algorithm works as follows: the tasks with lower virtual runtime are placed on the left side of the tree, and the tasks with the higher virtual runtime are placed on the right. This means that the tasks with the highest need for the processor will always be stored on the left side of the tree. Then, the scheduler picks the left-most node of the tree to be scheduled. Each task is responsible for accounting the CPU time taken during execution and adding this value to the previous virtual runtime value. Then, it is inserted back into the tree, if it has not finished yet. With this pattern of execution, it is guaranteed that the tasks contend the CPU time in a fair manner. Another aspect of the fairness of the algorithm is the adjustments that it performs when the tasks are waiting for an I/O device. In this case, the tasks are compensated with the amount of time taken to receive the information they needed to complete its objective. [pic] Since the introduction of the CFS, the concept of scheduling classes was also introduced. Basically, these classes provide the connection between the main generic scheduler functionalities and the specific scheduler classes that implement the scheduling algorithms. This concept allows several tasks to be scheduled differently by using different algorithms for this purpose. Regarding the main scheduler, it is periodic and preemptive. Its periodicity is activated by the frequency of the CPU clock. It allows preemption either when a high priority task needs CPU time or when an interrupt exists. As for task priorities, these can be dynamically modified with the nice command and currently the kernel supports 140 priorities, where the values ranging from 0 to 99 are reserved for real-time processes and the values ranging from 100 to 139 are reserved for normal processes. Process States The order in which processes are killed to reclaim resources is determined by the priority of the hosted applications. An application’s priority is equal to its highest-priority component. Where two applications have the same priority, the process that has been at a lower priority longest will be killed first. Process priority is also affected by interprocess dependencies; if an application has a dependency on a Service or Content Provider supplied by a second application, the secondary application will have at least as high a priority as the application it supports. All Android applications will remain running and in memory until the system needs its resources for other applications. A process has five different states. [pic] †¢ Active Processes Active (foreground) processes are those hosting applications with components currently interacting with the user. These are the processes Android is trying to keep responsive by reclaiming resources. There are generally very few of these processes, and they will be killed only as a last resort. Active processes include: o Activities in an â€Å"active† state; that is, they are in the foreground and responding to user events. You will explore Activity states in greater detail later in this chapter. Activities, Services, or Broadcast Receivers that are currently executing an onReceive event handler. o Services that are executing an onStart, onCreate, or onDestroy event handler. †¢ Visible Processes Visible, but inactive processes are those hosting â€Å"visible† Activities. As the name suggests, visible Activities are visible, but they aren’t in the foreground or responding to user events. Thi s happens when an Activity is only partially obscured (by a non-full-screen or transparent Activity). There are generally very few visible processes, and they’ll only be killed in extreme circumstances to allow active processes to continue. Started Service Processes Processes hosting Services that have been started. Services support ongoing processing that should continue without a visible interface. Because Services don’t interact directly with the user, they receive a slightly lower priority than visible Activities. They are still considered to be foreground processes and won’t be killed unless resources are needed for active or visible processes. †¢ Background Processes Processes hosting Activities that aren’t visible and that don’t have any Services that have been started are considered background processes. There will generally be a large number of background processes that Android will kill using a last-seen-first-killed pat- tern to obtain resources for foreground processes. †¢ Empty Processes To improve overall system performance, Android often retains applications in memory after they have reached the end of their lifetimes. Android maintains this cache to improve the start-up time of applications when they’re re-launched. These processes are routinely killed as required. State Diagram [pic] Memory Management Android’s process and memory management is a little unusual. Like Java and . NET, Android uses its own run time and virtual machine to manage application memory. Unlike either of these frameworks, the Android run time also manages the process lifetimes. Android ensures application responsiveness by stopping and killing processes as necessary to free resources for higher-priority applications. Each Android application 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. Dalvik and the Android run time sit 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 under- lying services, features, and hardware. Synchronization Techniques Regarding synchronization, Android uses its own implementation of libc – named bionic. Bionic has its own implementation of the pthread library and it does not support process-shared mutexes and condition variables. However, thread mutexing and thread condition variables are supported in a limited manner. Currently, inter-process communication is handled by Open-Binder. In terms of real-time limitations, the mechanisms provided by the architecture do not solve the old problems related with priority inversion. Therefore, synchronization protocols such as priority ceiling and inheritance are not implemented. Event Handling In terms of interrupt/event handling, these are performed by the kernel via device drivers. Afterwards, the kernel is notified and then is responsible for notifying the application waiting for that specific interrupt/event. None of the parts involved in the handling has a notion of the time restrictions available to perform its operations. This behavior becomes more serious when considering interrupts. In Linux the interrupts are the highest priority tasks, and therefore, this means that a high priority task can be interrupted by the arrival of an interrupt. This is considered a big drawback, as it is not possible to make the system totally predictable. Security Android has a unique security model, which focuses on putting the user in control of the device. Android devices however, don’t all come from one place, the open nature of the platform allows for proprietary extensions and changes. These extensions can help or could interfere with security, being able to analyze a distribution of Android is therefore an important step in protecting information on that system. Android applications run in a sandbox, an isolated area of the operating system that does not have access to the rest of the system's resources, unless access permissions are granted by the user when the application is installed. Before installing an application, Android Market displays all required permissions. A game may need to enable vibration, for example, but should not need to read messages or access the phonebook. After reviewing these permissions, the user can decide whether to install the application. Networking Android supports connectivity technologies including Global System for Mobile Communications (GSM)[4], Enhanced Data rates for GSM Evolution (EDGE)[5], Integrated Digital Enhanced Network (IDEN)[6], Code division multiple access (CDMA)[7], Evolution-Data Optimized (EV-DO)[8], Universal Mobile Telecommunications System (UMTS)[9], Bluetooth[10], Wi-Fi[11], LTE[12], (Near field communication) NFC[13] and Worldwide Interoperability for Microwave Access (WiMAX)[14]. Evaluation Mobile software development has evolved incredibly over time, giving us the power of not having to carry our laptop everywhere, or waiting to get home to access our networks or documents, 3G and 4G speeds directly on our phones give us that power, making mobile devices the most popular way to stay connected, as speeds are comparable to standard net speeds. Android has emerged as a new mobile development platform, building on past successes and avoiding past failures of other platforms. The android OS is an open source, meaning that is freely available to anyone who wishes to learn it. Google has opened up the software to creativity, because now we all have access to learning the development process. Hackers, coders, and all techy gurus have created a plethora of net-libraries ranging from support groups, forums and websites to further help newbies in the process. Android was designed to empower developers to think creatively by giving them almost absolute power over creating innovative applications. Bibliography Android Developers. Web. 11 Nov. 2011. . Burnette, Ed. Hello, Android: Introducing Google's Mobile Development Platform. Raleigh, NC: Pragmatic helf, 2010. Print. Burns, Jesse. â€Å"DEVELOPING SECURE MOBILE APPLICATIONS FOR ANDROID. † DEVELOPING SECURE MOBILE APPLICATIONS FOR ANDROID (2008). Print. Linux. com | The Source for Linux Information. Web. 11 Nov. 2011. . Maia, Claudio, Luis Nogueira, and Luis Pinho. â€Å"Evaluating Android OS for Embedded Real-Time Systems. † Print. â€Å"Memory Management in Android  « Welcome to Mobile World !!! † Welcome to Mobile World !!! Web. 11 Nov. 2011. . Shevchenko, Aleksey. â€Å"Application Handling of Database Timeouts and Deadlocks – Developer. om. † Developer. com: Your Home for Java and Open Source Development Knowledge. Web. 11 Nov. 2011. . â€Å"White Paper Android by 2012, Android OS, Android SDK. † Upload & Share PowerPoint Presentations and Documents. Web. 11 Nov. 2011. . ———————– [1]A Java interpreter machine, completely optimized for Android platform a nd which is developed to run on low-end memory mobile devices. One of the prominent aspects in Dalvik is its capability to run along an application compilation enhancing the runtime performance of the applications. Dalvik is not exactly, a Java machine, because Dalvik could not read Java code, but consists its own byte code called â€Å"dex† and so the executable files compacted using Dalvik holds the file type name ‘. dex'. Google states that the credit for Androids successful development goes to Dalvik VM, because this type of virtual machine, delivers a good performance over various stages of an application runtime environment, conserving more battery-power during long run of an application. [2] An embedded relational database management system contained in a elatively small (~275 kB) C programming library. The source code for SQLite is in the public domain. [3] Processing of one command at a time [4] A standard set developed by the European Telecommunications Standards Institute (ETSI) to describe technologies for second generation (or â€Å"2G†) digital cellular networks [5] A digital mobile phone technology that allows improved data transmission rates as a backward-com patible extension of GSM. [6] A mobile telecommunications technology, developed by Motorola, which provides its users the benefits of a trunked radio and a cellular telephone 7] A channel access method used by various radio communication technologies [8] A telecommunications standard for the wireless transmission of data through radio signals, typically for broadband Internet access [9] A third generation mobile cellular technology for networks based on the GSM standard [10] Technology standard for exchanging data over short distances (using short wavelength radio transmissions in the ISM band from 2400-2480 MHz) from fixed and mobile devices, creating personal area networks (PANs) with high levels of security 11] A mechanism for wirelessly connecting electronic devices [12] A preliminary mobile communication standard, formally submitted as a candidate 4G system [13] NFC allows for simplified transactions, data exchange, and wireless connections between two devices in proximity to e ach other, usually by no more than a few centimeters [14] A communication technology for wirelessly delivering high-speed Internet service to large geographical areas

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.