The Linux README states that:
Linux has also been ported to itself. You can now run the kernel as a userspace application - this is called UserMode Linux (UML).
Why would someone want to do this?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
UML is very fast for development and much easier to debug. If for example you use KVM then you need to setup an environment that boots from network or be copying new kernels in the VM. With UML you just run the new kernel.
At one point I was testing some networking code on the kernel. This means that you get very very frequent kernel panics or other issues. Debugging this with UML is very easy.
Additionally, UML runs in places where there's no hardware assisted virtualization, so it was used even more before KVM became commonality.
Their web page has several reasons
Here are some of the things that UML is used for:
UML was also the basis of the original version of the FAUmachine, which is a virtual machine that allows you to inject "hardware" faults into a running kernel.
Some containerization methods like Docker don't permit you to use, e.g. FUSE without running a privileged container, breaking down some of the security boundaries containers can offer. Sticking something like UML between your app and the containerization platform can give you access to more kernel features without compromising host security.