In a general computing sense, overlaying means "the process of transferring a block of program code or other data into main memory, replacing what is already stored". Overlaying is a programming method that allows programs to be larger than the computer's main memory. An embedded system would normally use overlays because of the limitation of physical memory, which is internal memory for a system-on-chip, and the lack of virtual memory facilities. Constructing an overlay program involves manually dividing a program into self-contained object code blocks called overlays or links, generally laid out in a tree structure. Sibling segments, those at the same depth level, share the same memory, called overlay region or destination region. An overlay manager, either part of the operating system or part of the overlay program, loads the required overlay from external memory into its destination region when it is needed; this may be automatic or via explicit code. Often linkers provide support for overlays. The following example shows the control statements that instruct the OS/360 Linkage Editor to link an overlay program containing a single region, indented to show structure (segment names are arbitrary): INCLUDE SYSLIB(MOD1) INCLUDE SYSLIB(MOD2) OVERLAY A INCLUDE SYSLIB(MOD3) OVERLAY AA INCLUDE SYSLIB(MOD4) INCLUDE SYSLIB(MOD5) OVERLAY AB INCLUDE SYSLIB(MOD6) OVERLAY B INCLUDE SYSLIB(MOD7) | Root Segment | | MOD1, MOD2 | | | | +-------------+ | Overlay A | | Overlay B | | MOD3 | | MOD7 | +-------------+ | | | +-------------+ | Overlay AA | | Overlay AB | | MOD4, MOD5 | | MOD6 | +-------------+ These statements define a tree consisting of the permanently resident segment, called the root, and two overlays A and B which will be loaded following the end of MOD2. Overlay A itself consists of two overlay segments, AA, and AB. At execution time overlays A and B will both utilize the same memory locations; AA and AB will both utilize the same locations following the end of MOD3. All the segments between the root and a given overlay segment are called a path.