320 likes | 442 Views
ניהול וזִמְנוּן תהליכים. השקפים בהשראת 'מבוא למערכות הפעלה'/234119/טל כהן + איתן קוך + האוניברסיטה הפתוחה. ניהול תהליכים - הקדמה . ריבוי תהליכים על מעבד בודד, כיצד? בכל רגע נתון רץ רק תהליך אחד: "התהליך הנוכחי" התהליכים האחרים : ממתינים לביצוע או ממתינים לק/פ או לקבלת משאב אחר
E N D
ניהול וזִמְנוּן תהליכים השקפים בהשראת 'מבוא למערכות הפעלה'/234119/טל כהן +איתן קוך+ האוניברסיטה הפתוחה
ניהול תהליכים - הקדמה • ריבוי תהליכים על מעבד בודד, כיצד? • בכל רגע נתון רץ רק תהליך אחד:"התהליך הנוכחי" • התהליכים האחרים : ממתינים לביצוע או ממתינים לק/פ או לקבלת משאב אחר • המכניזם:החלפת הקשר נושאי השיעור: • המוטיבציה:ריבוי תהליכים והחלפת תהליכים יזומה (ע“י מ"ה) • מנגנון החלפת ההקשר • מדיניות זמנון
יתרונות החלפת תהליכים יזומה (ע"י מ"ה) • יתרונות: • ניצול מירבי של המעבד וההתקנים • תהליך בודד אינו חוסם את שאר התהליכים • תמיכה יעילה במשתמשים אינטראקטיביים • תהליכים יכולים להתקשר זה עם זה ולהסתנכרן • לעיתים, אפליקציה מרובת תהליכים פשוטה יותר להבנה, מימוש ותחזוקה
חסרונות החלפת תהליכים יזומה (ע"י מ"ה) • חסרונות: • תהליך אינו מקבל את כל משאבי המערכת • זמן ביצוע התהליך משתנה מריצה לריצה (תלוי בעומס הנוכחי) • תהליך אינו יכול להסתמך על "אי-יציאתו" מהמעבד (למה שירצה?...) • זמן החלפת התהליכים נושא תקורה – זהו זמן "מבוזבז"
מנגנון החלפת ההקשר – תאור כללי על מנת להחליף תהליך P (רץ כרגע) בתהליך אחר (מוכן לריצה): • מ"ה "מצלמת" את P כדי שתוכל לשחזר את מצבו ולהחזירו לריצה • בוחרת תהליך אחר Q מבין כל המוכנים לריצה. • מפסיקה את פעולת P • משחזרת את Q ומתחילה להפעיל אותו התמונה של תהליך נקראת ההקשר שלו. ההקשר מוכרח להכיל מספיק מידע לשיחזור ההרצה שהופסקה
תקורת החלפת ההקשר • התקורה: ה"צילום", ההחלטה את מי להריץ, השחזור • דוגמא: • נניח שמתבצעת החלפה כל 100 מילי-שניות • נניח שלוקחות 3 מילי-שניות להחליף הקשר • אזי מזמן העיבוד מתבזבז (במהירות העיבוד האפשרית כיום ההחלפה יכולה להתבצע בפחות ממילי-שנייה)
רכיבי מנגנון החלפת ההקשר נלמד עכשיו על: • המצבים האפשרים של תהליך • טבלת התהליכים – המידע הנשמר על יד מ"ה עבור כל תהליך. (נקרא גם Process Control Block (PCB)) • מבנה נתונים לניהול תהליכים: תור "מוכנים לריצה" • מדיניות (אלגוריתם) זמנון – מי התהליך הבא שיכנס לריצה?
Interrupt Admitted (Started) Event Complete Dispatched Normal or Abnormal Exit I/O or other Event Wait מבחינת החלפת הקשר: רק מצבי Ready ו-Current רלוונטיים מצבי תהליכים: דיאגרמת שינוי מצב של תהליך Ready Current New Waiting Terminated
Process State Priority Process number Program Counter Stack Pointer <registers> I/O Status Information Memory Information Base Limits File Information Accounting Information טבלת התהליכים (PCB - Process Control Block ) • הטבלה מכילה רשומה לכל תהליך • רשומת תהליך מכילה מידע על מצב התהליך ועל ההקשר הדרוש להרצתו (מכילה גם מידע נוסף שאינו רלוונטי להחלפת הקשר) • רשומת תהליך נראית בערך כך: • אינדקס הכניסה בטבלה של תהליך הוא המזהה שלו (Pid)
מבנה נתונים:תור הממתינים לריצה תור הממתינים לריצה: תור דו-כווני הממוין לפי עדיפויות (נקרא "תור עדיפויות") Ready Queue head tail PCB 12 Prio: 200 PCB 42 Prio 200 PCB 3 Prio 100 PCB 41 Prio 3 PCB 0 <NULL> Prio 0
כיצד התהליך מוחלף? • ברמת החומרה נוצרת פסיקה כל תקופת זמן. • חיפוש פסיקות נעשה כל מחזור פקודה. • קיים מקום מיועד מראש בזיכרון שם רשומה כתובת התהליך עם העדיפות הגבוהה ביותר. • ההחלפה נעשית על ידי רוטינה ייעודית (נפרד מהתהליך system)
מדיניות תזמון – אלמנטים מרכזיים • התהליך הבא נבחר מבין אלו הנמצאים בתור הממתינים • שני אלמנטים מרכזיים אשר יכולים להוות את הבסיס למדיניות תזמון: • פרק זמן קצוב:לאחר לכל היותר פרק זמן (הנקרא בדרך כלל Quantum) בו רץ התהליך הנוכחי הוא מוחלף – • חלוקה זו מבטיחה סוג מסוים של הוגנות ("סוציאליסטית") • עדיפויות (בשקף הבא...)
מדיניות תזמון – אלמנטים מרכזיים • עדיפויות: • התהליך הנוכחי הוא התהליך בעל העדיפות (הנוכחית) הגבוהה ביותר. • עדיפויות יכולות להשתנות באופן דינאמי. • מדיניות זו מבטיחה סוג אחר של הוגנות ("קפיטליסטית" או "מעמדית"...)
שיקולים בקביעת עדיפויות • תהליכים של משתמשים "חשובים" יקבלו עדיפות גבוהה • system-administrator, managers... • עדיפות גבוהה לתהליכים שסיומם דחוף • תהליכים אינטראקטיביים יקבלו עדיפות גבוהה
שיקולים בקביעת עדיפויות • נרצה שתהליכי "צְדַקה" יהיו בעדיפות מינימלית: • חישובים מבוזרים קולקטיביים (לפיצוח בעיות קשות) • להטענת מסמכים מהרשת (Push Technology) • חישוב עד מיליון ספרות • צדקה...
קריטריונים להחלטה: • בני מדידה: • זמן ההגעה של הבקשה • הקדימות הראשונית של הבקשה • מוערכים (בדר"כ רלוונטי לעבודות אצווה בלבד, וגם שם ההערכה לא מדויקת): • זמן היע"מ • זיכרון • שורות פלט • משאבים נוספים • כל השיקולים האלה נותנים לנו מדד ל 'עדיפות ראשונית'.
דוגמא: חישוב עדיפויות ב-UNIX ערך גבוה יותר – עדיפות נמוכה יותר • מחלקים את הזמן לקוונטות 1,2,3,… • עדיפות תהליך בתחילת הקוונטה ה- היא: • Basej: עדיפות ראשונית של תהליך j • Uj(i): תצרוכת יע"ם של תהליך j בזמןi ערך חיובי בטווח 1..19 בשליטת המשתמש ממוצע נע משוקלל אקספוננציאלית yi-1(yi= αxi + (1 - α
איך בוחרים מדיניות תזמון? • ניתן להביא בחשבון מספר קריטריונים. למשל: • ניצול מקסימלי של המעבד • מִזְעוּר תְקוּרה • זמן תגובה מינימלי (לטובת משתמשים אינטראקטיביים) • הספק (throughput):נרצה כי מספר גדול ככל האפשר של תהליכים יסיימו את ריצתם בפרק זמן נתון • בדרך כלל מתקיים tradeoff בין הקריטריונים השונים:מדיניות תזמון המשפרת אחד מהם גורמת להרעה באחרים • דוגמה קלאסית ל online-algorithm, כלומר אלג' אופטימיזציה שמקבל את הנתונים בזמן ריצה במקום מראש.
אלגוריתמי תזמון • First Come First Serve (FCFS): non-preemptive ידוע גם כ – 'FIFO' התהליך שהגיע ראשון לתור הממתינים יכנס ראשון • לא מספק דרישות שיתוף (time sharing). • לא מתיימר למקסם ניצול התקנים • Shortest Job First (SJF): preemptive או non-preemptive התהליך בעל יתרת זמן ריצה מינימלית יכנס ראשון • דורש ניבוי זמן הריצה של תהליך – כיצד? שני אלגוריתמים אלו הם בעצם מקרים פרטיים של תזמון עדיפויות
דוגמא:FCFS ו SJF FCFS: P1 P2 P3 Execute time24 3 3 Wait time 0 24 27 Average wait time = (0+24+27)/3 = 17 ms SJF: P2 P3 P1 Now Average wait time = (0+3 + 6)/3 = 3 ms
דוגמא: SJF • לכל תהליך נציין את זמן העיבוד הרציף הנותר (למשל עד ק/פ) ב-ms • למשל P1 (6) P2(8) P3 (7) P4 (3) • סדר הריצה יהיה P4, P1, P3, P2 • זמן ההמתנה הממוצע (Avg wait time)יהיה8ms • בממוצע על כל הסדרים האפשריים FCFS נותן 12.07ms
בעיות עם SJF ופתרונות • אי אפשר להיות הוגן באופן מוחלט • יכול לקרות מצב בו תהליכים ארוכים נדחפים לסוף התור לנצח, אם כל הזמן מגיעות בקשות קצרות. • פתרונות: • נגביל את מספר הפעמים שתהליך יכול להיעקף. זה נקרא מדיניות:shortest process next, with bypass and freeze • וותק בתור, למשל: • c’ = (זמן יע"מ משוער) / (1 + (זמן המתנה)/k) לוקחים את התהליך בעל הc’ הנמוך ביותר כתהליך הבא. k מבטא קבוע כלשהו, המעיד על מידת החשיבות שאנחנו נותנים לזמן ההמתנה.
מדיניות Round Robin • מדיניות Round Robin (RR): • מחלקים את הזמן למרווחי זמן קבועים הנקראים (Quantom) • כל התהליכים המתחרים מאורגנים בתור מעגלי • התהליכים נכנסים לעיבוד לפי סדר הופעתם בתור • כל תהליך מקבל לכל היותר Quantum בכל סיבוב
מדיניות Round Robin • מספר תכונות של RR: • Preemptive • ביצועי RR תלויים בגודל Quantum. • נשים לב כי עבור Quantum גדול מאד, RR שקול (אפקטיבית) ל-FCFS • כי ב -quantum אחד, כל המשימה מתבצעת.
סיום PCB בביצוע PCB בהמתנה ...... PCB בהמתנה כניסה מצב 'מוכן' Round-Robin
השוואות • נניח שזמן הקוונטה הוא q ויש n תהליכים לפני התהליך הנוכחי. • m - מספר הפעמים שתהליך צריך להיכנס למצב ביצוע בממוצע. • זמן התגובה (התחלת תהליך): nq • מסקנה: להקטין את q. הבעיה שאי אפשר להקטין יותר מדי בגלל התקורה של החלפת ההקשר.
זמן המתנה • נניח ש t >> q (כלומר לא מסתיים בקוונטה אחת). • נניח שזמן הביצוע של התהליך ה -i הוא ti = mi * q. • זמן ההמתנה = mi(n*q) = n(mi*q) = nti • (עובר mi פעמים במעגל, כל פעם זה nq זמן).
זמן המתנה • ב - FCFS הזמן היה nT • ההבדל הוא ש -ti מתייחס לתהליך עצמו, ו -T לתהליך 'ממוצע'. • כלומר לתהליך כדאי להיות ב RR אם mi < m, כלומר אם הוא קצר מהממוצע. • אם כל התהליכים בתור הם שווי אורך, זמן ההמתנה בשיטת הריצה המעגלית שווה לזה של FCFS.
זמן סיום • זמן סיום = זמן המתנה + זמן ביצוע • תהליכים קצרים (משך ביצוע קטן מ q): nq + q • תהליכים ארוכים: miq + nti • תהליכים ארוכים 'מקופחים' באופן זה. ישנן גישות לתיקון. • למשל, לתת q,2q,4q וכו' זמן מעבד לפי מספר הכניסה לתור. כלומר, ככל שיותר זמן ממתינים, כך העדיפות גדלה.
דוגמה למשבץ המערב מספר אסטרטגיות: FCFS, כי תהליכים קצרים וצפויים, חבל לבזבז תקורה PCB ... PCB רמה 0: מערכת FCFS, כי תהליכים יחסית נדירים PCB ... PCB רמה 1: משתמש בקדימות גבוהה ריצה מעגלית עם q קטן PCB ... PCB רמה 2: מסופים (ללא עיבוד מקומי. דורש אינטראקטיביות מיידית) ריצה מעגלית עם q ארוך רמה 3: משתמשים אחרים FCFS (או SJF) רמה 4: משתמשי אצווה רמה 5:idle process