מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תיאום בין תהליכים : יסודות  דוגמאות לבעיות תיאום  הגדרות : קטע קריטי, מנעולים  אלגוריתם קופת - חולים.

Slides:



Advertisements
Similar presentations
Processes and threads. תהליכים ותתי תהליכים תהליכים –כל תוכנית שרצה היא תהליך (process) –ניתן להתפצל מתהליך אחד למספר תהליכים, בעזרת הפקודה fork(). הרבה.
Advertisements

תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תיאום בין תהליכים : שיטות מתקדמות  שימוש בחומרה למימוש מנעולים  מנגנוני מערכת הפעלה לתיאום : סמפורים, משתני תנאי.
נובמבר סנכרון תהליכים וחוטים Process and Thread Synchronization חלק ראשון.
מתמטיקה בדידה תרגול 3.
תיאום בין תהליכים: שיטות מתקדמות
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 סיכום הקורס.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מערכות הפעלה ( אביב 2008) חגית עטיה © 1 טיפול בקיפאון  בעיית הקיפאון  הימנעות מקיפאון  זיהוי קיפאון באמצעות מציאת מעגלים  אלגוריתם הבנקאי להתחמקות.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 מערכות קבצים מבוזרות  מבוא : שקיפות ושמירת מצב.  דוגמה : Network File System.
יפעת קוליקנט, מכון ויצמן למדע1 פרק 7, אלגוריתם Ra לפתרון בעית הקטע הקריטי במערכות מבוזרות.
נובמבר ניהול תהליכים במערכת מרובת מעבדים Process Management in Multiprocessor Systems.
מערכות הפעלה תרגול 6 – חוטים ב-Linux.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 מערכות הפעלה קורס מס '
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות ושימושים.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
טיפול בקיפאון בעיית הקיפאון הימנעות מקיפאון
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 זימון תהליכים  מדיניות בסיסיות : RR, FCFS, SJF  הערכת זמן ריצה ושימוש בעדיפויות  ריבוי תורים ודוגמאות.
מערכות הפעלה תרגול 6 – חוטים ב-Linux. מערכות הפעלה - תרגול 62 (c) ארז חדד 2003 תוכן התרגול מבוא לחוטים ב-Linux כיצד גרעין Linux תומך בחוטים עבודה עם חוטים.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
מרץ 2002אלן אזאגורי ©1 סנכרון תהליכים וחוטים Process and Thread Synchronization חלק ראשון.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 טיפול בקיפאון  בעיית הקיפאון  הימנעות מקיפאון  זיהוי קיפאון באמצעות מציאת מעגלים  אלגוריתם להתחמקות מקיפאון.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מרץ 2002אלן אזאגורי ©1 חוטים Threads. מרץ 2002 אלן אזאגורי ©2עמוד נושאים הגדרות –חוטים –חוטים לעומת תהליכים תמיכת מערכת ההפעלה בחוטים דוגמאות –Mach –Windows.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכות הפעלה תרגול 6 – חוטים ב-Linux. מערכות הפעלה - תרגול 62 (c) ארז חדד 2003 תוכן התרגול סינכרוניזציה בגרעין של Linux מבוא לחוטים ב-Linux כיצד גרעין.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 טיפול בקיפאון  בעיית הקיפאון  הימנעות מקיפאון  זיהוי קיפאון באמצעות מציאת מעגלים  אלגוריתם להתחמקות מקיפאון.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
מערכות הפעלה קורס מס' מערכות הפעלה (אביב 2009) חגית עטיה ©
עקרון ההכלה וההדחה.
מערכות הפעלה תרגול 8 – סינכרוניזציה ב-Linux. מערכות הפעלה - תרגול 82 (c) ארז חדד 2003 תוכן התרגול מבוא לסינכרוניזציה ב-Linux סנכרון בין חוטי POSIX  mutex.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
מערכות הפעלה ( אביב 2008) חגית עטיה © 1 סיכום הקורס.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
תיאום בין תהליכים : יסודות  דוגמאות לבעיות תיאום  הגדרות : קטע קריטי, מנעולים  אלגוריתם קופת - חולים.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
נובמבר סנכרון תהליכים וחוטים Process and Thread Synchronization חלק שני.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מערכות הפעלה ( אביב 2008) חגית עטיה © 1 מערכת הקבצים  מבוא : מטרות מערכת קבצים  מנשק המשתמש : פעולות על קבצים, ארגון קבצים, הגנה  תכונות של דיסקים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
שיתוף PDT בין חוטים PDT Thread A Process Descriptor File Object 1 File Object 2 File 1 File 2 pthread_create Thread B Process Descriptor ה PDT משותף לכל.
Multiprocessor Synchronization Algorithms
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
FAA FAA (int s, int val) { temp = s; s = s + val; return temp; }
מבוא למדעי המחשב סיבוכיות.
מבנה נתונים ואלגוריתמים
Asynchronous programming
Marina Kogan Sadetsky –
פרק רביעי – תקשורת בין תהליכים פנימיים
תהליכים-דייאט: חוטים מוטיבציה חוטי משתמש וחוטי מערכת
Shell Scripts בסביבת UNIX
Engineering Programming A
Presentation transcript:

מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תיאום בין תהליכים : יסודות  דוגמאות לבעיות תיאום  הגדרות : קטע קריטי, מנעולים  אלגוריתם קופת - חולים

מערכות הפעלה ( אביב 2004) חגית עטיה ©2 תיאום  תהליכים משתפים פעולה : גישה למשאבים משותפים, למשל זיכרון משותף ( בעיקר חוטים ). העברת נתונים מתהליך אחד לשני דרך התקן משותף.  חייבים לתאם את השיתוף : מניחים שביצוע התהליכים משולב באופן שרירותי. למתכנת האפליקציה אין שליטה על זימון התהליכים. שימוש במנגנוני תיאום (synchronization).

מערכות הפעלה ( אביב 2004) חגית עטיה ©3 דוגמא : בנק הפועלים  מימשנו פונקציה למשיכת כסף מחשבון בנק. int withdraw( account, amount) { balance = get_balance( account ); balance -= amount; put_balance( account, balance); return balance; }  בחשבון יש 50000$, ושני בעלי החשבון ניגשים לכספומטים שונים ומושכים 25000$ בו - זמנית.

מערכות הפעלה ( אביב 2004) חגית עטיה ©4 בנק הפועלים : אין כסף ?  תהליך נפרד מבצע כל פעולת משיכה ( על אותו מעבד ) בחשבון 0$.... balance = get_balance(account); balance -= amount;// 50K-25K put_balance(account, balance); return balance;// = 25K balance = get_balance(account); balance -= amount;// 25K-25K put_balance(account, balance); return balance; // = 0

מערכות הפעלה ( אביב 2004) חגית עטיה ©5 בנק הפועלים : יש כסף !  תהליך נפרד מבצע כל פעולת משיכה ( על אותו מעבד ). מי שמח עכשיו ? balance = get_balance(account); balance -= amount;// 50K-25K balance = get_balance(account); balance -= amount; // 50K-25K put_balance(account, balance); return balance; // = 25K put_balance(account, balance); return balance; // = 25K

מערכות הפעלה ( אביב 2004) חגית עטיה ©6 עוד דוגמא shared in, out procedure echo(); read( in, keyboard); out = in; write( out, screen); end echo  שני חוטים מבצעים אותו קוד  החלפת חוטים בכל מקום race condition תוצאת הריצה אינה צפויה.

מערכות הפעלה ( אביב 2004) חגית עטיה ©7 יותר מידי חלב ! שעה יוסי : משה : 3:00 מסתכל במקרר 3:05 הולך לסופרמסתכל במקרר 3:10 קונה חלבהולך לסופר 3:15 חוזר הביתהקונה חלב 3:20 מכניס חלב למקררחוזר הביתה 3:25 מכניס חלב למקרר

מערכות הפעלה ( אביב 2004) חגית עטיה ©8 פיתרון 1 להשאיר פתק לפני שהולכים לסופר if (no milk) then if (no note) then leave note buy milk remove note

מערכות הפעלה ( אביב 2004) חגית עטיה ©9 בעיה עם פתרון 1 פעמיים חלב ! if (no milk) then if (no note) then if (no milk) then if (no note) then leave note buy milk remove note leave note buy milk remove note

מערכות הפעלה ( אביב 2004) חגית עטיה ©10 פיתרון 2 משאירים פתקה לפני שבודקים את המקרר : Thread A: leave note A if (no note B) then if (no milk) then buy milk remove note A Thread B: leave note B if (no note A) then if (no milk) then buy milk remove note B

