מערכות הפעלה תרגול 9 – פסיקות ב-Linux. מערכות הפעלה - תרגול 92 (c) ארז חדד 2003 תוכן התרגול מבוא לפסיקות ב-Linux פסיקות ב-IA32:  סוגי הפסיקות  טבלת.

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
מערכות הפעלה תרגול 5 – תהליכים ב-Linux (3). מערכות הפעלה - תרגול 52 (c) ארז חדד 2003 תוכן התרגול החלפת הקשר (context switch) ב-Linux יצירת תהליך חדש ב-Linux.
מערכות הפעלה תרגול 4 – החלפת הקשר (context switch)
מערכות הפעלה תרגול 10 – מבוא למנהלי התקנים ב-Linux Linux Device Drivers, 2 nd Edition Alessandro Rubini & Jonathan Corbet O’Reilly
מערכות הפעלה תרגול 7 – ק/פ ותקשורת תהליכים ב-Linux.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
מערכות הפעלה תרגול 5 – תהליכים ב-Linux (3). מערכות הפעלה - תרגול 52 (c) ארז חדד 2003 תוכן התרגול החלפת הקשר (context switch) ב-Linux יצירת תהליך חדש ב-Linux.
מערכות הפעלה תרגול 7 – ק/פ ותקשורת תהליכים ב-Linux.
הפרעות ופסיקות (exceptions & interrupts) מבוסס ברובו על פרק 8 ב Computer Systems / Bryant & O’Hallaron.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 פסיקות  סוגי פסיקות  איך מערכת ההפעלה מטפלת בפסיקות  דוגמא : קלט בעזרת פסיקות.
מערכות הפעלה קורס מס ' מבוא  אדמיניסטרציה.  מהי מערכת הפעלה.  ארגון מערכות הפעלה.
מערכות הפעלה תרגול 3 – תהליכים ב-Linux (1). מערכות הפעלה - תרגול 32 (c) ארז חדד 2003 תוכן התרגול מבוא לתהליכים ב-Linux API לעבודה עם תהליכים מבוא לניהול.
מערכות הפעלה תרגול 9 – פסיקות ב-Linux. מערכות הפעלה - תרגול 92 (c) ארז חדד 2003 תוכן התרגול מבוא לפסיקות ב-Linux פסיקות ב-IA32:  סוגי הפסיקות  טבלת.
מערכות הפעלה תרגול 10 – זיכרון וירטואלי ב- Linux.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
הגנה במערכות מתוכנתות תרגול 1 – המחשב האישי הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד.
מערכות הפעלה תרגול 6 – חוטים ב-Linux.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 מערכות הפעלה קורס מס '
מערכות הפעלה תרגול 3 – תהליכים ב-Linux (1). מערכות הפעלה - תרגול 32 (c) ארז חדד 2003 תוכן התרגול מבוא לתהליכים ב-Linux API לעבודה עם תהליכים מבוא לניהול.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מערכות הפעלה תרגול 9 – פסיקות ב-Linux. מערכות הפעלה - תרגול 92 (c) ארז חדד 2003 תוכן התרגול מבוא לפסיקות ב-Linux פסיקות ב-IA32:  סוגי הפסיקות  טבלת.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 מערכות הפעלה קורס מס '
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
מערכות הפעלה ( אביב 2008) חגית עטיה © 1 מערכות הפעלה קורס מס '
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
מערכות הפעלה תרגול 12 – ניהול זיכרון ב-Linux : המשך.
מערכות הפעלה תרגול 2 – קריאות מערכת ב-Linux. מערכות הפעלה - תרגול 22 (c) ארז חדד 2003 תוכן התרגול קריאה לפונקציות ב-Linux קריאה לשירותי מערכת ב-Linux.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
Multicycle MIPS תרגול כיתה מס' 13.
מערכות הפעלה תרגול 6 – חוטים ב-Linux. מערכות הפעלה - תרגול 62 (c) ארז חדד 2003 תוכן התרגול מבוא לחוטים ב-Linux כיצד גרעין Linux תומך בחוטים עבודה עם חוטים.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
מערכות הפעלה תרגול 12 – ניהול זיכרון ב-Linux : המשך.
מערכות הפעלה תרגול 11 – ניהול זיכרון ב-Linux: המשך.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
מערכות הפעלה תרגול 1 - מבוא. מערכות הפעלה - תרגול 12 (c) ארז חדד 2003 ברוכים הבאים לקורס מערכות הפעלה! אדמיניסטרציה סקירה בסיסית של ארכיטקטורת IA32 (80386+)
אביב 2004 מערכות הפעלה מערכות הפעלה קורס מס '
מערכות הפעלה תרגול 6 – חוטים ב-Linux. מערכות הפעלה - תרגול 62 (c) ארז חדד 2003 תוכן התרגול סינכרוניזציה בגרעין של Linux מבוא לחוטים ב-Linux כיצד גרעין.
מערכות הפעלה תרגול 2 - הכרת Linux. מערכות הפעלה - תרגול 22 (c) ארז חדד 2003 תוכן התרגול הדגמה מעשית:  כיצד לקבל עזרה בעבודה ב-Linux  כתיבת תכנית ראשונה.
מערכות הפעלה תרגול 8 – סינכרוניזציה ב-Linux. מערכות הפעלה - תרגול 82 (c) ארז חדד 2003 תוכן התרגול מבוא לסינכרוניזציה ב-Linux סנכרון בין חוטי POSIX  mutex.
מערכות הפעלה תרגול 1 - מבוא. מערכות הפעלה - תרגול 12 (c) ארז חדד 2003 ברוכים הבאים לקורס מערכות הפעלה! אדמיניסטרציה סקירה בסיסית של ארכיטקטורת IA32 (80386+)
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
מערכות הפעלה תרגול 1 - מבוא. מערכות הפעלה - תרגול 12 (c) ארז חדד 2003 ברוכים הבאים לקורס מערכות הפעלה! אדמיניסטרציה סקירה בסיסית של ארכיטקטורת IA32 (80386+)
1 Spring Semester 2007, Dept. of Computer Science, Technion Internet Networking recitation #3 Internet Control Message Protocol (ICMP)
מערכות הפעלה תרגול 4 – תהליכים ב-Linux (2). מערכות הפעלה - תרגול 42 (c) ארז חדד 2003 תוכן התרגול אלגוריתם זימון התהליכים ב-Linux  איך בוחרים, בכל נקודת.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
מערכות הפעלה תרגול 10 – מבוא למנהלי התקנים ב-Linux Linux Device Drivers, 2 nd Edition Alessandro Rubini & Jonathan Corbet O’Reilly
1 ׃1998 Morgan Kaufmann Publishers פקודת ה- jump 4 bits 26 bits 2 bits 00 : כתובת קפיצה במילים : כתובת קפיצה בבתים … …
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Object Oriented Programming
Object Oriented Programming
Computer Architecture and Assembly Language
SQL בסיסי – הגדרה אינדוקטיבית
תרגול 5 – מימוש זמן תהליכים
מערכות הפעלה תרגול9 – פסיקות ב-Linux.
תרגול 2 – קריאות מערכת ב-Linux
תרגול 12 – ניהול זיכרון ב-Linux: המשך
בחירת חומר גלם כתב: עמרי שרון.
Shell Scripts בסביבת UNIX
שפת סף וארכיטקטורה של מעבד 8086
Computer Architecture and Assembly Language
Presentation transcript:

