Deja vu
Why dont they just take at look at what IBM did with VM (and it's successors). A single copy of executable code available to all users on a system. I just don't understand why MS have so much of a problem with memory management.
Perhaps it is a result of using that bastardised language (C or the ++ variant), whereas IBM's language family (starting with PL/1) put out 2 CSECTs one for code and one for data, meant the code was read only and was protected by the hardware. (a CSECT is a Control Section and is a basic building block for the link editor (or loader) to work with).
The result, in a virtualised environment, meant that each user (or guest OS) had a shared copy of executable code and its own private storage for its data.
Executable code sharing did not just stop with other operating systems, it could also be used for sharing large quantities of data, obviously low volatility data, but it was possible to have just one copy of data shared between many processes.