في هذه المقالة، سوف نفهم نموذج تعدد العمليات في نظام التشغيل.
نموذج متعدد الخيوط:
يسمح تعدد مؤشرات الترابط للتطبيق بتقسيم مهمته إلى سلاسل رسائل فردية. في تعدد الخيوط يمكن تنفيذ نفس العملية أو المهمة بعدد الخيوط، أو يمكننا القول أن هناك أكثر من خيط لتنفيذ المهمة في تعدد الخيوط. مع استخدام تعدد المهام، يمكن تحقيق تعدد المهام.
المدن في أستراليا
العيب الرئيسي لأنظمة الترابط الفردي هو أنه يمكن تنفيذ مهمة واحدة فقط في المرة الواحدة، لذا للتغلب على عيب هذا الترابط الفردي، هناك ترابط متعدد يسمح بتنفيذ مهام متعددة.
على سبيل المثال:
في المثال أعلاه، يصل Client1 وclient2 وclient3 إلى خادم الويب دون أي انتظار. في تعدد العمليات، يمكن تشغيل العديد من المهام في نفس الوقت.
في نظام التشغيل، يتم تقسيم الخيوط إلى خيط على مستوى المستخدم وخيط على مستوى النواة. تتعامل سلاسل الرسائل على مستوى المستخدم مع نموذج مستقل أعلى النواة وبالتالي يتم إدارتها دون أي دعم للنواة. من ناحية أخرى، يقوم نظام التشغيل بإدارة الخيوط على مستوى النواة مباشرة. ومع ذلك، يجب أن يكون هناك شكل من أشكال العلاقة بين سلاسل المحادثات على مستوى المستخدم ومستوى النواة.
توجد ثلاثة نماذج متعددة الخيوط تصنف هذه العلاقات وهي:
- نموذج متعدد الخيوط متعدد إلى واحد
- نموذج واحد لواحد متعدد الخيوط
- العديد من نماذج تعدد الخيوط
نموذج متعدد الخيوط متعدد إلى واحد:
يقوم النموذج من متعدد إلى واحد بتعيين العديد من سلاسل رسائل مستويات المستخدم إلى مؤشر ترابط kernel واحد. هذا النوع من العلاقات يسهل بيئة تبديل السياق الفعالة، ويمكن تنفيذه بسهولة حتى على النواة البسيطة دون دعم الخيط.
مفتاح إدخال الكمبيوتر المحمول
عيب هذا النموذج هو أنه نظرًا لوجود جدول ترابط واحد فقط على مستوى النواة في أي وقت محدد، فلا يمكن لهذا النموذج الاستفادة من تسريع الأجهزة الذي توفره العمليات متعددة الخيوط أو الأنظمة متعددة المعالجات. في هذا، تتم إدارة جميع سلاسل الرسائل في مساحة المستخدم. إذا جاء الحظر، فإن هذا النموذج يحظر النظام بأكمله.
سلسلة jsonobject
في الشكل أعلاه، يربط نموذج متعدد إلى واحد كافة سلاسل الرسائل على مستوى المستخدم بسلاسل رسائل فردية على مستوى النواة.
نموذج واحد لواحد متعدد الخيوط
يقوم نموذج واحد لواحد بتعيين مؤشر ترابط واحد على مستوى المستخدم إلى مؤشر ترابط واحد على مستوى kernel. يسهل هذا النوع من العلاقات تشغيل سلاسل رسائل متعددة بالتوازي. ومع ذلك، فإن هذه الفائدة تأتي مع عيبها. يجب أن يتضمن إنشاء كل مؤشر ترابط مستخدم جديد إنشاء مؤشر ترابط kernel مطابق مما يتسبب في حدوث حمل، مما قد يعيق أداء العملية الأصلية. تحاول أنظمة التشغيل Windows وLinux معالجة هذه المشكلة عن طريق الحد من نمو عدد الخيوط.
في الشكل أعلاه، يقوم أحد النماذج بربط مؤشر ترابط واحد على مستوى المستخدم بمؤشر ترابط واحد على مستوى kernel.
نموذج العديد إلى العديد من نماذج تعدد مؤشرات الترابط
في هذا النوع من النماذج، هناك عدة سلاسل رسائل على مستوى المستخدم والعديد من سلاسل الرسائل على مستوى النواة. يعتمد عدد سلاسل عمليات kernel التي تم إنشاؤها على تطبيق معين. يمكن للمطور إنشاء العديد من المواضيع على كلا المستويين ولكن قد لا تكون هي نفسها. يعد نموذج العديد إلى العديد بمثابة حل وسط بين النموذجين الآخرين. في هذا النموذج، إذا قام أي مؤشر ترابط بإجراء استدعاء نظام حظر، فيمكن للنواة جدولة مؤشر ترابط آخر للتنفيذ. كما أنه مع إدخال خيوط متعددة فإن التعقيد غير موجود كما في النماذج السابقة. على الرغم من أن هذا النموذج يسمح بإنشاء سلاسل عمليات نواة متعددة، إلا أنه لا يمكن تحقيق التزامن الحقيقي من خلال هذا النموذج. وذلك لأن النواة يمكنها جدولة عملية واحدة فقط في كل مرة.
تربط العديد من إصدارات نموذج تعدد مؤشرات الترابط عدة سلاسل رسائل على مستوى المستخدم بنفس أو مجموعة أقل بكثير من سلاسل الرسائل على مستوى النواة في الشكل أعلاه.