מערכות הפעלה ( אביב 2004) חגית עטיה ©11 בעיה עם פתרון 2 אין חלב ! leave note A leave note B remove note A if (no note B) then if (no note A) then remove note B

מערכות הפעלה ( אביב 2004) חגית עטיה ©12 פיתרון 3 ☺ לא סימטרי אם שניהם משאירים פתק בו זמנית ( race condition ), A יקנה חלב ! לא הוגן רק לשני תהליכים  Thread A: leave note A while (note B) do nop if (no milk) then buy milk remove note A Thread B: leave note B if (no note A) then if (no milk) then buy milk remove note B

מערכות הפעלה ( אביב 2004) חגית עטיה ©13 לב הבעיה  שני תהליכים נגשים בו - זמנית לאותו משאב, ללא תיאום. למשל, בגישה למשתנים גלובליים. נוצר מרוץ ( race condition ), שתוצאתו אינה צפויה.  מנגנון לשליטה בגישות מקביליות למשאבים משותפים. כך שנוכל לחזות באופן דטרמיניסטי את התוצאות.  לכל מבנה נתונים של מערכת הפעלה ( וגם להרבה תוכניות משתמש מרובות - חוטים ). Buffers, queues, lists, hash tables

מערכות הפעלה ( אביב 2004) חגית עטיה ©14 קטע קריטי הקוד שניגש למשאב המשותף מכונה קטע קריטי שימו לב : לא בהכרח אותו קוד לכל החוטים חוט אחד מגדיל מונה וחוט שני מקטין אותו. קטע קריטי שארית הקוד

מערכות הפעלה ( אביב 2004) חגית עטיה ©15 קטע קריטי הקוד שניגש למשאב המשותף מכונה קטע קריטי עוטפים אותו בקוד כניסה וקוד יציאה ( של הקטע הקריטי ). קטע קריטי כניסה ( entry ) יציאה ( exit ) שארית הקוד

מערכות הפעלה ( אביב 2004) חגית עטיה ©16 בחזרה לבעית החלב  נסתכל שוב על ההוראות לקנית חלב : Thread A: leave note A while (note B) do nop if (no milk) then buy milk remove note A Thread B: leave note B if (no note A) then if (no milk) then buy milk remove note B קטע קריטי קוד כניסה קוד יציאה

מערכות הפעלה ( אביב 2004) חגית עטיה ©17 תכונות רצויות מניעה הדדית : חוטים לא מבצעים בו - זמנית את הקטע הקריטי. ( mutual exclusion ) חוטים מעוניינים מחכים בקטע הכניסה. כאשר החוט הנוכחי יוצא מהקטע הקריטי, יכולים להיכנס.

מערכות הפעלה ( אביב 2004) חגית עטיה ©18 תכונות רצויות מניעה הדדית : חוטים לא מבצעים בו - זמנית את הקטע הקריטי. ( mutual exclusion ) התקדמות : אם יש חוטים שרוצים לבצע את הקטע הקריטי, חוט כלשהו יצליח להיכנס. ( no deadlock, אין קיפאון ) אלא אם חוט אחר נמצא בתוך הקטע הקריטי.

מערכות הפעלה ( אביב 2004) חגית עטיה ©19 תכונות רצויות מניעה הדדית : חוטים לא מבצעים בו - זמנית את הקטע הקריטי. ( mutual exclusion ) התקדמות : אם יש חוטים שרוצים לבצע את הקטע הקריטי, חוט כלשהו יצליח להיכנס. ( no deadlock, אין קיפאון ) הוגנות : אם יש חוט שרוצה לבצע את הקטע הקריטי, לבסוף יצליח. ( no starvation, אין הרעבה ) רצוי : החוט יכנס לקטע הקריטי תוך מספר צעדים חסום ( bounded waiting ), ואפילו בסדר הבקשה ( FIFO ).

מערכות הפעלה ( אביב 2004) חגית עטיה ©20 מנעולים (locks)  אבסטרקציה אשר מבטיחה גישה בלעדית למידע באמצעות שתי פונקציות : acquire (lock) – נחסם בהמתנה עד שמתפנה המנעול. release (lock) – משחרר את המנעול.  acquire ו release מופיעים בזוגות : אחרי acquire החוט מחזיק במנעול. רק חוט אחד מחזיק את המנעול ( בכל נקודת זמן ). יכול לבצע את הקטע הקריטי.

