Silverfrost Logo About Us | Contact Us

Virtual Common

It is possible in most languages (and in particular in Fortran and C/C++) to have uninitialised global data, for example, a common block in Fortran not initialised with a BLOCK DATA subprogram. Under normal linking, these are accumulated into the .bss section in the executable (BSS is an old IBM term meaning Block Started by Symbol). Although this section does not contribute to the size of the executable it does contribute to the size of the loaded image. The consequence of this is that the system must have the resources available to meet the size of the .bss section. This is unfortunate, since many applications use very large global arrays, only some of which is ever used.

If the SLINK command vc or virtualcommon is used at some stage during the link process, the ".bss" section is removed from the executable and the global data is allocated to virtual memory at runtime. The result is that pages of memory (4Kb each) are allocated from the system on demand.



Copyright © 1999-2017 Silverfrost Limited