اتصال interprocess

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

‫اتصال ‪interprocess‬‬

‫كيف تتمكن األنظمة الموزعة من العمل بسالسة‪ ،‬على الرغم من انتشارها عبر أجهزة وشبكات مختلفة؟‬
‫اسمحوا لنا أن نعرف كيف يساعد االتصال بين العمليات (‪ - )IPC‬االتصال بين العمليات ‪ -‬األنظمة الموزعة على التحدث‬
‫ومشاركة الموارد وتنسيق األنشطة عبر األجهزة المختلفة‪.‬‬
‫ما هي العملية؟‬
‫تشير العملية إلى برنامج أو تطبيق يتم تشغيله على جهاز كمبيوتر أو خادم ويكون قادًر ا على تنفيذ المهام أو العمليات‪ .‬في‬
‫النظام الموزع‪ ،‬تحتاج هذه العمليات إلى التواصل مع بعضها البعض لمشاركة البيانات وتنسيق األنشطة وتنفيذ المهام المعقدة‬
‫التي تتطلب التعاون عبر أنظمة متعددة‪.‬‬
‫بدون ‪ ،IPC‬ستكون كل عملية معزولة وغير قادرة على التواصل مع اآلخرين‪ ،‬مما يحد من قدرة النظام على العمل بكفاءة‪.‬‬
‫يسمح ‪ IPC‬للعمليات بمشاركة المعلومات والموارد‪ ،‬مما قد يؤدي إلى تحسين أداء النظام وقابلية التوسع‪ .‬على سبيل المثال‪ ،‬قد‬
‫يحتاج خادم الويب إلى االتصال بخادم قاعدة البيانات السترداد البيانات لطلب المستخدم‪.‬‬

‫‪ .1‬آليات التصنيف الدولي للبراءات‬


‫المبادئ األساسية لكيفية عمل ‪ IPC‬هي‪:‬‬
‫‪ . 1‬تحديد هوية عملية المستلم‪ :‬يجب على عملية المرسل تحديد عملية المستلم التي ترغب في التواصل معها‪ .‬يمكن تحقيق ذلك‬
‫من خالل طرق مختلفة‪ ،‬مثل عناوين ‪ IP‬أو أرقام المنافذ أو معرفات العمليات أو المعرفات األخرى‪.‬‬
‫‪ . 2‬تغليف الرسالة‪ :‬يتم تغليف الرسالة المراد إرسالها بالبيانات الوصفية الضرورية‪ ،‬مثل عنوان الوجهة ونوع الرسالة وأي‬
‫معلومات إضافية يحتاجها المستلم لمعالجة الرسالة‪.‬‬
‫‪ . 3‬نقل الرسالة‪ :‬يتم بعد ذلك نقل الرسالة من المرسل إلى المستلم باستخدام قناة اتصال‪ ،‬مثل المقبس أو قائمة انتظار الرسائل‪.‬‬
‫‪ . 4‬فك تغليف الرسالة‪ :‬عند استالم الرسالة‪ ،‬يقوم المستلم باستخراج البيانات التعريفية ومحتوى الرسالة من الرسالة المغلفة‬
‫ومعالجتها وفًقا لذلك‪.‬‬
‫توجد آليات ‪ IPC‬مختلفة قيد االستخدام حالًيا‪ ،‬على سبيل المثال‪ ،‬الذاكرة المشتركة وتمرير الرسائل واستدعاءات اإلجراءات‬
‫عن بعد (‪ .)RPCs‬الرئيسي‬
‫يكمن االختالف بين آليات ‪ IPC‬في كيفية تسهيل االتصال ومشاركة الموارد بين العمليات في النظام الموزع‪.‬‬
‫على سبيل المثال‪ ،‬تسمح الذاكرة المشتركة لعمليات متعددة بالوصول إلى منطقة مشتركة من الذاكرة وتعديلها‪ .‬من ناحية‬
‫أخرى‪ ،‬تسمح استدعاءات اإلجراءات عن بعد (‪ )RPCs‬للعمليات بتنفيذ اإلجراءات أو الوظائف على جهاز بعيد كما لو كانت‬
‫تعمل محلًيا‪.‬‬
‫في األساس‪ ،‬يمكن تصنيف آليات ‪ IPC‬إلى أربع فئات رئيسية‪ :‬الذاكرة المشتركة‪ ،‬وتمرير الرسائل‪ ،‬واستدعاء اإلجراء عن بعد‬
‫(‪ )RPC‬والبرمجيات الوسيطة‪.‬‬

