1993 · 16 citations · 0 references
ComputingComputer EngineeringComputer ScienceDistributed SystemsProgramming LanguagesData SynchronizationDigital Library ArchitectureDistributed ComputingLibrary DesignShared-memory MultiprocessingShared-memory ParallelismShared-memory AlgorithmsShared-memory ArchitectureShared-memory Data Structures
Existing implementations of shared libraries sacrifice speed (in loading, linking, and executed code), for essential flexibility (in symbol binding, address space use, and interface evolution). Modern operating systems provide the primitives needed to make the dynamic linker and loader a persistent server which lives across program invocations. This can provide speed without sacrificing flexibility. The speed is gained primarily through caching of previous work, i.e., bound and relocated executable images and libraries. The flexibility comes from the server's being an active entity, capable of adapting to changing conditions, modifying its cached state, and responding to user directives. In this paper we present a shared library implementation based on OMOS, an Object/Meta-Object Server, which provides program linking and loading facilities as a special case of generic object instantiation. We discuss the architecture of OMOS and its support of module binding primitives, which make it ...