User Tools

Site Tools


features:pipes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
features:pipes [2015/12/29 20:16]
admin
features:pipes [2015/12/29 20:33] (current)
admin [Dating the Creation of Pipes]
Line 1: Line 1:
 ====== Pipes ====== ====== Pipes ======
  
-The idea of connecting an output from one process, via an in-kernel memory buffer, to the input of another process is entirely original to Unix.+**Wikipedia:​ ** [[https://​en.wikipedia.org/​wiki/​Pipeline_(Unix)|Pipeline (Unix)]]
  
-Doug McIlroy, in 1964had proposed that "We should have some ways of connecting programs like garden hose–screw in another ​segment when it becomes necessary ​to massage data in another wayThis is the way of IO also." (Dennis Ritchie, [[https://​www.bell-labs.com/​usr/​dmr/​www/​mdmpipe.html|Advice from Doug McIlroy]])+The idea of connecting an output from one processvia an in-kernel memory bufferto the input of another ​process is entirely original ​to Unix.
  
 +Doug McIlroy, in 1964, had proposed that "We should have some ways of connecting programs like garden hose – screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also." (Dennis Ritchie, [[https://​www.bell-labs.com/​usr/​dmr/​www/​mdmpipe.html|Advice from Doug McIlroy]]). Implicit in this statement is the idea of //filters// to modify and "​massage"​ the data.
 ===== The Evolution of Pipes ===== ===== The Evolution of Pipes =====
  
Line 15: Line 16:
 <​code>​ <​code>​
 inputfile copy outputfile inputfile copy outputfile
- +</code>
-</file>+
  
 To make a pipeline, command operators could be stacked up. Thus, to sort //input,// paginate it neatly, and print the result off-line, one would write To make a pipeline, command operators could be stacked up. Thus, to sort //input,// paginate it neatly, and print the result off-line, one would write
- +<​code>​ 
-<​code>​input sort paginate offprint+input sort paginate offprint
 </​code>​ </​code>​
  
Line 61: Line 61:
  
 I mentioned above in the section on IO redirection that Multics provided a mechanism by which IO streams could be directed through processing modules on the way to (or from) the device or file serving as source or sink. Thus it might seem that stream-splicing in Multics was the direct precursor of Unix pipes, as Multics IO redirection certainly was for its Unix version. In fact I do not think this is true, or is true only in a weak sense. Not only were coroutines well-known already, but their embodiment as Multics spliceable IO modules required that the modules be specially coded in such a way that they could be used for no other purpose. The genius of the Unix pipeline is precisely that it is constructed from the very same commands used constantly in simplex fashion. The mental leap needed to see this possibility and to invent the notation is large indeed. I mentioned above in the section on IO redirection that Multics provided a mechanism by which IO streams could be directed through processing modules on the way to (or from) the device or file serving as source or sink. Thus it might seem that stream-splicing in Multics was the direct precursor of Unix pipes, as Multics IO redirection certainly was for its Unix version. In fact I do not think this is true, or is true only in a weak sense. Not only were coroutines well-known already, but their embodiment as Multics spliceable IO modules required that the modules be specially coded in such a way that they could be used for no other purpose. The genius of the Unix pipeline is precisely that it is constructed from the very same commands used constantly in simplex fashion. The mental leap needed to see this possibility and to invent the notation is large indeed.
 +
 +===== Dating the Creation of Pipes =====
 +
 +According to the [[:​anecdotes:​pipes|anecdotes]],​ Ken Thompson added pipes to Unix in one day.
 +
 +The Second Edition of Unix, dated June 1972, didn't have pipes; by January 15, 1973, Unix did have pipes. Doug McIlroy put out the notice for a [[http://​www.tuhs.org/​Archive/​Documentation/​Papers/​Unix_Users_Talk_Notes_Jan73.pdf|talk which described the state of UNIX]] at that time; page 4 describes SYS PIPE and its implementation. This is as narrow as we can get on the date when Ken added pipes to the system.
  
features/pipes.1451380570.txt.gz · Last modified: 2015/12/29 20:16 by admin