Khác biệt giữa các bản “Pipeline (Unix)”

Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.7
n
(Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.7)
 
[[Tập tin:Pipeline.svg|nhỏ|280x280px| Một đường dẫn gồm ba quá trình chương trình chạy trên Text terminal. ]]
Trong [[Tương tự Unix|các]] [[hệ điều hành]] máy tính [[Tương tự Unix|giống Unix]], một '''đường ống''' là một cơ chế để liên lạc giữa các quá trình bằng cách truyền tin nhắn. Một đường ống là một tập hợp các [[Tiến trình|tiến trình được]] nối với nhau bởi các luồng tiêu chuẩn của chúng, sao cho văn bản đầu ra của mỗi tiến trình ( stdout ) được truyền trực tiếp dưới dạng đầu vào ( ''stdin'' ) tới tiến trình kế tiếp. Quá trình đầu tiên không được hoàn thành trước khi quá trình thứ hai được bắt đầu, chúng được thực hiện [[Tương tranh (khoa học máy tính)|đồng thời]] . Khái niệm về đường ống được xây dựng bởi Douglas McIlroy trong hệ điều hành [[Unix]] của [[Phòng thí nghiệm Bell|Bell Labs]], quá trình phát triển của Unix đã định hình triết lý hộp công cụ của Unix. <ref>{{Chú thích web|url=http://www.princeton.edu/~hos/Mahoney/expotape.htm|title=The Unix Oral History Project: Release.0, The Beginning|author=Mahoney|first=Michael S.|quote=McIlroy: It was one of the only places where I very nearly exerted managerial control over Unix, was pushing for those things, yes.}}</ref> <ref>{{Chú thích web |url=http://cm.bell-labs.com/cm/cs/who/dmr/mdmpipe.html{{dead link|datengày truy cập=December2019-04-23 2017|tựa đề=Bản sao đã lưu trữ |botarchive-date=InternetArchiveBot2015-02-03 |fixarchive-attemptedurl=https://web.archive.org/web/20150203070719/http://cm.bell-labs.com/cm/cs/who/dmr/mdmpipe.html |dead-url=yes }} </ref> Nó được đặt tên bằng cách tương tự với một đường ống vật lý. Một tính năng chính của các đường ống này là "ẩn nội bộ" của chúng (Ritchie & Thompson, 1974). Điều này tạo nên sự trong suốt hơn và đơn giản hơn trong hệ thống.
 
Bài viết này là về các đường ống ẩn danh, trong đó dữ liệu được viết bởi một tiến trình được đệm bởi hệ điều hành cho đến khi nó được đọc bởi tiến trình tiếp theo và kênh đơn hướng này sẽ biến mất khi các tiến trình được hoàn thành. Điều này khác với các đường ống được đặt tên, trong đó các thông điệp được truyền đến hoặc đi từ một đường ống được đặt tên bằng cách biến nó thành một tệp và vẫn còn sau khi các tiến trình được hoàn thành. Cú pháp shell tiêu chuẩn cho các ống ẩn danh là liệt kê các lệnh, được phân tách bằng các thanh dọc ("ống" trong phiên bản Unix phổ biến): <source lang="bash"> process1 | process2 | process3 </source> Ví dụ: để liệt kê các tệp trong thư mục hiện tại ([[ls]]), giữ lại các dòng đầu ra của ls chứa chuỗi "key" (grep) và xem kết quả trong trang cuộn (less), người dùng nhập dòng sau vào terminal :<source lang="bash"> ls -l | grep key | less </source> " <code>ls -l</code> " tạo ra một tiến trình, đầu ra (stdout) được dẫn đến đầu vào (stdin) của tiến trình "grep key"; và tương tự như vậy cho tiến trình cho "less". Mỗi [[tiến trình]] lấy đầu vào từ tiến trình trước và tạo đầu ra cho tiến trình tiếp theo thông qua ''các luồng tiêu chuẩn'' . Mỗi " <code>|</code> " bảo với shell kết nối đầu ra tiêu chuẩn của lệnh bên trái với đầu vào tiêu chuẩn của lệnh bên phải bằng một cơ chế giao tiếp giữa các quá trình gọi là ống (ẩn danh), được triển khai trong hệ điều hành. Ống là đơn hướng; dữ liệu chảy qua đường ống từ trái sang phải.
14.520

lần sửa đổi