מערכות הפעלה תרגול 9 – פסיקות ב-Linux

מערכות הפעלה - תרגול 92 (c) ארז חדד 2003 תוכן התרגול מבוא לפסיקות ב-Linux פסיקות ב-IA32:  סוגי הפסיקות  טבלת הפסיקות - ה-IDT  טיפול בפסיקות אתחול ה-IDT ב-Linux טיפול בפסיקות ב-Linux:  טיפול בחריגות  טיפול בפסיקות חומרה  דחיית הטיפול בפסיקות  סיום הטיפול

מערכות הפעלה - תרגול 93 (c) ארז חדד 2003 מבוא לפסיקות ב-Linux (1) תזכורת: פסיקה היא אות חשמלי הנשלח למעבד לציון אירוע הדורש את טיפולו המיידי  גורם למעבד להפסיק לבצע את הקוד הנוכחי ולעבור לבצע קוד מיוחד לטיפול בפסיקה בהרצאה קראנו לקוד הטיפול בפסיקה ISR – Interrupt Service Routine. כאן לא נשתמש במונח זה כי ב-Linux יש לו משמעות אחרת כפי שנראה בהמשך  התקני חומרה שולחים פסיקות למעבד כדי לקבל טיפול לדוגמה: לחיצת מקש במקלדת גורמת למקלדת לשלוח פסיקה למעבד על-מנת שיקרא את המידע על המקש שנלחץ

