Dynamic Linking of Software Components

  • Authors:
  • Michael Franz

  • Affiliations:
  • -

  • Venue:
  • Computer
  • Year:
  • 1997

Quantified Score

Hi-index 4.10

Visualization

Abstract

The concepts underlying dynamic linking reached maturity through modular operating systems and are being reintroduced in some of the most popular workstation and PC operating systems. The original idea behind dynamic linking was to factor out common functions so that they could be shared among several applications. As straightforward as dynamic linking may seem, it can nevertheless be implemented through a surprising variety of strategies. This article contrasts three simple dynamic linking schemes with two much more elaborate strategies. As general-purpose operating systems move to embrace dynamic linking, the technologies chosen for linking components will play a pivotal role in the systems' long-term commercial success. The three "lightweight" approaches to dynamic linking-runtime table lookup, load-time code modification, and runtime code modification-vary in the way they employ these tables and handle calls. The two new techniques, although more complex, promise to facilitate cross-platform portability. The first, load-time code generation, capitalizes on the insight that raw processor power is growing much more rapidly than the speed of I/O operations. The second, load-time compliation, uses a highly compact intermediate program representation ("slim binaries") instead of native object files. This speeds up the I/O component of loading dramatically, but it has several drawbacks that make it less attractive than load-time code generation.