fbpx
维基百科

管道 (软件)

管道(pipeline),本源是使用消息传递进程间通信机制,它构成自链接起来的处理元素(进程线程协程函数等),它们被安置为每个元素的输出都是下一个元素的输入;这个名字类比于物理上的管道运输。在连贯的元素之间,通常会提供一定数量的缓冲区。在管道中流动的信息,经常是记录字节(stream),而管道的元素可以叫做过滤器英语Filter (software)。将元素连接成管道类似于函数复合英语Function composition (computer science)。在软件工程中,称之为管道与过滤器设计模式[1]

概述

管道的概念是在Unix的发源地贝尔实验室Douglas McIlroy在Unix开发期间主张的[2][3]。与Unix的管道有关的更早期独立工作是Ken Lochner在1960年代为Dartmouth分时系统英语Dartmouth Time Sharing System开发的“通信文件”[4][5]Tony Hoare在1978年提出的通信顺序进程(CSP),进一步发展了McIlroy的管道,但它用于通信的无缓冲区通道不是头等对象[6]CMS管道英语CMS Pipelines是开始于1980年的将管道想法向IBMVM/CMS英语VM (operating system)z/OS系统的移植[7]

狭窄些说,管道是线性的和单向的,最典型的是Unix shell最初提供的管道语法。但是这个术语有时也应用于更一般性的流(flow)。例如,一个基本上单向的管道,可以有在另一个方向上一些通信,叫做“返回通道”或“反向通道”,就像在lexer hack英语lexer hack中那样,也有管道可以是完全双向的。有着单向树和有向无环图拓扑的流[8][9],由于没有环路而相对简单,使得它们表现得类似于(线性的)管道,因此也可以宽泛的称为“管道”[10]

除了基于字节流(stream)的管道,还有对象管道。在对象管道中,处理元素输出对象而非文本。Windows PowerShell包含了一种内部的对象管道,在PowerShell运行时系统之内于函数之间传输.NET对象。在Limbo编程语言中的通道,是这种隐喻英语Scientific community metaphor的另一个例子。

管道和过滤器英语Filter (software),可以被看作使用字节流作为数据对象的一种形式的函数式编程;更具体的说,它们可以被看作是特定形式的I/O单子[11]

参见

注释

  1. ^ Jorge L. Ortega-Arjona. The Pipes and Filters Pattern. A Functional Parallelism Architectural Pattern for Parallel Programming. January 2005.
  2. ^ Mahoney, Michael S. The Unix Oral History Project: Release.0, The Beginning. [2020-05-04]. (原始内容于2021-04-21). McIlroy: It was one of the only places where I very nearly exerted managerial control over Unix, was pushing for those things, yes. 
  3. ^ Advice for pipe from M. D. McIlroy.. [2020-05-04]. (原始内容于2021-02-22). 
  4. ^ 存档副本. [2020-05-05]. (原始内容于2021-02-25). 
  5. ^ The Evolution of the Unix Time-sharing System (页面存档备份,存于互联网档案馆).
  6. ^ Russ Cox, Bell Labs and CSP Threads (页面存档备份,存于互联网档案馆).
  7. ^ VM and the VM Community, Melinda Varian (PDF). [2020-05-04]. (原始内容 (PDF)于2021-04-21). 
  8. ^ Tom Duff. Rc — The Plan 9 Shell (页面存档备份,存于互联网档案馆). 1990.
  9. ^ Diomidis Spinellis, Marios Fragkoulis. Extending Unix Pipelines to DAGs. April 2017. IEEE Transactions on Computers PP(99):1-1. 
  10. ^ dgsh — directed graph shell (页面存档备份,存于互联网档案馆).
  11. ^ "Monadic I/O and UNIX shell programming". [2020-05-04]. (原始内容于2020-11-09). 

外部链接