מערכות הפעלה - תרגול 94 (c) ארז חדד 2003 מבוא לפסיקות ב-Linux (2)  המעבד יכול לשלוח לעצמו פסיקות כתוצאה מביצוע קוד כדי לדווח על תקלה בביצוע או בכוונה כדרך לביצוע של הקוד המיועד לטיפול בפסיקה לדוגמה: פקודת חלוקה ב-0 גורמת לפסיקה  במערכת מרובת מעבדים, מעבדים יכולים לשלוח פסיקות זה לזה כאמצעי תקשורת, למשל לצורך חלוקת התהליכים ביניהם במערכות IA32 קיימים 256 סוגי פסיקות הממוספרים  המספר של פסיקה נקרא גם וקטור הפסיקה (interrupt vector)

מערכות הפעלה - תרגול 95 (c) ארז חדד 2003 מבוא לפסיקות ב-Linux (3) המעבד בודק אם יש פסיקות ממתינות לטיפול בין ביצוע של כל שתי הוראות עוקבות בקוד  פסיקה אינה יכולה לקטוע ביצוע של הוראת מכונה בסיסית בודדת לאחר סיום הטיפול בפסיקה, המעבד יכול להמשיך בביצוע הקוד המקורי, לאחר ששמר כתובת חזרה לפני הקפיצה לשגרת הטיפול

מערכות הפעלה - תרגול 96 (c) ארז חדד 2003 מבוא לפסיקות ב-Linux (4) פסיקה יכולה להשלח למעבד באופן אסינכרוני לחלוטין – ללא תלות במצב המעבד כרגע  כתוצאה מכך, פסיקות יכולות להגיע גם בזמן שהמעבד מטפל בפסיקה קודמת – קינון (nesting) של פסיקות במערכת מרובת מעבדים, מספר מעבדים יכולים לטפל בפסיקות שונות בו-זמנית

מערכות הפעלה - תרגול 97 (c) ארז חדד 2003 מבוא לפסיקות ב-Linux (5) הטיפול בפסיקות ב-Linux הוא בתחום אחריותו של הגרעין בלבד  בתגובה על פסיקה מבוצע מסלול בקרה בגרעין (Kernel Control Path) כזכור, הגרעין חייב לסנכרן את הגישה למבני הנתונים שלו כדי להגן עליהם מפני מסלולי בקרה מקוננים או מקבילים (במעבדים שונים) פסיקה מטופלת תמיד בהקשר הביצוע של התהליך הנוכחי  גם אם לתהליך אין קשר לפסיקה שקרתה טיפול בפסיקה מצריך מעבר ל-Kernel Mode כולל החלפת מחסניות לפי הצורך עבור התהליך הנוכחי  כלומר, בפסיקה מקוננת אין החלפת מחסניות כי המעבד כבר נמצא ב-Kernel Mode – פרטים בהמשך

