أنبوب مسمى

في مجال الحوسبة ، يُعدّ الأنبوب المُسمى (المعروف أيضًا باسم FIFO نظرًا لسلوكه) امتدادًا لمفهوم الأنبوب التقليدي في أنظمة يونكس والأنظمة الشبيهة بيونكس ، وهو أحد أساليب الاتصال بين العمليات (IPC). يوجد هذا المفهوم أيضًا في نظامي التشغيل OS/2 ومايكروسوفت ويندوز ، على الرغم من اختلاف دلالاته اختلافًا كبيرًا. الأنبوب التقليدي " غير مُسمى " ويستمر فقط طوال فترة تشغيل العملية. أما الأنبوب المُسمى، فيمكن أن يستمر طالما كان النظام قيد التشغيل، حتى بعد انتهاء عمر العملية. ويمكن حذفه إذا لم يعد يُستخدم. عادةً ما يظهر الأنبوب المُسمى كملف، وتتصل به العمليات عادةً لإجراء الاتصال بين العمليات.

في نظام يونكس

بدلاً من استخدام قناة تقليدية غير مسماة، تستخدم القناة المسماة نظام الملفات . يتم إنشاؤها بشكل صريح باستخدام mkfifo()[ 1 ] أو mknod()[ 2 ] ، ويمكن لأي عدد من العمليات الوصول إلى القناة بالاسم - يمكن لعملية واحدة فتحها كقارئ، وأخرى ككاتب، وعند هذه النقطة يتم إنشاء القناة ويمكن نقل البيانات من خلالها كما هو الحال في القناة العادية.

على سبيل المثال، يمكن للمرء إنشاء قناة وإعداد gzip لضغط الأشياء التي يتم تمريرها إليها:

mkfifo my_pipe gzip -9 -c < my_pipe > out.gz &

في عملية منفصلة، ​​وبشكل مستقل، يمكن إرسال البيانات المراد ضغطها:

cat file > my_pipe

عند النقطة التي يتم فيها فتح الصدفة الثانية my_pipeللكتابة في العملية التي سيتم تشغيلها cat، يتم إلغاء حظر الفتح للقراءة فقط بواسطة الصدفة الأولى، ثم يتم تنفيذ كليهما gzipبشكل catمتزامن، حيث يقوم أحدهما بتغذية الآخر بالبيانات من خلال الأنبوب.

يمكن حذف الأنبوب المسمى تمامًا مثل أي ملف:

حذف my_pipe

يمكن استخدام قناة مُسماة لنقل المعلومات من تطبيق إلى آخر دون الحاجة إلى ملف وسيط مؤقت. على سبيل المثال، يمكنك توجيه مُخرجات gzip إلى قناة مُسماة كما يلي (في المثال السابق، out.gz هو الملف المُستخدم في المثال السابق، ولكن يمكن أن يكون أي ملف gzip):

mkfifo -m 0666 /tmp/namedPipe gzip -d < out.gz > /tmp/namedPipe 

ثم قم بتحميل البيانات التي يتم فك ضغطها أثناء التشغيل إلى جدول MySQL [ 3 ] على النحو التالي:

تحميل البيانات من الملف '/tmp/namedPipe' إلى الجدول tableName ؛

بدون هذه القناة المسماة، سيحتاج المستخدم إلى كتابة النسخة الكاملة غير المضغوطة من الملف file.gz قبل تحميلها إلى MySQL. كتابة الملف المؤقت عملية تستغرق وقتًا طويلاً وتؤدي إلى زيادة عمليات الإدخال/الإخراج وتقليل المساحة الحرة على القرص الصلب.

تدعم أداة سطر الأوامر الخاصة بـ PostgreSQLpsql أيضًا تحميل البيانات من الأنابيب المسماة. [ 4 ]

في نظام التشغيل ويندوز

يمكن الوصول إلى قناة اتصال مُسماة تمامًا كما يُتعامل مع الملفات. تستخدم حزمة تطوير البرامج Win32 وظائف لفتح القناة CreateFile، والقراءة منها، والكتابة إليها، وإغلاقها، على التوالي. وعلى عكس أنظمة Unix، لا توجد واجهة سطر أوامر ، باستثناء PowerShell .ReadFileWriteFileCloseHandle

