שיעור 5: מה זה תהליך? /proc ומבנה הזיכרון
תהליך הוא תוכנית בריצה — לא הקובץ הבינארי בדיסק, אלא המופע החי שלו עם זיכרון, file descriptors ומצב. ב-NVIDIA, כל אפליקציית CUDA היא תהליך עם GPU context משלו. כשה-GPU תקוע, ps aux | grep cuda מוצא את ה-PID וְ-/proc/<pid>/maps מראה אם CUDA מיפה VRAM לתוך הזיכרון. שיעור זה נותן לך את הכלים לניתוח תהל
תהליך הוא כמו עובד שמבצע משימה: הקובץ הבינארי הוא קורות חיים שכתוב על נייר, אבל התהליך הוא העובד האמיתי שיושב בשולחן, משתמש במחשב ומתקשר עם אחרים. /proc הוא לוח הניהול שמציג כל עובד ומה הוא עושה.
- תהליך (Process)
- מופע רץ של תוכנית. כל תהליך מקבל PID ייחודי, מרחב זיכרון נפרד, file descriptors ומצב מעבד. תהליכים שונים לא חולקים זיכרון ישירות.
- PID (מזהה תהליך)
- מספר שלם ייחודי שהקרנל מקצה לכל תהליך. PID 1 הוא תמיד init/systemd. /proc/<pid>/ מכיל כל המידע על תהליך.
- PPID (מזהה תהליך אב)
- ה-PID של תהליך האב שיצר את התהליך הנוכחי. כל תהליך נוצר על ידי תהליך אחר (חוץ מ-init). PPID=0 מציין שהקרנל יצר את התהליך.
- מצב תהליך
- מצב נוכחי של תהליך: R (Running/Runnable), S (Sleeping — ממתין לI/O), D (Uninterruptible sleep — ממתין לקרנל), Z (Zombie — סיים אך ההורה לא ניקה), T (Stopped).
- מערכת קבצים /proc
- מערכת קבצים וירטואלית שהקרנל מייצר בזיכרון. כל /proc/<pid>/ הוא ספרייה שמכילה מידע חי על תהליך: status, maps, fd, cmdline ועוד.