מערכות הפעלה - תרגול 98 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (1) פסיקות אסינכרוניות - interrupts ("פסיקות" רגילות או פסיקות חומרה)  פסיקות אלו נשלחות ע"י התקני חומרה חיצוניים אל המעבד באופן אסינכרוני  חלקן ניתנות לחסימה (masking) ע"י דגל ה-Interrupt Flag (IF), ברגיסטר הדגלים פסיקה חסומה אינה מטופלת עד שהחסימה מוסרת כפי שראינו בתרגול הקודם, פקודות המכונה cli ו-sti חוסמות ומסירות את החסימה ע"י כיבוי והדלקת הדגל IF במהלך טיפול בפסיקת חומרה מבוצעת חסימה באופן אוטומטי  פסיקות מסוימות לא ניתנות לחסימה נקראות NMI – Non-Maskable Interrupts פסיקות אלו משמשות לדיווח על בעיות חומרה קריטיות, כגון נפילת מתח

מערכות הפעלה - תרגול 99 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (2)  הפסיקות מועברות אל המעבד באמצעות בקר פסיקות מתוכנת ([Advanced] Programmable Interrupt Controller – [A]PIC) נפרד לכל מעבד מעבד APIC שעון דיסק IRQ0 IRQ7 כרטיס קול מדפסת IRQ11

מערכות הפעלה - תרגול 910 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (3)  כל התקן חומרה המבקש לשלוח פסיקה שולח אות הקרוי IRQ – Interrupt ReQuest לאחד מקווי הכניסה של בקר הפסיקות אליו ההתקן מחובר ישנם קווי כניסה ממוספרים IRQ0-IRQ15/IRQ23 מספר התקנים יכולים להיות מחוברים לאותו קו – IRQ Sharing ..ולכן טיפול בפסיקת חומרה מחייב בדיקת כל ההתקנים שיכלו לגרום לה  כאשר בקר הפסיקות מבחין בבקשה מהתקן חומרה, הוא מעביר אות פסיקה למעבד אליו הוא מחובר מספר הפסיקה הנוצרת עבור קו IRQn ניתן לבחירה. המקובל – (n+32)

מערכות הפעלה - תרגול 911 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (4) פסיקות סינכרוניות – exceptions ("חריגות")  נוצרות ע"י המעבד כתוצאה מביצוע הוראה אחרונה בקוד ולא ע"י רכיבים חיצוניים  לא תלויות בדגל הפסיקות  שלושה סוגים של חריגות: 1. Faults – מציינות תקלות הניתנות לתיקון בביצוע ההוראה האחרונה בקוד  כתובת החזרה בסיום הטיפול היא זו של ההוראה שגרמה את התקלה, כדי שהיא תבוצע מחדש  דוגמה: חלוקה ב-0

מערכות הפעלה - תרגול 912 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (5) 2. Traps – נגרמות באופן מכוון ע"י ההוראה האחרונה בקוד, כדי להפעיל את קוד הטיפול בפסיקה  Traps משמשות בדרך-כלל כדי להודיע ל-debugger על התקדמות בביצוע הקוד המכיל את ה-trap  ההוראה לביצוע בסיום הטיפול היא זו שאחרי ההוראה שגרמה ל- trap  דוגמה: הוראת המכונה int3 יוצרת חריגה שמטרתה להודיע ל- debugger שביצוע הקוד הגיע להוראה הנוכחית 3. Aborts – מציינות תקלות חמורות בביצוע ההוראה האחרונה בקוד  דוגמה: מנגנון בדיקה אוטומטי של הזיכרון יכול לייצר חריגה מסוג Machine Check בעקבות גילוי שיבוש בתכולת הזיכרון

מערכות הפעלה - תרגול 913 (c) ארז חדד 2003 סוגי פסיקות ב-IA32 (6)  חריגות מתוכנתות (Programmed Exceptions) או "פסיקות תוכנה" (Software Interrupts) הן סוג מסוים של Traps המשמשות לביצוע קריאות מערכת, כפי שכבר ראינו בתרגולים קודמים כזכור, ב-Linux ההוראה int 0x80 משמשת לקריאות מערכת

מערכות הפעלה - תרגול 914 (c) ארז חדד 2003 Interrupt Descriptor Table (1) הקישור ב-IA32 בין וקטור פסיקה לשגרת הטיפול בפסיקה מבוצע דרך טבלה הקרויה Interrupt Descriptor Table (IDT) רגיסטר מיוחד, idtr, מצביע לטבלת ה-IDT  טעינת ערך הרגיסטר idtr מבוצעת ע"י מערכת ההפעלה בזמן האתחול, בפקודת מכונה lidt ב-IDT יש רשומה עבור כל וקטור פסיקה  סה"כ 256 רשומות  כל רשומה בגודל 8 בתים  כל רשומה נקראת interrupt descriptor

