תהליך זומבי

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

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

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

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

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