History from Dennis Ritchie for CS161

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

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).

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>