What algorithm should I use for <foo>? A: We don’t really care. Just use a reasonable one. A’: Butler Lampson’s “Hints for computer system design ” (great paper) has a design hint: “When in doubt, use brute force.” Think about d(technology)/dt. Simple, well understood algorithms are a good way to start. You can always optimize later if time doesn’t save you. And we really, really don’t want to see code-level microoptimization that impairs readability. • You have some computational “work ” to do. • How do you think about this work; what are the units in which it runs? the abstractions you use in a computer or distributed system to represent it? • How do I divide up work in a distributed (parallel) system? Today • May seem pretty “definitional” (Other lectures will have a lot more “how to do cool stuff”) • No apologies: We need clear, precise definitions to understand, communicate, and build systems. • Analogy: A computer will do exactly what you tell it. But you have to know exactly how to express what you want... • So first, you have to know exactly what you want • This happens everywhere- ugrad, grad school, and beyond. Clear definitions are necessary for clear thought. • A challenge: “Systems contain subsystems that are themselves systems ” (S&K)-- aka, system decomposition is recursive. Jobs: Chunks of work Tasks • A Job (n): A task that is performed as if it was a single logical unit Remember, our definitions have to operate at multiple levels of abstraction Example: From the perspective of your password cracker server, cracking one password is a job. (Batch processing has similar views) From the client application’s perspective, cracking a range is a job. From the OS kernel’s perspective, a job is the granularity at which threads are scheduled (a burst of activity) • Set of instructions • Usually, a “task ” is more generic than a “process ” or a “thread ” (which have specific extra stuff with them) Let’s examine representations of these from bottom-u
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.