~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3BAF4B309B740512CD3B6AD74091CF1D__1718199420 ✰
Заголовок документа оригинал.:
✰ Pipeline (software) - Wikipedia ✰
Заголовок документа перевод.:
✰ Конвейер (программное обеспечение) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Pipeline_(software) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/3b/1d/3baf4b309b740512cd3b6ad74091cf1d.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/3b/1d/3baf4b309b740512cd3b6ad74091cf1d__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:23:04 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 12 June 2024, at 16:37 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Конвейер (программное обеспечение) — Википедия Jump to content

Конвейер (программное обеспечение)

Из Википедии, бесплатной энциклопедии

В программной инженерии конвейер , организованных так , состоит из цепочки обрабатывающих элементов ( процессов , потоков , сопрограмм , функций ) и т. д. что выход каждого элемента является входом следующего. Эта концепция аналогична физическому конвейеру . некоторая буферизация Обычно между последовательными элементами обеспечивается . Информация, которая течет по этим конвейерам, часто представляет собой , байтов поток записей или битов , а элементы конвейера можно назвать фильтрами . называется труб и фильтров шаблоном проектирования монолитным Это также . Его преимуществами являются простота и низкая стоимость, а недостатками — отсутствие гибкости , отказоустойчивости и масштабируемости . [1] Соединение элементов в конвейер аналогично композиции функций .

В узком смысле трубопровод является линейным и однонаправленным, хотя иногда этот термин применяется к более общим потокам. Например, преимущественно однонаправленный конвейер может иметь некоторую связь в другом направлении, известную как обратный канал или обратный канал, как в lexer hack , или конвейер может быть полностью двунаправленным. Потоки с однонаправленными деревьями и топологиями направленных ациклических графов ведут себя аналогично линейным конвейерам. Отсутствие циклов в таких потоках делает их простыми, и поэтому их можно условно называть «конвейерами».

Реализация [ править ]

Конвейеры часто реализуются в многозадачных ОС путем запуска всех элементов одновременно с процессами и автоматического обслуживания запросов на чтение данных каждым процессом с данными, записанными вышестоящим процессом. Это можно назвать многопроцессорным конвейером. Таким образом, планировщик естественным образом будет переключать процессор между процессами, чтобы минимизировать время его простоя. В других распространенных моделях элементы реализуются в виде облегченных потоков или сопрограмм, чтобы уменьшить накладные расходы ОС, часто связанные с процессами. В зависимости от ОС потоки могут планироваться непосредственно ОС или менеджером потоков. Сопрограммы всегда планируются менеджером сопрограмм той или иной формы.

Запросы на чтение и запись обычно блокируют операции. Это означает, что выполнение исходного процесса после записи приостанавливается до тех пор, пока все данные не будут записаны в целевой процесс. Аналогично, выполнение целевого процесса после чтения приостанавливается до тех пор, пока хотя бы часть запрошенных данных не будет получена от исходного процесса. Это не может привести к тупику , когда оба процесса будут бесконечно ждать ответа друг друга, поскольку по крайней мере один из процессов вскоре обработает свой запрос операционной системой и продолжит работу.

Для повышения производительности большинство операционных систем, реализующих каналы, используют буферы каналов , которые позволяют исходному процессу предоставлять больше данных, чем целевой процесс в настоящее время может или желает получить. В большинстве Unix и Unix-подобных операционных систем также доступна специальная команда, обычно называемая «buffer», которая реализует конвейерный буфер потенциально гораздо большего и настраиваемого размера. Эта команда может быть полезна, если целевой процесс значительно медленнее исходного, но желательно, чтобы исходный процесс завершил свою задачу как можно скорее. Например, если исходный процесс состоит из команды, которая считывает аудиодорожку с компакт-диска , а целевой процесс состоит из команды, которая сжимает аудиоданные формы сигнала в такой формат, как MP3 . В этом случае буферизация всей дорожки в конвейерном буфере позволит приводу компакт-дисков замедляться быстрее и позволит пользователю извлечь компакт-диск из привода до завершения процесса кодирования.

Такая команда буфера может быть реализована с помощью системных вызовов для чтения и записи данных. Бесполезного ожидания в режиме занятости можно избежать, используя такие средства, как опрос или выбор или многопоточность .

Некоторые известные примеры конвейерных программных систем включают в себя:

  • RaftLib — лицензия C/C++ Apache 2.0

VM/CMS и z/OS [ править ]

