所谓的写时复制-Dll的copy-on-write技术

dll刚加载的时候,用的都是最原始的映像

 

当对dll执行写操作的时候,写入的页面会被复制.

 

这种技术可以节省内存, 被称为 写时复制

 

别人的话:

 

DLL作为内存映射文件映射到Process内存空间时,文件的每个节(4K)被映射为内存映射文件的一个页面(Window页面为4096),大家都知道,PE文件编译后,代码和全局变量都被放到不同的节里,Win98的保护机制是保证含有全局变量的节在每个进程里都有自己的拷贝,这样保证DLL数据的独立性。但是,DLL的代码的节,映射于内存0x80000000~0xBFFFFFFF,是共享的。  
   
  而Win2000中,没有共享的内存区,DLL映射后,每个节的默认的方式都是copy   on   write(MapViewOfFile的FILE_MAP_COPY映射风格),他为修改过的页面提供一个拷贝,也就是任何修改均不能影响原DLL及其他进程内的DLL页面。

你可能感兴趣的:(所谓的写时复制-Dll的copy-on-write技术)