That's done by the init process which starts the OS, which then launches the Zygote processopens in a new tab (with a new mount namespace copied from the parent, so including its own private /apex mount), which then in turn starts each app process whenever an app is launched on the device (who each in turn then copy that same private /apex mount).