الدرس 5: ما هي العملية؟ /proc وتخطيط الذاكرة
العملية هي برنامج قيد التنفيذ — ليست الملف الثنائي الموجود على القرص، بل نسخته الحية التي تمتلك ذاكرة و file descriptors وحالة. في NVIDIA، كل تطبيق CUDA هو عملية لها GPU context خاص بها. عندما يتجمد GPU، تعثر ps aux | grep cuda على الـ PID ويُظهر /proc/<pid>/maps ما إذا كانت CUDA قد ربطت VRAM داخل ا
العملية مثل موظف ينفذ مهمة: الملف الثنائي هو سيرة ذاتية مكتوبة على ورق، أما العملية فهي الموظف الفعلي الجالس إلى مكتبه، يستخدم حاسوباً ويتواصل مع الآخرين. /proc هو لوحة الإدارة التي تعرض كل موظف وما يفعله.
- العملية (Process)
- نسخة قيد التشغيل من برنامج. تحصل كل عملية على PID فريد، ومساحة عناوين منفصلة، و file descriptors وحالة CPU. لا تتشارك العمليات المختلفة الذاكرة مباشرة.
- PID (معرّف العملية)
- عدد صحيح فريد يخصصه kernel لكل عملية. الـ PID 1 هو دائماً init/systemd. يحتوي /proc/<pid>/ على كل المعلومات المتعلقة بعملية ما.
- PPID (معرّف العملية الأب)
- الـ PID الخاص بالعملية الأب التي أنشأت العملية الحالية. كل عملية تُنشأ بواسطة عملية أخرى (باستثناء init). تشير PPID=0 إلى أن kernel هو من أنشأ العملية.
- حالة العملية
- الحالة الراهنة لعملية: R (Running/Runnable)، S (Sleeping — في انتظار I/O)، D (Uninterruptible sleep — في انتظار kernel)، Z (Zombie — انتهت لكن الأب لم ينظّف بعدها)، T (Stopped).
- نظام الملفات /proc
- نظام ملفات افتراضي يولّده kernel في الذاكرة. كل /proc/<pid>/ هو دليل يحتوي على معلومات حية عن عملية: status وmaps وfd وcmdline وغيرها.