Presentation is loading. Please wait.

Presentation is loading. Please wait.

הפרעות ופסיקות (exceptions & interrupts) מבוסס ברובו על פרק 8 ב Computer Systems / Bryant & O’Hallaron.

Similar presentations


Presentation on theme: "הפרעות ופסיקות (exceptions & interrupts) מבוסס ברובו על פרק 8 ב Computer Systems / Bryant & O’Hallaron."— Presentation transcript:

1 הפרעות ופסיקות (exceptions & interrupts) מבוסס ברובו על פרק 8 ב Computer Systems / Bryant & O’Hallaron

2 – 2 – התקדמות התוכנית Control Flow)) inst 1 inst 2 inst 3 … inst n המחשב עושה רק דבר אחד: מהדלקה לכיבוי, היע"ם מבצע את מחזור הפקודה: קורא פקודה מפרש ומבצע אותה Physical control flow Time

3 – 3 – נאפשר שינוי בהתקדמות התוכנית עד עכשיו ראינו מנגנונים לשינוי ההתקדמות כגון פקודות jmp שונות. אבל כיצד המחשב יגיב לשינויים: הגעת מידע מהדיסק / בקר רשת הגעת מידע מהדיסק / בקר רשת חלוקה ב 0 חלוקה ב 0 לחיצה על ctrl – c לחיצה על ctrl – c נדרשת תמיכה בהתקדמות לא 'סטנדרטית' (exceptional).

4 – 4 – Exceptional Control Flow מנגנונים להתקדמות חריגה קיימים בכל הרמות של המחשב. ברמה הנמוכה: חריגות / פסיקות שינוי סדר הפעולות כתגובה לאירוע כלשהו שילוב של חומרה עם תוכנה ברמה גבוהה יותר: החלפת הקשר אותות (signals) מספר דברים נוספים שלא נלמד כגון Nonlocal jumps (setjmp/longjmp)

5 – 5 – נזכור את מבנה המערכת: Local/IO Bus Memory Network adapter Network adapter IDE disk controller IDE disk controller Video adapter Video adapter Display Network Processor Interrupt controller Interrupt controller SCSI controller SCSI controller SCSI bus Serial port controller Serial port controller Parallel port controller Parallel port controller Keyboard controller Keyboard controller Keyboard Mouse Printer Modem disk CDROM

6 – 6 – חריגות חריגה היא העברת השליטה למ"ה כתגובה לאירוע כלשהו. User ProcessOS exception exception processing by exception handler exception return (optional) event current next

7 – 7 – וקטורים של פסיקות Interrupt Vectors לכל סוג אירוע יש מספר חריגה ייחודי k מהווה את האינדקס לתוך jump table (a.k.a., interrupt vector) הכניסה ה k בטבלה מצביעה על פונקציה שנקראת הexception handler. פונקציה זאת נקראת כל פעם שאירוע k קורה. interrupt vector 0 1 2... n-1 code for exception handler 0 code for exception handler 0 code for exception handler 1 code for exception handler 1 code for exception handler 2 code for exception handler 2 code for exception handler n-1 code for exception handler n-1... Exception numbers

8 – 8 – חריגות אסינכרוניות (פסיקות). נגרם על ידי אירועים חיצוניים למעבד. כלומר, יכול להגיע בזמן כלשהו, לאו דווקא אחרי ביצוע פקודה וכו'. אחרי הפעלת הפונקציה המטפלת (handler) חוזרים לפקודה הבאה. דוגמאות פסיקות I/O הקשה על ctl-c הגעת חבילת מידע (packet) מהרשת הגעת מידע מהדיסק Hard reset interrupt הקשה על reset Soft reset interrupt לחיצה על ctl-alt-delete

9 – 9 – חריגות סינכרוניות נוצר כתוצאה מהפעלת פקודה מלכודות (Traps) מכוון דוגמאות: system calls, breakpoint traps (while debugging), … לאחר הטיפול מחזיר שליטה לפקודה הבאה

10 – 10 – חריגות סינכרוניות (המשך) Faults לא מכוון, אבל ייתכן שניתן לתיקון למשל: page faults (recoverable), protection faults (unrecoverable). אם ניתן לתקן: חזרה על הפקודה. אם לא: מפסיק את התוכנית. Aborts לא מכוון, ולא ניתן לתיקון. דוגמאות: parity error, machine check מפסיק את התוכנית

