我有一个应用程序,它利用在不同许可证下发布的库,如GWT(APL),MySQL(GPL),Protege(MPL),并且它们在同一台服务器上运行。我想知道他们是否使用相同的“共享地址空间”。我对这个术语感到很困惑 - “共享地址空间”。如果有人能解释这意味着什么,也会很棒。
谢谢。
答案 0 :(得分:2)
这取决于,但从最宽泛的角度来看,它讨论的是处理器集群之间共享的内存(其中最小集群大小可以是1,即单个服务器)。引用此类内容的许可证通常允许您在群集或单个CPU上运行产品的一个副本,并使用术语共享地址空间来表明这一点。
如果没有从许可证中获取更长的摘录,就不可能说更多。
答案 1 :(得分:2)
没有。计算机上的每个进程都使用自己的“虚拟地址空间”运行。无论机器有多少内存,每个进程都可以处理32位(或64位或其他)虚拟内存。映射到此地址空间的是进程本身的代码,也适用于任何共享库。单个共享库将映射到任意数量的进程的虚拟地址空间(因此是共享的)。
基本上,如果您链接到库,它将位于相同的地址空间中。如果你打电话给另一个进程或只是让它在同一台服务器上运行,那就不是。
答案 2 :(得分:2)
GPL上下文中的“共享地址空间”是指“过程”的概括。这意味着,例如,插入gpl的程序或基于gpl库的程序本身应具有相同的许可证。
但是,这是一个备受争议的问题。例如,Lunux Torvalds never liked认为Linux内核由于内核是GPL而无法支持仅二进制模块。这个seemingly changed in 2008但实际上许多Linux内核模块都是部分专有的,尽管它满足了共享内核地址空间的要求。 这是一个very fluid situation。