OS PyramidTechnion 234123 · Operating Systemsbasics → exam
Stage 7: Deadlock
OS-Winter-2020-2021-examBQuestion 4core32 pts

נתבונן על צומת בין שני דרכים כאשר מכוניות יכולות להגיע מארבע כיוונים.

Full original question text (raw OCR)

שאלה 4 - deadlocks קיפאון (32 נק') נתבונן על צומת בין שני דרכים כאשר מכוניות יכולות להגיע מארבע כיוונים. שאלה 1 (10 נק): תניחו שכלל מעבר הוא: תמיד לתת זכות קדימה לרכב המגיע מצד ימין. האם יתכן deadlock? אם כן, הסבירו איך כל אחד מארבעה התנאים ל-deadlock מתקיים כאן. אם לא, הסבירו איזה תנאי ל-deadlock לא מתקיים. סעיף 1.1 (2 נק): האם יתכן deadlock? כן / לא תשבה: נימוק: סעיף 1.2 (8 נק): עבור 4 תנאים ל-deadlock רשמו לכל אחד: מהו השם של התנאי, והאם הוא מתקיים כן או לא (בהתאם לתשובה למעלה), ובנוסף איך הוא מתקיים או לא מתקיים. תנאי 1: שם: האם מתקיים: כן / לא נימוק: תנאי 2: שם: האם מתקיים: כן / לא נימוק: תנאי 3: שם: האם מתקיים: כן / לא נימוק: תנאי 4: שם: האם מתקיים: כן / לא נימוק: שאלה 2 (10 נק): עכשיו יש מעגל תנוע בצומת. כלל מעבר בצומת הוא: תמיד לתת זכות קדימה לרכב (שכבר נמצא במעגל) המגיע מצד שמאל. אפשר להניח שבקוונטה מאוד קטנה של הזמן רק רכב אחד יכול לנוע. האם יתכן deadlock? אם כן, הסבירו איך כל אחד מארבעה התנאים ל-deadlock מתקיים כאן. אם לא, הסבירו איזה תנאי ל-deadlock לא מתקיים. סעיף 2.1 (2 נק): האם יתכן deadlock כן / לא תשבה: נימוק: סעיף 2.2 (8 נק): עבור 4 תנאים ל-deadlock רשמו לכל אחד: מהו שם של התנאי, והאם הוא מתקיים כן או לא (בהתאם לתשובה למעלה), ובנוסף איך הוא מתקיים או לא מתקיים. תנאי 1: שם: האם מתקיים: כן / לא נימוק: תנאי 2: שם: האם מתקיים: כן / לא נימוק: תנאי 3: שם: האם מתקיים: כן / לא נימוק: תנאי 4: שם: האם מתקיים: כן / לא נימוק: שאלה 3 (12 נק): המשך השאלה לא קשור לתנוע בצומת. נתון מצב בו תהליכים רבים משתמשים במספר מנעולים על מנת לעבוד על עץ בינארי מקבילי יחד. כלומר תהליכים (P1, P2, P3) מתעניינים במנעולים כמשאבים משותפים ( Ra, Rb, Rc, Rd, Re). על מנת לעבור עם העץ כל תהליך יכול להגיע לכל צומת לקחת את המנעול של אותו צומת (כמובן גם משחרר לאחר שימוש). Node D Node B Lock of Node B →Rb Node A Lock of Node A → Ra Node E Lock of Node D Rd Lock of Node E Re Node C Lock of Node C → Rc סעיף 3.1 (4 נק): צייר את גרף הקצאת משאבים (resource allocation graph) כמו שנלמד בהרצאות עבור אלגוריתם הבנקאי, עבור תחילת ריצה של מקרה זה. נמק למה. P 2 Ra Rb Rc Rd P₁ Re P 3 סעיף 3.2 (4 נק): אם נשתמש באלגוריתם הבנקאי לצורך ניהול משאבים-מנעולים מה תהיה התוצאה מכך ומדוע? תשובה: סעיף 3.3 (4 נק): נניח התוכנה רצה כמו שתואר בסעיף הקודם. להריץ את כל הפונקציונליות הנדרשת בעזרת חוט אחד לוקח T₁ זמן. תניחו הרצה של תוכנה לעיל על N תהליכים (או חוטים) תחת שימוש באלגוריתם הבנקאי לחלוקת משאבים כמו שהסברת בסעיף הקודם. בהינתן הביצועים הגרועים ביותר מה יהיה ה-speedup לפי חוק אמדל (Amdahl law)? תשובה:

  1. 1.1· mcq· 2 ptsDeadlock

    האם יתכן deadlock? כן / לא תשבה: נימוק:

    Mutex correctness and deadlock avoidanceBanker's algorithm safety check
  2. 1.2· short_answer· 8 ptsDeadlock

    עבור 4 תנאים ל-deadlock רשמו לכל אחד: מהו השם של התנאי, והאם הוא מתקיים כן או לא (בהתאם לתשובה למעלה), ובנוסף איך הוא מתקיים או לא מתקיים. תנאי 1: שם: האם מתקיים: כן / לא נימוק: תנאי 2: שם: האם מתקיים: כן / לא נימוק: תנאי 3: שם: האם מתקיים: כן / לא נימוק: תנאי 4: שם: האם מתקיים: כן / לא נימוק:

    Mutex correctness and deadlock avoidanceBanker's algorithm safety check
  3. 2.1· mcq· 2 ptsDeadlock

    האם יתכן deadlock? כן / לא תשבה: נימוק:

    Mutex correctness and deadlock avoidanceBanker's algorithm safety check
  4. 2.2· short_answer· 8 ptsDeadlock

    עבור 4 תנאים ל-deadlock רשמו לכל אחד: מהו שם של התנאי, והאם הוא מתקיים כן או לא (בהתאם לתשובה למעלה), ובנוסף איך הוא מתקיים או לא מתקיים. תנאי 1: שם: האם מתקיים: כן / לא נימוק: תנאי 2: שם: האם מתקיים: כן / לא נימוק: תנאי 3: שם: האם מתקיים: כן / לא נימוק: תנאי 4: שם: האם מתקיים: כן / לא נימוק:

    Mutex correctness and deadlock avoidanceBanker's algorithm safety check
  5. 3.1· diagram· 4 ptsDeadlock

    צייר את גרף הקצאת משאבים (resource allocation graph) כמו שנלמד בהרצאות עבור אלגוריתם הבנקאי, עבור תחילת ריצה של מקרה זה. נמק למה.

    Pipe IPC semanticsMutex correctness and deadlock avoidanceBanker's algorithm safety check
  6. 3.2· short_answer· 4 ptsDeadlock

    אם נשתמש באלגוריתם הבנקאי לצורך ניהול משאבים-מנעולים מה תהיה התוצאה מכך ומדוע?

    Mutex correctness and deadlock avoidance
  7. 3.3· calculation· 4 ptsDeadlock

    נניח התוכנה רצה כמו שתואר בסעיף הקודם. להריץ את כל הפונקציונליות הנדרשת בעזרת חוט אחד לוקח T₁ זמן. תניחו הרצה של תוכנה לעיל על N תהליכים (או חוטים) תחת שימוש באלגוריתם הבנקאי לחלוקת משאבים כמו שהסברת בסעיף הקודם. בהינתן הביצועים הגרועים ביותר מה יהיה ה-speedup לפי חוק אמדל (Amdahl law)?

    Pipe IPC semantics

The exam question — original PDF

pages 12, 13, 14, 15, 16, 17

Exactly as it appears on the exam paper.

loading page 12
loading page 13
loading page 14
loading page 15
loading page 16
loading page 17

Built from these components

Ordered basic → advanced. Master the earlier ones first.

L3Pipe IPC semanticsL3Mutex correctness and deadlock avoidanceL4Banker's algorithm safety check

Review the material

Read these before you answer — each verified slide teaches a component this question tests, and nothing from an unrelated topic is included. Tutorial slides show the actual slide image.

Lecture 7slide 36Banker’s algorithm

Banker’s algorithm • “Safe state” – System state whereby we’re sure that all processes can be executed, in a certain order, one after the other, such that each will obtain all the resources it needs to complete its execution – By ensuring such a sequence exists after each allocation => we avoid deadlock • Banker’s data structure – max[p] = (m_1,m_2, …, m_k) = max resource requirements for process p – cur[p] = (c_1,c_2, …, c_k) = current resource allocation for process p – R = (r_1, r_2, …, r_k) = the current resource request (for some process p) – avail = (a_1, a_2, …., a_k) = currently available (free) resources (global) • Example – max[p] = (3,0,1), cur[p] = (3,0,0) – Note that max[p] >= cur[p] always holds /* compare by coordinates */ OS (234123) - deadlocks 36

Lecture slide — text above is the material (no raster available).
Lecture 7slide 37Banker’s algorithm

Banker’s algorithm • Tentatively assume that request R was granted to process q – cur[q] += R // vector addition – avail -= R // vector subtraction • Check if “safe state” (= can satisfy all processes in some order) – initialize P to hold all non-terminated process – while( P isn’t empty ) { found = false for each p in P { // find one p that can be satisfied if( max[p] – cur[p] <= avail ) // p’s biggest request avail += cur[p] // pretend p terminates P -= {p} found = true } if( ! found ) return FAILURE } return SUCCESS OS (234123) - deadlocks 37

Lecture slide — text above is the material (no raster available).
Lecture 7slide 41Summary: ways to deal with deadlocks

Summary: ways to deal with deadlocks rpt 1. Deadlock “prevention” – Violate one of the 4 conditions necessary for deadlock – Deadlock can’t happen – E.g., by ordering resources & acquiring from smallest to biggest 2. Deadlock “avoidance” – Banker’s algorithm – Requires full knowledge about available & requested resources – System stays away from deadlocks by being careful on a per resource-allocation decision basis 3. Deadlock “detection & recovery” – Allow system to enter deadlock state, but put in place mechanisms that can detect, and then recover from this situation – Typically refer to the algorithmic resource-graph problem OS (234123) - deadlocks 41

Lecture slide — text above is the material (no raster available).
Tutorial 3slide 20FD (file descriptors)כל פעולות קלט/פלט של תהליך בלינוקס מבוצעות דרך "קבצים":קבצים "רגילים" לאחסון מידע (/usr/file

FD (file descriptors)כל פעולות קלט/פלט של תהליך בלינוקס מבוצעות דרך "קבצים":קבצים "רגילים" לאחסון מידע (/usr/file.txt) נמצאים בדיסק.התקני חומרה גם כן מיוצגים כקבצים, אבל נמצאים בזיכרון.למשל, העכברים המחוברים למחשב מיוצגים כ- /dev/input/mouseN .גם ערוצי תקשורת כמו pipes מיוצגים ע"י קבצים שנמצאים בזיכרון.הקשר בין תהליך לבין קובץ שהוא ניגש אליו נשמר, ברמת המשתמש, ע"י מספר שלם שנקרא file descriptor (FD).לדוגמה: קריאת המערכת open() מחזירה FD.המשתמש מעביר את ה-FD לקריאות מערכת כמו read(), write() כדי לקרוא ולכתוב לקובץ.מערכות הפעלה - תרגול 320

Tutorial 3slide 42שחרור file objectשאלה: מי מבצע את שחרור הזיכרון של file object? מתי ניתן לשחררו? ייתכנו מצבים בהם תהליכים שונים מצביע...

שחרור file objectשאלה: מי מבצע את שחרור הזיכרון של file object? מתי ניתן לשחררו? ייתכנו מצבים בהם תהליכים שונים מצביעים לאותו file object, לכן שחרור ה-file object יכול להתבצע רק לאחר ביצוע close() מכל התהליכים החולקים את אותו ה-file object. זכרו של-file object יש מונה (f_count) הסופר את כמות התהליכים המצביעים עליו בכל רגע נתון. המונה קטן באחד עם כל פעולת close() על האובייקט. כאשר המונה מתאפס, ה-file object ישוחרר.מערכות הפעלה - תרגול 342

Tutorial 7slide 14יצירת חוט חדשפרמטרים:thread – מצביע למקום בו יאוחסן מזהה החוט החדש במקרה של סיום הפונקציה בהצלחה

יצירת חוט חדשפרמטרים:thread – מצביע למקום בו יאוחסן מזהה החוט החדש במקרה של סיום הפונקציה בהצלחה.attr – מאפיינים המתארים את תכונות החוט החדש, כגון האם החוט הוא חוט גרעין או חוט משתמש, האם ניתן לבצע לו join, כלומר להמתין לסיומו, וכו'. בד"כ נספק ערך NULL המציין חוט ברירת המחדל של המערכת, שניתן להמתין לסיומו.void* (*start_routine)(void*) מצביע לפונקציה שתהווה את קוד החוט. הערך המוחזר מפונקציה זו במקרה של סיומה הטבעי הינו ערך הסיום של החוט.arg – פרמטר שיסופק לפונקציה עם הפעלתה.מערכות הפעלה - תרגול 714

Tutorial 8slide 6משתנה תנאי (condition variable)משתנה תנאי הוא אובייקט סנכרון המאפשר לחוט לצאת להמתנה בתוך קטע קריטי

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

Tutorial 8slide 7סכימה כללית למשתני תנאיcond_t c; // should be initializedmutex_t m; // should be initializedint state_var = 0;החוט המ...

סכימה כללית למשתני תנאיcond_t c; // should be initializedmutex_t m; // should be initializedint state_var = 0;החוט הממתין לאירוע יקרא ל:while (!condition_holds(state_var)) cond_wait(&c, &m);החוט שמסמן לחוטים הממתינים להמשיך יקרא ל:if (condition_holds(state_var)) cond_signal(&c);מערכות הפעלה - תרגול 87מדוע cond_wait() מקבלתגם את המנעול?

Tutorial 8slide 11המתנה על משתני תנאיint pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);פעולה: משחררת את המנעול ומעביר...

המתנה על משתני תנאיint pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);פעולה: משחררת את המנעול ומעבירה את החוט להמתין על משתנה התנאי באופן אטומי (ראינו קודם מדוע זה הכרחי).החוט הממתין חייב להחזיק במנעול mutex לפני הקריאה.בחזרה מהמתנה על משתנה התנאי, החוט עובר להמתין על המנעול. החוט יחזור מהקריאה ל-pthread_cond_wait() רק לאחר שינעל מחדש את ה-mutex.ערך מוחזר: הפעולה תמיד מצליחה ומחזירה 0.11מערכות הפעלה - תרגול 8

Ask Gemini
OS-Winter-2020-2021-examB · Q4 — question + its material already loaded
Pick a shortcut above or ask anything about this question.
The exam text, the skills it tests, and the exact slides are already in context.