שיעור 8: סיגנלים — תקשורת בין תהליכים
סיגנלים הם מנגנון קל-משקל של מערכת ההפעלה לשליחת אירועים אסינכרוניים לתהליך. בשיעור זה נלמד את מחזור החיים של סיגנל: שליחה, קבלה, טיפול — ונבין למה SIGKILL מסוכן לתהליכים שמחזיקים משאבי GPU.
סיגנל הוא כמו נגיעה על הכתף לתהליך: SIGTERM אומר 'אנא סיים בעצמך', SIGKILL אומר 'תמות עכשיו' — ובמקרה השני אין זמן לנקות.
- סיגנל
- הודעה אסינכרונית קצרה שנשלחת לתהליך מהגרעין או מתהליך אחר כדי לסמן אירוע (שגיאה, בקשת סיום, הפרעת משתמש).
- SIGTERM
- סיגנל 15 — בקשת סיום מנומסת שניתן ללכוד ולטפל בה, ומאפשרת לתהליך לשחרר משאבים לפני יציאה.
- SIGKILL
- סיגנל 9 — סיום כפוי שלא ניתן ללכוד, לחסום או להתעלם ממנו; הגרעין מסיים את התהליך מיד ללא ניקוי.
- מטפל-סיגנל
- פונקציה שרושמים עם signal() או sigaction() ומופעלת אסינכרונית כשסיגנל מגיע. מותר לה לבצע רק פעולות async-signal-safe.
- sigaction
- ממשק POSIX מלא לרישום מטפלי-סיגנל, המאפשר לשלוט במסכת הסיגנלים ובדגלים נוספים בניגוד ל-signal() הפשוט.