30
הההההה ההההה ההההה9 ההההה הההההה הההה

מערכות הפעלה

Embed Size (px)

DESCRIPTION

מערכות הפעלה. תרגול 9 – ניהול פסיקות שעון. מה בתכנית?. ניהול פסיקות שעון אתחול המערכת. פסיקת השעון. מתרחשת כל הזמן בצורה מחזורית הפרשי זמן קצרים, המערכת נשארת בשליטה נותנת למערכת לספור זמן, התרחשות הפסיקה פירושה שעברה יחידת זמן נוספת שימוש של XINU : - PowerPoint PPT Presentation

Citation preview

Page 1: מערכות הפעלה

מערכות הפעלה

ניהול פסיקות שעון –9תרגול

Page 2: מערכות הפעלה

8מערכות הפעלה - תרגול 201:51

מה בתכנית?

ניהול פסיקות שעוןאתחול המערכת

Page 3: מערכות הפעלה

8מערכות הפעלה - תרגול 301:51

פסיקת השעון

מתרחשת כל הזמן בצורה מחזוריתהפרשי זמן קצרים, המערכת נשארת בשליטה נותנת למערכת לספור זמן, התרחשות הפסיקה

פירושה שעברה יחידת זמן נוספת שימוש שלXINU:

-מנגנון הpreemptionהרדמת תהליכים( ניהול שעון גלובלי מאז עלית המערכתtod )

Page 4: מערכות הפעלה

8מערכות הפעלה - תרגול 401:51

clkintשגרת פסיקת השעון -

הקוד הייחודי של פסיקת השעון נקראת ע"י סדרן הפסיקותintcom המצביע לשגרה נמצא בשדה newisr

, טבלת הפסיקות של intmapבטבלת XINU

Page 5: מערכות הפעלה

8מערכות הפעלה - תרגול 501:51

הרדמת התהליכים

תהליך נכנס להרדמה רק אם הוא בעצמוהחליט על כך

– שגרות ההרדמהsleep, sleept כל החישובים – ביחידות של פסיקות

השעון המימוש יעיל ככל האפשר – משפיע על

מהירות הביצוע של שגרת פסיקת השעון

Page 6: מערכות הפעלה

8מערכות הפעלה - תרגול 601:51

תור ההפרשים

התהליכים הרדומים נמצאים בתורההפרשים

הסדר – לפי סדר ההתעוררותqkey שומר את ההפרש בזמן בין שני

תהליכים עוקבים עבור התהליך הראשון בתור, המפתח

שומר את מספר הפעימות שנשארו עד שיתעורר, שמתעדכן עם כל פעימת שעון

Page 7: מערכות הפעלה

8מערכות הפעלה - תרגול 701:51

תור ההפרשים

עדכון ההמתנות בעקבות פסיקה כרוך בהפחתהשל מפתח ראשון בלבד

זמן ההמתנה של תהליך יהיה שווה שסכום ערכיהמפתח של כל מי שלפניו

(, תהליך 0כשתהליך יוצא מתור )ערך המפתחשנהיה הראש החדש יתחיל את הספירה לאחור

?למה זה טוב

Page 8: מערכות הפעלה

דוגמה תור הפרשים :: זמני המתנה

12 : 3, תהליך 20 : 2, תהליך 15: 1תהליך

:qבטבלת

8מערכות הפעלה - תרגול 801:51

1323 = (15-12)

21tail5 = (20-12-3)

3head112

…………

head-3

tail2-

Page 9: מערכות הפעלה

8מערכות הפעלה - תרגול 901:51

insertd.c

- הכנסת תהליך לתור ההפרשיםinsertdלא משתתפת בפסיקת שעון עוברת על התור במטרה למצוא את

ההפרש הקרוב ביותר לנתון – סכום של ערכי המפתח של כל מי שלפניו אמור

להיות קטן שווה למספר הפעימות שהוא sleepאמור להכנס למצב

Page 10: מערכות הפעלה

8מערכות הפעלה - תרגול 1001:51

sleep.h

Page 11: מערכות הפעלה

8מערכות הפעלה - תרגול 1101:51

insertd.c

Page 12: מערכות הפעלה

8מערכות הפעלה - תרגול 1201:51

sleept.c/sleep.c

sleept מממשת המתנה בפסיקות שעון פסיקות(32767 דקות )30עד sleep מממשת המתנה בשניות, תוך

המרה פנימית ליחידות פסיקת שעון-דקות 30אם זמן ההרדמה גדול מ

התהליך מרדים את עצמו כמה פעמים. השיטה הזאת לא מדויקת. למה?