מערכות הפעלה - תרגול 915 (c) ארז חדד 2003 Interrupt Descriptor Table (2) קיימים 3 סוגי רשומות ב-IDT: 1. Interrupt Gate – משמש עבור פסיקות חומרה  דגל ה-IF מכובה אוטומטית בגישה לטיפול דרך רשומה זו 2. Trap Gate – משמש עבור חריגות  אין שינוי ב-IF בגישה לטיפול בפסיקה דרך רשומה זו 3. Task Gate – מאפשר להגדיר תהליך שיזומן לטיפול בפסיקה  סוג זה אינו בשימוש ב-Linux, כי הגרעין מטפל בפסיקות

מערכות הפעלה - תרגול 916 (c) ארז חדד 2003 Interrupt Descriptor Table (3) כל רשומה ב-IDT מכילה:  ציון סוג הרשומה  כתובת (segment:offset) של שגרת הטיפול  DPL– ערך CPL מקסימלי הנדרש כדי להריץ את שגרת הטיפול נרצה שקוד המשתמש יוכל, באמצעות פסיקות תוכנה, לגרום לפסיקות מסוימות (קריאות מערכת, debugging) אבל לא יוכל להפעיל שגרות פסיקה המיועדות לדברים אחרים (כגון טיפול בדיסק וכו') לכן, רשומה של וקטור פסיקה המיועדת להפעלה מקוד משתמש תקבל DPL=3, ורשומות שאינן מיועדות לכך תקבלנה DPL=0

מערכות הפעלה - תרגול 917 (c) ארז חדד 2003 Interrupt Descriptor Table (4) DPLכתובת שגרת הטיפול seg:offs סוג הרשומה (gate) כניסה 0divide_errortrap0 3int3trap3 0general_protectiontrap13 0timerinterrupt32 0diskinterrupt43 3system_calltrap128 דוגמאות של רשומות בטבלת ה-IDT

מערכות הפעלה - תרגול 918 (c) ארז חדד 2003 טיפול בפסיקה ב-IA32 (1) המעבד מוצא את הכניסה המתאימה לוקטור הפסיקה ב- IDT וקורא את הרשומה שבה מבוצעות בדיקות הרשאות:  עבור פסיקות תוכנה בלבד – השוואת ה-CPL עם ה-DPL של הרשומה ב-IDT. אם ה-CPL גבוה יותר, נגרמת חריגה – General Protection Fault הרעיון – למנוע מקוד משתמש להריץ שגרות טיפול בפסיקה של גרעין מערכת ההפעלה שאינן מיועדות לשימושו באמצעות פסיקות תוכנה, כפי שראינו בשקף הקודם אם נגרמה חריגה, היא מטופלת במקום הפסיקה המקורית

מערכות הפעלה - תרגול 919 (c) ארז חדד 2003 טיפול בפסיקה ב-IA32 (2) אם הפסיקה קרתה ב-User Mode ושגרת הטיפול היא בגרעין (כפי שקורה ב-Linux) מתבצעת החלפת מחסניות כחלק מהמעבר ל- Kernel Mode  מצביע בסיס מחסנית הגרעין של התהליך הנוכחי נקרא מתוך ה-TSS ונטען ל-ss:esp  הערך הישן של ss:esp (מצביע לראש מחסנית התהליך ב-User Mode) נשמר במחסנית הגרעין הערכים הבאים נשמרים במחסנית הגרעין:  ערך רגיסטר הדגלים eflags  מצביע חזרה לקוד המקורי מלפני הפסיקה cs:eip בד"כ, של ההוראה הבאה לביצוע; עבור fault, של ההוראה שגרמה לפסיקה  עבור חריגות מסוימות נשמר קוד שגיאה - hardware error code: למשל, עבור פסיקה 16 (שגיאת floating point) נשמר קוד של סוג השגיאה

מערכות הפעלה - תרגול 920 (c) ארז חדד 2003 טיפול בפסיקה ב-IA32 (3) כתובת שגרת הטיפול בפסיקה נטענת מהרשומה ב-IDT לתוך cs:eip  בזה מעודכן גם ה-CPL. אם הפסיקה קרתה ב-User Mode, כאן הושלם המעבר ל-Kernel Mode מתבצעת שגרת הטיפול בפסיקה שגרת הטיפול צריכה להסתיים בהוראת iretdהמבצעת כדלקמן:  טוענת מהמחסנית את ערכי cs:eip ו-eflags  מחליפה מחסניות בחזרה אם צריך לחזור ל-User Mode ע"י טעינת ss:esp מהערך השמור במחסנית הגרעין  אם נשמר גם hardware error code, שגרת הטיפול בפסיקה צריכה לשלוף ערך זה מהמחסנית לפני הקריאה ל-iretd

מערכות הפעלה - תרגול 921 (c) ארז חדד 2003 אתחול ה-IDT ב-Linux (1) טבלת ה-IDT מאותחלת במקור ע"י ה-BIOS בזמן הטעינה, Linux מחליפה את כל הטבלה כולה ראשית, מופעלת הפונקציה setup_idt() המאתחלת את כל הרשומות בטבלה לערכי ברירת המחדל הבאים:  Interrupt Gate  כתובת השגרה ignore_int() שגרה זו מדפיסה הודעת "Unknown Interrupt" על המסך בתגובה לפסיקה שגרה זו לא צריכה להיות מופעלת לעולם. אם מקבלים הודעה זו סימן שיש בעיה בהתקנת המערכת או בעיה בחומרה (מייצרת פסיקות מיותרות/לא נכונות)  DPL=0 setup_idt() ו-ignore_int() מוגדרות באסמבלר בקובץ הגרעין arch/i386/kernel/head.S

מערכות הפעלה - תרגול 922 (c) ארז חדד 2003 אתחול ה-IDT ב-Linux (2) לאחר האתחול הראשוני, מבוצע מעבר נוסף על ה-IDT המעדכן את הכניסות המתאימות לטיפול בחריגות ובפסיקות מהחומרה המותקנת  במהלך פעולת המערכת ייתכן עדכון נוסף של הטבלה עקב התקנת drivers עדכון כניסה משתמש באחת הפונקציות הבאות, המוגדרות בקובץ הגרעין arch/i386/kernel/traps.c: set_intr_gate(n, addr)  כותבת interrupt gate בכניסה n בטבלה, עם DPL=0 וכתובת שגרת טיפול kcs:addr (kcs מציין את ה-code segment של הגרעין)  מיועדת לטיפול בפסיקות חומרה

מערכות הפעלה - תרגול 923 (c) ארז חדד 2003 אתחול ה-IDT ב-Linux (3) set_system_gate(n, addr)  כותבת system gate (trap gate לשימוש תהליכי משתמש) בכניסה n בטבלה  כתובת kcs:addr, DPL=3  שגרות טיפול בפסיקה הנקבעות באופן זה נגישות לכל תוכנית משתמש  משמשת לפסיקות debugging ולפסיקה 128 (0x80) המיועדת לקריאות מערכת set_trap_gate(n,addr)  כותבת trap gate בכניסה n בטבלה, עם כתובת kcs:addr ו- DPL=0  משמשת לטיפול בחריגות

מערכות הפעלה - תרגול 924 (c) ארז חדד 2003 אתחול ה-IDT ב-Linux (4) הפונקציה trap_init(), המוגדרת בקובץ הגרעין arch/i386/kernel/traps.c, מכילה חלק מהאתחול המשני של טבלת ה-IDT. להלן חלק מהפונקציה: set_trap_gate(0, &divide_error);... set_system_gate(4, &overflow);... set_trap_gate(6, &invalid_op);... set_trap_gate(13, &general_protection); set_intr_gate(14, &page_fault); set_trap_gate(16, &coprocessor_error);... set_system_gate(128, &system_call);