IntroductionMobile phones becomes a basic necessity of our digital world.First computer and now smart mobile phones revolutionize our every aspect oflife. Modern smart mobile phones are closer to handheld computers that enableus to perform many task like make video calls, photography, mailing, watchvideos, social media, perform banking tasks and much more besides. Now a day’smost popular mobile operating systems are Android and iOS.1.1 Android VS iOSAndroid and iOS are the two top most leading Mobile operatingsystem in the world.
Android is launched by Google Inc. initial release was on23rd September 2008(9 years ago) basically designed for touch screenmobiles devices later than also developed for Android TV, android auto andAndroid wear, Most of the Androidcore is released under the open-source Apache License but a large amount ofsoftware on Android devices (such as such as Play Store, Google Search, GooglePlay Services, Google Music, and so on) are proprietary and licensed 15. Androidforked from a Linux kernel Long-term support (LTS) branches with higher-levelAPIs. Since android runon a modified Linux kernel it have a monolithic style of kernel. Android written in C language andapplications are normally programmed in Java and run with the Dalvik virtualmachine (DVM) using just-in-time compilation to translate Java byte code intoDalvik dex-code 3. This combination brings up some secure features, likeefficient shared memory management, preemptive multitasking, UNIX user identifiers(UIDs) and file permissions with the type safe concept of Java. Every Androidapplication runs in a separate process under a unique UID with distinct permissions,which means that applications can typically not read or write each other’s dataor code. The kernel sandboxes applications from each, so that resource and datamust be share explicitly.
To make a resource share between applicationspossible, the permissions which are required must be declare statically at thetime the application is installed. The Android system prompts the user forconsent at this time; a mechanism for granting permission dynamically atruntime is not possible and would lead to an increase of security transparency20. iOS (previouslyiPhone OS) is a mobile operating System developed byApple Inc.
and distributed Exclusively for Applehardware 6. It is the operating system that powers iPhone, iPad, iPod Touch,and Apple TV. iOS is based on open sourceDarwin (BSD) and macOS forked from UNIX operating system. iOS is closed source OS.
iOS promoted a new style of user interactionfor small screen, limited input devices, specifically, direct manipulation.Touch-based gestures like swipe, tap, tap and hold, and pinch are used to controlon-screen interface elements, and to perform interface operations.Accelerometers support additional physical gestures like shaking and rotatingthe orientation of the device 15. Now a days 99% mobile devices arepowered by android and iOS so the market is also occupied by these two of OperatingSystems. According to recent stats 85% market share is occupied by Google Android14% by Apple IPhone iOS and 1% by others mobile operating system. According to officialPress releases of Google and Apple which states that over 2 billion androiddevices are monthly active and over one billion iOS devices active worldwide.
2. Process and Thread ManagementTable 1: process andthread management Android iOS Single thread of execution Yes Yes Separate process for app components Yes Yes Separate Threads for app components Yes Yes Controlling of process Yes No Process shutdown by OS Yes yes foreground Process Yes yes Process States Yes Yes Visible process Yes yes Background process Yes yes Using of threads Yes yes Interposes communication (IPC) Yes Yes Remote procedure calls Yes No URL scheme for IPC No yes Performing I/O operation Yes yes 2.1 Android Process andThread Management In Android Operating system when a new application startrunning, system create and start a new process for that application with only asingle thread of execution. There is a main thread in every application whichis known as User Interface (UI) thread. Basically every thread, component andparts of the application work under this UI thread. Every process is made up ofmore than one threads. Some thread run dependently and some independentlydepending upon the application. Each and every thread always remain inside ofthe process virtual memory and address space of the process.
If a newapplication need to start and there is not enough space in the memory then androidforcefully shut down the process according to their importance to create spacefor new process. There is a hierarchy of processes to determine which processwill be killed first or last while system is low on memory, in android hierarchyis like this form high to low. Foreground process, visible process, serviceprocess, background process & empty process. The list is based on”importance hierarchy”. It mean importance of first process is high so it willbe killed at last while last one killed first.
There are different states of aprocess. In android states are created, running, paused, stopped & killed.There is proper mechanism in android for inter process communication (IPC).This mechanism is called remote procedure RPCs. Process can always perform I/Ooperations for their proper working.2.2 iOS Process andThread ManagementiOS also create and start a new process for application whichis newly start with a single thread of execution.
Every process is made up ofmore than one thread and there is main thread which control the mainfunctionality of the application. Every thread can perform I/O operation. whena new thread created inside main thread that thread run independently insidethe same virtual memory and address space of process. .
If a new applicationneed to start and there is not enough space in the memory then iOS forcefullyshut down the process according to their importance to create space for newprocess. There is a hierarchy of processes to determine which process will bekilled first or last while system is low on memory. The hierarchy is same like thishigh to low.
Foreground processes, background processes, suspended processes& not running processes, the list is based on “importance hierarchy” it mean importance of first process is highso it will be killed at last while last one killed first. There are differentstates of a process, in iOS states of process are, not running, active,inactive, background & suspended. In iOS two techniques are used for IPC whichis Grand central dispatch and pasteboard.3.
Memory ManagementMemory management is a very important aspect of every modernoperating system. Mobile operating systems like android and iOS handle and managememory very efficiently.Table 2: Memory Management Android iOS Virtual memory Yes Yes Page size 4kb 4-16kb ARC No Yes Garbage collector Yes No Generational memory heap Yes No Eden space Yes no Survivor space Yes No Tenured space Yes no Permanent space Yes No Autorealease pools No yes Auto deallocation No Yes Factory method No yes GC of java Runtime – ARC of mac OS X – Compile time Memory share Yes No Voluntarily free up memory No yes 3.
1 Android MemoryManagementAndroid use memory mapping and paging to handle memoryproblems. Page size is of 4kb. Any application old or new can’t be removed frommemory and remain in the main memory until that application releases the objectreferences it holds and making the occupied memory available for GarbageCollector (GC) to Clean. Inside a managed memory environment like in androidsystem keep track of its memory allocation. The technique of reclaiming unusedmemory from application after determining that a piece of memory is no longerused by any application is called garbage cleaning. There are two goals of aGC. Finding those type of data object which are not accessed in future andreclaiming the memory used by those data objects.
Android memory isgenerational type of memory. In generational memory there are three type ofgeneration young generation, old generation and permanent generation. The newlycreated object stays in young generation.
When an object lives long then thatobject transfer to older generation. Young and old generation are furtherdivided into to Eden and survivor space generation, tenured generation.Permanent generation is a generation where classes of java and method objectresides in it. GC of java works at runtime. In generational memory everygeneration has it own upper limit that when will garbage collector start andhow long it remain active for cleaning and how many data object remain in ageneration.3.
2 iOS memorymanagementiOS support full time virtual memory environment. Page sizeis same as android 4kb but some hardware support 16kb of page size. MAC OSX usesgarbage collector of objective C rather than iOS based on MAC OSX it don’t useGC for memory cleaning. It uses another technique which is known as AutomaticReference counter (ARC). The main methods of ARC are retain and release andthese methods are inserted in code at compile time.
In ARC when an object iscreated or copy of object is created it’s retain count become 1. When any otherobject shows an ownership interest in a object its retain count increases to 2and whenever owner releases it ownership its retain count reduced by 1. Whenthe retain count become zero the object is destroyed. There is a auto releasepool when an object is placed in this then that object is release after theprogram execution exits beyond the scope.
There is a method auto deallocationwhen retain count of a object becomes zero the deallocation method is call to reclaimthe resource. iOS applications voluntarily free up memory for anotherapplications.4. Virtual MemoryAndroid and iOS both support full time virtual memory environmentcomparison of both OS virtual memory is give belowTable 3: VirtualMemory Android iOS Virtual memory support Yes Yes Memory mapping Yes Yes Paging Yes Yes Page size 4kb 4-16 kb Virtual address Yes Yes Physical address Yes Yes Swapping No Yes Logical address space Yes Yes Thrashing No yes Memory management unit MMU Yes yes 4.1 Android VirtualmemoryAs we know that Android OS is Linuxbased and it proves that it can run with minimum hardware resources. Applicationon Android run inside the Dalvik Virtual Machine but not executed as localapplications. The Dalvik Virtual Machine allows multiple virtual machine instancesto run at once and Dalvik Virtual Machine is registered based virtual machinewhich optimizes for low memory requirements. The Dalvik Virtual Machine (DVM)is made to run Java applications, but DVM is not a JVM.
DVM runs Java applicationsthat are converted into Dalvik executable file format. The lack of a just intime compiler is huge difference between DVM and other JVMs. As it optimizedfor low memory needs to run the application inside the VM is without any hesitationmemory compared to an architecture which uses local application and lack ofjust in time compiler could minimize the performance. Android support virtual memory and use memory mappingand paging to implement virtual memory.
Page size is of 4 kb. Two types ofaddresses are generated in virtual memory one is physical address and other isvirtual address. When system is low on memory android kill the apps accordingto priorities but don’t support swapping of apps to secondary memory from mainmemory. In android every process remains in its own separate logical address.4.2 iOS virtual memory The 1st generationiPhone offer 128 MB memory while 3rd generation iPhone offers 256 MB that istwice as compared to the 1st generation iPhone, allowing to improve theperformance as well as multitasking. Near about 11MB of 128 MB is used forvirtual RAM and operating system itself uses a large chunk of memory andremaining approximately 76 MB memory is for user. IPhone OS does not containswap file for virtual memory, this indicates that when RAM is full then thereis not any available memory any more.
iOSalso support virtual memory and use memory mapping and paging to implement VirtualMemory. Page size is of 4kb but in some hardware support 16kb page size. Twotype of address are generated in this virtual memory one is physical addressand other is virtual address. When system is low on memory iOS kill the appsaccording to priorities but also support swapping of apps to secondary memoryfrom main memory to free up memory for new apps. In iOS every process remainsin its own separate logical address.5.
Processes and threads SchedulingTable 4: Process and Thread Scheduling Android iOS Priority based scheduling Yes yes Normal priority Yes Yes Static & dynamic priority Yes No High priority Yes Yes Real time priority Yes Yes Kernel thread priority No Yes Completely fair scheduler CFS Yes no First in first out FIFO Yes Yes Round robin Yes Yes Total priority range 0-139 0-127 Lowest to highest priority range 0-39 0-63 System reserved thread priority range – 64-95 Real time priority range 40-139 96-127 5.1 Android Processes and threads schedulingScheduling in android isdone according to priorities of process. Priorities defines that which processtake how much of the Central Processing Unit (CPU) time. The range ofpriorities are from 0 to 139. There are three types of priorities, first one isstatic priority. This is the default and lowest priority of newly createdthread.
Second one is the dynamic priority. When processes or thread don’t getenough CPU time and they start starving because of higher priority thread takeall the CPU time then dynamic priority comes to action. In dynamic priority,priorities of those processes and threads are raised which are starving. It iscalled dynamic because priorities are keep on changing (lower and higher) inthis.
Both static and dynamic priorities range from 0 to 39. The third priorityis Real Time priority in this priority all the real time processes arescheduled under a scheduling policy. Which are Round robin (RR) and First infirst out (FIFO). Real time priority weight more than in comparison to staticand dynamic priority. Real time priority range start from 40 to 139.
In Linux2.6.23 a new scheduling policy was introduced that is Completely Fair SchedulerCFS. In this scheduling policy those process gets CPU first which receive leastCPU so far.5.2 iOS Processes and threads SchedulingScheduling in iOS is alsobased upon priorities, likewise in android. In iOS there are four type of priorities.
Range for those priorities start from 0 to 127. First priority is normalpriority. Second priority is high priority.
This is the priority which is alittle bit higher than normal. Both priority range start from 0 to 63. Thethird priority is system reserved kernel thread priorities. The range reservedfor this priority start from 64 to 95. In this range only system threads andprocess executed higher than every user applications threads. The fourthpriority is Real Time priority range start from 96 to 127.
Real time processexample in mobile Operating system is like music application. The schedulingpolicy in iOS is Round Robin (RR) and first in first out (FIFO). There isanother scheduling policy SCHED_OTHER (system Specific policy).
6. Interrupt Handling Android iOS Interrupt handling support Yes Yes Interrupt priorities Yes Yes Interrupt controller Yes Yes Interrupt request lines IRQs Yes yes Interrupt service routine ISR Yes No Inter process routines Yes yes Hardware Interrupt support Yes yes Software interrupt support Yes Yes Maskable Interrupt Yes Yes Non maskable interrupt Yes Yes Software traps Yes Yes Hardware traps Yes yes Table 5: Interrupt Handling 6.1 Android InterrupthandlingAndroid get input from multiple input sources like touchscreens, keyboards, different sensors like accelerometer, GPS etc. Androidoperating system support interrupt handling and handle interrupts veryefficiently. Android provides a stack structure. Which gets input from devicedriver at kernel level.
After that covert that raw data of input in high levelinput like gesture, posture, press etc. that work done by eventhub in androidwhich converts low level raw input data to high level input. There are two morecomponent to process input like inputReader and inputDispatcher.
The event ofinput always occur when there is interrupt occur. That interrupt is generatedby headphone jack, touch etc. device detect that low level interrupt which isconverted to electric pulse.
That current pulse is converted into a interruptand send towards CPU via Interrupt handler. The path through which interruptsare travels are called Interrupt request Lines IRQs. As android forked from Linux,Linux provide a mechanism as a default interrupt handler. Device drivergenerate interrupt that mechanism or function checks that any device drivegenerated interrupted or not. All the interrupt travel through interruptrequest lines IRQs. Every interrupt travel through their corresponding (IRQs)of device drivers but some time IRQs are shared among different device drivers.
When a driver use a interrupt request lines IRQs there is a call back functiongenerated to interrupt service routine (ISR). Android also efficiently handlehardware and software interrupts. Hardware interrupt like by plugin audio jackwhich cause hardware interrupt. Software interrupt like receiving a call whileplaying a music file which cause audio interruption. There are both maskableinterrupts and non maskable interrupts in Linux based android operating system.Sometime android system get into traps like software and hardware traps.
7. Device Drivers Refrences15.NCSU, (2014): “Mobile Operating System” available at http://www.csc.ncsu.edu/ faculty/ healey/csc563 /notes/ch-06.
pdf 20.Renner T. (2014): “Mobile OS – Features, Concepts and Challenges for Enterprise Environments” SNET Project Technische Universit ?at Berlin 3.CMER, (2014): “Mobile Operating System” Centre for Mobile Education and Research Gartner (2010): “Gartner Says Worldwide Mobile Phone Sales Grew 35 Percent in Third Quarter 2010; Smartphone Sales Increased 96 Percent” Gartner, Inc.
available at http://www.gartner.com/it/ page.jsp?id= 1466313