Konveyer (programmalıq támiynat)

Programmalıq injiniringde konveyer ‒ hár bir elementiniń shıǵıwı keyingisiniń kiriwi retinde jaylastırılǵan islep shıǵıw elementleriniń (processler, aǵımlar, korutinalar, funkciyalar hám t.b.) izbe-izligi bolıp tabıladı. Bul túsinik fizikalıq qubırǵa uqsas. Ádette, qatardaǵı elementler arasında belgili bir kólemdegi buferlew támiyinlenedi. Bul konveyerlerde aǵatuǵın informaciya kóbinese jazıwlar, baytlar yaki bitler aǵımı bolıp tabıladı hám konveyer elementleri filtrler dep atalıwı múmkin. Bul sonday-aq monolitli bolǵan qubırlar hám filtrlerdi joybarlaw úlgisi dep te ataladı. Onıń artıqmashılıqları ápiwayılıq hám arzan bolsa, kemshilikleri elastiklik, qátege shıdamlılıq hám masshtablılıqtıń joqlıǵı bolıp tabıladı.[1] Elementlerdi konveyerge baylanıstırıw funkciya kompoziciyasına uqsas.

Tar mániste konveyer sızıqlı hám bir baǵdarlı bolıp tabıladı, biraq geyde bul termin ulıwmalıq aǵımlarǵa da qollanıladı. Mısalı, tiykarınan bir baǵdarlı konveyerde lekser xakkindegi sıyaqlı qaytıw kanalı yamasa keri kanal dep atalatuǵın basqa baǵdarda belgili bir baylanıs bolıwı múmkin, yaki konveyer tolıq eki baǵdarlı bolıwı múmkin. Bir baǵdarlı terekler hám baǵdarlanǵan acikllı graf topologiyalarına iye aǵımlar sızıqlı konveyerlerge uqsas háreket etedi. Usınday aǵımlarda cikllerdiń joqlıǵı olardı ápiwayı etedi hám sonlıqtan olar shártli túrde «konveyerler» dep atalıwı múmkin.

Ámelge asırıw

Konveyerler kóbinese kóp wazıypalı operaciyalıq sistemada barlıq elementlerdi bir waqıtta processler retinde iske qosıw hám hár bir process tárepinen oqıw sorawların joqarı aǵımdaǵı process tárepinen jazılǵan maǵlıwmatlar menen avtomat túrde xızmet kórsetiw arqalı ámelge asırıladı. Bunı kóp processli konveyer dep atawǵa boladı. Usı tárizde joybarlawshı CPU-nıń bos waqtın azaytıw ushın processler arasında tábiyiy túrde almasıp turadı. Basqa keń taralǵan modellerde elementler processler menen baylanıslı bolǵan operaciyalıq sistemanıń qárejetlerin azaytıw ushın jeńil aǵımlar yaki korutinalar retinde ámelge asırıladı. Operaciyalıq sistemaǵa baylanıslı aǵımlar operaciyalıq sistema yamasa aǵım basqarıwshısı tárepinen tikkeley jobalanıwı múmkin. Korutinalar bárqulla qanday da bir túrdegi korutina basqarıwshısı tárepinen jobalanadı.

Oqıw hám jazıw sorawları ádette bloklawshı operaciyalar bolıp tabıladı. Bul baslanǵısh process jazıwdan keyin barlıq maǵlıwmatlar maqsetli processke jazılıp bolǵansha toqtatılatuǵının bildiredi. Sol sıyaqlı maqsetli process oqıwdan keyin soralǵan maǵlıwmatlardıń azı bolsa da baslanǵısh processten alınǵansha toqtatıladı. Bul eki process bir-birine sheksiz jawap beriwdi kútip qalatuǵın dıǵırıqqa alıp kelmeydi, sebebi processlerdiń azı bolsa da biri jaqın arada operaciyalıq sistema tárepinen óz sorawına xızmet kórsetiledi hám islewin dawam etedi.