لا يمكن إنشاء الأنابيب المسماة كملفات ضمن نظام ملفات عادي، على عكس نظام يونكس. كما أنها، على عكس نظيراتها في يونكس، مؤقتة (تُحذف بمجرد إغلاق آخر مرجع لها). يُوضع كل أنبوب في الدليل الجذر لنظام ملفات الأنابيب المسماة (NPFS)، ويُثبّت تحت مسار خاص \\.\pipe\(أي أن الأنبوب المسمى " foo " سيكون له مسار كامل \\.\pipe\foo). أما الأنابيب المجهولة المستخدمة في تقنية تسلسل الأنابيب، فهي في الواقع أنابيب مسماة بأسماء عشوائية.

نادرًا ما يراها المستخدمون، ولكن هناك استثناءات ملحوظة. على سبيل المثال، يمكن لأداة محاكاة الأجهزة الافتراضية VMware Workstation PC عرض منافذ تسلسلية مُحاكاة لنظام التشغيل المضيف كقنوات مُسماة، كما يدعم مصحح أخطاء وضع النواة WinDbg من مايكروسوفت القنوات المُسماة كوسيلة نقل لجلسات تصحيح الأخطاء (في الواقع، يمكن ربط VMware وWinDbg معًا - حيث يتطلب WinDbg عادةً اتصالًا تسلسليًا بالكمبيوتر المستهدف - مما يسمح لمطوري برامج التشغيل بإجراء التطوير والاختبار على جهاز كمبيوتر واحد). يتطلب كلا البرنامجين من المستخدم إدخال أسماء في النموذج.\\.\pipe\name

يمكن لأنابيب Windows NT المسماة أن ترث سياق الأمان.

ملخص عن الأنابيب المسماة على نظام التشغيل مايكروسوفت ويندوز:

أضاف إطار عمل .NET 3.5 دعمًا لتقنية الأنابيب المسماة . [ 5 ]

يمكن أيضًا استخدام الأنابيب المسماة كنقطة نهاية في Microsoft SQL Server . [ 6 ]

تُعدّ الأنابيب المسماة بروتوكولًا شبكيًا ضمن مجموعة بروتوكولات Server Message Block (SMB)، ويعتمد على استخدام مشاركة خاصة للاتصال بين العمليات (IPC). يُمكن لبروتوكول SMB IPC نقل سياق مصادقة المستخدم بسلاسة وشفافية إلى الأنابيب المسماة. تُنفَّذ مجموعة خدمات بروتوكول NT Domain الكاملة لنظام Windows NT كخدمة DCE/RPC عبر الأنابيب المسماة، وكذلك تطبيقات إدارة Exchange 5.5.

انظر أيضاً

مراجع

  1. "mkfifo, mkfifoat - إنشاء ملف خاص بنظام FIFO" . معيار IEEE 1003.1-2017 . مجموعة Open Group .
  2. "mknod، mknodat - إنشاء دليل، أو ملف خاص، أو ملف عادي" . معيار IEEE 1003.1-2017 . مجموعة Open Group.
  3. "13.2.7 عبارة LOAD DATA" . دليل مرجعي لـ MySQL 8.0 . MySQL . مؤرشف من الأصل بتاريخ 14-06-2020 . تم الاطلاع عليه بتاريخ 19-05-2020 .
  4. أيدان فان دايك (27 مارس 2008). "رد: psql والأنابيب المسماة" . pgsql-hackers . PostgreSQL . مؤرشف من الأصل في 20 مايو 2022. تم الاطلاع عليه في 19 مايو 2020 .
  5. "مساحة اسم System.IO.Pipes" . شبكة مطوري مايكروسوفت .
  6. "كيفية الاتصال بخادم SQL باستخدام إصدار سابق من خادم SQL" . مايكروسوفت . ١٩ نوفمبر ٢٠١٩. مؤرشف من الأصل في ٢٠ يوليو ٢٠٢٠. تم الاطلاع عليه في ١٩ مايو ٢٠٢٠ .