תהליך זומבי

מתוך ויקיפדיה, האנציקלופדיה החופשית

תהליך זומביאנגלית: Zombie process או Defunct process) במערכות הפעלה מבוססות Unix הוא תהליך שביצועו הושלם, אך עדיין נכלל בטבלת התהליכים של מערכת ההפעלה. הרשומה שנותרה בטבלת התהליכים מאפשרת לתהליך האב שיצר את התהליך שסיים את ריצתו (ועכשיו הוא זומבי) לקרוא את ערך היציאה של הזומבי.

המונח "תהליך זומבי" נגזר מדמות הזומבי במיתולוגיה הקריבית המת-החי. בדומה, התהליך שסיים את ריצתו "מת", אך עדיין לא "נאסף אל המתים". בשל סיומו של התהליך בלאו הכי, לפקודה kill אין שום השלכה כאשר זו מופעלת על הזומבי.

כאשר תהליך מסתיים, כל הזיכרון והמשאבים ששויכו אליו משוחררים חזרה למערכת. יחד עם זאת, הרשומה של התהליך בטבלת התהליכים אינה מוסרת. תהליך האב שיצר את תהליך הבן שהסתיים יכול לקרוא את ערך היציאה של הבן באמצעות קריאת המערכת wait, ורק מרגע שזו נקראה, התהליך הזומבי מוסר מהרשימה. לאחר שהזומבי מוסר מרשימת התהליכים, מזהה התהליך שלו מתפנה לשימוש חוזר בידי תהליך חדש אחר שנוצר. יחד עם זאת, אם ההורה לא קרא ל-wait, הזומבי יישאר ברשימת התהליכים עד סיום ריצתו של תהליך האב. מרגע שתהליך האב הסתיים, עובר תהליך הבן לתהליך init, שעובר באופן מחזורי על רשימת התהליכים הזומבים ומשחרר אותם על ידי קריאה ל-wait.

ניתן לזהות תהליכים זומבים באמצעות הפלט של פקודת ps באמצעות הסימן z בעמודת הסטטוס של התהליך (STAT). תהליכים זומבים שמופיעים ברשימה יותר מתקופה קצרה בדרך כלל מעידים על באג בתהליך האב או על החלטה לא סטנדרטית בטיפול בתהליכים בנים. אם תהליך האב אינו קיים יותר ועדיין הרשומה של תהליך הבן הזומבי קיימת, הדבר מעיד בדרך כלל על באג במערכת ההפעלה עצמה. בדומה לדליפות אחרות, נוכחות זומבים מועטים אינה מהווה סיבה לדאגה, אולם הדבר יכול להעיד על בעיה שיכולה להתנפח לממדים שיאיימו על יציבותה של מערכת ההפעלה, בעיקר אם זו תגיע למצב שבו לא נותרו מזהי תהליך פנויים לתהליכים חדשים.