Ónimlilik ushın qubırlardı ámelge asırıwshı kópshilik operaciyalıq sistemalar qubır buferlerin paydalanadı, bul baslanǵısh processke maqsetli process házirgi waqıtta qabıl etiwge yaki qálewge qábiletli bolǵanınan kóbirek maǵlıwmat beriwge imkaniyat beredi. Kópshilik Unix hám Unix-qa uqsas operaciyalıq sistemalarda ádette «buffer» dep atalatuǵın, potencial túrde álleqayda úlken hám sáykeslestiriwge bolatuǵın kólemdegi qubır buferin ámelge asırıwshı ayrıqsha komanda da bar. Eger maqsetli process baslanǵısh processten áhmiyetli dárejede áste bolsa, biraq baslanǵısh process óz wazıypasın ilajı bolǵansha tez tamamlawı kerek bolsa, bul komanda paydalı bolıwı múmkin. Mısalı, eger baslanǵısh process CD-den audio trekti oqıytuǵın komandadan ibarat bolsa, al maqsetli process tolqın formasındaǵı audio maǵlıwmatların MP3 sıyaqlı formatqa qısıwshı komandadan ibarat bolsa. Bul jaǵdayda pútkil trekti qubır buferinde buferlew CD diskiniń tezirek toqtatılıwına hám kodlaw processi tamamlanbastan paydalanıwshıǵa CD-ni disk júrgiziwshiden alıp taslawǵa imkaniyat beretuǵın edi.

Bunday bufer komandasın maǵlıwmatlardı oqıw hám jazıw ushın sistemalı shaqırıwlar arqalı ámelge asırıwǵa boladı. Bos kútip turıw sıyaqlı ısırapshılıqtan poll yaki select yamasa kóp aǵımlılıq sıyaqlı imkaniyatlardı paydalanıw arqalı qashıwǵa boladı.

Konveyer programmalıq támiynat sistemalarınıń ayrım belgili mısalları tómendegilerdi óz ishine aladı:

  • RaftLib – C/C++ Apache 2.0 Licenziyası

VM/CMS hám z/OS

CMS Pipelines - bul konveyer ideyasınıń VM/CMS hám z/OS sistemalarına kóshiriliwi. Ol Unix shelllerine qaraǵanda anaǵurlım qıyın konveyer strukturaların qollap-quwatlaydı, adımlar bir neshe kiriw aǵımların alıp, bir neshe shıǵıs aǵımların payda etedi. (Bunday funkcionallıq Unix yadrosı tárepinen qollap-quwatlanadı, biraq az programmalar onı paydalanadı, sebebi ol qıyın sintaksis hám bloklaw rejimlerin jaratadı, biraq ayırım shelller onı erkin fayl deskriptorların belgilew arqalı qollap-quwatlaydı).

IBM meynfreym operaciyalıq sistemalarındaǵı dástúrli qosımsha programmalarında qayta baǵdarlaw yaki qubırlastırıwǵa imkaniyat beretuǵın standart kiriw hám shıǵıs aǵımları joq. Sırtqı programmalar menen processlerdi jaratıwdıń ornına, CMS Pipelines ádettegi UNIX utilitaların ámelge asırıwshı hám qurılmalar menen operaciyalıq sistema xızmetlerine interfeys jaratatuǵın 200 den aslam ornatılǵan programmalardıń úlgilerin bir waqıtta orınlaw ushın jeńil dispetcherge iye. Ornatılǵan programmalardan tısqarı, CMS Pipelines paydalanıwshı tárepinen jazılǵan kiriw hám shıǵıw aǵımlarına iye REXX programmaların konveyerde paydalanıwǵa imkaniyat beretuǵın freymvorktı anıqlaydı.

IBM meynfreymlerindegi maǵlıwmatlar ádette jazıwǵa baǵdarlanǵan fayl sistemasında jaylasqan hám baylanıslı I/O qurılmaları aǵım rejiminen góre jazıw rejiminde isleydi. Nátiyjede CMS Pipelines-tegi maǵlıwmatlar jazıw rejiminde qayta islenedi. Tekst faylları ushın jazıw bir qatar tekstti óz ishine aladı. Ulıwma alǵanda CMS Pipelines maǵlıwmatlardı buferlemeydi, biraq maǵlıwmat jazıwların bir programmadan ekinshisine qatań tártipte ótkeredi. Bul óz ara baylanısqan konveyerler tarmaǵı arqalı maǵlıwmatlardıń determinirlengen aǵımın támiyinleydi.