11 – 11 – מתי חריגות נבדקות? אחרי כל סיום ביצוע פקודה, נבדק אם יש חריגה ממתינה (למעשה, חלק ממחזור הפקודה) אחרי כל סיום ביצוע פקודה, נבדק אם יש חריגה ממתינה (למעשה, חלק ממחזור הפקודה) האם ניתן לכבות את הבדיקה ? האם ניתן לכבות את הבדיקה ? לרוב המעבדים יש שני סוגי פסיקות: nonmaskable: שמור עבור מאורעות דחופים כמו חריגות זיכרון מסוכנות maskable: ניתן לכיבוי (ע"י המעבד) למשל לפני ביצוע סידרת פקודות קריטיות

12 – 12 – הרעיון מאחורי faults ברי-תיקון ביצוע הוראות מסוימות יכול להיכשל המעבד מאפשר למ"ה, על-ידי טיפול בפסיקה, לתת להוראות "הזדמנות שנייה" להתבצע ההוראה נכשלה ==> פסיקה מערכת-ההפעלה מטפלת בפסיקה מריצים שוב אותה ההוראה (שהפעם אמורה להצליח).

13 – 13 – דוגמה למלכודת User ProcessOS exception Open file return int פתיחת קובץ המשתמש קורא לפונקצית מערכת open(filename, options) מ " ה חייבת למצוא או ליצור קובץ, ולהגדיר לקריאה / כתיבה.

14 – 14 – דוגמה Fault #1 User ProcessOS page fault Create page and load into memory return event movl גישה לזיכרון משתמש כותב למקום בזיכרון. הדף הרלבנטי נמצא כרגע בדיסק. הhandler מעלה את הדף לזיכרון. חוזר לפקודה המקורית. הפקודה עכשיו מצליחה. כלומר, קיבלנו הזדמנות שנייה. int a[1000]; main () { a[500] = 13; }

15 – 15 – דוגמה Fault #2 User ProcessOS page fault Detect invalid address event movl גישה לזיכרון המשתמש כותב למיקום לא חוקי בזיכרון נשלח סיגנל SIGSEG לתהליך. התהליך יוצא עם “segmentation fault”. int a[1000]; main () { a[5000] = 13; } Signal process

16 – 16 – Signals אותות (Signals) אירועי תוכנה, נשלחים על ידי התהליכים + מ"ה נשלח מתהליך/מ"ה לתהליך אחר לכל אות יש מספר ייחודי. לא נושא אינפורמציה נוספת. Num.NameDefaultDescription 2SIGINTTerminate Interrupt from keyboard (cntl-c) 9SIGKILLTerminate Kill program (cannot override or ignore) 11SIGSEGV Terminate & Dump Segmentation violation 14SIGALRMTerminate Timer signal 17SIGCHLDIgnore Child stopped or terminated

17 – 17 – טיפול באותות לכל סוג של אות יש טיפול 'ברירת מחדל' למשל לסיים את התהליך ניתן לשנות... פקודת signal(sig, handler) סיגנל מסוג sig יפעיל מעתה את פונקציה handler. Handler תחזור לנקודה בה קרה האות. void int_handler(int sig) { printf("received signal %d\n", sig); exit(0); } main() { signal(SIGINT, int_handler);... }

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

19 – 19 – תוכנית שמגיבה לאותות חיצוניים (ctrl-c) #include static void handler(int sig) { printf("You think hitting ctrl-c will stop me?\n"); sleep(2); printf("Well..."); fflush(stdout); sleep(1); printf("OK\n"); exit(0); } main() { signal(SIGINT, handler); /* installs ctl-c handler */ while(1) { }

20 – 20 – מי מריץ את שגרת הטיפול בפסיקה ? הפסיקה קורה בזמן שתהליך כלשהו רץ. הפסיקה אינה בהכרח קשורה לתהליך זה. למשל, נגרמה על-ידי חומרה שתהליך אחר משתמש בה. קוד הטיפול בפסיקה שייך ל- kernel ולא לתהליך. ועדיין, קוד הטיפול מורץ בהקשר של התהליך הנוכחי... לא מתבצעת החלפת תהליכים כדי לטפל בפסיקה! בדרך-כלל, קוד הטיפול בפסיקה לא מתייחס כלל לתהליך הנוכחי, אלא למבני נתונים גלובליים של המערכת.


Download ppt "הפרעות ופסיקות (exceptions & interrupts) מבוסס ברובו על פרק 8 ב Computer Systems / Bryant & O’Hallaron."

Similar presentations


Ads by Google