下图是EXE文件加载到内存并启动两个进程之后的内存状态

说明:
1 之所以以页面为单位来组织各个部分,是因为多个进程在内存中可以共享页面来只读访问。从而一份页面可以给多个进程实例使用。
2 如果需要修改一个数据页面中的全局变量,当前进程会在写之前先复制一份出来,写这个复制之后的副本,并以后都用这个副本。其他进程实例不受影响。
3 DLL也是一样的结构,只不过EXE里面有程序入口点而已。
本文探讨了EXE文件如何加载到内存并启动进程,重点解析了DLL与EXE在内存中的共享和复制机制,阐述了多个进程如何共享只读页面,以及在需要修改数据时如何通过复制避免影响其他进程。
下图是EXE文件加载到内存并启动两个进程之后的内存状态

说明:
1 之所以以页面为单位来组织各个部分,是因为多个进程在内存中可以共享页面来只读访问。从而一份页面可以给多个进程实例使用。
2 如果需要修改一个数据页面中的全局变量,当前进程会在写之前先复制一份出来,写这个复制之后的副本,并以后都用这个副本。其他进程实例不受影响。
3 DLL也是一样的结构,只不过EXE里面有程序入口点而已。

被折叠的 条评论
为什么被折叠?