Obekt konveyerleri

Bayt aǵımına tiykarlanǵan konveyerlerden tısqarı obekt konveyerleri de bar. Obekt konveyerinde islep shıǵarıw elementleri teksttiń ornına obektlerdi shıǵaradı. PowerShell PowerShell runtime ishindegi funkciyalar arasında .NET obektlerin ótkeretuǵın ishki obekt konveyerine iye. Limbo programmalastırıw tilinde tabılatuǵın kanallar bul metaforanıń basqa mısalları bolıp tabıladı.

GUIlerdegi konveyerler

RISC OS hám ROX Desktop sıyaqlı grafikalıq ortalıqlar da konveyerlerdi paydalanadı. Paydalanıwshıǵa programmanıń maǵlıwmatlardı qayda jazıwı kerekligin kórsetiw ushın fayl basqarıwshısın óz ishine alǵan saqlaw dialog aynasın támiyinlewdiń ornına, RISC OS hám ROX saqlaw dialog aynasın támiyinleydi, onda belgishe (hám atın kórsetiw ushın maydan) boladı. Mánzil belgisheni súyrep hám taslaw arqalı kórsetiledi. Paydalanıwshı belgisheni burın saqlanǵan fayl taslanıwı múmkin bolǵan hár qanday jerge, sonıń ishinde basqa programmalardıń belgishelerine de taslawı múmkin. Eger belgishe programmanıń belgishesine taslansa, ol júklenip, ádette saqlanıwı kerek bolǵan mazmun jańa programmanıń standart kiriw aǵımına beriledi.

Mısalı, dúnya júzilik tordı kórip júrgen paydalanıwshı .gz qısılǵan súwretti ushıratıwı múmkin, onı redakciyalap qayta júklewdi qáleydi. GUI konveyerlerin paydalanıw arqalı olar siltemeni óz arxivator programmasına súyrep, shıǵarılǵan mazmundı súwret redaktorine súyrep, onı redakciyalap, saqlaw dialogın ashıp hám onıń belgishesin júklew programmasına súyrep ótkere aladı.

Konceptual túrde bul usıl ádettegi saqlaw dialog aynası menen paydalanılıwı múmkin edi, biraq bul paydalanıwshınıń programmalarınan fayl sistemasında anıq hám ańsat kiriwge bolatuǵın orınǵa iye bolıwın talap etedi. Bul kóp jaǵdayda bolmaytuǵınlıqtan, GUI konveyerleri siyrek ushıraydı.

Basqa aspektler

«Konveyer» ataması fizikalıq santexnika menen shama menen uqsaslıqtan kelip shıqqan, sebebi konveyer ádette informaciyanıń tek bir baǵdarda aǵıwına imkaniyat beredi, suw kóbinese qubırda aqqanday.[2]

Qubırlar hám filtrler maǵlıwmat obektleri retinde bayt aǵımların paydalanıwshı funkcional programmalastırıwdıń bir túri retinde kóriliwi múmkin. Ásirese olar I/O ushın monadanıń ayrıqsha túri retinde kóriliwi múmkin.[3]

Konveyer koncepciyası Cocoon veb-islep shıǵıw freymvorkı yaki aqırǵı kórsetiwden aldın baslanǵısh aǵımdı ózgertiwge múmkinshilik beretuǵın hár qanday XProc (W3C standartları) ámelge asırıwları ushın da oraylıq bolıp tabıladı.

Bul úlgi programmalardıń kirgiziw hám shıǵarıw maǵlıwmatları sıpatında tekst aǵımların paydalanıwdı xoshlametleydi. Tekstke tiykarlanǵanlıǵı tekst programmaları ushın grafikalıq qabıqlar jaratıwda esapqa alınıwı kerek.

Derekler

  1. Fundamentals of Software Architecture: An Engineering Approach. O'Reilly Media, 2020. ISBN 978-1492043454. 
  2. There are exceptions, such as "broken pipe" signals.
  3. "Monadic I/O and UNIX shell programming" (Wayback Machine saytında 2020-11-09 sánesinde arxivlengen).