מערכות הפעלה

Preview:

DESCRIPTION

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

Citation preview

מערכות הפעלה

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

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

מה בתכנית?

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

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

פסיקת השעון

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

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

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

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

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

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

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

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

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

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

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

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

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

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

תור ההפרשים

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

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

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

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

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

תור ההפרשים

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

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

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

?למה זה טוב

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

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

:qבטבלת

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

1323 = (15-12)

21tail5 = (20-12-3)

3head112

…………

head-3

tail2-

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

insertd.c

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

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

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

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

sleep.h

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

insertd.c

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

sleept.c/sleep.c

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

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

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

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

sleept.c/sleep.c

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

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

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

התהליכים

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

sleept.c

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

sleep.c

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

wakeup.c

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

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

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

clkint.c

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

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

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

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

clkint.c

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

clkint.c

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

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

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

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

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

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

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

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

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

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

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

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

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

הפסיקה

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

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

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

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

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

בצורה סבירה

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

דוגמה

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

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

wakeup_new)(

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

-clkint.cדוגמה

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

-new_wakeup.cדוגמה

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

CPU time limitדוגמה –

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

SYSCALL limit_cpu_time)int pid, int secs(

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

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

CPU time limitדוגמה –

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

CPU time limitדוגמה –

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

CPU time limitדוגמה –

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

CPU time limitדוגמה –

Recommended