6.033 Handout 4

ASSIGNMENT: February 23 through March 3

For Recitation: Thursday, February 23

In preparation of this section, read readings #12 (Anderson et al.), #13 (Wahbe et al.). The Anderson paper is very technical; reading and understanding it will be an excellent way to review the material covered in the last two lectures. It discusses threads, virtual memory, (L)RPC, and microkernels vs. monolithic kernels. In some cases, the paper uses slightly different terminology, so you will have to find a mapping between Anderson's terminology and 6.033 terminology.

For section you have to read only sections 1 through 3 from Wahbe's paper. The main idea you like to get out of this paper is that there are other techniques for providing fault isolation within a computer than virtual memory. This paper proposes to use binary rewriting tools; this technique works as long as the tool does not contain any bugs. As a personal exercise, you may want to ponder over the question whether such a tool is more trustworthy than virtual memory hardware.

For Lecture, Monday, February 27

This is the last lecture on infrastructure and deals with abstractions and primitives for concurrency control, which is a complicated and important topic. Many of the hard-to-find bugs in programs are concurrency bugs, since often they are hard to reproduce. Jim Gray calls these bugs Heisenbugs, in contrast to Bohrbugs, which have a deterministic behavior. To prepare for lecture, read Tanenbaum 12.1.

For Recitation, Tuesday, February 28

The reading assignment for this Tuesday is Birrell's thread paper (reading #14). It seems that using threads and primitives for concurrency control introduces lots of complexity. For example, it introduces problems like "lock conflict" and "starvation." Does having threads create more problems than they are worth? Give a scenario to illustrate your argument, preferably a scenario that is not discussed in the paper.

For Lecture, Wednesday, March 1

This lecture is the first lecture out of a series of four lectures covering networking. In preparation read Tanenbaum 10.1 and reading #15 (Halstead's 6.033 networking notes), part I.

For Recitation, Thursday, March 2

Only one paper assigned for today, but it is the classic paper on remote procedure call (reading #16). Study the paper carefully. It will be discussed in detail in recitation. You also may like to reread Bershad's LRPC paper from two weeks ago. As a personal exercise you might want to compare this paper and Bershad's LRPC paper. Is RPC semantically different than LRPC? Can we make LRPC so that it supports "exactly-once" semantics?

For Lecture, Friday, March 3

Bob Metcalf will give an invited lecture on writing. As an interesting side note, we will read his classic Ethernet paper next week. Ethernet is the local-area network that hooks up most computers in the world, including your PC in your dorm.


System Aphorism of the week: A complex system that works is invariably found to have evolved from a simple system that works. - J. Gall, Systemantics