Lately, multitasking is a hot topic in the smartphone and tablet markets. Google’s Android has it and Apple’s iOS does not. Does it matter? Yes, it does but not in the way you think.
Android (and RIM’s QNX) support true multitasking whereby every app has access to the all system resources whether the user is interacting with it on the display or not. Apple has implemented limited app switching in the iPhone and iPad. The switches resemble multitasking but are more limited in that background apps do not have access to all system resources.
Which approach is superior?
The debate extends further than smartphones and tablets. Windows desktop (and laptop) multitasking doesn’t work. Have you ever been a hurry to do something on your Windows PC? You turn it on and try to launch an application to quickly accomplish a task. And you wait. And you wait some more.
Foreground activities are supposed to have priority so why isn’t the system responding to your request? Because multitasking is largely a myth on low-cost desktop systems.
When you boot your system, many background applications spring into action. Your antivirus software updates itself and scans your system. Multiple applications may attempt to automatically update themselves. On corporate networks, a system inventory may be done and network drives may be mapped.
The sluggish performance is caused by limited resources. One or two CPUs cannot get all this done quickly. But that’s not the worst part. Most desktop systems only have one memory space, one disk drive, one network interface, one high-speed bus, etc. Application requests get queued up and have to wait their turn.
But aren’t foreground tasks supposed to have priority?
The technical answer is yes. The practical answer is no. The foreground application can request attention from the system but those queued up requests have to complete before a new request can be acted upon. Priority is only one part of the solution. Queue management is the other and it’s not implemented well, if at all, on the typical Windows desktop. (BTW, I think the same problems exist on Apple’s OSx and on Linux but I don’t have enough experience with them to comment.)
Doing real multitasking requires multiple system resources. That’s why servers not only have many CPUs but also multiple memory buses, I/O buses, disk drives, interfaces, etc. Queues and resulting bottlenecks are still problems but less so.
Now you know why Apple decided to limit iOS multitasking. Their approach is not perfect but it gives more control to the user and makes the foreground app more responsive. It also improves battery life and lowers the cost of the hardware.
The trade-offs may not be worthwhile to all but most buyers will find them advantageous. Perhaps it’s time for the industry to re-think its implementation of multitasking on personal computers and mobile devices. What’s your experience?