שעון דחוי
מנגנון הטיפול
בשעון כולל אפשרות בשם "טיפול בשעון דחוי".
כאשר משתמשים
באפשרות זו, המערכת סופרת את פסיקות השעון, אך אינה גורמת להתרחשות אירועים כלשהם.
בדרך זו נוכל לדעת
על אירועים שהיו צריכים לקרוא.
הסיבה למנגנון כזה: המערכת מבטלת פסיקות כאשר מתרחשת החלפת
הקשר. כאשר מידע מגיע מהמקלדת זו אינה
בעיה, אולם כאשר מידע מגיע מהתקן אחר
מהיר יותר זו בעיה, מכיוון שאם תתרחש החלפת תהליכים
עם פסיקות חסומות, אנו עלולים לאבד מידע.
לפיכך - מנגנון ה-I/O צריך
לאסור החלפת הקשר לתקופות קצרות,
בזמן שהפסיקות
צריכות להשאר פעילות.
מנגנון השעון
הדחוי גורם לדחיית, אך לא ביטול, של הפעולות שהיו צריכות להתרחש, וזאת אם חלף זמן קצר מרגע שהייתה צריכה
להתבצע פעולה. במידה ואפשרי, הפעולה תתבצע כשהמערכת תחזור למצב
נורמלי.
פונקציות
הקשורות לשעון דחוי:
|
שמה את השעון
במצב דחוי. |
|
מוציאה את השעון
ממצב דחוי. |
מספר תהליכים
כלשהו יכול לבקש מהשעון להיות דחוי,
ולכן אנו מגדילים
את defclk ב-1 לכל בקשה. בקשת
שחרור השעון ממצב דחוי נעשית על ידי הקטנת defclk.
כל עוד defclk חיובי, שגרת
פסיקת השעון מונה את הפסיקות ב-clkdiff ולא מנתחת אותן.
כאשר defclk מגיע ל-0, strtclk מנסה לתפוס את האירועים שהיו אמורים לקרוא, וזאת על ידי הקטנת מספר מחזורי השעון
שהצטברו מההשהיה של תהליכים ישנים,
והערת תהליכים
שזמנם להתעורר הגיע.
תודה
הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.