Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 2 קצת מידע על הבעייה נהגתה ונפתרה על ידי דייקסטרה חומרים בעברית – דוד הראל, אלגוריתמיקה.

Similar presentations


Presentation on theme: "1 2 קצת מידע על הבעייה נהגתה ונפתרה על ידי דייקסטרה חומרים בעברית – דוד הראל, אלגוריתמיקה."— Presentation transcript:

1

2 1

3 2 קצת מידע על הבעייה נהגתה ונפתרה על ידי דייקסטרה חומרים בעברית – דוד הראל, אלגוריתמיקה.

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

5 4 אפיין את בעיית התיאום שלפניך והגדר את דרישת/שות התיאום. פתור את הבעיה במודל החישוב של שזירה שרירותית בעזרת סמפורים. בצע תמיד חשוב הרם מזלג שמאלי הרם מזלג ימני אכול ספגטי החזר מזלג ימני החזר מזלג שמאלי תהליך פילוסוף:

6 5 ניתוח הבעיה על איזה משאב מתחרה כל פילוסוף ועם מי ?

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

8 7 תכנון הפתרון תיאום השימוש במזלגות על-ידי סמפורים. סה"כ חמישה סמפורים שיוצהרו : Fork: array[1..5] of semaphore פילוסוף שירצה להרים מזלג, יבצע wait ל fork המתאים, ורק לאחר שביצוע ה-wait הסתיים יוכל להרימו. לכשיסיים לאכול, יחזיר את המזלג למקומו, ויבצע signal לסמפור המתאים, כדי לאפשר לשכנו להרים את המזלג.

