L3: Naming systems Frans Kaashoek 6.033 Spring 2007 http://web.mit.edu/6.033Fundamental abstractions • Memory • Read/write • Interpreter • Instruction repertoire • Environment • Instruction pointer • Communication links • Send/receive (loop (print (eval (read))))World-wide WebWeb names http://web.mit.edu/6.033 3 naming systems https://apply.eecs.mit.edu/ex?whatnext=ctlmyfolders&submitted=on&onlyreader=kaashoek name overloading: user query in the name ex is a new interpreterPC boardAbstract bus picture • address is overloaded name with location info • LOAD 1742, R1Names • R1 • 1742 • 18.7.22.69 • web.mit.edu • http://web.mit.edu/6.033 • [email protected] • amsterdam • /mit/6.033/www • foo.c • .. (as in cd .. or ls ..) • wc • (617)253-7149, x37149 • 021-84-2030Naming example foo (…) { int x, y; init() x = bar(…) y = sqrt(x) printf (“answer is %d”, y) } init() { …} 0xff00: // foo: … jmp 0xff20 // init … jmp 0xffd0 // bar …. jmp 0xffc0 // sqrt … jmp 0xdc00 // printf Step 1: compilation foo (…) { int x, y; init(); x = bar(…); y = sqrt(x); printf (“answer is %d”, y); } init() { …} gcc -c foo.c foo.o: • Text: 0xff00: // foo: jmp +20 // init() … jmp ??? // sqrt …. • Symbol table: [init, L, +20] [bar, U, ??] [sqrt, U, ??] [printf, U, ??]Step 2: linking foo.o: • Text: 0xff00: // foo: jmp +20 // init() … jmp ??? // sqrt …. • Symbol table: [init, L, +20] [bar, U, ??] [sqrt, U, ??] [printf, U, ??] • Gcc foo.o bar.o /usr/lib/libm.a /usr/lib/libc.a libm.a (sqrt.o, foo.o): sqrt.o: • Text: 0xff00: // sqrt: jmp +20 // init() … • Symbol table: [init, L, +20] [sqrt, G, +100] +Step 3: loading • Load in memory and adjust addresses: foo.o + bar.o + libm.a + libc.a foo.o + bar.o + libm.a + libc.a 0x0 232-1 0xff00: // foo: … jmp 0xff20 // init … jmp 0xffd0 // bar …. jmp 0xffc0 // sqrt … jmp 0xdc00 // printfSophistication: dynamic linking foo.o + bar.o + libm.a + libc.a foo.o + bar.o + libm.a + libc.a 0x0 232-1 libm.a libc.a foo.o + bar.o foo.o + bar.o • Resolve names at runtime through indirection dynamic linkerSummary • Understanding a naming system: • What is the syntax for name? • What are the values? • What is the naming resolution algorithm? • Where does a name’s context
View Full Document