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