‫الذاكرة المشتركة‬
‫الذاكرة المشتركة هي نوع من آليات االتصال بين العمليات حيث يمكن لعمليات متعددة الوصول إلى نفس مساحة عنوان‬
‫الذاكرة االفتراضية‪.‬‬
‫توفر هذه اآللية اتصاًال عالي السرعة وحماًل منخفًض ا ألنها تلغي الحاجة إلى نسخ البيانات‪ .‬يمكن للعمليات التواصل مع‬
‫بعضها البعض عن طريق القراءة والكتابة إلى مواقع الذاكرة المشتركة‪.‬‬
‫ومع ذلك‪ ،‬تتطلب الذاكرة المشتركة مزامنة دقيقة لتجنب التعارضات بين العمليات‪ .‬عندما تصل عمليات متعددة إلى نفس موقع‬
‫الذاكرة في نفس الوقت‪ ،‬يمكن أن تحدث حاالت سباق‪ ،‬مما يؤدي إلى سلوك غير متوقع‪.‬‬
‫ولذلك‪ ،‬يتم استخدام آليات المزامنة مثل األقفال واإلشارات والحواجز لضمان وصول عملية واحدة فقط إلى موقع الذاكرة‬
‫المشتركة في المرة الواحدة‪.‬‬

‫يمكن تنفيذ الذاكرة المشتركة بطرق مختلفة‪ ،‬مثل استخدام مقطع ذاكرة مشتركة مخصص‪ ،‬أو استخدام ملفات الذاكرة المعينة‪،‬‬
‫أو استخدام تقنيات الذاكرة االفتراضية‪ .‬في مقطع الذاكرة المشتركة المخصص‪ ،‬يتم إنشاء مقطع منفصل من الذاكرة يمكن‬
‫الوصول إليه من خالل عمليات متعددة‪ .‬في الملفات المعينة للذاكرة‪ ،‬يتم تعيين ملف في مساحة الذاكرة لكل عملية‪ ،‬مما يسمح‬
‫لها بمشاركة نفس محتويات الملف‪ .‬في تقنيات الذاكرة االفتراضية‪ ،‬يقوم نظام التشغيل بإدارة تعيين الذاكرة بين العمليات‪.‬‬
‫يعتمد اختيار التنفيذ على متطلبات النظام‪.‬‬
‫ُت ستخدم الذاكرة المشتركة غالًبا في تطبيقات الحوسبة عالية األداء‪ ،‬حيث تحتاج العمليات المتعددة إلى مشاركة كميات كبيرة‬
‫من البيانات بسرعة وكفاءة‪ .‬يتم استخدامه أيًض ا في التطبيقات متعددة الخيوط‪ ،‬حيث تشترك عدة خيوط في نفس الشيء‪.‬‬
‫مساحة الذاكرة‪ .‬ومع ذلك‪ ،‬فإن الذاكرة المشتركة ليست مناسبة لألنظمة الموزعة‪ ،‬حيث يتم تشغيل العمليات على عقد مختلفة‬
‫وال يمكنها الوصول إلى نفس مساحة الذاكرة الفعلية‪.‬‬
‫تمرير الرسالة‬
‫في هذه اآللية‪ ،‬تقوم العمليات بإرسال واستقبال رسائل تحتوي على بيانات للتواصل مع بعضها البعض‪.‬‬

‫هناك نوعان رئيسيان من تمرير الرسائل‪ :‬متزامن وغير متزامن‪ .‬في تمرير الرسائل المتزامنة‪ ،‬يتم حظر عملية اإلرسال حتى‬
‫يتلقى المتلقي الرسالة‪ .‬في تمرير الرسائل غير المتزامنة‪ ،‬ال يتم حظر عملية اإلرسال ويمكن االستمرار في تنفيذها أثناء‬
‫إرسال الرسالة‪.‬‬
‫تنتظر دورك للتحدث‪ ،‬وال تواصل المحادثة إال عندما يقر الشخص اآلخر بأنه قد تلقى رسالتك‪ .‬يضمن هذا األسلوب أن تستمر‬
‫المحادثة بطريقة منظمة‪ ،‬ولكنه يمكن أيًض ا أن يبطئ المحادثة ويسبب اإلحباط إذا استغرق الشخص اآلخر وقًت ا طويًال للرد‪.‬‬

