عملية خفيفة الوزن
في أنظمة تشغيل الحاسوب ، تُعدّ العملية الخفيفة ( LWP ) وسيلةً لتحقيق تعدد المهام . وفقًا للمعنى التقليدي للمصطلح، كما هو مستخدم في أنظمة Unix System V و Solaris ، تعمل العملية الخفيفة في مساحة المستخدم فوق خيط نواة واحد ، وتشارك مساحة عنوانها وموارد النظام مع عمليات خفيفة أخرى ضمن نفس العملية . يمكن وضع خيوط متعددة على مستوى المستخدم ، تُدار بواسطة مكتبة خيوط، فوق عملية خفيفة واحدة أو أكثر، مما يسمح بتنفيذ تعدد المهام على مستوى المستخدم، وهو ما قد يُحسّن الأداء. [ 1 ]
في بعض أنظمة التشغيل، لا توجد طبقة LWP منفصلة بين خيوط النواة وخيوط المستخدم. هذا يعني أن خيوط المستخدم تُنفذ مباشرةً فوق خيوط النواة. في هذه السياقات، يشير مصطلح "العملية الخفيفة" عادةً إلى خيوط النواة، بينما قد يشير مصطلح "الخيوط" إلى خيوط المستخدم. [ 2 ] في نظام لينكس ، تُنفذ خيوط المستخدم من خلال السماح لبعض العمليات بمشاركة الموارد، مما يؤدي أحيانًا إلى تسمية هذه العمليات بـ"العمليات الخفيفة". [ 3 ] [ 4 ] وبالمثل، في نظام SunOS الإصدار 4 وما بعده (قبل نظام Solaris )، كان مصطلح "العملية الخفيفة" يشير إلى خيوط المستخدم. [ 1 ]
خيوط النواة
تُدار خيوط النواة بالكامل بواسطة النواة . ولا يشترط ارتباطها بعملية معينة؛ إذ يمكن للنواة إنشاؤها متى احتاجت إلى تنفيذ مهمة محددة. ولا يمكن لخيوط النواة العمل في وضع المستخدم. أما سلاسل العمليات الخفيفة (في الأنظمة التي تُمثل طبقة منفصلة) فترتبط بخيوط النواة وتوفر سياقًا على مستوى المستخدم. ويتضمن ذلك رابطًا إلى الموارد المشتركة للعملية التي تنتمي إليها سلسلة العمليات الخفيفة. وعندما يتم تعليق سلسلة العمليات الخفيفة، فإنها تحتاج إلى تخزين سجلاتها على مستوى المستخدم حتى تستأنف عملها، كما يجب على خيط النواة الأساسي تخزين سجلاته الخاصة على مستوى النواة.
أداء
تُعدّ عمليات LWP أبطأ وأكثر تكلفةً في الإنشاء من عمليات المستخدم. عند إنشاء أي عملية LWP، يجب أولاً استدعاء نظام لإنشاء عملية kernel مقابلة، مما يؤدي إلى التبديل إلى وضع kernel. تتضمن عمليات التبديل هذه عادةً نسخ المعلمات بين مساحة kernel ومساحة المستخدم، وقد تحتاج النواة أيضًا إلى خطوات إضافية للتحقق من المعلمات للتأكد من عدم وجود سلوك غير صالح. يعني تبديل السياق بين عمليات LWP أن عملية LWP التي تتم مقاطعتها يجب أن تحفظ سجلاتها، ثم تنتقل إلى وضع kernel لكي تحفظ عملية kernel سجلاتها، كما يجب على عملية LWP التي تتم جدولتها استعادة سجلات kernel وuser بشكل منفصل. [ 1 ]
لهذا السبب، تسمح بعض مكتبات سلاسل العمليات على مستوى المستخدم بتنفيذ سلاسل عمليات متعددة للمستخدم فوق واجهات برمجة التطبيقات منخفضة الطاقة (LWPs). يمكن إنشاء سلاسل العمليات وتدميرها ومزامنتها والتبديل بينها بالكامل في مساحة المستخدم دون الحاجة إلى استدعاءات النظام أو التبديل إلى وضع النواة. يوفر هذا تحسينًا ملحوظًا في أداء وقت إنشاء سلاسل العمليات وتبديل السياق. [ 1 ] مع ذلك، توجد صعوبات في تنفيذ مُجدوِل سلاسل عمليات على مستوى المستخدم يعمل بكفاءة مع النواة.
تفعيل الجدول الزمني
بينما تقوم مكتبة سلاسل المستخدم بجدولة سلاسل المستخدم، يقوم نظام التشغيل بجدولة وحدات المعالجة الطرفية الأساسية. وبدون تنسيق بين نظام التشغيل ومكتبة السلاسل، قد يتخذ نظام التشغيل قرارات جدولة غير مثالية. علاوة على ذلك، من الممكن حدوث حالات جمود عندما تحاول سلاسل المستخدم الموزعة على عدة وحدات معالجة طرفية الحصول على نفس الموارد التي تستخدمها سلسلة مستخدم أخرى غير قيد التشغيل حاليًا. [ 1 ]
أحد حلول هذه المشكلة هو تفعيل المجدول. هذه طريقةٌ لتعاون النواة ومكتبة الخيوط. تُخطر النواة مُجدول مكتبة الخيوط بأحداثٍ مُعينة (مثل اقتراب خيطٍ من التوقف)، فتُقرر مكتبة الخيوط الإجراء المُناسب. يُسمى استدعاء الإخطار من النواة "استدعاءً تصاعديًا".
لا تملك مكتبة مستوى المستخدم أي سيطرة على الآلية الأساسية، فهي تتلقى فقط إشعارات من النواة وتُجدول سلاسل عمليات المستخدم على وحدات المعالجة الخفيفة المتاحة، وليس على المعالجات. ثم يُقرر مُجدول النواة كيفية جدولة وحدات المعالجة الخفيفة على المعالجات. هذا يعني أن مكتبة سلاسل العمليات قد تنظر إلى وحدات المعالجة الخفيفة على أنها "معالجات افتراضية". [ 5 ]
أنظمة التشغيل الداعمة
طبّق نظام سولاريس طبقة LWP منفصلة منذ الإصدار 2.2. قبل الإصدار 9، كان سولاريس يسمح بربط متعدد الأطراف بين LWP وخيوط المستخدم. مع ذلك، تم التخلي عن هذه الميزة نظرًا للتعقيدات التي أضافتها ولتحسينات الأداء التي طرأت على مُجدوِل النواة. [ 1 ] [ 6 ]
تتيح أنظمة UNIX System V ومشتقاتها الحديثة IRIX و SCO OpenServer و HP-UX و IBM AIX إمكانية ربط متعدد الأطراف بين سلاسل عمليات المستخدم وLWPs. [ 5 ] [ 7 ]
قدّم نظام NetBSD 5.0 نموذجًا جديدًا وقابلًا للتوسع للترابط بنسبة 1:1. لكل ترابط مستخدم (pthread) ترابط نواة يُسمى عملية خفيفة الوزن (LWP). داخل النواة، تُنفَّذ كل من العمليات والترابطات كعمليات خفيفة الوزن، ويخدمها المجدول بنفس الطريقة. [ 8 ]
التطبيقات
- ملحقات متوازية (مايكروسوفت)
- خيوط GNU المحمولة
- خيوط خضراء (جافا)
- خيوط نواة خفيفة الوزن
انظر أيضاً
مراجع
- 1 2 3 4 5 6 فاهاليا، أوريش (1996). "الخيوط والعمليات الخفيفة". أساسيات يونكس - الآفاق الجديدة . برنتيس هول. ISBN 0-13-101908-2.
- ↑ " مترجمات IBM AIX" . IBM . 2004. تم الاطلاع عليه في 24 يناير 2010.
في نظام AIX، يشير مصطلح العملية الخفيفة عادةً إلى خيط نواة النظام.
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ بوفيه، دانيال ب.؛ سيزاتي، ماركو (2005). "3.1. العمليات، والعمليات الخفيفة، والخيوط". فهم نواة لينكس ( الطبعة الثالثة). أورايلي ميديا .
- ↑ والتون، شون (1996). "أسئلة وأجوبة متكررة حول سلاسل لينكس" . تم الاطلاع عليه بتاريخ 24 يناير 2010 .
- 1 2 سيلبرشاتز؛ جالفين؛ غاني (2004). "الفصل 5 - الخيوط". مفاهيم نظام التشغيل مع جافا ( الطبعة السادسة). جون وايلي وأولاده، المحدودة.
- ↑ "المعالجة المتعددة في بيئة تشغيل Solaris™" (ملف PDF) . شركة صن مايكروسيستمز . 2002. تم الاطلاع عليه بتاريخ 24 يناير 2010 .
- ↑ "IBM AIX 6.1 - ضبط الخيوط" . IBM . 2009. تم الاطلاع عليه بتاريخ 24 يناير 2010 .
- ↑ "جدولة الخيوط والواجهات ذات الصلة في NetBSD 5.0" (ملف PDF) . مشروع NetBSD. 2009. تم الاطلاع عليه بتاريخ 20 ديسمبر 2022 .
روابط خارجية
- "حوض المعالجة الخفيف" بقلم جيم ماورو
- "عمليات سولاريس" بقلم سكوت كرومار
- نماذج الخيوط (من إدارة العمليات في HP-UX: ورقة بيضاء)
- عملية (حوسبة)
- الجدولة (الحوسبة)
