By Mark Hermeling
Here is an interesting article, continuing a discussion thats has been going on for a long time on mobile virtualization. It argues the case that a single mobile phone can run multiple operating systems using virtualization. A bit of googling will show that this is indeed already the case. However, there is a big caveat typically that you do not see exposed.
Mobile phones have two big constraints: processing power and battery power. Typically one operating systems is the 'phone operating system' and the other OS is more general purpose. With 'phone OS' I mean that the OS has to handle a lot of the time critical tasks, sometimes even to the level of passing data off to/from the signal processing side for communication with the antenna and the wireless network.
The signal processing side is very time sensitive and hence it is important that the time constraints are met and data is delivered/picked up on the right time. This makes it that typically the virtualization layer will have to be aware of this and it makes the solution not a general virtualization solution, but a highly device customized solution.
The other solution (mostly used with Windows or Linux/Android type devices) is to just run everything on one OS. This of course works as well, but has limitations in the area of security, stability, upgradability and more. The biggest issue is that the phone side and the general purpose side run on the same kernel and in the same OS address space, this makes security much more difficult to guarantee. Also applying fixes to the OS to correct phone glitches may impact the general purpose side. It is all one big ball of spaghetti, difficult to understand and untangle when needed.
My vote is on the virtualization solution, the concepts mentioned above hold for not just mobile phones, but virtually (pun intended any device in the market today. Whether it is a multifunctional printer, a network switch, industrial control, automotive, aerospace and defence or another application, virtualization can help put multiple 'personalities' on your device for the various tasks that you may have to do (from real-time and safe&secure to general purpose).
Virtualization can help here, but it will have to be embedded virtualization, with that we mean that the virtualization layer can be optimized for a particular device and that the device-builder has all the tools to fine-tune the virtualization layer to the device, OS and application he is building. With fine-tune we typically mean the fine-tuning of sharing and/or partitioning of processing cores, memory and devices. Embedded virtualization provides the flexibility and the tools to perform this fine-tuning, for an example, have a look at the Wind River Hypervisor.