<<

Dynamic Linking and Loading

Computer Science and Engineering  College of Engineering  The Ohio State University

Lecture 27 Unifying “X” and “M”

Computer Science and Engineering  The Ohio State University  Don’t really need 2 separate mechanisms!  Recall meanings of  T ______M  T ______XSym  “Sym” is in EST  Add this value of “Sym” to address field  Recall that segment names always in EST  This suggests that X can be seen as a more general form of M! Replacing “M” with “X”

Computer Science and Engineering  The Ohio State University

T463A4030M9 Prog .ORIG . . . Loop - - - or . . . JMP Loop . . . T463A4030X9Prog Linking with Libraries

Computer Science and Engineering  The Ohio State University  Common functions often defined in libraries  linking can be made implicit:  After pass 1, may still have “unresolved external symbols” in EST  If so, search libraries for matching definitions and load them (after pass 1)  Still some unresolved externals? Then error  Typically, user-specified libraries searched first, then standard ones (automatically) Optimization: Space

Computer Science and Engineering  The Ohio State University  Consider a program that calls “sqrt”, “rnd”, and “substr”  Each symbol is defined in its own (large) library  So, linked and loaded program is huge  Solutions (for saving memory):  and paging   Dynamic linking Dynamic Loading

Computer Science and Engineering  The Ohio State University  Observe: program does 1 thing at a time  So not all segments need to be present simultaneously  Example A 200

BC500 300

F 400 D 300 E 200

Total Size = 1.9 Mb Dynamic Loading - Overlays

Computer Science and Engineering  The Ohio State University  B/D never together with /E/F  Define an “overlay structure” for how segments can be swapped in and out  3 scenarios:

A 200 A 200 A 200 B 500C 300 C 300 E 200 F 400 D 300 Total Size = 1000 700 900

 Only 1Mb needed (length of longest path)  Trade-off: memory space & performance Dynamic Linking

Computer Science and Engineering  The Ohio State University  Instead of branching directly to an external symbol, program issues a call request to OS  name is parameter for request  OS responsibilities  Keep table of loaded libraries  Load new library if needed  Manage swapping of libraries as appropriate  Transfer control to appropriate subroutine  Return control to original program Dynamic Linking

Computer Science and Engineering  The Ohio State University  “Binding”: the association of a symbolic name (eg “Sqrt”) with an actual address (eg x6E5E)  Dynamic linking delays binding from load time to time (“late binding”)  Advantages:  Many programs can share 1 loaded library  Library can be recompiled on-the-fly  Library only loaded if actually used Optimization: Time

Computer Science and Engineering  The Ohio State University  Every time we want to execute a program, must re-link, relocate and re- load  Costly if hasn’t changed  Idea: separate these two operations

Object Linkage Linked Relocating Memory Files Editor Program Loader

 “Linkage editor” does the binding  Loader does alloc’n/reloc’n/loading  Small, simple, fast Summary

Computer Science and Engineering  The Ohio State University  Unifying and linking  Both require the same kind of patching  Dynamic loading with overlays  Dynamic linking  Defer binding symbols to their values from link/load time to run time  Linkage editor: separate linking from loading