AT&T Archives Unix Video Summary
https://www.youtube.com/watch?v=tc4ROCJYbm0
Overview
In the late 1960s, Bell Laboratories computer scientists Dennis Ritchie and Ken Thompson started work on a project that was inspired by an operating system called Multics, a joint project of MIT, GE, and Bell Labs. The host and narrator of this film, Victor Vyssotsky, also had worked on the Multics project. Ritchie and Thompson, recognizing some of the problems with the Multics OS, set out to create a more useful, flexible, and portable system for programmers to work with.
Three layers of Unix System:
Central Layer or Kernel: What controls resources of the machine
Shell or Interface: It is the interface between the users and the kernel
Utilities or Programs: Things like editors, compilers, document formatting programs, etc. These are the building blocks with which you can create things.
UNIX is very flexible and the programs can be glued together in various ways.
Pipelining
You can take two or more programs and stick them together end-to-end, the data simply flows from the one on the left to the one on the right, and the system itself looks after all connections and synchronization, programs themselves don't know anything about the connection, as far as they are concerned they're talking to the terminal.
Example of a pipelining process for a spell check program (top to bottom):
sentence
Select a sentence
makewords
Convert to one word per line
lowercase
Convert all words to lowercase
sort
Alphabetize from A to Z
unique
Remove duplicates
mismatch
Print out the ones that were in the document, but not in the dictionary
What we have here are five separate programs cooperating to do this job in one giant pipeline.
Features of UNIX systems
Formatless files
Hierarchical directory structure
Pipeline (Output of one command is the input to another)
Device-independent I/O
Directory Hierarchy
UNIX consists of a hierarchy of directories. A directory is a file that contains the names of either other directories, or other files. This goes on recursively.
When you start out, you are in the Home or your Users directory. Use pwd
to get the current directory.
The filesystem hierarchy makes it possible for users to organize information into a central grouping and to go up or down, and find things easily.
UNIX Shell
The command interpreter, or shell, is simply a program that watches what you type, and treats it as a request to run particular programs. The programs you run are just names of files in the filesystem, and it goes and executes it.
In fact, it's not possible for the user to, just by executing the program, to tell how the program has been implemented.
The ability to put commands into files, and only have to put filenames to get these commands executed is revolutionary.
I/O Redirection
Normally, the output goes to the terminal. However, shell can be told by a simple notation that when you run a command, you want the input to be redirected to a file, or the input to be taken from a file.
For example, to print the output of our spelling program, all we have to do is say myspell sentence > dev/lineprinter
which is a file that causes the lineprinter
to print the spelling mistakes.
On many systems, redirection is impossible because programs have wired into them the notion that they have to print to the terminal or elsewhere. Here, I/O redirection is handled not by the program but by the shell.
C Programming Language
A good operating system is easiest for a programmer to use if the programming language fits with the style of the system. So, Dennis Ritchie created the C language.
C and Shell programming language are the most popular languages for creating programs or operating systems. C is very flexible and high-level, and has modern constructs as well as low-level details, so you don't have to interact with the inner abstractions of the operating system if you don't want to, but if you need to, you can.
Programmers have also added their own language, and all of them exist on UNIX systems.
Last updated