يعد 'الفرق بين العملية والخيط' أحد الأسئلة المطروحة على نطاق واسع في المقابلات الفنية. ترتبط كل من العمليات والخيوط ببعضها البعض وتتشابه إلى حد كبير، وبالتالي تخلق ارتباكًا لفهم الاختلافات بينهما. تعد العملية والخيط تسلسلًا مستقلاً للتنفيذ، ولكن يتم التمييز بينهما بطريقة يتم تنفيذ العمليات في مساحات ذاكرة مختلفة، بينما يتم تنفيذ سلاسل العمليات من نفس العملية في مساحة الذاكرة المشتركة.
في هذا الموضوع سنتعرف على مقدمة مختصرة عن العمليات والخيوط وما هي الاختلافات الأخرى بينهما.
ما هي العملية؟
العملية هي مثيل لبرنامج يتم تنفيذه. عندما نقوم بتشغيل برنامج ما، فإنه لا يتم تنفيذه مباشرة. يستغرق الأمر بعض الوقت لاتباع جميع الخطوات المطلوبة لتنفيذ البرنامج، ويُعرف اتباع خطوات التنفيذ هذه بالعملية.
يمكن أن تقوم العملية بإنشاء عمليات أخرى لتنفيذ مهام متعددة في وقت واحد؛ تُعرف العمليات التي تم إنشاؤها باسم عملية استنساخ أو طفل ، وتعرف العملية الرئيسية باسم عملية الوالدين . تحتوي كل عملية على مساحة ذاكرة خاصة بها ولا تشاركها مع العمليات الأخرى. ومن المعروف باسم الكيان النشط. تبقى العملية النموذجية بالشكل أدناه في الذاكرة.
يمكن أن تظل العملية في نظام التشغيل في أي من الحالات التالية:
كيف تعمل العمليات؟
عندما نبدأ في تنفيذ البرنامج، يبدأ المعالج بمعالجته. يستغرق الخطوات التالية:
- أولاً، يتم تحميل البرنامج إلى ذاكرة الكمبيوتر برمز ثنائي بعد ترجمته.
- يتطلب البرنامج الذاكرة وموارد نظام التشغيل الأخرى لتشغيله. يتم توفير الموارد مثل السجلات وعداد البرنامج والمكدس وهذه الموارد بواسطة نظام التشغيل.
- يمكن أن يحتوي السجل على تعليمات أو عنوان تخزين أو بيانات أخرى تتطلبها العملية.
- يحافظ عداد البرنامج على مسار تسلسل البرنامج.
- يحتوي المكدس على معلومات حول الإجراءات الفرعية النشطة لبرنامج الكمبيوتر.
- قد يحتوي البرنامج على مثيلات مختلفة منه، وتعرف كل نسخة من البرنامج قيد التشغيل بالعملية الفردية.
مميزات العملية
- في كل مرة نقوم بإنشاء عملية، نحتاج إلى إجراء استدعاء نظام منفصل لكل عملية لنظام التشغيل. ال شوكة () تقوم الدالة بإنشاء العملية.
- توجد كل عملية ضمن عنوانها الخاص أو مساحة الذاكرة الخاصة بها.
- كل عملية مستقلة ويتم التعامل معها على أنها عملية معزولة بواسطة نظام التشغيل.
- تحتاج العمليات إلى IPC (الاتصال بين العمليات) من أجل التواصل مع بعضها البعض.
- ليس مطلوبا التزامن الصحيح بين العمليات.
ما هو الموضوع؟
الخيط هو مجموعة فرعية من العملية ويُعرف أيضًا باسم العملية خفيفة الوزن. يمكن أن تحتوي العملية على أكثر من مؤشر ترابط واحد، وتتم إدارة هذه المواضيع بشكل مستقل بواسطة المجدول. جميع الخيوط في عملية واحدة مترابطة مع بعضها البعض. المواضيع لديها بعض المعلومات المشتركة، مثل مقطع البيانات، مقطع التعليمات البرمجية، الملفات، وما إلى ذلك، التي تتم مشاركتها مع سلاسل الرسائل الخاصة بهم. ولكنه يحتوي على سجلاته الخاصة، والمكدس، والعداد.
كيف يعمل الخيط؟
كما ناقشنا أن الخيط هو عملية فرعية أو وحدة تنفيذ داخل العملية. يمكن أن تحتوي العملية على مؤشر ترابط واحد إلى مؤشرات ترابط متعددة. يعمل الخيط على النحو التالي:
- عندما تبدأ العملية، يقوم نظام التشغيل بتعيين الذاكرة والموارد لها. يشارك كل مؤشر ترابط ضمن العملية الذاكرة والموارد الخاصة بتلك العملية فقط.
- تُستخدم الخيوط بشكل أساسي لتحسين معالجة التطبيق. في الواقع، يتم تنفيذ خيط واحد فقط في كل مرة، ولكن بسبب التبديل السريع للسياق بين سلاسل الرسائل، فإنه يعطي وهمًا بأن سلاسل الرسائل تعمل بشكل متوازي.
- إذا تم تنفيذ مؤشر ترابط واحد في عملية، فإنه يُعرف باسم خيط واحد وإذا تم تنفيذ عدة سلاسل عمليات في وقت واحد، يُعرف ذلك باسم تعدد المواضيع.
أنواع الخيوط
هناك نوعان من الخيوط وهما:
1. موضوع مستوى المستخدم
كما يوحي الاسم، تتم إدارة سلاسل الرسائل على مستوى المستخدم فقط من قبل المستخدمين، ولا تحتوي النواة على معلوماتها.
وهي أسرع وسهلة الإنشاء والإدارة.
تأخذ النواة كل هذه الخيوط كعملية واحدة وتتعامل معها كعملية واحدة فقط.
يتم تنفيذ سلاسل الرسائل على مستوى المستخدم بواسطة مكتبات على مستوى المستخدم، وليس عن طريق استدعاءات النظام.
2. مؤشر ترابط على مستوى النواة
تتم معالجة مؤشرات الترابط على مستوى kernel بواسطة نظام التشغيل ويتم إدارتها بواسطة kernel الخاص به. هذه الخيوط أبطأ من سلاسل الرسائل على مستوى المستخدم لأن معلومات السياق تتم إدارتها بواسطة kernel. لإنشاء وتنفيذ سلسلة رسائل على مستوى النواة، نحتاج إلى إجراء مكالمة نظام.
مميزات الخيط
- تشارك الخيوط البيانات والذاكرة والموارد والملفات وما إلى ذلك مع سلاسل المحادثات النظيرة ضمن العملية.
- استدعاء نظام واحد قادر على إنشاء أكثر من موضوع واحد.
- كل موضوع له مكدس خاص به وتسجيل.
- يمكن للسلاسل التواصل مباشرة مع بعضها البعض لأنها تشترك في نفس مساحة العنوان.
- يجب مزامنة المواضيع لتجنب السيناريوهات غير المتوقعة.
الاختلافات الرئيسية بين العملية والخيط
- تعتبر العملية مستقلة ولا يتم تضمينها في عملية أخرى، في حين يتم تضمين جميع سلاسل العمليات بشكل منطقي داخل العملية.
- العمليات مرجحة بشكل كبير، في حين أن المواضيع خفيفة الوزن.
- يمكن أن توجد العملية بشكل فردي لأنها تحتوي على ذاكرتها الخاصة وموارد أخرى، في حين لا يمكن أن يكون للخيط وجوده الفردي.
- ليس مطلوبا التزامن الصحيح بين العمليات. في المقابل، تحتاج سلاسل العمليات إلى المزامنة لتجنب السيناريوهات غير المتوقعة.
- يمكن للعمليات التواصل مع بعضها البعض باستخدام الاتصال بين العمليات فقط؛ في المقابل، يمكن للسلاسل التواصل مباشرة مع بعضها البعض لأنها تشترك في نفس مساحة العنوان.
جدول الفرق بين العملية والخيط
عملية | خيط |
---|---|
العملية هي مثيل لبرنامج يتم تنفيذه أو معالجته. | مؤشر الترابط هو جزء من عملية أو عملية خفيفة تتم إدارتها بواسطة المجدول بشكل مستقل. |
العمليات مستقلة عن بعضها البعض، وبالتالي لا تشترك في الذاكرة أو الموارد الأخرى. | المواضيع مترابطة وتشترك في الذاكرة. |
يتم التعامل مع كل عملية على أنها عملية جديدة بواسطة نظام التشغيل. | يأخذ نظام التشغيل جميع مؤشرات الترابط على مستوى المستخدم كعملية واحدة. |
إذا تم حظر إحدى العمليات بواسطة نظام التشغيل، فيمكن للعملية الأخرى مواصلة التنفيذ. | إذا تم حظر أي مؤشر ترابط على مستوى المستخدم، فسيتم أيضًا حظر جميع سلاسل الرسائل النظيرة الخاصة به لأن نظام التشغيل يأخذها جميعًا كعملية واحدة. |
يستغرق تبديل السياق بين عمليتين وقتًا طويلاً نظرًا لثقلهما مقارنةً بالسلسلة. | يعد تبديل السياق بين الخيوط سريعًا لأنها خفيفة الوزن للغاية. |
يكون مقطع البيانات ومقطع التعليمات البرمجية لكل عملية مستقلين عن الآخر. | تشارك سلاسل العمليات مقطع البيانات وقطعة التعليمات البرمجية مع سلاسل الرسائل النظيرة الخاصة بها؛ وبالتالي هي نفسها بالنسبة للمواضيع الأخرى أيضًا. |
يستغرق نظام التشغيل وقتًا أطول لإنهاء العملية. | يمكن إنهاء المواضيع في وقت قصير جدًا. |
يستغرق إنشاء عملية جديدة وقتًا أطول حيث أن كل عملية جديدة تستهلك جميع الموارد. | يحتاج الخيط إلى وقت أقل للإنشاء. |