פרק רביעי – תקשורת בין תהליכים פנימיים מבוא למערכות הפעלה תהליכים תזמון תהליכים תקשורת בין תהליכים פנימיים נעילה (תקיעה) תהליכים קלי משקל ניהול זיכרון זיכרון וירטואלי מדיניות ניהול זיכרון וירטואלי מערכת הפעלה עם קוד פתוח Operating Systems - 2010 Shayke Bilu
בעיית יצרן - צרכן/ שרת - לקוח Producer - Consumer Problem Producer Process תהליך יצרני Consumer Process תהליך צרכני Produce Put in buffer Consume Get from buffer BUFFER ה- buffer הוא משתנה משותף לצרכן וליצרן Operating Systems - 2010 Shayke Bilu
התקדמות לאורך זמן ... Producer Consumer 1 2 c2 p1 p4 p3 p2 4 3 t Buffer 3 instead of 2! c1 שני התהליכים מתחילים יחד באותה נקודת זמן והצרכן משתמש בערך התחלתי ישן Operating Systems - 2010 Shayke Bilu
מצב התחלתי מכוון את התזמון וקובע מי מהתהליכים יתחיל ראשון, מי שני וכך הלאה… תמיד גדול הסיכוי שהרצת תהליכים שונים יביאו אותם לנקודת הסיום עם תוצאות שונות Operating Systems - 2010 Shayke Bilu
המקטעים הקריטיים המקטע הקריטי החלק מהקוד שבו התהליך משתנה וקיימת נגישות למשתנים משותפים (shared variables) מניעה הדדית (Mutual Exclusion) שיטה של מניעה אשר מבטיחה שאחד, או מספר תהליכים נמצא/ים במצב קריטי Operating Systems - 2010 Shayke Bilu
מדוע צריכים תהליכים לתקשר? כדי לקיים סנכרון בין ביצועי תהליכים במעבד להחלפת מידע ונתונים ביניהם למניעת ביצוע כפול של פרוצדורות פנימיות לניצול יעיל יותר של משאבי מחשב, עיבוד משימות ושימוש בציוד היקפי Operating Systems - 2010 Shayke Bilu
התנאים לביצוע מקטעים קריטיים 1. לא יכנסו שני תהליכים באותו זמן למקטע קריטי 2. אין לבצע הנחה לגבי מהירות התהליך או לגבי מספר יחידות העיבוד המרכזיות הנדרשות עבורו 3. תהליך מחוץ למקטע הקריטי לא יגרום נעילה לתהליכים שכנים אחרים 4. תהליך לא ימתין עד אין סוף עד לכניסה למקטע הקריטי Operating Systems - 2010 Shayke Bilu
בעיית מניעה הדדית - הרעבה Starvation ידועה גם כבעיה לא מוגדרת של דחייה הגדרה: דחייה לא מוגדרת של לוח הזמנים של תהליך תוך כדי העדפת תהליך אחר על פניו סיבה: בדרך כלל נטייה של מדיניות התזמון של מערכת ההפעלה ( בעיה של אלגוריתם תזמון שגוי) פתרון: יישום צורה מסוימת של הארכת הזמן (“הזדקנות מהירה”) Operating Systems - 2010 Shayke Bilu
בעיה נוספת: נעילה (תקיעה) שני תהליכים (או יותר) נעולים וממתינים לאירוע שלעולם לא יתרחש באופן כללי, A ממתין ל- B לבצע דבר מה ובאותה עת B ממתין ל- A שניהם A ו- B אינם עושים דבר אזי שני האירועים שלהם לא יתרחשו לעולם Operating Systems - 2010 Shayke Bilu
יישום מניעה הדדית Mutual Exclusion שלוש אפשרויות יישום: מתכנת בונה שיטה אשר נטמעת בתוכנית חומרה: ציוד חומרה ייחודי מוקצה ליישום המניעה ההדדית מערכת הפעלה: מקצה שירותים אשר ניתנים לשימוש ע”י המתכנת כל השיטות מבוססות על קוד מסוים עבור: כניסה למקטעים קריטיים יציאה ממקטעים קריטיים הפונקציות סוגרות על המקטעים הקריטיים Operating Systems - 2010 Shayke Bilu
יישום מניעה הדדית Mutual Exclusion יישומים של מניעה הדדית הם: מתוכננים ומבוצעים ע”י המתכנת קשים לביצוע נכון, ישים וללא שגיאות ידועים בחוסר היעילות שבהם כל אלה מבוססים על כך שהמעבד בד”כ תפוס תהליך בודק את מצב המעבד, הוא ממשיך בלולאה עד שהתהליך שהוגדר כתפוס משנה מצבו Operating Systems - 2010 Shayke Bilu
סמפורים (Semaphores) התקדמות נכבדת כלולה במערכות הפעלה מודרניות כגון: Unix, WinME,Win2000, Os/2 סמפור הוא: שלם שאינו שלילי יש לו שתי פעולות בעלות משמעות שאינן ניתנות לחלוקה Operating Systems - 2010 Shayke Bilu
עוד על סמפורים קיימים שני סוגי סמפורים נפוצים: סמפור בינארי שיכול לקבל מצבים של 0 או 1 סמפור מונה שיכול לקבל כל משתנה שלם לא שלילי סמפורים הם יישומי שירותים הניתנים ע”י מערכת ההפעלה המשתמשים בשיטות שהוצגו זה מכבר בדרך כלל ע”י פסילת ומניעת מצבי פסיקות לפרקי זמן קצרים וקצובים מראש Operating Systems - 2010 Shayke Bilu
בעיית יצרן - צרכן פתרון ע”י סמפורים Produce Wait (mutex) Put in buffer Signal (mutex) Wait (mutex) Get from buffer Signal (mutex) Consume CS בתחילה ערכו של סמפור ה - mutex = 1 Operating Systems - 2010 Shayke Bilu
העברת הודעות מאפשרת העברת מידע, נתונים והודעות באופן מסונכרן הפעלת הודעות: שלח (Send) - מחייב יעד/כתובת ותוכן הודעה קבל (Receive) - מחייב מקור/כתובת ותוכן הודעה Operating Systems - 2010 Shayke Bilu