‫من ناحية أخرى‪ ،‬يشبه تمرير الرسائل غير المتزامنة إجراء محادثة غير رسمية حيث يمكنك قول شيء ما لبعض األشخاص‬
‫ثم االنتقال للتحدث مع اآلخرين‪ ،‬دون انتظار ردهم على الفور‪ .‬يسمح لك هذا األسلوب بإجراء محادثات أكثر ديناميكية مع‬
‫عدة أشخاص في وقت واحد‪ ،‬ولكنه قد يؤدي أيًض ا إلى سوء الفهم إذا فات شخص ما جزًءا من المحادثة أو إذا كان هناك عدد‬
‫كبير جًد ا من األشخاص يتحدثون في وقت واحد‪.‬‬
‫في األنظمة الموزعة‪ ،‬يكون تمرير الرسائل المتزامن مفيًد ا عندما تحتاج إلى التأكد من تسليم الرسائل بشكل موثوق ومزامنة‬
‫العمليات مع بعضها البعض‪ .‬يعد تمرير الرسائل غير المتزامنة مفيًد ا عندما تريد التحسين‬
‫األداء وقابلية التوسع من خالل السماح للعمليات بمواصلة التنفيذ بشكل مستقل أثناء تواصلها مع بعضها البعض‪.‬‬
‫يمكن تنفيذ تمرير الرسائل باستخدام بروتوكوالت اتصال مختلفة وواجهات برمجة التطبيقات (‪ .)APIs‬إحدى واجهات برمجة‬
‫التطبيقات شائعة االستخدام لتمرير الرسائل هي واجهة تمرير الرسائل (‪ ،)MPI‬والتي توفر طريقة قياسية للعمليات للتواصل‬
‫مع بعضها البعض باستخدام الرسائل‪.‬‬
‫يمكن استخدام ‪ MPI‬لتنفيذ مجموعة واسعة من التطبيقات المتوازية والموزعة‪ ،‬مثل المحاكاة العلمية‪ ،‬وتحليالت البيانات‪،‬‬
‫والتعلم اآللي‪ .‬يتم استخدام ‪ MPI‬على نطاق واسع في بيئات الحوسبة عالية األداء‪ ،‬حيث تكون أنظمة الذاكرة الموزعة شائعة‪.‬‬
‫ومع ذلك‪ ،‬فإن تمرير الرسائل له أيًض ا بعض العيوب‪ .‬أحد العيوب الرئيسية هو أنه يمكن أن يكون له حمل مرتفع بسبب‬
‫الحاجة إلى إجراء تسلسل للبيانات وإلغاء تسلسلها‪ .‬باإلضافة إلى ذلك‪ ،‬يمكن أن يكون تمرير الرسائل أكثر تعقيًد ا في التنفيذ من‬
‫الذاكرة المشتركة بسبب الحاجة إلى إدارة بروتوكوالت االتصال وضمان التزامن بين العمليات‪.‬‬
‫استدعاء اإلجراء البعيد (‪)RPC‬‬
‫استدعاء اإلجراء عن بعد (‪ )RPC‬هو آلية شائعة تستخدم في األنظمة الموزعة لتمكين عملية واحدة من استدعاء إجراء أو‬
‫وظيفة في عملية أخرى‪ ،‬موجودة على جهاز بعيد‪ .‬يلخص ‪ RPC‬تفاصيل االتصال ويسهل على المطورين كتابة التطبيقات‬
‫الموزعة‪ ،‬حيث يمكنهم التعامل مع استدعاءات اإلجراءات عن بعد مثل المكالمات المحلية‪.‬‬

