M.I.T. DEPARTMENT OF EECS

6.033 - Computer System Engineering One-pager #2: Due in Recitation 5, Thursday, February 23, 2006

As you saw in Hands-On #1, piping is a feature of the UNIX operating system that allows a pair of processes to communicate by sending a stream of bytes from one to the other. In a UNIX shell, pipes allow chains of programs to be expressed, as in this example:

cat last_names.txt | sort | grep '^B'

This chain displays the list of all last names in the file "last_names.txt" that start with "B" in alphabetical order. In this example, the UNIX shell uses the system function pipe() to connect the output of each process in the chain to the input of the next. (Footnote)

Pick one significant limitation of UNIX pipes. Persuasively argue why it is a significant limitation in terms of a developer's ability to compose programs from components connected with pipes. Pipe properties you might consider include the type of the data that can flow over a pipe, that two processes must have a shared parent to communicate, the directions in which data can flow, etc. In your writeup be concrete: you may find it effective to structure your argument using one or more examples.


Remember, use no more than one sheet of paper for your report. (Consult the 6.033 FAQ for formatting specifications.) We care more about quality and conciseness than the amount of content in your essay. You will not be able to address every issue in one page, so you will have to make your best argument and judiciously choose supporting facts for this one-pager.

Two copies of this assignment are due at the beginning of recitation on Thursday, February 23, 2006. The second copy will be forwarded to the writing program for evaluation.


Footnote: Connections using the system function pipe() are not constrained to linear sequences of programs. In general, a process may output to multiple other processes, concurrently. Similarly, a process may accept input from multiple pipes.


Go to 6.033 Home Page