خط الأنابيب (البرمجيات)
في هندسة البرمجيات ، تتكون سلسلة المعالجة (الأنابيب) من مجموعة من عناصر المعالجة ( العمليات ، الخيوط ، الروتينات الفرعية ، الدوال ، إلخ )، مرتبة بحيث يكون ناتج كل عنصر مدخلاً للعنصر التالي. يشبه هذا المفهوم خط الأنابيب المادي . عادةً ما يتم توفير قدر من التخزين المؤقت بين العناصر المتتالية. غالبًا ما تكون المعلومات المتدفقة في هذه الأنابيب عبارة عن سلسلة من السجلات أو البايتات أو البتات ، ويمكن تسمية عناصر سلسلة المعالجة بالمرشحات . يُعرف هذا أيضًا بنمط تصميم الأنابيب والمرشحات، وهو نمط متجانس . من مزاياه البساطة وانخفاض التكلفة، بينما من عيوبه قلة المرونة ، وتحمل الأعطال ، وقابلية التوسع . [ 1 ] يُشابه ربط العناصر في سلسلة المعالجة تركيب الدوال .
بالمعنى الدقيق، تُعتبر خطوط الأنابيب خطية وأحادية الاتجاه، مع أن المصطلح يُستخدم أحيانًا لوصف تدفقات أكثر عمومية. على سبيل المثال، قد تحتوي خطوط الأنابيب أحادية الاتجاه في الأساس على بعض الاتصالات في الاتجاه المعاكس، تُعرف بقناة الإرجاع أو القناة الخلفية، كما هو الحال في اختراق محلل المعجم ، أو قد تكون خطوط الأنابيب ثنائية الاتجاه تمامًا. تتصرف التدفقات ذات الأشجار أحادية الاتجاه وطوبولوجيا الرسوم البيانية الموجهة غير الدورية بشكل مشابه لخطوط الأنابيب الخطية. إن غياب الدورات في هذه التدفقات يجعلها بسيطة، ولذلك يُمكن الإشارة إليها بشكل عام باسم "خطوط الأنابيب".
تطبيق
غالبًا ما تُنفَّذ خطوط المعالجة في أنظمة التشغيل متعددة المهام ، وذلك بتشغيل جميع العناصر في الوقت نفسه كعمليات، وتلبية طلبات قراءة البيانات تلقائيًا من كل عملية باستخدام البيانات المكتوبة من العملية السابقة. يُطلق على هذا النوع من خطوط المعالجة اسم خط المعالجة متعدد العمليات. وبهذه الطريقة، يقوم المجدول تلقائيًا بتبديل وحدة المعالجة المركزية بين العمليات لتقليل وقت خمولها. في نماذج أخرى شائعة، تُنفَّذ العناصر كخيوط معالجة خفيفة أو كبرامج فرعية لتقليل الحمل الزائد على نظام التشغيل، والذي غالبًا ما يرتبط بالعمليات. اعتمادًا على نظام التشغيل، قد تتم جدولة خيوط المعالجة مباشرةً بواسطة نظام التشغيل أو بواسطة مدير خيوط المعالجة. أما البرامج الفرعية، فتتم جدولتها دائمًا بواسطة مدير برامج فرعية من نوع ما.
تُعتبر عمليات القراءة والكتابة عادةً عمليات حظر. وهذا يعني أن تنفيذ العملية المصدرية، عند الكتابة، يتوقف مؤقتًا حتى يتم كتابة جميع البيانات إلى العملية الوجهة. وبالمثل، يتوقف تنفيذ العملية الوجهة، عند القراءة، مؤقتًا حتى يتم الحصول على جزء على الأقل من البيانات المطلوبة من العملية المصدرية. لا يمكن أن يؤدي هذا إلى حالة جمود ، حيث تنتظر كلتا العمليتين إلى أجل غير مسمى استجابة الأخرى، لأن إحدى العمليتين على الأقل ستتلقى طلبها قريبًا من نظام التشغيل، وتستمر في العمل.
لتحسين الأداء، تستخدم معظم أنظمة التشغيل التي تُطبّق الأنابيب مخازن مؤقتة للأنابيب ، مما يسمح لعملية المصدر بتوفير بيانات أكثر مما تستطيع عملية الوجهة استقباله حاليًا أو ترغب في استقباله. في معظم أنظمة يونكس والأنظمة الشبيهة بيونكس، يتوفر أيضًا أمر خاص يُسمى عادةً "buffer"، يُفعّل مخزنًا مؤقتًا للأنابيب بحجم أكبر بكثير وقابل للتكوين. يُفيد هذا الأمر إذا كانت عملية الوجهة أبطأ بكثير من عملية المصدر، ولكن يُراد لعملية المصدر إكمال مهمتها بأسرع وقت ممكن. على سبيل المثال، إذا كانت عملية المصدر تتضمن أمرًا لقراءة مسار صوتي من قرص مضغوط ، وعملية الوجهة تتضمن أمرًا لضغط بيانات الموجة الصوتية إلى تنسيق مثل MP3 ، فإن تخزين المسار بأكمله مؤقتًا في مخزن مؤقت للأنابيب سيُتيح لمحرك الأقراص المضغوطة التوقف عن الدوران بسرعة أكبر، ويُمكّن المستخدم من إزالة القرص المضغوط من المحرك قبل انتهاء عملية التشفير.
يمكن تنفيذ أمر التخزين المؤقت هذا باستخدام استدعاءات النظام لقراءة البيانات وكتابتها. ويمكن تجنب الانتظار النشط غير الضروري باستخدام أدوات مثل الاستقصاء أو التحديد أو تعدد الخيوط .
تتضمن بعض الأمثلة البارزة لأنظمة برمجيات خطوط الأنابيب ما يلي:
- RaftLib – C/C++ رخصة أباتشي 2.0
VM/CMS و z/OS
CMS Pipelines هو تطبيق لفكرة خطوط المعالجة على أنظمة VM/CMS و z/OS . يدعم هذا التطبيق هياكل خطوط معالجة أكثر تعقيدًا من تلك الموجودة في أنظمة يونكس، حيث تستقبل الخطوات عدة تدفقات إدخال وتنتج عدة تدفقات إخراج. (يدعم نواة يونكس هذه الوظيفة، لكن قليلًا من البرامج تستخدمها نظرًا لتعقيد تركيبها وأنماط حظرها، مع أن بعض أنظمة يونكس تدعمها عبر تعيين مُعرّف ملف عشوائي ).
تفتقر برامج التطبيقات التقليدية على أنظمة تشغيل الحواسيب المركزية من IBM إلى مسارات إدخال وإخراج قياسية تسمح بإعادة التوجيه أو الربط. وبدلاً من إنشاء عمليات باستخدام برامج خارجية، يوفر CMS Pipelines مُوزِّعًا خفيفًا لتنفيذ نسخ متزامنة من أكثر من 200 برنامج مُدمج تُنفِّذ أدوات UNIX النموذجية وتتفاعل مع الأجهزة وخدمات نظام التشغيل. إضافةً إلى البرامج المُدمجة، يُعرِّف CMS Pipelines إطار عمل يسمح بكتابة برامج REXX من قِبل المستخدم مع مسارات إدخال وإخراج يُمكن استخدامها في خط الأنابيب.
تُخزَّن البيانات على أجهزة IBM المركزية عادةً في نظام ملفات مُوجَّه نحو السجلات ، وتعمل أجهزة الإدخال/الإخراج المتصلة في وضع السجلات وليس وضع التدفق. ونتيجةً لذلك، تُعالَج البيانات في CMS Pipelines في وضع السجلات. بالنسبة للملفات النصية، يحتوي السجل على سطر واحد من النص. بشكل عام، لا يقوم CMS Pipelines بتخزين البيانات مؤقتًا، بل يمرر سجلات البيانات بشكل متزامن من برنامج إلى آخر. وهذا يضمن تدفقًا مُحدَّدًا للبيانات عبر شبكة من خطوط الأنابيب المترابطة.
مسارات الكائنات
إلى جانب مسارات البيانات القائمة على تدفقات البايت، توجد أيضًا مسارات بيانات الكائنات. في مسار بيانات الكائنات، تُخرج عناصر المعالجة كائنات بدلًا من النصوص. يتضمن PowerShell مسار بيانات كائنات داخليًا ينقل كائنات .NET بين الدوال داخل بيئة تشغيل PowerShell. تُعد القنوات ، الموجودة في لغة برمجة Limbo ، أمثلة أخرى على هذا المفهوم.
خطوط الأنابيب في واجهات المستخدم الرسومية
تستخدم بيئات التشغيل الرسومية مثل RISC OS و ROX Desktop أيضًا خطوط المعالجة. فبدلاً من توفير مربع حوار حفظ يحتوي على مدير ملفات يسمح للمستخدم بتحديد مكان كتابة البرنامج للبيانات، يوفر RISC OS وROX مربع حوار حفظ يحتوي على أيقونة (وحقل لتحديد الاسم). يتم تحديد الوجهة عن طريق سحب الأيقونة وإفلاتها . يمكن للمستخدم إفلات الأيقونة في أي مكان يمكن إفلات ملف محفوظ مسبقًا فيه، بما في ذلك على أيقونات البرامج الأخرى. إذا تم إفلات الأيقونة على أيقونة برنامج، فسيتم تحميلها، وسيتم تمرير المحتويات التي كان من المفترض حفظها عبر دفق الإدخال القياسي للبرنامج الجديد.
على سبيل المثال، قد يصادف مستخدم يتصفح الإنترنت صورة مضغوطة بصيغة .gz ويرغب في تعديلها وإعادة تحميلها. باستخدام واجهة المستخدم الرسومية، يمكنه سحب الرابط إلى برنامج فك الضغط، ثم سحب أيقونة المحتوى المستخرج إلى محرر الصور ، وتعديله، ثم فتح نافذة "حفظ باسم"، وسحب أيقونته إلى برنامج التحميل.
من الناحية النظرية، يمكن استخدام هذه الطريقة مع مربع حوار الحفظ التقليدي، لكن ذلك يتطلب أن يكون لبرامج المستخدم موقع واضح وسهل الوصول إليه في نظام الملفات. ولأن هذا ليس هو الحال في أغلب الأحيان، فإن واجهات المستخدم الرسومية نادرة.
اعتبارات أخرى
يأتي اسم "خط الأنابيب" من تشبيه تقريبي مع السباكة المادية حيث أن خط الأنابيب عادة [ 2 ] يسمح بتدفق المعلومات في اتجاه واحد فقط، كما هو الحال غالبًا مع تدفق المياه في الأنابيب.
يمكن اعتبار الأنابيب والمرشحات شكلاً من أشكال البرمجة الوظيفية ، باستخدام تدفقات البايت ككائنات بيانات. وبشكل أكثر تحديدًا، يمكن اعتبارها شكلاً خاصًا من أشكال الموناد للإدخال والإخراج . [ 3 ]
يُعد مفهوم خط الأنابيب أيضًا أساسيًا لإطار عمل تطوير الويب Cocoon أو لأي تطبيقات XProc (معايير W3C)، حيث يسمح بتعديل دفق المصدر قبل العرض النهائي.
يشجع هذا النمط على استخدام تدفقات النصوص كمدخلات ومخرجات للبرامج. ويجب مراعاة هذا الاعتماد على النصوص عند إنشاء واجهات رسومية لبرامج النصوص.
انظر أيضاً
- أنبوب مجهول
- هندسة البرمجيات القائمة على المكونات
- البرمجة القائمة على التدفق
- GStreamer لإطار عمل الوسائط المتعددة المبني على مسارات المكونات الإضافية
- مسار الرسومات
- المكررون
- الأنبوب المسمى ، وهو بنية نظام تشغيل وسيطة بين الأنبوب المجهول والملف.
- خط أنابيب (حوسبة) لإصدارات أخرى متعلقة بالحاسوب من المفهوم.
- شبكات معالجة كان لتوسيع مفهوم خط الأنابيب إلى بنية رسم بياني موجه أكثر عمومية
- خط الأنابيب (يونكس) للحصول على تفاصيل خاصة بنظام يونكس
- السباك – "الأنابيب الذكية" التي تم تطويرها كجزء من الخطة 9
- مشكلة المنتج والمستهلك – لجوانب تنفيذ خطوط أنابيب البرمجيات
- نمط تصميم البرمجيات
- معالجة البيانات المتدفقة
- مسار XML لمعالجة ملفات XML
ملحوظات
- ↑ أساسيات هندسة البرمجيات: منهج هندسي . دار نشر أورايلي. 2020. رقم ISBN 978-1492043454.
- ↑ هناك استثناءات، مثل إشارات "الأنبوب المكسور".
- ↑ "Monadic I/O and UNIX shell programming" مؤرشف بتاريخ 2020-11-09 في Wayback Machine .
روابط خارجية
- معالجة البيانات عبر خطوط الأنابيب. مؤرشف بتاريخ 19 يناير 2021 في أرشيف الإنترنت (Wayback Machine) .
- البرمجة المتوازية: هل تعرف التوازي عبر خطوط الأنابيب؟
- أنماط تصميم البرمجيات
- نماذج البرمجة
- التواصل بين العمليات
