תרגול 6 החלפת הקשר Flashcards
איזה רגיסטר
מצביע על הפקודה הבאה לביצוע
דגלים
רמת הרשאה נוכחית
Rip
Rflags
Cs
איפה מסומן שהגיע פסיקת חומרה
בrflags
ביט9
If
Intterhpt flaf
בגלל זה שמכבים אותו זה כיאילו כיבינו את פסיקות התוכנה
כמה פרמטרים אפשר להעביר לפונק
כמה שרוצים
6 ראשונים ברגיסטרים
השאר על המחסנית
בעת טיפול בקריאת מערכת או פסיקה מה צריך לעשות מערכת ההפעלה
איפה עושה זה? כלומר איפה שומר
איזה מקרואים עושים זו
לשמור את הרגיסטרים שהמעבד השתמש בהם
ולהחזיר אותם לפני שהוא מסיים
מגובה על מחסנית הגרעין
Push_rega
Pop_regs
יתרונות וחסרונות של החלפת הקשר
ניצול טוב יותר של משאבי המעבד במצבים כמו המתנה לדיסק
הקטנת זמן התגובה לתהליכים אינטרקטיבים
פוגע בנציחות המעבד בגלל הoverhead של החלפת הקשר
בעיקר הtlb שהולך לפח
איך קורת החלפת הקשר יזומה
התהליך עושה פעולה כלשהי שגורמת להחלפת ההקשת בעקיפין או ישירות
Read
Write
Exit
Sched_yield
פעולה שתגרום לשגיאה כמו seg fault
מה גורם להחלפת הקשת כפויה
ואיך נקראת
הפקעה
הגרעין לוקח בכוח את ההקשר
יכול לקנות בעקבות פסיקת שעון וסיום הזמן שהוקצה לתהליך
אירוע אסינכרוני שמעיר תהליך עדיף
לדוגמה תהליך זמן אמן שקיבל מהדיסק פסיקת דיסק
האם הגרעין ניתן להפקעה
כן
החלק מלינוקס 2.6
איזה פונקציית גרעין מפעילה החלפת הקשר
ולאיזה פונק היא קרואת
schedule()
היא תקרא לcontex_switch()
האם יש עוד פונקציות חוץ
מschedule()
שהו שער כניסה להחלפת הקשר
לא
איפה הרגיסטרים של תהליך נשמרים לפני החלפת ההקשר ממנו
ואיזה עוד פרט מידע צריך לשמור
במחסנית הגרעין ובpcb תחת שדה threads
את כתובת הבסיס למחסנית הגרעין
האם כל התהליכים חולקים את אותה מחסנית גרעין?
ואיל עוקבים אחרי זה?
לכל תהליך מחסנית גרעין משלו
שומרים את הבסיס אליה במבנה בשם tss
האם יש tss אחד לכל המערכת
אחד לכל מעבד
איפה בtss נשמרת הכתובת הבסיס למחסנית הגרעין
ומה צריכה לעשות החלפת ההקשר
בקשר לזה
Tss.sp0
החלפת הקשר צריכה לשנות את הערך לכתובת בסיס המחסנית גרעין של התהליך הבא
Tss ראשי תיבות
Task state segment