History from Dennis Ritchie for CS161

| -Uncategorized


What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.

— Dennis Ritchie

So it really did begin with Space Travel… then a file system (which had been previously designed with chalk), then user-level utilities (because a filesystem is wasted if you don’t have stuff to do with it), then a shell, then an assembler.

How the old shell worked:

– The shell closed all its open files, then opened the terminal special file for standard input and output (file descriptors 0 and 1).
– It read a command line from the terminal.
– It linked to the file specifying the command, opened the file, and removed the link. Then it copied a small bootstrap program to the top of memory and jumped to it; this bootstrap program read in the file over the shell code, then jumped to the first location of the command (in effect an exec).
– The command did its work, then terminated by calling exit. The exit call caused the system to read in a fresh copy of the shell over the terminated command, then to jump to its start (and thus in effect to go to step 1).

You can comment with Disqus or you can e-mail me at sacha@sachachua.com.