Viv*_*mar 9 c++ linux shared-libraries
在我学习共享库时,我读了一篇声明
虽然共享库的代码在多个进程之间共享,但其变量却不是.使用该库的每个进程都有自己的库中定义的全局变量和静态变量的副本.
我只是有点疑惑.
我只是一个首发,所以请帮助我理解.
谢谢!
Mar*_*tos 20
通过将文件内存映射到进程的地址空间的某些部分,将共享库加载到进程中.当多个进程加载相同的库时,操作系统只是让它们共享相同的物理RAM.
可以修改的库的部分(例如静态全局变量)通常以写时复制模式加载,因此当尝试写入时,发生页面错误,内核通过将受影响的页面复制到另一个物理页面来响应RAM(仅适用于该进程),映射重定向到新页面,然后最终写入操作完成.
回答你的具体要点:
归档时间: |
|
查看次数: |
5455 次 |
最近记录: |