The most widely deployed mobile virtualization solution
The kernel of an operating system is usually defined as the part of the software that executes in the processor’s privileged mode, giving it unrestricted access to all hardware resources and functions. In customary “monolithic” system design, the kernel provides most of the core OS functionality, including interrupt handling, memory management, access control, device drivers, network stacks, file systems, etc.
Novel hardware, increased hardware variety (e.g., multithreading, multicores, bus-connected SMP, NUMA) and more varied usage contexts (ranging from embedded systems to supercomputers) have lead to a strong growth in the number and complexity of OS services. This is reflected by an immense growth in the size of kernel code. The Linux kernel now comprises about 4.1 millions lines of code (MLOC), having grown by a factor of 33 within 13 years (see Figure 1). Windows Vista is said to have 20 MLOC of kernel code.
This growth is developing into a formidable challenge to system reliability. Well-engineered code can be expected to have of the order of 2 defects per kLOC [42], which puts the number of kernel bugs in modern operating systems literally into the tens of thousands. Since all this code executes in privileged mode, each bug has the potential to cause arbitrary damage. In fact, the majority of OS code is contained in drivers, which are on average of much lesser quality [6], meaning that the number of kernel bugs is probably up in the hundreds of thousands.
Defense-Grade Security for the Rest of Us
Build Secure Smartphones for the Enterprise
Learn How to Build a More Secure Smartphone
Build Mass-Market Smartphones with Mobile Virtualization
SecureIT Mobile Government White Paper (Chinese Version)
SecureIT Mobile Enterprise (Chinese Version)
Energy Management
Build a Smartphone for the Mass-Market (Korean Version)
The NirvanaPhone Concept Specification and Reference Architeture
Motorola Evoke Teardown
seL4: Formal Verification of an OS Kernel
Automatic Device Driver Synthesis with Termite
The Motorola Evoke QA4 - A Case Study in Mobile Virtualization
Android Migration at the Speed of Light
Virtualization and Componentization in Embedded Systems
Virtualization for Embedded Systems
Role of Virtualization in Embedded Systems
Your System is Secure? Prove it!
Towards Trustworthy Computing Systems: Taking Microkernels to the Next Level
Secure Embedded Systems Need Microkernels