
4c4ebc717ed42398132512001bb57c7c.ppt
- Количество слайдов: 30
תיאום בין תהליכים: יסודות p p p 1 דוגמאות לבעיות תיאום הגדרות: קטע קריטי, מנעולים אלגוריתם קופת-חולים © חגית עטיה מערכות הפעלה )אביב 4002(
תיאום p תהליכים משתפים פעולה: n n גישה למשאבים משותפים, למשל זיכרון משותף )בעיקר חוטים(. העברת נתונים מתהליך אחד לשני דרך התקן משותף. p חייבים לתאם את השיתוף: n מניחים שביצוע התהליכים משולב באופן שרירותי. למתכנת האפליקציה אין שליטה על זימון התהליכים. n 2 שימוש במנגנוני תיאום ). (synchronization © חגית עטיה מערכות הפעלה )אביב 4002(
דוגמא: בנק הפועלים p מימשנו פונקציה למשיכת כסף מחשבון בנק. { ) int withdraw( account, amount ; ) balance = get_balance( account ; balance -= amount ; ) put_balance( account, balance ; return balance } p בחשבון יש 00005$, ושני בעלי החשבון ניגשים לכספומטים שונים ומושכים 00052$ בו-זמנית. 3 © חגית עטיה מערכות הפעלה )אביב 4002(
? בנק הפועלים: אין כסף תהליך נפרד מבצע כל פעולת משיכה p ( )על אותו מעבד balance = get_balance(account); balance -= amount; // 50 K-25 K put_balance(account, balance); return balance; // = 25 K balance = get_balance(account); balance -= amount; // 25 K-25 K put_balance(account, balance); return balance; // = 0 . . 0$ בחשבון (2004 מערכות הפעלה )אביב © חגית עטיה 4
! בנק הפועלים: יש כסף תהליך נפרד מבצע כל פעולת משיכה p. ( )על אותו מעבד balance = get_balance(account); balance -= amount; // 50 K-25 K put_balance(account, balance); return balance; // = 25 K ? מי שמח עכשיו (2004 מערכות הפעלה )אביב © חגית עטיה 5
עוד דוגמא p p שני חוטים מבצעים אותו קוד החלפת חוטים בכל מקום shared in, out ; )( procedure echo ; ) read( in, keyboard ; out = in ; ) write( out , screen end echo race condition תוצאת הריצה אינה צפויה. 6 © חגית עטיה מערכות הפעלה )אביב 4002(
יותר מידי חלב! משה: שעה יוסי: 0: 3 0 0: 3 5 הולך לסופר מסתכל במקרר 1: 3 0 קונה חלב הולך לסופר 1: 3 5 חוזר הביתה קונה חלב 2: 3 0 7 מסתכל במקרר מכניס חלב למקרר חוזר הביתה 2: 3 5 © חגית עטיה מכניס חלב למקרר מערכות הפעלה )אביב 4002(
פיתרון 1 להשאיר פתק לפני שהולכים לסופר if (no milk) then if (no note) then leave note buy milk remove note 8 © חגית עטיה מערכות הפעלה )אביב 4002(
1 בעיה עם פתרון if (no milk) then if (no note) then leave note buy milk remove note (2004 מערכות הפעלה )אביב ! פעמיים חלב © חגית עטיה 9
2 פיתרון : משאירים פתקה לפני שבודקים את המקרר Thread A: leave note A if (no note B) then if (no milk) then buy milk remove note A (2004 מערכות הפעלה )אביב Thread B: leave note B if (no note A) then if (no milk) then buy milk remove note B © חגית עטיה 10
2 בעיה עם פתרון leave note A leave note B if (no note B) then if (no note A) then remove note B remove note A ! אין חלב (2004 מערכות הפעלה )אביב © חגית עטיה 11
☺ 3 פיתרון לא סימטרי 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 יקנה A , (race condition) אם שניהם משאירים פתק בו זמנית ! חלב לא הוגן n רק לשני תהליכים (2004 מערכות הפעלה )אביב © חגית עטיה 12
לב הבעיה p שני תהליכים נגשים בו-זמנית לאותו משאב, ללא תיאום. n n למשל, בגישה למשתנים גלובליים. נוצר מרוץ ) , (race condition שתוצאתו אינה צפויה. p מנגנון לשליטה בגישות מקביליות למשאבים משותפים. n כך שנוכל לחזות באופן דטרמיניסטי את התוצאות. p לכל מבנה נתונים של מערכת הפעלה )וגם להרבה תוכניות משתמש מרובות-חוטים(. n 31 Buffers, queues, lists, hash tables © חגית עטיה מערכות הפעלה )אביב 4002(
קטע קריטי הקוד שניגש למשאב המשותף מכונה קטע קריטי שארית הקוד קטע קריטי שימו לב: לא בהכרח אותו קוד לכל החוטים n 41 חוט אחד מגדיל מונה וחוט שני מקטין אותו. © חגית עטיה מערכות הפעלה )אביב 4002(
קטע קריטי הקוד שניגש למשאב המשותף מכונה קטע קריטי עוטפים אותו בקוד כניסה וקוד יציאה )של הקטע הקריטי(. שארית הקוד כניסה ) (entry קטע קריטי יציאה ) (exit 51 © חגית עטיה מערכות הפעלה )אביב 4002(
בחזרה לבעית החלב : נסתכל שוב על ההוראות לקנית חלב p Thread A: leave note A while (note B) do nop if (no milk) then buy milk remove note A קטע קריטי קוד יציאה (2004 מערכות הפעלה )אביב קוד כניסה Thread B: leave note B if (no note A) then if (no milk) then buy milk remove note B © חגית עטיה 16
תכונות רצויות מניעה הדדית: חוטים לא מבצעים בו-זמנית את הקטע הקריטי. ) (mutual exclusion n n 71 חוטים מעוניינים מחכים בקטע הכניסה. כאשר החוט הנוכחי יוצא מהקטע הקריטי, יכולים להיכנס. © חגית עטיה מערכות הפעלה )אביב 4002(
תכונות רצויות מניעה הדדית: חוטים לא מבצעים בו-זמנית את הקטע הקריטי. ) (mutual exclusion התקדמות: אם יש חוטים שרוצים לבצע את הקטע הקריטי, חוט כלשהו יצליח להיכנס. ) , no deadlock אין קיפאון( n 81 אלא אם חוט אחר נמצא בתוך הקטע הקריטי. © חגית עטיה מערכות הפעלה )אביב 4002(
תכונות רצויות מניעה הדדית: חוטים לא מבצעים בו-זמנית את הקטע הקריטי. ) (mutual exclusion התקדמות: אם יש חוטים שרוצים לבצע את הקטע הקריטי, חוט כלשהו יצליח להיכנס. ) , no deadlock אין קיפאון( הוגנות: אם יש חוט שרוצה לבצע את הקטע הקריטי, לבסוף יצליח. ) , no starvation אין הרעבה( n 91 רצוי: החוט יכנס לקטע הקריטי תוך מספר צעדים חסום מערכות הפעלה )אביב 4002( עטיה © חגיתבסדר הבקשה ). (FIFO ) , (bounded waiting ואפילו
מנעולים ) (locks p אבסטרקציה אשר מבטיחה גישה בלעדית למידע באמצעות שתי פונקציות: n n ) – acquire (lock נחסם בהמתנה עד שמתפנה המנעול. ) – release (lock משחרר את המנעול. acquire p ו release מופיעים בזוגות: n n n 02 אחרי acquire החוט מחזיק במנעול. רק חוט אחד מחזיק את המנעול )בכל נקודת זמן(. יכול לבצע את הקטע הקריטי. © חגית עטיה מערכות הפעלה )אביב 4002(
דוגמא לשימוש במנעולים . בחזרה לפונקציה למשיכת כסף מחשבון בנק int withdraw( account, amount) { acquire ( lock ) ; balance = get_balance( account ); balance -= amount; קטע קריטי put_balance( account, balance); release ( lock ) ; return balance; } (2004 מערכות הפעלה )אביב © חגית עטיה 21
המשך הדוגמא שני תהליכים מבצעים את פעולת המשיכה p מה קורה כשהאדום מבקש ? את המנעול p מחוץ לקטע return מדוע ה ? הקריטי p acquire(lock); balance = get_balance(account); balance -= amount; // 50 K-25 K acquire(lock); put_balance(account, balance); release(lock); balance = get_balance(account); balance -= amount; // 25 K-25 K put_balance(account, balance); release(lock); return balance; // = 0 return balance; // = 25 K (2004 מערכות הפעלה )אביב ? האם זה נכון © חגית עטיה n 22
מימוש מנעולים p אם היו לנו מנעולים, היה נפלא. . . p אבל מימוש מנעול מכיל קטע קריטי: n n n 32 קרא מנעול אם מנעול פנוי, אז כתוב שהמנעול תפוס. © חגית עטיה מערכות הפעלה )אביב 4002(
דרכים לממש מנעולים p פתרונות תוכנה: n n אלגוריתמים. מבוססים על לולאות המתנה ). (busy wait p שימוש במנגנוני חומרה: n n n פקודות מיוחדות שמבטיחות מניעה הדדית. לא תמיד מבטיחות התקדמות. לא מובטחת הוגנות. p תמיכה ממערכת ההפעלה: n n 42 מבני נתונים ופעולות שמהם ניתן לבנות מנגנונים מסובכים יותר. בדרך-כלל, מסתמכים על מגנוני חומרה. © חגית עטיה מערכות הפעלה )אביב 4002(
אלגוריתם קופת-חולים p ידוע כאלגוריתם המאפיה ). (bakery ]8791 , [Lamport p שימוש במספרים: n n 52 חוט נכנס לוקח מספר. חוט ממתין שמספרו הקטן ביותר נכנס לקטע הקריטי. © חגית עטיה מערכות הפעלה )אביב 4002(
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 קוראים את המערך בו זמנית j- ו i חוט בוחרים את אותו מספר ! קיפאון (2004 מערכות הפעלה )אביב © חגית עטיה p p 26
חלוקת מספרים: שבירת סימטריה 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 מערכות הפעלה )אביב © חגית עטיה 27
בעיה עם האלגוריתם המתוקן 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 מערכות הפעלה )אביב © חגית עטיה 28
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 מערכות הפעלה )אביב © חגית עטיה 29
נכונות האלגוריתם p מבטיח מניעה הדדית. p הוגן )אין הרעבה(, כניסה לקטע הקריטי לפי סדר הגעה. p מסורבל n n הרבה פעולות, הרבה משתנים פונקציה של מספר החוטים דרכים אחרות לתיאום בין חוטים / תהליכים. . . עזרה מהחומרה. 03 © חגית עטיה מערכות הפעלה )אביב 4002(