Boru hattı (pipeline), yazılım mühendisliğinde, her bir elemanın çıktısı bir sonraki elemanın girdisi olacak şekilde sıralanmış işlemler zinciridir. Genellikle, ardışık birimlerin aralarına bir miktar arabellek (buffer) konulmaktadır. Bu boruhatları arasındaki bilgi akışı çoğunlukla bayt katarları (stream) ve bit katarları şeklindedir.
Çoklu İşlem Yürütümlü (Multiprocessed) Boruhatları
Boruhatları, en verimli şekilde; tüm komut dizileri aynı anda başlatılarak ve her bir komut dizisi tarafından gönderilen veri okuma isteğine otomatik olarak cevap verilerek, çoklu görev yürütümlü (multitasking) bir işletim sistemine yerleştirilebilirler. Bu şekilde, merkezi işlem birimi (CPU), bekleme süresini en aza indirmek için, doğal bir şekilde, çizelgeleyici (scheduler) tarafından komut dizileri arasında anahtarlanacaktır.
Genellikle, okuma ve yazma istekleri, işlemleri engellemektedir. Bu, yazma üzerinde yürütülen kaynak komut dizisinin, tüm veriler hedef komut dizisine yazılana kadar ertelenmesi ve aynı şekilde okuma üzerinde yürütülen hedef komut dizisinin, en azından istenen verilerin bazıları kaynak komut dizisinden alınana kadar ertelenmesi anlamına gelmektedir. Belli ki bu, her iki komut dizisinin de cevap vermek için birbirlerini belirsiz bir süre bekleyeceği bir kilitlenmeye (deadlock) neden olamaz; çünkü, en azından iki komut dizisinden birinin isteğine en kısa zamanda işletim sistemi tarafından hizmet verilecektir ve komut dizisi yürütülmeye devam edecektir.
Performans için birçok işletim sistemi, kaynak komut dizisinin, hedef komut dizisinin alabileceği veya almak isteyeceği veriden daha fazlasını sağlamasına olanak tanıyan iletişim tüneli arabellekleri (pipe buffer) içermektedir. Çoğu Unice ve Unix benzeri işletim sistemlerinde, genel olarak “arabellek” diye adlandırılan, potansiyel olarak daha büyük ve ayarlanabilir boyutta bir iletişim tüneli arabelleği sağlayan çok özel bir komut da ayrıca mevcuttur.
Bu komut, eğer hedef komut dizisi kaynak komut dizisinden belirgin derecede daha yavaş ise kullanışlı olabilir; ancak yine de kaynak komut dizisinin, mümkün olan en kısa sürede görevini tamamlaması arzulanmaktadır. Örneğin, kaynak komut dizisi, CD’den ses kaydı okuyan bir komuttan oluşuyor olsun ve hedef komut dizisi, dalga biçimindeki ses verisini OGG Vorbis formatında sıkıştıran bir komuttan oluşuyor olsun. Bu durumda, ses kaydının tamamını iletişim tüneli arabelleği içinde saklamak, CD sürücüsünün daha hızlı durmasına ve kullanıcının şifreleme (encode) işlemi tamamlanmadan CD’yi sürücüden çıkarabilmesine olanak tanıyacaktır.
Bu tür bir arabellek komutu, mevcut işletim sistemindeki veri okuma ve yazma temel öğeleri ile gerçekleştirilebilir. Zaman kaybettiren aktif bekleme (active waiting), poll, select veya multithreading gibi avantajlar kullanılarak önlenebilir.
VM/CMS ve MVS
CMS boruhattı, bizi VM/CMS ve MVS sistemlere götüren boruhattı fikrinin giriş aşamasıdır. Bu, çoklu girdi katarlarını alıp bunlardan çoklu çıktı katarları üreterek, Unix kabuklarından (shell) çok daha karmaşık boruhattı yapılarını destekler. [Böyle bir işlevsellik Unix çekirdeği (kernel) tarafından desteklenmektedir, ancak çok az program bunu kullanır ve hiçbir kabuk bunun için bir sözdizim (syntax) sağlamaz.] IBM mainframe işletim sistemleri, farklı doğaları yüzünden, CMS boruhatları içine, Unix’te farklı harici programlar şeklinde olan birçok adım eklemişlerdir; fakat aynı zamanda, işlevsel olmaları için, farklı harici programları çağırabilirler. Aynı zamanda, IBM mainframe dosyalarının kayıt bazlı (record-oriented) doğaları nedeniyle, boruhatları, akış bazlı (stream-oriented) değil de kayıt bazlı düzende çalışırlar.
Sözde Boruhatları (Pseudo-Pipeline)
Tekli görev yürütümlü (single-tasking) işletim sistemlerinde boruhattının komut dizileri teker teker, sıralı düzende yürütülmek zorundadır; öyle ki, her bir komut dizisinin çıktısı, bir sonraki komut dizisi tarafından okunmak üzere, geçici bir dosyaya kaydedilmelidir. Paralellik ve CPU anahtarlama olmadığından bu türe “sözde boruhattı” denir.
Örnek olarak, MS-DOS komut güdüsü (command prompt) yorumlayıcısı (COMMAND.COM), Unix boruhatlarının sözdizimine benzer, yüzeysel bir sözdizim sağlamaktadır. “dir | sort | more” komutu şu şekilde yürütülecektir (tabii ki daha karmaşık geçici dosya adları kullanılarak):
- 1.tmp adlı geçici dosyayı yarat
- “dir” komutunu, çıktısını 1.tmp dosyasına yönlendirerek, çalıştır
- 2.tmp adlı geçici dosyayı yarat
- “sort” komutunu, girdisini 1.tmp dosyasına ve çıktısını da 2.tmp dosyasına yönlendirerek, çalıştır
- “more” komutunu, girdisini 2.tmp dosyasına yönlendirerek ve çıktısını kullanıcıya sunarak, çalıştır
- Daha fazla ihtiyaç kalmadığından, 1.tmp ve 2.tmp dosyalarını sil
- Komut güdüsüne geri dön
Tüm geçici dosyalar %TEMP% ile işaret edilen bir klasörde (eğer %TEMP% ayarlanmamışsa, içinde bulunulan klasörde) saklanır.
Böylece, gönderme komut dizisi (sending process) tamamlanmadan alma komut dizisinin iletişim tüneli arabelleğinden veri okuması kesinlikle engellenmiş olmakla birlikte, sözde boruhatları sınırsız boyutta iletişim tüneli arabelleğine sahip (disk alanı sınırlamaları dikkate alınmadan) gerçek boruhatları gibi davranırlar. Disk trafiğine neden olmanın ötesinde; eğer SMARTDRV gibi bir sabitdisk önbelleği (önbellek) kurulmazsa, ki bu çoklu görev yürütümlü işletim sistemleri için gerekli değildir; bu gerçekleştirim (sözde boruhattı) aynı zamanda boruhatlarını gerçek zamanlı tepkiler gerektiren uygulamalar için; örneğin, etkileşimli amaçlar gibi (kullanıcı, boruhattındaki ilk işlemin stdin aracılığıyla aldığı bir komut dizisi girer ve boruhattındaki son komut dizisi, çıktısını stdout aracılığıyla kullanıcıya sunar), uyumsuz hale getirdi.
Aynı zamanda, yes komutu gibi potansiyel olarak sonsuz miktarda çıktı üreten komutlar, sözde botuhattı içinde kullanılamazlar. Öyle ki, bu komutlar geçici disk alanı tükenen kadar çalışacaklardır, böylece botuhattı içindeki takip eden işlemler çalıştırılamayacaktır.
GUI’ler İçinde Boruhatları
RISC OS ve ROX Desktop gibi grafiksel ortamlar da botuhatları kullanırlar. Kullanıcının, bir programın nereye veri yazacağını belirtmesini sağlayan, dosya yöneticisi içeren bir kayıt diyalog kutusu sunmak yerine; RISC OS ve ROX, bir simge (ve ismi belirtmek için bir alan) içeren kayıt diyalog kutusu sunmaktadırlar. Hedef, simgenin sürüklenip bırakılmasıyla belirlenir. Kullanıcı, diğer programların simgeleri de dahil, kaydedilmiş bir dosyanın bırakılabileceği her yere simgeyi bırakabilir. Eğer simge bir program simgesinin üzerine bırakılırsa, program çalıştırılır ve normalde kaydedilmesi gereken dosya içeriği, yeni programın standart girdisine verilir.
Örnek olarak, internette gezinen bir kullanıcı, düzenleyip yeniden karşıya yüklemek (upload) İsteyeceği, .gz uzantılı, sıkıştırılmış resim dosyası ile karşılacaktır. GUI boruhatlarını kullanarak kullanıcı, bağı (link) arşiv açma programına sürükleyebilir, açılmış içeriği temsil eden simgeyi resim düzenleyicisine sürükleyebilir, farklı kaydet diyalogunu açabilir ve dosya simgesini karşıya yükleme programına sürükleyebilir.
Bu yöntem, geleneksel kayıt diyalog kutusu ile de kullanılabilir; ancak bunun için, kullanıcının programlarının dosya sisteminde açık ve kolay erişilebilir konumlara sahip olmaları gerekmektedir. Uygulamada bunun yerine sıklıkla GUI boruhatları kullanılır.
Diğer konular
- Bir boruhattı, bilginin, borularda akan su gibi sadece tek yönde akmasına izin verir. Bunun haricinde, genel olarak, su bir boruda iki yönde de akabilir.
- Boruhatları, işlevsel programlamanın, byte katarlarını veri nesnesi olarak kullanan bir biçimi olarak görülebilir.
- Boruhattı kavramı, kaynak veri katarının görüntülenmeden önce değiştirilebileceği, Cocoon web geliştirme çatısının (framework) merkezindedir.
- Boruhattı kavramı, TextPipe gibi veri madenciliği araçlarında da kullanılır.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Boru hatti pipeline yazilim muhendisliginde her bir elemanin ciktisi bir sonraki elemanin girdisi olacak sekilde siralanmis islemler zinciridir Genellikle ardisik birimlerin aralarina bir miktar arabellek buffer konulmaktadir Bu boruhatlari arasindaki bilgi akisi cogunlukla bayt katarlari stream ve bit katarlari seklindedir Coklu Islem Yurutumlu Multiprocessed BoruhatlariBoruhatlari en verimli sekilde tum komut dizileri ayni anda baslatilarak ve her bir komut dizisi tarafindan gonderilen veri okuma istegine otomatik olarak cevap verilerek coklu gorev yurutumlu multitasking bir isletim sistemine yerlestirilebilirler Bu sekilde merkezi islem birimi CPU bekleme suresini en aza indirmek icin dogal bir sekilde cizelgeleyici scheduler tarafindan komut dizileri arasinda anahtarlanacaktir Genellikle okuma ve yazma istekleri islemleri engellemektedir Bu yazma uzerinde yurutulen kaynak komut dizisinin tum veriler hedef komut dizisine yazilana kadar ertelenmesi ve ayni sekilde okuma uzerinde yurutulen hedef komut dizisinin en azindan istenen verilerin bazilari kaynak komut dizisinden alinana kadar ertelenmesi anlamina gelmektedir Belli ki bu her iki komut dizisinin de cevap vermek icin birbirlerini belirsiz bir sure bekleyecegi bir kilitlenmeye deadlock neden olamaz cunku en azindan iki komut dizisinden birinin istegine en kisa zamanda isletim sistemi tarafindan hizmet verilecektir ve komut dizisi yurutulmeye devam edecektir Performans icin bircok isletim sistemi kaynak komut dizisinin hedef komut dizisinin alabilecegi veya almak isteyecegi veriden daha fazlasini saglamasina olanak taniyan iletisim tuneli arabellekleri pipe buffer icermektedir Cogu Unice ve Unix benzeri isletim sistemlerinde genel olarak arabellek diye adlandirilan potansiyel olarak daha buyuk ve ayarlanabilir boyutta bir iletisim tuneli arabellegi saglayan cok ozel bir komut da ayrica mevcuttur Bu komut eger hedef komut dizisi kaynak komut dizisinden belirgin derecede daha yavas ise kullanisli olabilir ancak yine de kaynak komut dizisinin mumkun olan en kisa surede gorevini tamamlamasi arzulanmaktadir Ornegin kaynak komut dizisi CD den ses kaydi okuyan bir komuttan olusuyor olsun ve hedef komut dizisi dalga bicimindeki ses verisini OGG Vorbis formatinda sikistiran bir komuttan olusuyor olsun Bu durumda ses kaydinin tamamini iletisim tuneli arabellegi icinde saklamak CD surucusunun daha hizli durmasina ve kullanicinin sifreleme encode islemi tamamlanmadan CD yi surucuden cikarabilmesine olanak taniyacaktir Bu tur bir arabellek komutu mevcut isletim sistemindeki veri okuma ve yazma temel ogeleri ile gerceklestirilebilir Zaman kaybettiren aktif bekleme active waiting poll select veya multithreading gibi avantajlar kullanilarak onlenebilir VM CMS ve MVS CMS boruhatti bizi VM CMS ve MVS sistemlere goturen boruhatti fikrinin giris asamasidir Bu coklu girdi katarlarini alip bunlardan coklu cikti katarlari ureterek Unix kabuklarindan shell cok daha karmasik boruhatti yapilarini destekler Boyle bir islevsellik Unix cekirdegi kernel tarafindan desteklenmektedir ancak cok az program bunu kullanir ve hicbir kabuk bunun icin bir sozdizim syntax saglamaz IBM mainframe isletim sistemleri farkli dogalari yuzunden CMS boruhatlari icine Unix te farkli harici programlar seklinde olan bircok adim eklemislerdir fakat ayni zamanda islevsel olmalari icin farkli harici programlari cagirabilirler Ayni zamanda IBM mainframe dosyalarinin kayit bazli record oriented dogalari nedeniyle boruhatlari akis bazli stream oriented degil de kayit bazli duzende calisirlar Sozde Boruhatlari Pseudo Pipeline Tekli gorev yurutumlu single tasking isletim sistemlerinde boruhattinin komut dizileri teker teker sirali duzende yurutulmek zorundadir oyle ki her bir komut dizisinin ciktisi bir sonraki komut dizisi tarafindan okunmak uzere gecici bir dosyaya kaydedilmelidir Paralellik ve CPU anahtarlama olmadigindan bu ture sozde boruhatti denir Ornek olarak MS DOS komut gudusu command prompt yorumlayicisi COMMAND COM Unix boruhatlarinin sozdizimine benzer yuzeysel bir sozdizim saglamaktadir dir sort more komutu su sekilde yurutulecektir tabii ki daha karmasik gecici dosya adlari kullanilarak 1 tmp adli gecici dosyayi yarat dir komutunu ciktisini 1 tmp dosyasina yonlendirerek calistir 2 tmp adli gecici dosyayi yarat sort komutunu girdisini 1 tmp dosyasina ve ciktisini da 2 tmp dosyasina yonlendirerek calistir more komutunu girdisini 2 tmp dosyasina yonlendirerek ve ciktisini kullaniciya sunarak calistir Daha fazla ihtiyac kalmadigindan 1 tmp ve 2 tmp dosyalarini sil Komut gudusune geri don Tum gecici dosyalar TEMP ile isaret edilen bir klasorde eger TEMP ayarlanmamissa icinde bulunulan klasorde saklanir Boylece gonderme komut dizisi sending process tamamlanmadan alma komut dizisinin iletisim tuneli arabelleginden veri okumasi kesinlikle engellenmis olmakla birlikte sozde boruhatlari sinirsiz boyutta iletisim tuneli arabellegine sahip disk alani sinirlamalari dikkate alinmadan gercek boruhatlari gibi davranirlar Disk trafigine neden olmanin otesinde eger SMARTDRV gibi bir sabitdisk onbellegi onbellek kurulmazsa ki bu coklu gorev yurutumlu isletim sistemleri icin gerekli degildir bu gerceklestirim sozde boruhatti ayni zamanda boruhatlarini gercek zamanli tepkiler gerektiren uygulamalar icin ornegin etkilesimli amaclar gibi kullanici boruhattindaki ilk islemin stdin araciligiyla aldigi bir komut dizisi girer ve boruhattindaki son komut dizisi ciktisini stdout araciligiyla kullaniciya sunar uyumsuz hale getirdi Ayni zamanda yes komutu gibi potansiyel olarak sonsuz miktarda cikti ureten komutlar sozde botuhatti icinde kullanilamazlar Oyle ki bu komutlar gecici disk alani tukenen kadar calisacaklardir boylece botuhatti icindeki takip eden islemler calistirilamayacaktir GUI ler Icinde BoruhatlariRISC OS ve ROX Desktop gibi grafiksel ortamlar da botuhatlari kullanirlar Kullanicinin bir programin nereye veri yazacagini belirtmesini saglayan dosya yoneticisi iceren bir kayit diyalog kutusu sunmak yerine RISC OS ve ROX bir simge ve ismi belirtmek icin bir alan iceren kayit diyalog kutusu sunmaktadirlar Hedef simgenin suruklenip birakilmasiyla belirlenir Kullanici diger programlarin simgeleri de dahil kaydedilmis bir dosyanin birakilabilecegi her yere simgeyi birakabilir Eger simge bir program simgesinin uzerine birakilirsa program calistirilir ve normalde kaydedilmesi gereken dosya icerigi yeni programin standart girdisine verilir Ornek olarak internette gezinen bir kullanici duzenleyip yeniden karsiya yuklemek upload Isteyecegi gz uzantili sikistirilmis resim dosyasi ile karsilacaktir GUI boruhatlarini kullanarak kullanici bagi link arsiv acma programina surukleyebilir acilmis icerigi temsil eden simgeyi resim duzenleyicisine surukleyebilir farkli kaydet diyalogunu acabilir ve dosya simgesini karsiya yukleme programina surukleyebilir Bu yontem geleneksel kayit diyalog kutusu ile de kullanilabilir ancak bunun icin kullanicinin programlarinin dosya sisteminde acik ve kolay erisilebilir konumlara sahip olmalari gerekmektedir Uygulamada bunun yerine siklikla GUI boruhatlari kullanilir Diger konularBir boruhatti bilginin borularda akan su gibi sadece tek yonde akmasina izin verir Bunun haricinde genel olarak su bir boruda iki yonde de akabilir Boruhatlari islevsel programlamanin byte katarlarini veri nesnesi olarak kullanan bir bicimi olarak gorulebilir Boruhatti kavrami kaynak veri katarinin goruntulenmeden once degistirilebilecegi Cocoon web gelistirme catisinin framework merkezindedir Boruhatti kavrami TextPipe gibi veri madenciligi araclarinda da kullanilir