上述规则(为每一个行程保存个别的 4mb~2gb 地址空间)的例外情况就是:windows 95认为「把相同的实际内存开放给同一程序的多份副本(执行个体,instances)共享」是安全的。拿程序代码来说好了,因为程序通常不会修改其程序代码,如果你执行同一程序的多份副本,那么 windows 95 节省内存的作法就是:把内含程序代码的实际内存映像到每一个程序副本的地址空间中。
从最纯净的操作系统观点来看,如果每一个 16 位行程也都有它自己的地址空间,类似 32 位行程那样,真是最好不过。不幸的是大量 16 位程序都依赖「能够看到其他程序的内存」这种能力而生存下去。为了保留 16 位程序的兼容性,windows 95 势必得提供比 win32 行程更大的权力给它们。windows nt 3.5 让每一个 win16 行程在它自己的地址空间中跑,但是因此消耗更多内存并导至更高的复杂性。windows 95 的设计人员似乎感觉这样的效益不值得其所付出的代价。