管道, 软件, 此條目介紹的是一般意义上的软件管道, 关于unix, shell最初实现的管道, 请见, 管道, unix, 管道, pipeline, 本源是使用消息传递的进程间通信机制, 它构成自链接起来的处理元素, 进程, 线程, 协程和函数等, 它们被安置为每个元素的输出都是下一个元素的输入, 这个名字类比于物理上的管道运输, 在连贯的元素之间, 通常会提供一定数量的缓冲区, 在管道中流动的信息, 经常是记录, 字节或位的流, stream, 而管道的元素可以叫做过滤器, 英语, filter, softw. 此條目介紹的是一般意义上的软件管道 关于Unix shell最初实现的管道 请见 管道 Unix 管道 pipeline 本源是使用消息传递的进程间通信机制 它构成自链接起来的处理元素 进程 线程 协程和函数等 它们被安置为每个元素的输出都是下一个元素的输入 这个名字类比于物理上的管道运输 在连贯的元素之间 通常会提供一定数量的缓冲区 在管道中流动的信息 经常是记录 字节或位的流 stream 而管道的元素可以叫做过滤器 英语 Filter software 将元素连接成管道类似于函数复合 英语 Function composition computer science 在软件工程中 称之为管道与过滤器设计模式 1 目录 1 概述 2 参见 3 注释 4 外部链接概述 编辑管道的概念是在Unix的发源地贝尔实验室由Douglas McIlroy在Unix开发期间主张的 2 3 与Unix的管道有关的更早期独立工作是Ken Lochner在1960年代为Dartmouth分时系统 英语 Dartmouth Time Sharing System 开发的 通信文件 4 5 Tony Hoare在1978年提出的通信顺序进程 CSP 进一步发展了McIlroy的管道 但它用于通信的无缓冲区通道不是头等对象 6 CMS管道 英语 CMS Pipelines 是开始于1980年的将管道想法向IBM的VM CMS 英语 VM operating system 和z OS系统的移植 7 狭窄些说 管道是线性的和单向的 最典型的是Unix shell最初提供的管道语法 但是这个术语有时也应用于更一般性的流 flow 例如 一个基本上单向的管道 可以有在另一个方向上一些通信 叫做 返回通道 或 反向通道 就像在lexer hack 英语 lexer hack 中那样 也有管道可以是完全双向的 有着单向树和有向无环图拓扑的流 8 9 由于没有环路而相对简单 使得它们表现得类似于 线性的 管道 因此也可以宽泛的称为 管道 10 除了基于字节流 stream 的管道 还有对象管道 在对象管道中 处理元素输出对象而非文本 Windows PowerShell包含了一种内部的对象管道 在PowerShell运行时系统之内于函数之间传输 NET对象 在Limbo编程语言中的通道 是这种隐喻 英语 Scientific community metaphor 的另一个例子 管道和过滤器 英语 Filter software 可以被看作使用字节流作为数据对象的一种形式的函数式编程 更具体的说 它们可以被看作是特定形式的I O单子 11 参见 编辑匿名管道 基于组件的软件工程 基于流程编程 GStreamer 建造在插件管道上的多媒体框架 图形流水线 Iteratees 英语 Iteratees 命名管道 介于匿名管道和文件之间的操作系统构造 流水线 计算机 其他计算机相关的管道即流水线概念 Kahn进程网络 英语 Kahn process networks 将管道概念扩展成更一般的有向图结构 管道 Unix Unix操作系统的管道 Plumber 英语 Plumber program 作为Plan 9一部份而开发的 智能管道 生产者消费者问题 软件设计模式 串流处理 XML管道 英语 XML pipeline 注释 编辑 Jorge L Ortega Arjona The Pipes and Filters Pattern A Functional Parallelism Architectural Pattern for Parallel Programming January 2005 Mahoney Michael S The Unix Oral History Project Release 0 The Beginning 2020 05 04 原始内容存档于2021 04 21 McIlroy It was one of the only places where I very nearly exerted managerial control over Unix was pushing for those things yes Advice for pipe from M D McIlroy 2020 05 04 原始内容存档于2021 02 22 存档副本 2020 05 05 原始内容存档于2021 02 25 The Evolution of the Unix Time sharing System 页面存档备份 存于互联网档案馆 Russ Cox Bell Labs and CSP Threads 页面存档备份 存于互联网档案馆 VM and the VM Community Melinda Varian PDF 2020 05 04 原始内容存档 PDF 于2021 04 21 Tom Duff Rc The Plan 9 Shell 页面存档备份 存于互联网档案馆 1990 Diomidis Spinellis Marios Fragkoulis Extending Unix Pipelines to DAGs April 2017 IEEE Transactions on Computers PP 99 1 1 dgsh directed graph shell 页面存档备份 存于互联网档案馆 Monadic I O and UNIX shell programming 2020 05 04 原始内容存档于2020 11 09 外部链接 编辑Pipeline Processing 页面存档备份 存于互联网档案馆 Parallel Programming Do you know Pipeline Parallelism 取自 https zh wikipedia org w index php title 管道 软件 amp oldid 70050596, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。