By copy :创建PGM1的时候,MOD1,MOD2对象被copy到PGM1中。PGM1内部可以不经过地址转换,直接访问MOD1,MOD2。这种绑定方式就叫做by copy。
By reference :创建PGM1的时候,SRV0并不包含在PGM1中,SRV0和PGM1是两个独立的对象。但是会在PGM1和SRV0直接建立一个符号链接,把他们联系起来。当PGM1使用到SRV0的时候,编译器会把这个符号链接转换成SRV0的物理地址,这样PGM1就可以访问SRV0了。这种绑定方式叫做by reference。
二 绑定的过程。 By copy
编译期:CRTPGM的时候,PGM1和MOD1之间的物理绑定。二者成为了一个整体,完成绑定。
By reference
编译期:PGM1与SRV0之间建立符号链接。
运行期: 当PGM1被调用的时候,系统会根据PGM1和SRV0之间的符号链接,转换成SRV0的物理地址,通过SRV0的物理地址找到SRV0并把SRV0加在到activation group中,完成绑定。
注意:by reference方式在运行期加载service program是发生在PGM1被调用的时候。而不是PGM1调用SRV0的时候。当PGM1调用SRV0的时候,SRV0已经完成了绑定。从这个角度来说,by reference的执行速度与by copy是一样的。
总的来说,bound by reference的运行效率介于动态调用和bound by copy之间。