Pipes and Filters consist of a chain of processes
or other data processing entities, arranged so that the output of
each element of the chain is the input of the next.
They're also known as pipelines, by analogy to a
physical pipeline.
They're most efficiently implemented in a multitasking
operating system, by launching all
processes at the same time, and automatically
servicing the data read requests by each process with the data
written by the upstream process. In this way, the CPU will be
naturally switched among the processes by the scheduler so as to
minimize its idle time.
Process pipelines were invented by Douglas McIlroy,
one of the designers of the first Unix shells, and greatly
contributed to the popularity of that operating system. It can be
considered the first non-trivial instance of software components.
Microsoft's PowerShell also takes advantage of the
pipes and filter pattern. The key difference between the usual Unix
approach and the PowerShell one is that rather than creating a
"pipeline" based on textual input and output, PowerShell passes data
between the various programs called cmdlets (pronounced
command lets) as objects (structured data).