9 8 עבור הפילוסוף החמישי [Fork[I+1 הוא [Fork[1 יישום בצע תמיד : –חשוב –בצע ([wait (Fork[I –הרם מזלג שמאלי – בצע ([wait (Fork[I+1 –הרם מזלג ימני –אכול ספגטי –החזר מזלג ימני –בצע ([signal (Fork[I+1 –החזר מזלג שמאלי –בצע ([signal (Fork[I {קטע קריטי}

10 9 בדיקה קיפאון ? מניעה הדדית ? הרעבה ?

11 10 יש קיפאון ! תסריט להוכחה פיל’ 1 מרים מזלג שמאלי פיל' 2 מרים מזלג שמאלי פיל' 3 מרים מזלג שמאלי פיל' 4 מרים מזלג שמאלי פיל' 5 מרים מזלג שמאלי אף פילוסוף לא יוכל להרים את מזלגו הימני לעולם!

12 11 ניסיון 2 - פתרון לא סימטרי נשנה את התהליך של אחד הפילוסופים, נאמר החמישי, כך שייקח קודם את המזלג הימני ואח"כ את המזלג השמאלי. שאר התהליכים יישארו ללא שינוי. קיפאון? הרעבה?

13 12 אין קיפאון נניח (בדרך השלילה) שיש קיפאון כולם אוחזים במזלג השמאלי כולם אוחזים במזלג הימני או אחד מהם אוחז גם במזלג הימני - (לפי האלג) לפחות 4 אוחזים במזלגם השמאלי (לפי האלג) סתירה !

14 13 אין הרעבה! במנגנון תיאום של מניעה הדדית, בו סמפור משותף רק לשני תהליכים. כל עוד אין קיפאון, גם אין הרעבה.

15 14 אין הרעבה! נניח בדרך השלילה שפילוסוף אחד מורעב. בגלל הסמפור של המזלג השמאלי בגלל הסמפור של המזלג הימני השכן שלו מחזיק את המזלג (הימני, עבורו) ולעולם לא ישחררו. אם יש לשכן את המזלג הימני אז גם יש לו את המזלג השמאלי ולכן הוא יכול לאכול (וזה סופי) ואז ישחרר את שני המזלגות. או סתירה !

16 15 אין הרעבה

17 16 אין הרעבה - המשך בגלל הסמפור של המזלג הימני המזלג השמאלי שלו בידו ו השכן שלו מימין לא ישחרר לו את המזלג הימני (השמאלי, עבורו) לעולם. הוכחנו שלא אפשרי שכולם יהיו חסומים על המזלג הימני (בהוכחה שאין קיפאון). השכן ישחרר לו את המזלג סתירה ! השכן, אם כך, מורעב על מזלגו הימני

18 17 פתרון סימטרי -השוער Room: Semaphore:= Init(4) נוסיף סמפור שיהיה אחראי על מספר המורשים לנסות להתחיל לאכול

19 18 קיפאון ? יש לכל היותר ארבעה פילוסופים בחדר מסביב לשולחן. לפחות לאחד מהם אין מתחרים על המזלג הימני. אין קיפאון בחדר!

20 19 המשך – קיפאון? מחוץ לחדר יכולים להיות עד חמישה פילוסופים (כולם חושבים) אבל לכל היותר אחד יכול להיות חסום על סמפור Room (ערכו ההתחלתי 4). הסמפור מאותחל ל 4 כך שלכל היותר ארבעה פילוסופים יכולים להיות בחדר בו זמנית. וכבר הוכחנו שאין קיפאון בחדר, לכן לפחות אחד מהארבעה יאכל, ויצא מן החדר תוך שחרור הפילוסוף הממתין בחוץ. פילוסוף לא יהיה חסום לנצח על סמפור Room. אין קיפאון!

21 20 הרעבה ? * אף פילוסוף לא יהיה חסום לנצח על סמפור של מזלג (ימני או שמאלי) כי הוכחנו שאין קיפאון בחדר וכל סמפור של מזלג משותף רק לשני פילוסופים. * אף פילוסוף לא יהיה חסום לנצח על הסמפור Room. ארבעה פילוסופים יכולים להיכנס לחדר לאכול וכבר הוכחנו שבחדר אין קיפאון ולכן אחד הפילוסופים יאכל ויצא מן החדר תוך שחרור הפילוסוף הממתין בחוץ. אין הרעבה! לכן גם אין הרעבה!

22 21 נגדיר: חמישה צמתים לפילוסופים. חמישה צמתים למזלגות (המזלג הופך להיות משאב אקטיבי המחליט בעצמו מי ישתמש בו ומתי). בעיית הפילוסופים -במישור המבוזר

23 22 תהליך מזלג בצע תמיד קבל הודעת בקשה עם פרמטר N שלח הודעת אישור לצומת N קבל הודעת שחרור

24 23 תהליך פילוסוף בצע תמיד חשוב הרם מזלג שמאלי הרם מזלג ימני אכול הנח מזלג ימני הנח מזלג שמאלי שלח הודעת בקשה למזלג I עם פרמטר I קבל הודעת אישור שלח הודעת בקשה למזלג I+1 עם פרמטר I קבל הודעת אישור שלח הודעת שחרור למזלג I+1 שלח הודעת שחרור למזלג I

25 24 קיפאון? כחול-שלח הודעהכתום-שלח אישור קיפאון!!

26 25 פתרון באמצעות הלוח והפתקים שני הפתרונות שנציג כאן - פתרון לא סימטרי ופתרון סימטרי עם “שוער”, הם בעלי מנגנון תיאום זהה לפתרונות שניתנו באמצעות סמפורים רק אמצעי התיאום שונה. I N המשפטים Removenote(‘F’,N=) Wait(Fork[I]) שקולים למשפט Postnote(‘F’,I) והמשפט Signal(Fork[I]) שקול למשפט הרם מזלג I החזר מזלג I

27 26 בחלק הראשי של התוכנית נצמיד 5 פתקים ללוח - פתק לכל מזלג. יישום ( לכל פילוסוף I) פתרון לא סימטרי אחד הפילוסופים ייקח קודם מזלג ימני ואח ” כ שמאלי ‘F’,5 ‘F’,4 ‘F’,3 ‘F’,2 ‘F’,1 בצע תמיד חשוב I N Removenote( ‘ F ’,N= ) הרם מזלג שמאלי I+1 N Removenote( ‘ F ’,N= ) הרם מזלג ימני אכול ספגטי החזר מזלג ימני ( postnote( ‘ F ’, I+1 החזר מזלג שמאלי ( postnote( ‘ F ’,I

28 27 איך נממש 'שוער' ? נצמיד ללוח 4 פתקים מסוג ‘Room’ (בתהליך הראשי) כל פילוסוף צריך קודם להסיר פתק מסוג room רק אח"כ ימשיך לנסות להשיג את המזלגות פתרון סימטרי - ‘ השוער ’

29 28 בחלק הראשי של התוכנית נצמיד ללוח 5 פתקים מסוג F (FORK ) ו 4 פתקים מסוג ROOM) R ) יישום ( לכל פילוסוף I) בצע תמיד חשוב Removenote ( ‘ R ’ ) I N Removenote( ‘ F ’,N= ) הרם מזלג שמאלי I+1 N Removenote( ‘ F ’,N= ) הרם מזלג ימני אכול ספגטי החזר מזלג ימני ( postnote( ‘ F ’, I+1 החזר מזלג שמאלי ( postnote( ‘ F ’,I Postnote ( ‘ R ’ ) ‘R’ ‘F’,5 ‘F’,4 ‘F’,3 ‘F’,2 ‘F’,1 כניסה לחדר יציאה מהחדר


Download ppt "1 2 קצת מידע על הבעייה נהגתה ונפתרה על ידי דייקסטרה חומרים בעברית – דוד הראל, אלגוריתמיקה."

Similar presentations


Ads by Google