CMS Pipelines — это перенос идеи конвейера на системы VM/CMS и z/OS . Он поддерживает гораздо более сложные структуры конвейеров, чем оболочки Unix, где шаги обрабатывают несколько входных потоков и создают несколько выходных потоков. (Такая функциональность поддерживается ядром Unix, но ее используют немногие программы, поскольку она усложняет синтаксис и режимы блокировки, хотя некоторые оболочки поддерживают ее посредством произвольного назначения файлового дескриптора ).

Традиционные прикладные программы в операционных системах мэйнфреймов IBM не имеют стандартных потоков ввода и вывода, позволяющих перенаправление или конвейеризацию. Вместо создания процессов с помощью внешних программ, CMS Pipelines имеет легкий диспетчер, позволяющий одновременно выполнять экземпляры более чем 200 встроенных программ, которые реализуют типичные утилиты UNIX и взаимодействуют с устройствами и службами операционной системы. В дополнение к встроенным программам CMS Pipelines определяет структуру, позволяющую писать пользовательские программы REXX с входными и выходными потоками, которые можно использовать в конвейере.

Данные на мэйнфреймах IBM обычно хранятся в файловой системе, ориентированной на запись , а подключенные устройства ввода-вывода работают в режиме записи, а не в потоковом режиме. Как следствие, данные в конвейерах CMS обрабатываются в режиме записи. Для текстовых файлов запись содержит одну строку текста. В общем, CMS Pipelines не буферизует данные, а передает записи данных синхронно из одной программы в другую. Это обеспечивает детерминированный поток данных через сеть взаимосвязанных конвейеров.

Конвейеры объектов [ править ]

Помимо конвейеров на основе байтовых потоков, существуют также объектные конвейеры. В конвейере объектов элементы обработки выводят объекты вместо текста. PowerShell включает внутренний конвейер объектов, который передает объекты .NET между функциями в среде выполнения PowerShell. Каналы , встречающиеся в языке программирования Limbo , являются другими примерами этой метафоры.

Конвейеры в графическом интерфейсе [ править ]

Графические среды, такие как RISC OS и ROX Desktop, также используют конвейеры. Вместо того, чтобы предоставлять диалоговое окно сохранения , содержащее файловый менеджер , позволяющий пользователю указать, куда программа должна записывать данные, RISC OS и ROX предоставляют диалоговое окно сохранения, содержащее значок (и поле для указания имени). Пункт назначения указывается путем перетаскивания значка. Пользователь может переместить значок в любое место, где можно переместить уже сохраненный файл, в том числе на значки других программ. Если значок перетаскивается на значок программы, он загружается, и содержимое, которое в противном случае было бы сохранено, передается в стандартный поток ввода новой программы.

Например, пользователь, просматривающий всемирную сеть, может встретить сжатое изображение .gz, которое он хочет отредактировать и повторно загрузить. Используя конвейеры графического пользовательского интерфейса, они могли перетащить ссылку на свою программу разархивирования, перетащить значок, представляющий извлеченное содержимое, в свой редактор изображений , отредактировать его, открыть диалоговое окно «Сохранить как» и перетащить его значок в свое программное обеспечение для загрузки.

Концептуально этот метод можно использовать с обычным диалоговым окном сохранения, но для этого потребуется, чтобы пользовательские программы имели очевидное и легкодоступное местоположение в файловой системе. Поскольку зачастую это не так, конвейеры графического интерфейса встречаются редко.

Другие соображения [ править ]

Название «трубопровод» происходит от грубой аналогии с физической водопроводной системой, поскольку трубопровод обычно [2] позволяет информации течь только в одном направлении, как вода часто течет в трубе.

Каналы и фильтры можно рассматривать как форму функционального программирования , использующую потоки байтов в качестве объектов данных. Более конкретно, их можно рассматривать как особую форму монады для ввода-вывода . [3]

Концепция конвейера также занимает центральное место в Cocoon веб-разработки среде или в любых реализациях XProc (стандарты W3C), где она позволяет изменять исходный поток перед возможным отображением.

Этот шаблон поощряет использование текстовых потоков в качестве входных и выходных данных программ. Эту зависимость от текста необходимо учитывать при создании графических оболочек текстовых программ.

См. также [ править ]

Примечания [ править ]

  1. ^ Основы архитектуры программного обеспечения: инженерный подход . О'Рейли Медиа. 2020. ISBN  978-1492043454 .
  2. ^ Есть исключения, например, сигналы «лопнувшей трубы».
  3. ^ «Монадический ввод-вывод и программирование оболочки UNIX» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3BAF4B309B740512CD3B6AD74091CF1D__1718199420
URL1:https://en.wikipedia.org/wiki/Pipeline_(software)
Заголовок, (Title) документа по адресу, URL1:
Pipeline (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)