31
הההההה ההההה ההההה8 ההההה הההההה

מערכות הפעלה

  • Upload
    tadita

  • View
    69

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

מערכות הפעלה

ניהול פסיקות – 8תרגול

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

9מערכות הפעלה - תרגול 219:24

מה בתכנית?

תזכורת - ניהולפסיקות

ניהול פסיקותXINUב-

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

2מערכות הפעלה - תרגול 319:24

-מצב של העברת שליטה בכפייה של הCPU.לרוטינה :פסיקות נבדלות לכמה סוגים

1 .Hardware Interrupts פסיקות חומרה – תגובה – . בד"כ לצרכי CPUלאיתותי חומרה במחשב שמחוץ ל-

קלט\פלט.

2 .Exceptions חריגות – פסיקות הנובעות ממצב לא – תקין במהלך הריצה.

3 .Software Interrupts פסיקות תוכנה – פסיקות ביוזמת – התוכנית

תזכורת – מהי פסיקה?

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

2מערכות הפעלה - תרגול 419:24

טיפול בפסיקה מתבצע באמצעות הרצת שגרה מיוחדתהאחראית לטפל באותה פסיקה. לשגרה כזאת קוראים

ISR – Interrupt Service Routine למבנה נתונים המקשר בין כל מספר פסיקה לשגרת

וקטור פסיקותהטיפול בה קוראים כתובת שגרתISR: 4( 2 סגמנט, 2 בתים)אופסט K1=( 1024 בזכרון לשמירת כל הכתובות)בתים 'הפסיקות המזוהות ע"י מסFF..0 'כשמגיעה פסיקה מס .

v מריצים את שגרת הטיפול הנמצאת בזכרון בכתובת , 4v .

תזכורת - וקטור הפסיקות

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

2מערכות הפעלה - תרגול 519:24

חריגות )למשל חלוק באפס, גישה לזכרון לא קיים, נפילתמתח( מטופלות כפסיקות.

:דוגמאות

בוקטור הפסיקות שמורה לחריגה – חילוק באפס0כניסה 4כניסה( שמורה עבור גלישה overflow)

חריגות

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

2מערכות הפעלה - תרגול 619:24

ניתן "לייצר" פסיקות באמצעות פקודת האסמבלרint .פסיקות אלו נקראות פסיקות תכנה

:תחביר

int <מספר פסיקה>;:פסיקת דוגמה breakpoint

int 3;

פסיקות תכנה

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

2מערכות הפעלה - תרגול 719:24

XINUסוגי פסיקות ב-

מספרסוגשםתאור

00חריגהחילוק באפס

08חומרהCLK_INT פעמים בשנייה(18.2פסיקת שעון )כ

09חומרהKBD_INTלחיצה על מקלדת

10תוכנהVIDשרותי תצוגת מסך

13תוכנהDSKשרותי דיסק

16תוכנהKBDשרותי קלט מהמקלדת

18תוכנהCtrl-BreakCtrl_Breakנקראת ב-

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

מנגנון הפסיקות.סיום הפקודה הנוכחית.שמירת אוגר הדגלים איפוסInterrupt Flag – IF. איפוסTrap Flag – TF. שמירת כתובת הפקודה הבאה

.cs:ipלביצוע

9מערכות הפעלה - תרגול 819:24

שימוש בפקודתIRET במקום RET חזור מטיפול : ,FLAGS, csבפסיקה – שולפת מהמחסנית את ה-

ip ושינוי cs:ip .לערכים שנשלפו מהמחסנית

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

מימוש פסיקות - דרישות אין קריאה מסודרת לפונקציות טיפול בפסיקה. הפסיקה

קוראת "בין" שורות הקוד של התוכנית.-יש צורך לשמור את הFLAGS וכתובת החזרה CS:IP-יש צורך בפקודה מיוחדת כדי להוציא את ה CS:IP

.FLAGSהישנים שנשמרו ואת ה-

לא ניתן לממש שגרת טיפול בפסיקה בשפתCאבל... נרצה קוד כמה שיותר פשוט

9מערכות הפעלה - תרגול 919:24

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

9מערכות הפעלה - תרגול 1019:24

XINUפתרון: אסטרטגית פסיקות ב-

:אסטרטגיית שני שלבים פסיקות מועברות לשגרה קטנה הכתובה

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

מפסיקה בנוסף השגרה גם קוראת לפונקצית טיפול

Cראשית עבור אותו התקן שכתובה ב-

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

9מערכות הפעלה - תרגול 1119:24

Interrupt Dispatcher משתמש בטבלת הפסיקותintmap שכוללת פניות

.CALLדרך פקודת intcom לשגרת כאשר קוראת פסיקה, המעבד מייד מבצע את

שבעקבותיה מתבצע intcom ל-CALLפקודת ה- .intcomהקוד של

אם כל הפסיקות משתמשות באותה שגרה, כיצדיש הבחנה בינהן?

דוחפת כתובת חזרה למחסנית,כלומר, CALLפקודת יכולה intcom שאחרי הפקודה. לכן, byteאת ה-

.intmapלהשתמש בכתובת הזו כפויננטר לטבלת

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

Intmapמבנה הנתונים -

9מערכות הפעלה - תרגול 1219:24

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

Intmapמבנה הנתונים -

9מערכות הפעלה - תרגול 1319:24

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

9מערכות הפעלה - תרגול 1419:24

Interrupt Dispatcher אופן טיפול – בפסיקה

1 .Intcom יכולה לבצע שגרת BIOS לפני טיפול בפסיקה. זה נועד להתמודד עם הצורך להריץ קוד

התלוי בחומרה.

לפסיקה.XINUקריאה לקוד הייחודי של . 2

Reentancy Problem: אם הפסיקה התרחשה עלולה להיות בעיה. קריאות Biosבמהלך קריאת

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

.(non-reentrant)מתהליכים שונים

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

אופן טיפול בפסיקה - המשך

9מערכות הפעלה - תרגול 1519:24

( XINUמה עלול לקרות? ישנן פסיקות )רוטינות של . אם התהליך מתחלף זה יכול reschedשקוראות ל-

נוספתBIOSלגרום לפסיקת פתרון: ביטול החלפת תהליכים במידה והפסיקה

pcxflag. – כיבוי Biosהתרחשה במהלך קריאת עניין נוסף: פסיקות שמתרחשות במהלך קריאתBios

XINUימתמשו בסגמנטי קוד ומידע השונים מזה ש-משתמשת )כך גם נדע להבחין שאנו במהלך קריאת

