שאלת מבחן במערכות הפעלה - האוניברסיטה הפתוחה 2016 - קיפאון
מערכת כוללת תהליכים, שכל אחד מהם זקוק ל- יחידות של משאב, לכל היותר, והמערכת כוללת בסך הכול יחידות. נסחו תנאי מספיק לכך שהמערכת לא תגיע ל-deadlock בשום סדרת הקצאות.
א.
ב.
ג.
ד.
א.
ב.
ג.
ד.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 942016סמסטר ב
★★★★★
קיפאוןסנכרון
חישבו על התרחיש הגרוע ביותר: כמה משאבים יחזיק כל תהליך במצב שממנו עלול להתפתח קיפאון? מהו התנאי על מספר המשאבים הכולל שיבטיח שלפחות תהליך אחד יוכל להמשיך?
התשובה הנכונה היא א'.
קיפאון (deadlock) במערכת עם סוג משאב יחיד בעל מספר יחידות מתרחש כאשר כל התהליכים במעגל המתנה מחזיקים במשאבים ומבקשים נוספים, ואין מספיק משאבים פנויים כדי לספק אף אחת מהבקשות.
כדי למצוא תנאי מספיק למניעת קיפאון, עלינו לבחון את מקרה הגרוע ביותר שבו קיפאון עלול להתרחש. מקרה זה קורה כאשר כל אחד מ- התהליכים מחזיק במספר המרבי של משאבים האפשרי מבלי שיוכל לסיים את ריצתו, ובמקביל מבקש משאב נוסף. מכיוון שכל תהליך זקוק לכל היותר ל- יחידות משאב כדי לסיים, המצב המסוכן ביותר הוא כאשר כל תהליך הצליח לקבל יחידות משאב.
במצב זה, אם כל התהליכים מחזיקים ב- יחידות משאב כל אחד, מספר המשאבים הכולל המוקצה במערכת הוא .
כדי שייווצר קיפאון, כל התהליכים יבקשו כעת יחידת משאב נוספת, אך לא יהיו מספיק משאבים פנויים במערכת כדי לספק אפילו בקשה אחת. מצב זה יקרה אם מספר המשאבים הכולל במערכת, , שווה למספר המשאבים המוקצים, כלומר .
כדי להבטיח שלעולם לא יתרחש קיפאון, עלינו להבטיח שגם במקרה הגרוע ביותר שתואר, יישאר לפחות משאב אחד פנוי. אם יש לפחות משאב אחד פנוי, ניתן להקצות אותו לאחד התהליכים הממתינים. אותו תהליך יקבל את המשאב ה- שלו, יסיים את ריצתו וישחרר את כל המשאבים שבהם החזיק. משאבים אלו יהפכו זמינים עבור תהליכים אחרים, וכך הקיפאון יימנע.
התנאי המתמטי להבטחת קיום של לפחות משאב אחד פנוי הוא:
שקול לכך, עבור מספרים שלמים, הוא:
כעת נבחן את התשובות המוצעות:
א. , או . תנאי זה שקול ל- עבור מספרים שלמים.
אם תנאי זה מתקיים, אז בוודאי שגם התנאי מתקיים. לכן, הוא תנאי מספיק (אף אם אינו התנאי ההדוק ביותר) למניעת קיפאון.
ב, ג, ד: התנאים האחרים אינם קשורים לניתוח מקרה הגרוע ביותר של הקצאת משאבים ואינם מבטיחים מניעת קיפאון.
לפיכך, התנאי בא' הוא תנאי מספיק נכון למניעת קיפאון.
קיפאון (deadlock) במערכת עם סוג משאב יחיד בעל מספר יחידות מתרחש כאשר כל התהליכים במעגל המתנה מחזיקים במשאבים ומבקשים נוספים, ואין מספיק משאבים פנויים כדי לספק אף אחת מהבקשות.
כדי למצוא תנאי מספיק למניעת קיפאון, עלינו לבחון את מקרה הגרוע ביותר שבו קיפאון עלול להתרחש. מקרה זה קורה כאשר כל אחד מ- התהליכים מחזיק במספר המרבי של משאבים האפשרי מבלי שיוכל לסיים את ריצתו, ובמקביל מבקש משאב נוסף. מכיוון שכל תהליך זקוק לכל היותר ל- יחידות משאב כדי לסיים, המצב המסוכן ביותר הוא כאשר כל תהליך הצליח לקבל יחידות משאב.
במצב זה, אם כל התהליכים מחזיקים ב- יחידות משאב כל אחד, מספר המשאבים הכולל המוקצה במערכת הוא .
כדי שייווצר קיפאון, כל התהליכים יבקשו כעת יחידת משאב נוספת, אך לא יהיו מספיק משאבים פנויים במערכת כדי לספק אפילו בקשה אחת. מצב זה יקרה אם מספר המשאבים הכולל במערכת, , שווה למספר המשאבים המוקצים, כלומר .
כדי להבטיח שלעולם לא יתרחש קיפאון, עלינו להבטיח שגם במקרה הגרוע ביותר שתואר, יישאר לפחות משאב אחד פנוי. אם יש לפחות משאב אחד פנוי, ניתן להקצות אותו לאחד התהליכים הממתינים. אותו תהליך יקבל את המשאב ה- שלו, יסיים את ריצתו וישחרר את כל המשאבים שבהם החזיק. משאבים אלו יהפכו זמינים עבור תהליכים אחרים, וכך הקיפאון יימנע.
התנאי המתמטי להבטחת קיום של לפחות משאב אחד פנוי הוא:
שקול לכך, עבור מספרים שלמים, הוא:
כעת נבחן את התשובות המוצעות:
א. , או . תנאי זה שקול ל- עבור מספרים שלמים.
אם תנאי זה מתקיים, אז בוודאי שגם התנאי מתקיים. לכן, הוא תנאי מספיק (אף אם אינו התנאי ההדוק ביותר) למניעת קיפאון.
ב, ג, ד: התנאים האחרים אינם קשורים לניתוח מקרה הגרוע ביותר של הקצאת משאבים ואינם מבטיחים מניעת קיפאון.
לפיכך, התנאי בא' הוא תנאי מספיק נכון למניעת קיפאון.