נובמבר 2002 1 קיפאון deadlock. נובמבר 2002 2עמוד נושאים בעית...
Post on 21-Dec-2015
233 views
TRANSCRIPT
2002נובמבר 1
קיפאוןDeadlock
2002נובמבר עמוד2
נושאים
בעית הקיפאוןדוגמא–תנאים לקיפאון–
טיפול בקיפאוןמניעה, זיהוי ,התחמקות–אלגוריתמים למניעה והתחמקות–
2002נובמבר עמוד3
דוגמא – הפילוסופים הסועדים
פיתרון נאיבי בעזרת סמפורים לכל מזלגfork[i]נקצה סמפור ––p(fork[i-1]); p(fork[i]); eat; v(fork[i-1]); v(fork[i]) ;
בעיהכל פילוסוף תופס את–
המזלג השמאלי בו-זמניתותקוע בהמתנה לימני
!קיפאון
2002נובמבר עמוד4
הגדרה
קפאון הוא מצב בו אף אחד מהתהליכים/חוטים במערכת אינו יכול לבצע את הפקודה
הבאה בתכנית שלו.
כל אחד מארבעת התנאים הבאיםאבחנה:
חייב להתקיים כדי שייווצר קיפאון:
2002נובמבר עמוד5
תנאים לקיפאוןמניעה הדדית1.
ישנם משאבים שרק תהליך אחד יכול לעשות שימוש בהם –בו-זמנית
החזק והמתן2.ישנו תהליך המחזיק משאב ומחכה למשאב אחר שבשימוש –
אצל תהליך אחר
לא ניתן להפקיע משאבים3.לא ניתן להפקיע משאב מתהליך ללא הסכמתו–
המתנה מעגלית4. מחכה למשאב המוחזק ע"י Pi תהליכים כך ש-nקיימים –
P(i+1)mod n (0<=i<=n-1)
2002נובמבר עמוד6
דרכי התמודדות עם קיפאון
מניעה(prevention)לקבוע מדיניות שתימנע קיפאון–
התחמקות(avoidance)להשתמש במידע מוקדם על צרכיו של כל תהליך כדי –
להראות שלא קורה גילוי והתאוששות(detection and recovery)
מאפשרים למערכת להגיע לקיפאון–כאשר זה קורה, המערכת תגלה זאת ותיחלץ מהמצב–
להתעלם מהבעיהלהניח שהמצב כמעט ואינו קורה...–
2002נובמבר עמוד7
Preventionמניעת קיפאון –
מניעה הדדית1. המשאבים ניתנים לשימוש כללמשל, בנית מערכת שבה –
משותף בו-זמנית
החזק והמתן2.למשל, לא נאפשר לתהליך להמתין למשאב כאשר הוא –
מחזיק משאב אחר
לא ניתן להפקיע משאבים3.למשל, נאפשר להפקיע משאבים מתהליך שכרגע –
בהמתנה
המתנה מעגלית4.נקבע מדיניות שתמנע המתנה מעגלית–
2002נובמבר עמוד8
מניעת קיפאוןמניעה המתנה מעגלית
נקבע סדר מלא בין השאבים–F(tape)=1, F(printer)=2, F(scanner)=3… ,
תהליכים יבקשו משאבים רק בסדר עולה לא יוכל לבקש printerתהליך שמחזיק את ה-–
tapeאת ה- או... תהליך שמבקש משאב מסדר נמוך
חייב לשחרר קודם משאבים מסדר גבוה
2002נובמבר עמוד9
גרף בקשות-הקצאות
נתאר מצב רגעי של מערכת ע"י הגרףהמכוון הבא
כל תהליך מתואר כעיגול– n עותקים מתואר כמלבן עם nמשאב בעל –
נקודותקשת מתהליך למשאב–
התהליך ממתין למשאב•
קשת מ(עותק של) משאב לתהליך–עותק של המשאב הוקצה לתהליך•
2002נובמבר עמוד10
גרף בקשות-הקצאותדוגמא
P1 מחזיק עותק של R2-ומהכה ל R1P2 מחזיק עותקים של R1-ו R2 ומחכה
R3ל-P3 מחזיק עותק של R3
P1 P2 P3
R1R2
R3
2002נובמבר עמוד11
גילוי קיפאון
משפט: אם יש קיפאון אזי קיים מעגלמכוון בגרף בקשות-הקצאות
נובע מתנאי "החזק והמתן" ו-"המתנה מעגלית"– אבל... קיום מעגל אינו תנאי מספיק
P1לקיפאון! P2 P3
R1R2
2002נובמבר עמוד12
גילוי קיפאוןעותק יחיד של כל משאב
משפט:בהנחה שיש עותק יחיד של כלמשאב, קיים מעגל מכוון בגרף
בקשות-הקצאות אם ורק אם יש קיפאון המתנה מעגלית–
P1 P2 P3
R1 R3R2
P4
R4
2002נובמבר עמוד13
גילוי קיפאוןעותק יחיד של כל משאב
זיהוי מעגל–Sהיא קבוצת כל הצמתים ללא קשתות יוצאות
אלגוריתםS כלשהו ב-j, עבור j הנכנסת לצומת ijכל עוד יש קשת –
מהגרףijמחק את הקשת •S ל-i אין קשתות יוצאות, הוסף את iאם ל-•
לא מכיל את כל הצמתים בגרף, אזי יש מעגל Sאם בסוף –C?S ו-Cמהו היחס בין הצמתים ב-•
סיבוכיות–O(|E|) כאשר Eהיא קבוצת הקשתות
2002נובמבר עמוד14
גילוי מעגל – דוגמא
S
2002נובמבר עמוד15
גילוי מעגל – דוגמא
S
2002נובמבר עמוד16
גילוי מעגל – דוגמא
S
2002נובמבר עמוד17
גילוי מעגל – דוגמא
S
2002נובמבר עמוד18
זיהוי קיפאוןמספר עותקים מכל משאב
כפי שראינו, גילוי מעגל אינו תנאי מספיקדרוש כלי חזק יותר–
פריקות של גרף בקשות-הקצאות צומת/תהליך אם ניתן לספק את כל לצמצםניתן –
בקשותיובעת הצמצום משחררים את כל המשאבים שברשותו•
אם ניתן לצמצם תהליך כלשהופריקגרף הוא – אם קיימת סדרת פריק לחלוטיןגרף הוא –
צמצומים שבסיומה כל צמתי הגרף מבודדים
2002נובמבר עמוד19
צמצום גרף בקשות-הקצאות
P1 P2 P3
R1 R2
P4R3ו-R2 ולשחרר את P3ניתן לצמצם את •P(2 (או P4כעת ניתן לספק את כל צרכיו של •
P1אך לא של •P1 ו-P2אחר-כך ניתן לצמצם את •
R3
2002נובמבר עמוד20
צמצום גרף בקשות-הקצאות
P1 P2 P3
R1 R2
P4R3ו-R2 ולשחרר את P3ניתן לצמצם את •P4 (R2)כעת ניתן לספק את כל צרכיו של •
P1אך לא של •P1 ו-P2אחר-כך ניתן לצמצם את •
R3
2002נובמבר עמוד21
צמצום גרף בקשות-הקצאות
P1 P2 P3
R1 R2
P4R3ו-R2 ולשחרר את P3ניתן לצמצם את •P4 (R2)כעת ניתן לספק את כל צרכיו של •
P1אך לא של •P1 ו-P2אחר-כך ניתן לצמצם את •
R3
2002נובמבר עמוד22
צמצום גרף בקשות-הקצאות
P1 P2 P3
R1 R2
P4R3ו-R2 ולשחרר את P3ניתן לצמצם את •P4 (R2)כעת ניתן לספק את כל צרכיו של •
P1אך לא של •P1 ו-P2אחר-כך ניתן לצמצם את •
R3
2002נובמבר עמוד23
צמצום גרף בקשות-הקצאות
P1 P2 P3
R1 R2
P4R3ו-R2 ולשחרר את P3ניתן לצמצם את •P4 (R2)כעת ניתן לספק את כל צרכיו של •
P1אך לא של •P1 ו-P2אחר-כך ניתן לצמצם את •
הגרף פריק לחלוטין
R3
2002נובמבר עמוד24
סדרת צמצומים מירבית בגרף בקשות-הקצאות
הגדרהסדרת צמצומים בגרף בקשות-הקצאות היא –
מירבית אם לא ניתן להמשיך לצמצם צמתיםטענה
כל סדרות הצמצומים המירביות מביאות לאותו –גרף בלתי פריק
2002נובמבר עמוד25
סדרת צמצומים מירבית בגרף בקשות-הקצאות
הוכחהנסתכל על שתי סדרות צמצומים מירביות–
•p1, …, pk -ו q1, …, qr
נניח (בדרך השלילה) שהן אינן מכילות את אותם –התהליכים
q1, …, qr שאינו מופיע ב-piנתבונן בתהליך הראשון –pi ניתן לצמצם את q1, …, qi-1אחרי –pi עדיין ניתן לצמצם את q1, …, qrולכן אחרי –סתירה!–
2002נובמבר עמוד26
פריקות לחלוטיןP4
P5
P2
R1 R2
P1
R3 R4
P3
P1, P5ניתן לצמצם את •
2002נובמבר עמוד27
פריקות לחלוטיןP4
P5
P2
R1 R2
P1
R3 R4
P3
לאחר מכן,לא ניתן לצמצם תהליכים אחרים•הגרף אינו פריק לחלוטין!•
2002נובמבר עמוד28
פריקות לחלוטין וקפאון
משפט )עבור מקרה של מספר עותקים מכלמשאב(
גרף בקשות-הקצאות הוא פריק לחלוטין אם ורק אם אין –קיפאון
הוכחהאם הגרף פריק לחלוטין סדרת צמצום מירבית משרה סדרת –
הקצאות שתביא לסיום כל התהליכיםאם הגרף לא פריק לחלוטין, מסדרת צמצום מירבית כלשהי –
יתקבל גרף לא פריקקבוצת הצמתים הלא מבודדים משרה קבוצת תהליכים שאינם •
יכולים להתקדם
2002נובמבר עמוד29
אלגוריתם לזיהוי קיפאון מספר עותקים מכל משאב
הרעיון: בדיקת פריקות גרף הקצאות-בקשות עם כל הצמתים שאינם מחכים למשאביםLנאתחל קבוצה –L ב-Piעבור כל תהליך –
Piשחרר את כל המשאבים התפוסים ע"י • אשר ניתן לספק את כל צרכיוPkעבור כל תהליך •
L ל- Pkהוסף את –
אינו מכיל את כל התהליכים אזי יש קיפאוןLאם בסיום –סיבוכיות
–O(m n2)•mמספר המשאבים – •nמספר התהליכים –
2002נובמבר עמוד30
החלצות מקיפאון
אפשרויות החלצות מקיפאוןביטול כל התהליכים המצויים במצב קיפאון–ביטול תהליכים אחד אחד עד להחלצות–הפקעת משאבים–
מציאת קבוצה אופטימלית )של תהליכים אוNP-Completeמשאבים( היא
–feedback vertex set קבוצת צמתים מינימלית שתהפוך גרף לחסר מעגלים•
–feedback arc setקבוצת קשתות מינימלית שתהפוך גרף לחסר מעגלים•
2002נובמבר עמוד31
התחמקות מקיפאון –Deadlock Avoidance
דואגים להשאיר את המערכת במצב בטוחתהליכים מצהירים על כוונותם לבקש משאבים–אסור לתהליך לבקש משאב שלא הצהיר עליו–מצב הוא בטוח אם קיימת סדרת הקצאות לכל –
המשאבים שהוצהרו, מבלי להיכנס לקיפאוןהתחמקות מקיפאון
בעת בקשה בפועל, אם היענות לבקשה תכניס את –המערכת למצב לא בטוח, הבקשה נדחת
אלגוריתם שמרנידורש הנחות מחמירות לגבי דרישות התהליכים–
2002נובמבר עמוד32
התחמקות מקיפאוןדוגמא
תהליכיםP1-ו P2 מצהירים על כוונה לבקש את המדפסת ואת כונן הסרטים
מבקש את המדפסתP1תהליך –הבקשה נענית•
מבקש את כונן הסרטיםP2תהליך – יבקש את המדפסת P1הבקשה נדחית... אם •
בהמשך, ייווצר קיפאון
2002נובמבר עמוד33
התחמקות מקיפאוןאלגוריתם הבנקאי
עקרונות האלגוריתםתהליכים המגיעים למערכת מצהירים על –
כוונותם המירביות לבקשות משאבים – לכל משאב
אם תהליך מבקש עותק ממשאב,הבקשה –תיענה אם
אין חריגה מההצהרות המקוריות•יש מספיק עותקים פנויים•ההקצאה משאירה את המערכת במצב בטוח•
2002נובמבר עמוד34
אלגוריתם הבנקאיפירוט
משתנים–available[1..m]מספר עותקים פנויים מכל משאב – –max[1..n, 1..m] מספר עותקים מקסימלי שתהליך –
יכול לבקש (הצהרה)–allocation [1..n, 1..m] מספר העותקים של –
המשאב שכעת מוקצים לתהליך–need[i,j]=max[i,j]-allocation[i,j]
עלול לבקשiמספר העותקים של המשאב שהתהליך •
פעולות וקטוריות–X Y אמ"ם X[i] Y[i] 1 לכל i m
2002נובמבר עמוד35
אלגוריתם הבנקאיפירוט
L =
while there is a PiL and need[i] available do
available:=available+allocation[i]
add Pi to L
end
if L contains all processes then
this is a safe state
2002נובמבר עמוד36
אלגוריתם הבנקאי – דוגמא האם המצב הבא של המערכת הוא
?"בטוח“
ניתן לצמצם אתP2P1 ו-P3לאחר שחרור משאביו, ניתן לצמצם את –
A B C
P1 0 1 0
P2 2 1 0
P3 1 0 3
Total 3 2 3
A B C
3 1 1
2 1 4
3 2 3
A B C
0 3 4
A B C
3 0 1
0 0 4
2 2 0
allocation max available need
2002נובמבר עמוד37
סיכום
רוב מערכות ההפעלה אינם דואגות למנועקיפאון
פעולה כבדה–האחריות נשארת אצל המתכנת –הריגת תהליך מאפשרת להיחלץ מקיפאון–
אך עלולות להשאיר את המערכת במצב לא תקין•
-בWindows NTWaitForMultipleObjectsפקודת –מקצה את כל משאבים יחד, אם כולם פנויים–