קיפאון (מדעי המחשב)


כל מה שרצית לדעת על קיפאון (מדעי המחשב):
קיפאון (באנגלית: Deadlock) הוא מצב בו שתי פעולות מתחרות מחכות כל אחת לסיומה של האחרת, ומכיוון שכך, אף אחת מהן אינה מסתיימת.
דוגמה: שני אנשים עומדים בפתחה של דלת, וכל אחד מהם מציע לרעהו את הזכות להיכנס ראשון.
אם יתמידו בגישתם זו, לא יעברו לעולם בדלת.
בענף המחשבים, קיפאון מתייחס למצב בו שני תהליכים (או יותר) מחכים האחד לאחר לשחרורו של משאב, או למצב בו יותר משני תהליכים מחכים למשאבים בשרשרת מעגלית.
דוגמה: תהליך א' נועל את משאב A וממתין לשחרורו של משאב B, משום שהוא זקוק לשני משאבים אלה יחדיו לשם השלמת פעולתו.
באותו זמן תהליך ב' נועל את משאב B וממתין לשחרורו של משאב A, משום שגם שהוא זקוק לשני משאבים אלה יחדיו לשם השלמת פעולתו.
בקשת הנעילה היא פעולה חוסמת ועל כן שני התהליכים הפעילו פעולות שלא יחזרו עד שישוחרר המשאב שביקשו לנעול.
אך כיוון שהתהליך שמחזיק במשאב נמצא במצב דומה – הוא לא יכול לשחרר את המשאב ומכאן ששני התהליכים תקועים.
קיפאון הוא בעיה נפוצה בתחום העיבוד המקבילי שבו תהליכים רבים משתפים משאבים באמצעות מנגנון הידוע כ'מנעול תוכנה' או 'מנעול רך'.
במערכות מחשב המיועדות לפעול תחת אילוצי זמן אמת, ישנו לרוב התקן חומרה הנקרא 'מנעול קשה' המבטיח גישה בלעדית לתהליכים ומניעת מצבי הרעבה, על ידי כפיית סדר עיבוד.
מצבי קיפאון הם מטרידים ביותר מכיוון שאין פתרון כללי למניעתם.
על מתכנתים לנסות ולכתוב תוכניות שלא ייתכנו בהם כלל מצבי קיפאון.
תוכניות כאלה נקראות תוכניות שיש להן חָ‏יות (liveness).

נלקח מויקיפדיה

הגדרות נוספות הקשורות לקיפאון (מדעי המחשב):
מערכת הפעלה
בעיות שאינן ניתנות לחישוב
באגים
חישוב מבוזר