Here's how an embedded UML could replace the Apache API and mod_perl.
There would be a special filesystem, apachefs, which would be mounted inside UML and would provide access to Apache internal information in the same way that procfs provides access to kernel internal information.
This filesystem would contain /request, which when read, would produce the next pending HTTP request. A handler running inside UML would read that request, parse it, generate the response page, and write it back to /request, at which point Apache would send it back to the browser.
mod_perl would be implemented by having the reading and parsing of the request and the writing of the response done in a wrapper. This wrapper would construct the Apache Request object expected by a PerlHandler and would call that handler in the same way that it is called today.