qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] About qemu emulation speed (a question) and supported O


From: Henrik Nordstrom
Subject: Re: [Qemu-devel] About qemu emulation speed (a question) and supported OS
Date: Wed, 14 Sep 2005 17:47:29 +0200 (CEST)

On Wed, 14 Sep 2005, Jim C. Brown wrote:

Not familar with L4ka. I don't believe that UML does virtualization, it simply
runs linux code 'as is' but intercepts calls to the kernel.

UML does not do hardware virtualization. UML is a special architecture for the Linux kernel allowing Linux to run ontop of Linux. It does so by using it's own drivers and memory management, intercepting Linux system calls and playing with the page tables. All executed code is native in ring 3 (even the kernel parts, just a different memory mapping when the kernel code executes). The UML Linux kernel does not access any hardware, instead it provides drivers for "simulated" harddrives, serial ports etc translating these into suitable user-space actions on the host (i.e. read/writes to a block device is translated to read/writes in a file on the host, etc.. at the kernel driver level, not by hardware simulation/emulation/partitioning).

The UML Linux kernel is running as a normal application on the host. But within the process virtual memory maps is provided for user-space applications and any systems calls made by user-space applications running there is intercepted with help from the syscall tracing facilities of the host and instead acted on by the UML Linux kernel.

In theory UML should be able to run at native speed as there is no virtualization, translation or emulation involved, but as always there is overhead from various sources. To gain better performance the UML people is playing with

a) More efficient management of multiple page tables for the same host process, allowing efficient switches between different contexts of the same process (kernel mode, user-space processes within UML etc).

  b) More efficient methods intercepting system calls.

  c) more efficient I/O drivers, mainly for block device access.

Regards
Henrik




reply via email to

[Prev in Thread] Current Thread [Next in Thread]