Page 13: מערכות הפעלה

8מערכות הפעלה - תרגול 1301:51

sleept.c/sleep.c

-דקות 30אם זמן ההרדמה גדול מ התהליך מרדים את עצמו כמה פעמים.

השיטה הזאת לא מדויקת. למה? זה נכון בהנחה שתהליך הופך להיות

current בסוף כל הרדמה קצובה זה לא המצב – בגלל מדיניות החלפת

התהליכים

Page 14: מערכות הפעלה

8מערכות הפעלה - תרגול 1401:51

sleept.c

Page 15: מערכות הפעלה

8מערכות הפעלה - תרגול 1501:51

sleep.c

Page 16: מערכות הפעלה

8מערכות הפעלה - תרגול 1601:51

wakeup.c

משחררת תהליכים רדומים התהליך משוחרר כל עוד המפתח שלו

קטן או שווה לאפס

Page 17: מערכות הפעלה

8מערכות הפעלה - תרגול 1701:51

clkint.c

הפחתת המפתח הראשון באחדהאם קיימים תהליכים שחייבים הבדיק

להתעורר, הוצאה מתור הרדומים-טיפול בpreemption-האם ערך הpreempt?יכול להיות שלילי כן, במקרה של תהליך עם עדיפות גבוהה

שלא מתחלף כשזמנו נגמר.

Page 18: מערכות הפעלה

8מערכות הפעלה - תרגול 1801:51

clkint.c

Page 19: מערכות הפעלה

8מערכות הפעלה - תרגול 1901:51

clkint.c

מקדמת אתtodבאחד סדר הפעולות הוא חשוב מה יקרה אםresched יקדים את הטיפול

בתור הרדומים? ,ההמתנה עלולה להתארך מעבר למצופה

עד לפסיקה הבאה ואפילו יותר מזה

Page 20: מערכות הפעלה

8מערכות הפעלה - תרגול 2001:51

החלפת תהליכים בזמן פסיקה

-האם זה בטוח לקרוא לresched מתוך ?clkintשגרת

עם החלפת תהליכים חזרה מפסיקהיכולה לקחת זמן )ואפילו להימשך לנצח(

?אז איך בכל זאת זה עובד

Page 21: מערכות הפעלה

8מערכות הפעלה - תרגול 2101:51

החלפת תהליכים בזמן פסיקה

למה צריך לטפל בפסיקה במהירות? צריך להודיע לחמרה שהפסיקה טופלה

במהירות, אחרת מנגנון הפסיקות ישתבש מנגנון הפסיקות חסום בזמן הפסיקה שגם

עלול לשבש פעילות מחשב תקינה התכנית המופסקת אמורה לא "לחוש" את

הפסיקה

Page 22: מערכות הפעלה

8מערכות הפעלה - תרגול 2201:51

החלפת תהליכים בזמן פסיקה

איך זה עובד?-לא קוראים לresched לפני שהודענו

לחמרה שהפסיקה טופלה גם אם יש החלפה, מנגנון ישוחרר על ידי

restore של התהליך הנכנס ההנחה היא שמערכת ההפעלה עובדת

בצורה סבירה

Page 23: מערכות הפעלה

8מערכות הפעלה - תרגול 2301:51

דוגמה

עלינו לשנות את השגרהsleept כך שתהיה מסוגלת לקבל ערכים העולים על

TICSD-דקות(30 )יותר מ ,נגדיר מערך חדשsleep_time[NPROC] נממש שגרתwakeup ,חדשה

wakeup_new)(

Page 24: מערכות הפעלה

8מערכות הפעלה - תרגול 2401:51

-clkint.cדוגמה

Page 25: מערכות הפעלה

8מערכות הפעלה - תרגול 2501:51

-new_wakeup.cדוגמה

Page 26: מערכות הפעלה

9מערכות הפעלה - תרגול 2601:51

CPU time limitדוגמה –

ממשו שגרהlimit_cpu_time שמונעת מתהליך pid-לשהות יותר מ secs :שניות במעבד

SYSCALL limit_cpu_time)int pid, int secs(

נא לסיים תהליך אחרי שתם זמנו

Page 27: מערכות הפעלה

9מערכות הפעלה - תרגול 2701:51

CPU time limitדוגמה –

Page 28: מערכות הפעלה

9מערכות הפעלה - תרגול 2801:51

CPU time limitדוגמה –

Page 29: מערכות הפעלה

9מערכות הפעלה - תרגול 2901:51

CPU time limitדוגמה –

Page 30: מערכות הפעלה

9מערכות הפעלה - תרגול 3001:51

CPU time limitדוגמה –