Bios .)

חייב להיקרא עם סגמנטים XINUלכן, קוד הפסיקה של ליצור מחסנית intcom – באחריות XINUתואמים ל-

.XINUזמנית בסגמנט המידע של

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

9מערכות הפעלה - תרגול 1619:24

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

9מערכות הפעלה - תרגול 1719:24

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

9מערכות הפעלה - תרגול 1819:24

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

9מערכות הפעלה - תרגול 1919:24

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

9מערכות הפעלה - תרגול 2019:24

מכובהpcxflagעיבוד פסיקה עם

דגלpcxflag-שולט ב reschedpcxflag = 0 כשהמחסנית הלוקלית משמשת

BIOSלקריאות xdisable/xrestoreשולטות על הדגל שדהiflag בכניסת intmap אומר האם לבצע

קריאה לשגרה המקורית לפני קריאה לשגרת XINU

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

9מערכות הפעלה - תרגול 2119:24

דלוקpcxflagעיבוד פסיקה עם

האם ניתן לעשותresched ?בתנאי שלא כן ,BIOSמתבצעת קריאה לשגרת

נראה תרשים שמציג למה זה בטוח עבור שניQ ו-Pתהליכים,

P Intcom )1( ISR

Resched

Q Intcom )2(…

stackאיך נמנע "overflow"?

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

9מערכות הפעלה - תרגול 2219:24

דלוקpcxflagעיבוד פסיקה עם

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

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

Pבהקשר של פסיקה אכן יכולה להופיע בזמן ריצה שלQ

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

9מערכות הפעלה - תרגול 2319:24

דלוקpcxflagעיבוד פסיקה עם

resched:בזמן עיבוד פסיקה הוא בטוח אם ISR מעדכן את כל הנתונים הגלובליים לפני

reschedקריאה ל- אף שגרה לא מתירה פסיקות בלי שאסרה אותן

לפני זה היוצא מן הכלל – מהלך העדכון שמתיר את

הפסיקות בעליית המערכת

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

9מערכות הפעלה - תרגול 2419:24

ISRכללים לכתיבת

לא מרימה דגל של פסיקות בצורה מפורשת יכולה לבצע resched בודקת את תקינות(

המבנים הגלובליים לפני הקריאה( לא קוראת לפונקציה שמעבירה את התהליך

)תהליך READY ו-CURRלמצב שונה מ-NULL)

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

זמן העיקוב האפשרי הוא תלוי התקן

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

-רעיון: נוסיף שדה חדש לintmap- countint. בפונקצייתintcom-נעלה את ה counter -1 ב נכתוב קריאות מערכתint

return_interrupt_int_no_of_times)int int_no(

void int_used_by_xinu)(

return_interrupt_int_no_of_timesכך שהפונקציה תחזיר את מספר הפעמים שבה הפסיקה מספר

int_no הופיעה, והפונקציה int_used_by_xinu .XINUתדפיס את כל הפסיקות שמטופלות על ידי

9מערכות הפעלה - תרגול 2519:24

דוגמא: הדפס את מספר הפעמים שבו נתונה הופיעה XINUפסיקת

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

9מערכות הפעלה - תרגול 2619:24

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

9מערכות הפעלה - תרגול 2719:24

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

9מערכות הפעלה - תרגול 2819:24

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

9מערכות הפעלה - תרגול 2919:24

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

9מערכות הפעלה - תרגול 3019:24

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

9מערכות הפעלה - תרגול 3119:24