OS2_scheduling

Download Report

Transcript OS2_scheduling

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