Glossary of Terms

association
    Association is the process of creating dynamic links that the OS must go through in order for a program to execute, and resolves every intermodule reference. Details.

Code Server (CS)
    A logical entity that handles requests from clients, be they operating systems or other code servers, and provides them with modules as well as the information necessary to associate the modules (names, locations, and reference lists).

dynamic linking
    Dynamic links allow intermodule linking to be postponed until just before runtime.  In essence, the OS takes over the final stage of program preparation (linking).  The technique of dynamic linking also allows separate compilation and maintenance of individual modules.

explicit dynamic link
    Made when a user program calls an executable by name, e.g. WinExec('foo.exe') or LoadModule('foo.dll').

export
   A target item (e.g. a piece of executable code, variable, or constant) in a module that other modules can link to by address.  Converse of import.

file server
    A machine separate from its clients that handles requests for files and sends them over the network.  A file server is essentially a remote file system, and is almost entirely controlled by its clients.

fixup
    Also known as a relocation item. Fixing up a module requires the address of a target to be written over a victim at a prescribed location in the module being fixed up. If the fixing up takes place after the victim's code file is loaded into memory, but before use of the link, this process is described as dynamic linking.

import
    A target item (e.g. a piece of executable code, variable, or constant) in another module a module links to by address.  Converse of export.

implicit dynamic link
    Made when the OS resolves references to other modules during loading of a program or module.

linker-loader
    Describes an integral component of an OS which performs dynamic linking.  Linker-loaders are closely tied to the executable format which they support.  This format specifies the number and nature of relocations, imports, and exports of a given module.  For Win16 this is the NE (New Executable) format, and for Win32 this is the PE (Portable Executable) format.  The client component  in the Code Server architecture (see Mini Code Server) enhances, and may even replace the linker-loader of an OS.

LoadModule
    The OS routine invoked in Windows to create a dynamic link to a module.  It calls itself recursively to resolve the references of the linked to module first, before creating the link.  It was patched in our Windows implementation to pass control to the Code Server instead of looking for modules directly.

mini Code Server (mini-CS)
    Still a Code Server in its own right, a Mini-CS is entwined with the client's OS and communicates with it and also other
Code Servers on the network.  It is the link between the client and the Code Server network, and also the link between the
client and its file system.  The Mini CS replaces all or part of the linker-loader (see above), and speaks CS protocol and/or makes file calls. This protects the original linker-loader from making real file calls to access executables.

modules
   Programs are often broken into many pieces, each piece being known as a module.  Modules are dynamically linked to each other at runtime, and are the smallest pieces that a Code Server handles. Details.

name space
    The imaginable universe of named objects which could be referred to during linking. In Windows the name space of loadable modules starts at "A" and ends at "ZZZZZZZZ".

New Executable (NE) file format
    The format which Win16 programs require for execution, both EXE's and DLL's. Every NE file has an MSDOS header known as the stub which prints out a message such as "This program requires Microsoft Windows". The contents of the NE header assist in loading and association, and define imports, exports, and code segment characteristics.

operating system (OS)
    An operating system is a program that loads other programs and provides them with a common set of services.  Addition of a Code Server to an OS separates part of the linker-loader so that it can be used across the network.

p-Code (also in Java this is known as bytecode)
    Instructions for a mythical machine, known as a p-machine, are prepared by the language tools into "exceutable" form. A special program called an interpreter then emulates the p-machine by reading the p-codes one at a time, thereby executing the actions they imply. p-Code is very compact compared to native machine code - it also has the advantage of being portable between different CPU types (such as Motorola's and Intel's respective chip families).

Portable Executable (PE) file format
    The format which Win32 programs require for execution, both EXE's and DLL's. Every PE file has a null NE header! The PE header defines similar properties as the NE header, but for 32-bit executables.

protocol
    The method by which two programs or logical entities (e.g. Code Servers) communicate and work together. In the context of the code server patents, the information transmitted by protocol is platform-independent, and must not contain address references.

public-key-encryption
    A means to secure transactions across a network where two keys are used, one belonging to the sender, and one to the receiver, where neither needs to know the other's key.

"Push" technology
    Push technology is a network architecture that allows the broadcast of information, generally on a subscription basis (e.g. the client "subscribes" to a certain page or channel).  This may be news broadcasts, stock market data, etc.  So far, the dream of program distribution by these means has not been realized.  The idea behind Push is fundamentally flawed because clients receive information passively.

"Pull" technology
    Pull is essentially Push in reverse, and is at the heart of the Code Server idea.  Upon an OS file request, a Code Server will attempt to produce it, and could foreseeably use all the Push architecture that has already been developed.  Unlike Push technology, data only arrives at the client computer as a direct result of attempting to run a program or open a file.

reference
    Each module called by the present module has one reference, whether there is one import from the module being called or several.  References are resolved when dynamic links are created.

reference list
    Module references are in a list at a defined location within the code file.  A Code Server can save the reference list of a module, along with its name and location, in a table, so that it doesn't have to be read in from the module again upon subsequent associations of the program.

relocation
    The process of fixing up a module in memory before execution.

static linking
    The process of permanently resolving modules which reference each by binding them into a single larger modules.  This is generally carried out by a linker.  The resulting module may still have external references to other modules which are resolved just prior to runtime by the process of dynamic linking.

target
    An address written over a victim in a module during relocation.  For a dynamic link this is an address, direct, or indirect, of an export from another module. See victim.

victim
    A relocation item in a given module into which is copied the address of a target. For a dynamic link, an import in the file on disk becomes the address, direct or indirect, of an item in another module already loaded.  See target.

virtual machine (VM)
    Windows runs in a single virtual machine, under the control of the VMM. DOS boxes are generally created as separate virtual machines that share the VMM and its resources (services), but do not communicate directly with each other.

Virtual Machine Manager (VMM)
    The 32-bit code loaded before Windows that also manages most low-level drivers in Windows and Windows95. It consists of a number of linked VxD's, and may or may not incorporate other VxD's from separate files (at boot time in Win31, also at run time in Win95).

VxD
    A VMM-level driver.

Email - Main- FAQ