This is another technique for squeezing more out of the available memory. If they can share pages then this cuts memory usage. Pages can be shared if they have readable data only - if the data can be changed then separate copies are needed. A compiler may divide the data areas into read-only that can be shared, and writeable that cannot. This technique is also extended to dynamic linking of libraries.
Libraries are strong candidates for shared pages across different programs.
They are also in every compiled program. Both to save disk space and to allow easier indentification of sharing, these are often not linked in until load time. It uses a virtual memory system of 4Gbytes for each process. The device drivers are above the 16M boundary. Each runs as a separate Windows NT thread.