الدرس 10: ماذا يحدث عند تشغيل برنامج: العملية والذاكرة ونظام التشغيل
وصلنا إلى الدرس الأخير، وإلى اللحظة التي يتصل فيها كل شيء ببعضه. لقد بنينا ملفًا تنفيذيًا — لكن ماذا يحدث بالضبط عندما تنقر لتشغيله؟ يُنشئ مُحمِّل نظام التشغيل عملية: نسخة قيد التشغيل من البرنامج، لها مساحة ذاكرة خاصة بها. سنرى تخطيط ذاكرة العملية — مقطع الكود، ومقطع البيانات، والكومة (heap) التي تن
عندما تُشغِّل برنامجًا، يُنشئ له نظام التشغيل 'عملية' — نسخة حية في الذاكرة لها مساحتها الخاصة. تحتوي على مكدس (stack) لاستدعاءات الدوال وكومة (heap) للمساحة المطلوبة أثناء التشغيل. وعندما يريد البرنامج التخاطب مع العتاد، يطلب من نظام التشغيل القيام بذلك.
- عملية
- نسخة قيد التشغيل من برنامج، لها مساحة عناوين وحالة خاصة بها، يديرها نظام التشغيل.
- المُحمِّل
- جزء من نظام التشغيل ينسخ ملفًا تنفيذيًا إلى الذاكرة ويُنشئ منه عملية.
- مساحة العناوين
- نطاق عناوين الذاكرة التي تراها العملية على أنها ملكها؛ تحصل كل عملية على نطاق خاص بفضل الذاكرة الافتراضية.
- مقطع الكود ومقطع البيانات
- يحتفظ مقطع الكود بالتعليمات (للقراءة فقط عادةً)؛ ويحتفظ مقطع البيانات بالمتغيرات العامة والثوابت.
- المكدس
- منطقة ذاكرة لإطارات استدعاء الدوال — المتغيرات المحلية وعناوين العودة؛ تنمو إلى الأسفل.
- الكومة
- منطقة ذاكرة للتخصيص الديناميكي أثناء التشغيل (malloc/new)؛ تنمو إلى الأعلى حسب الحاجة.
- إطار المكدس
- السجل الذي يُدفَع إلى المكدس عند كل استدعاء لدالة: متغيراتها المحلية وعنوان العودة.
- استدعاء النظام
- طلب يقدّمه البرنامج إلى نظام التشغيل لتنفيذ عملية تتطلب الوصول إلى العتاد، مثل الإخراج أو الإدخال.
- الذاكرة الافتراضية
- آلية تحصل فيها كل عملية على مساحة عناوين خاصة، وكأن الذاكرة كلها ملكها، مُخطَّطة إلى الذاكرة الفيزيائية.
- تبديل السياق
- حفظ حالة العملية قيد التشغيل وتحميل حالة عملية أخرى، كي يتمكن معالج واحد من خدمة عمليات كثيرة.