‫في ‪ ، RPC‬يرسل المتصل رسالة طلب تحتوي على اسم اإلجراء الذي سيتم تنفيذه ووسائطه إلى العملية البعيدة‪ .‬تقوم العملية‬
‫عن بعد بتنفيذ اإلجراء وإرجاع النتيجة إلى المتصل‪ .‬يقوم المتصل بحظر حتى يتم استالم النتيجة‪ .‬يوفر ‪ RPC‬واجهة بسيطة‬
‫وسهلة االستخدام للمطورين الستدعاء اإلجراءات عبر العمليات‪ ،‬دون االضطرار إلى التعامل مع تعقيدات اتصاالت الشبكة‪.‬‬
‫يتمتع ‪ RPC‬ببعض المزايا مقارنة بآليات االتصال األخرى بين العمليات‪ .‬أوًال‪ ،‬يوفر مستوى عاٍل من التجريد‪ ،‬مما يسهل على‬
‫المطورين كتابة التطبيقات الموزعة‪ .‬ثانًيا‪ ،‬يمكن استخدامه لتوفير شفافية الموقع‪ ،‬مما يسمح للعمالء باستدعاء اإلجراءات عن‬
‫بعد كما لو كانت إجراءات محلية‪ .‬وأخيًر ا‪ ،‬يوفر التنظيم التلقائي للوسائط وإلغاء تنظيمها‪ ،‬مما يسهل التعامل مع تبادل البيانات‬
‫بين العمليات‪.‬‬
‫ومع ذلك‪ RPC ،‬لديه أيًض ا بعض العيوب‪ .‬أوًال‪ ،‬يمكنها تقديم حمل عالي للشبكة‪ ،‬خاصة إذا تم إجراء العديد من عمليات ‪RPCs‬‬
‫الصغيرة‪ .‬ثانًيا‪ ،‬قد يكون من الصعب ضمان التسامح مع الخطأ والموثوقية في األنظمة المستندة إلى ‪ ،RPC‬حيث قد يؤدي‬
‫الفشل في العملية عن بعد إلى توقف المتصل أو تلقي نتائج غير صحيحة‪ .‬وأخيًر ا‪ ،‬قد يكون من الصعب ضمان األمان في‬
‫األنظمة المستندة إلى ‪ ،RPC‬حيث قد يتم استدعاء اإلجراءات عن بعد بواسطة عمالء غير مصرح لهم‪.‬‬
‫الوصول المباشر للذاكرة عن بعد (‪ - )RDMA‬نحو اتصال فعال بين العمليات في األنظمة الموزعة‬
‫في األساس‪ ،‬يسمح ‪ RDMA‬للعمليات التي تعمل على أجهزة مختلفة بالوصول مباشرة إلى ذاكرة بعضها البعض دون الحاجة‬
‫إلى استخدام وحدة المعالجة المركزية أو نواة نظام التشغيل‪ .‬يؤدي هذا إلى التخلص من الحمل المرتبط بطرق االتصال‬
‫التقليدية بين العمليات مثل االتصال القائم على مأخذ التوصيل أو تمرير الرسائل أو الذاكرة المشتركة‬
‫يعمل ‪ RDMA‬على تسهيل حركة البيانات بشكل مباشر وفعال أكثر من وإلى الخادم من خالل تنفيذ بروتوكول نقل في بطاقة‬
‫واجهة الشبكة (‪ )NIC‬الموجودة على كل جهاز اتصال‪ .‬على سبيل المثال‪ ،‬يمكن تكوين جهازي كمبيوتر متصلين بالشبكة‬
‫باستخدام بطاقة ‪ NIC‬التي تدعم بروتوكول ‪ RDMA‬عبر بروتوكول ‪ Ethernet‬المتقارب (‪ ،)RoCE‬مما يمّك ن أجهزة‬
‫الكمبيوتر من تنفيذ االتصاالت المستندة إلى ‪.RoCE‬‬

