In kernel terms, something linking against UML would be an SMP virtual machine. It would need to be SMP because it would need to have multiple threads, at least one of which would be the main application thread, which would never call schedule(). Other kernel threads would be needed to handle internal kernel housekeeping and responding to the outside world if it was using the network.
It would contain its normal userspace code, which implements the normal userspace functionality.
It would also call into the kernel, and that code would act as a kernel and make the application look and act like a separate machine.