מערכות הפעלה ( אביב 2004) חגית עטיה ©21 דוגמא לשימוש במנעולים בחזרה לפונקציה למשיכת כסף מחשבון בנק. int withdraw( account, amount) { acquire ( lock ) ; balance = get_balance( account ); balance -= amount; put_balance( account, balance); release ( lock ) ; return balance; } קטע קריטי

מערכות הפעלה ( אביב 2004) חגית עטיה ©22 המשך הדוגמא  שני תהליכים מבצעים את פעולת המשיכה  מה קורה כשהאדום מבקש את המנעול ?  מדוע ה return מחוץ לקטע הקריטי ? האם זה נכון ? acquire(lock); balance = get_balance(account); balance -= amount;// 50K-25K acquire(lock); put_balance(account, balance); release(lock); balance = get_balance(account); balance -= amount;// 25K-25K put_balance(account, balance); release(lock); return balance; // = 0 return balance;// = 25K

מערכות הפעלה ( אביב 2004) חגית עטיה ©23 מימוש מנעולים  אם היו לנו מנעולים, היה נפלא...  אבל מימוש מנעול מכיל קטע קריטי : קרא מנעול אם מנעול פנוי, אז כתוב שהמנעול תפוס.

מערכות הפעלה ( אביב 2004) חגית עטיה ©24 דרכים לממש מנעולים  פתרונות תוכנה : אלגוריתמים. מבוססים על לולאות המתנה ((busy wait.  שימוש במנגנוני חומרה : פקודות מיוחדות שמבטיחות מניעה הדדית. לא תמיד מבטיחות התקדמות. לא מובטחת הוגנות.  תמיכה ממערכת ההפעלה : מבני נתונים ופעולות שמהם ניתן לבנות מנגנונים מסובכים יותר. בדרך - כלל, מסתמכים על מגנוני חומרה.

מערכות הפעלה ( אביב 2004) חגית עטיה ©25 אלגוריתם קופת - חולים  ידוע כאלגוריתם המאפיה (bakery). [Lamport, 1978]  שימוש במספרים : חוט נכנס לוקח מספר. חוט ממתין שמספרו הקטן ביותר נכנס לקטע הקריטי.

מערכות הפעלה ( אביב 2004) חגית עטיה ©26 חלוקת מספרים : ניסיון 1 Thread i: initially number[i]=0 number[i]=max{number[1],…,number[n]}+1; for all j  i do wait until number[j]=0 or (number[j]>number[i]) critical section number[i]=0 // Exit critical section חחוט i ו -j קוראים את המערך בו זמנית בבוחרים את אותו מספר קיפאון !

מערכות הפעלה ( אביב 2004) חגית עטיה ©27 חלוקת מספרים : שבירת סימטריה Thread i: initially number[i]=0 number[i]=max{number[1],…,number[n]}+1; for all j  i do wait until number[j]=0 or ()number[j],j)>(number[i],i)) //סדר לקסיקוגרפי critical section number[i]=0 משתמשים במספר החוט (thread id).

מערכות הפעלה ( אביב 2004) חגית עטיה ©28 בעיה עם האלגוריתם המתוקן Thread 0: number[i]=0 read{number[1],…,number[n]} // max=0 Thread 1: number[i]=0 number[i]=max{number[1],…,number[n]}+1 // =1 for)number[j],j)>(number[i],i)) // (1,1) critical section number[i]=1 for all j  i do wait until number[j]=0 or )number[j],j)>(number[i],i)) critical section אין מניעה הדדית !

מערכות הפעלה ( אביב 2004) חגית עטיה ©29 חלוקת מספרים : ניסיון 3 מחכה שכל החוטים יבחרו מספרים Thread i: initially number[i]=0; choosing[i]=true; number[i]=max{number[1],…,number[n]}+1; choosing[i]=false; for all j  i do wait until choosing[j]=false; for all j  i do wait until number[j]=0 or ()number[j],j)>(number[i],i)); critical section number[i]=0 // Exit critical section

מערכות הפעלה ( אביב 2004) חגית עטיה ©30 נכונות האלגוריתם  מבטיח מניעה הדדית.  הוגן ( אין הרעבה ), כניסה לקטע הקריטי לפי סדר הגעה.  מסורבל הרבה פעולות, הרבה משתנים פונקציה של מספר החוטים דרכים אחרות לתיאום בין חוטים / תהליכים... עזרה מהחומרה.