‫يوفر استخدام االتصاالت المستندة إلى ‪ RDMA‬ومكتبة ‪ FastRPC‬العديد من الفوائد‪ ،‬بما في ذلك تقليل حمل االتصاالت‬
‫وتحسين قابلية التوسع وخفض زمن الوصول مقارنة بطرق االتصال التقليدية‪ .‬كما أن اآللية مرنة ويمكن تكييفها مع‬
‫سيناريوهات التطبيق المختلفة‪ ،‬مثل قواعد البيانات الموزعة‪ ،‬والتعلم اآللي الموزع‪ ،‬والحوسبة عالية األداء‪.‬‬
‫العوامل في اللعب‬
‫من الواضح أن بروتوكوالت الشبكة ولغات البرمجة وهندسة األجهزة تلعب دوًر ا حاسًما في أداء األنظمة الموزعة‪.‬‬
‫يمكن أن يؤثر نوع بروتوكول الشبكة المستخدم‪ ،‬مثل ‪ TCP‬أو ‪ UDP‬أو ‪ ،RDMA‬بشكل كبير على أداء ‪ .IPC‬على الرغم من‬
‫أن بروتوكول ‪ TCP‬يوفر تسليًما موثوًقا ومنظًم ا للرسائل‪ ،‬إال أنه يمكن أن يعاني من زمن الوصول العالي والحمل الزائد‪ .‬من‬
‫ناحية أخرى‪ ،‬يوفر ‪ UDP‬تسليًم ا أسرع للرسائل‪ ،‬ولكن من المحتمل أن يكون غير موثوق به‪ ،‬في حين أن ‪ RDMA‬هو‬
‫بروتوكول أحدث يتيح النقل المباشر للبيانات بين مخازن الذاكرة المؤقتة على أجهزة مختلفة‪.‬‬
‫تؤثر لغات البرمجة أيًض ا على تصميم ‪ IPC‬وتنفيذه‪ .‬يوفر ‪ ++C‬إدارة منخفضة المستوى للذاكرة والوصول إلى األجهزة‪ ،‬مما‬
‫يجعله مثالًيا لألجهزة عالية المستوى‬
‫تطبيقات األداء‪ .‬تعتبر ‪ ،Java‬بفضل إدارتها التلقائية للذاكرة والتحقق القوي من النوع‪ ،‬مناسبة تماًما لتطوير وصيانة األنظمة‬
‫الموزعة المعقدة‪ .‬وفي الوقت نفسه‪ ،‬فإن سهولة استخدام بايثون وقدرات التطوير السريع تجعلها خياًر ا شائًع ا للنماذج األولية‬
‫والتجريب في األنظمة الموزعة‪.‬‬
‫وأخيًر ا‪ ،‬يمكن لبنيات األجهزة‪ ،‬مثل المعالجات متعددة النواة والشبكات عالية األداء‪ ،‬أن تؤثر أيًض ا على أداء ‪ .IPC‬تسمح‬
‫المعالجات متعددة النواة بالتنفيذ المتزامن لعمليات متعددة‪ ،‬بينما يمكن للشبكات عالية األداء توفير اتصال سريع ومنخفض‬
‫الكمون بين األجهزة‪.‬‬

‫أهمية التصنيف الدولي للبراءات‬


‫يعد فهم الفروق الدقيقة بين هذه العوامل أمًر ا بالغ األهمية لبناء أنظمة موزعة فعالة وقابلة للتطوير‪ .‬ومن خالل تحسين آليات‬
‫‪ IPC‬واالستفادة من نقاط القوة في بروتوكوالت الشبكة المختلفة ولغات البرمجة وبنيات األجهزة‪ ،‬يمكننا ضمان األداء السلس‬
‫لألنظمة الموزعة‪.‬‬
‫ملخص‬
‫يشير االتصال بين العمليات (‪ )IPC‬إلى اآلليات والتقنيات التي تستخدمها األنظمة الموزعة للسماح للعمليات أو المكونات‬
‫المختلفة بالتواصل وتبادل المعلومات مع بعضها البعض‪.‬‬
‫في النظام الموزع‪ ،‬يمكن تشغيل العمليات على أجهزة كمبيوتر أو خوادم مختلفة وتحتاج إلى تبادل البيانات أو التعاون في‬
‫مهمة ما‪.‬‬
‫هناك أنواع مختلفة من آليات ‪ IPC‬المستخدمة في األنظمة الموزعة‪ ،‬بما في ذلك تمرير الرسائل‪ ،‬واستدعاء اإلجراء عن بعد (‬
‫‪ ،)RPC‬والذاكرة المشتركة‪ ،‬وما إلى ذلك‪ .‬ولكل منها عيب يتمثل في انخفاض الكفاءة‪ .‬آلية ‪ IPC‬القائمة على ‪ RDMA‬والتي تم‬
‫اقتراحها لتكون ذات كفاءة عالية‪ ،‬تستخدم ‪ FastRPC‬الذي يوفر واجهة بسيطة ومرنة إلنشاء استدعاءات اإلجراءات عن بعد‬
‫(‪ )RPCs‬بين العمليات‪.‬‬
‫وأخيًر ا‪ ،‬يلعب ‪ IPC‬دوًر ا حاسًما في األنظمة الموزعة‪ ،‬ألنه يمّك ن المكونات المختلفة من العمل مًع ا وتنسيق أنشطتها‪ .‬فهو‬
‫يسمح بمشاركة الموارد بشكل فعال‪ ،‬ويساعد على تحسين أداء النظام‪ ،‬ويمّك ن األنظمة الموزعة من التوسع للتعامل مع كميات‬
‫كبيرة من البيانات وأحمال العمل‪.‬‬

You might also like