פסיקה (מחשב)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
מקורות שונים לפסיקות ותגובת המעבד

במחשבים, פסיקה (באנגלית Interrupt) היא אות המתקבל במעבד מרכיב חומרה או תוכנה ומאפשר לשנות את סדר ביצוע הפקודות בתוכנית מחשב שלא על ידי בקרה מותנית. בעת קבלת הפסיקה משהה המחשב את ביצועה הסדרתי של התוכנית, כדי להפעיל שגרת טיפול בפסיקה. לאחר הטיפול, ממשיך המחשב בביצוע הסדרתי של התוכנית. פסיקות משמשות כאמצעי תקשורת בין תהליכים במחשב ופסיקות תוכנה נמצאות בשימוש נרחב במחשבים הפועלים בריבוי משימות. הדבר דומה לאדם המבצע מלאכה כלשהי, מַפְסיקהּ כדי לענות לשיחת טלפון, ולאחר סיום השיחה, ממשיך במלאכתו מהנקודה שהופסקה.

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

ביצוע התוכניות במחשב[עריכת קוד מקור | עריכה]

בעת הפעלת תוכנית טוענת מערכת ההפעלה את התוכנית לזיכרון. כל פקודה בשפת מכונה נמצאת בתא זיכרון המכיל קידוד למהות הפקודה שיש לבצע ואת כתובות הזיכרון הרלוונטיות לפקודה זו. לאחר הטענת התוכנית לזיכרון מבוצעות הפקודות באופן סדרתי בזו אחר זו; ביצוע כל פקודה נקרא "מחזור עבודה", והוא מורכב משלושה חלקים עיקריים: "מחזור פסיקה", "מחזור הבאה" ו"מחזור ביצוע". כתובת הזיכרון המכילה את הפקודה הבאה שיש לבצע נשמרת באוגר מונה הפקודות (PC - Program Counter) והפקודה שיש לבצע נקראת מהזיכרון לאוגר הנקרא MBR‏ - Memory Buffer Register.

  • מחזור פסיקה - במחזור הפסיקה בודק המעבד האם קיימות פסיקות הממתינות לטיפולו, ובמקרה שכן, הוא מטפל בפסיקה וממשיך במחזור העבודה.
  • מחזור הבאה - המעבד קורא לתוך האוגר MBR את הפקודה הנמצאת בכתובת הזיכרון שבמונה הפקודות ומקדם את מונה הפקודות לכתובת הבאה.
  • מחזור ביצוע - הפקודה לביצוע עוברת מהאוגר MBR לאוגר הנקרא IR - Instruction Register, מנותחת ומבוצעת על ידי המעבד. מחזור הביצוע מורכב מארבעה שלבים הנקראים "מיקרו-פקודות".

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

סוגי פסיקות[עריכת קוד מקור | עריכה]

ניתן לחלק את הפסיקות למספר סוגים:

  • פסיקה אסינכרונית או פסיקה חיצונית - פסיקה הנגרמת על ידי רכיב חומרה, באופן שאינו תלוי בריצת התוכנית הנוכחית.
    • פסיקות המגיעות מבקר הפסיקות - פסיקות המופעלות על ידי רכיבי חומרה המחוברים לבקר הפסיקות.
    • פסיקות שאינן ניתנות למיסוך - פסיקות הדורשות טיפול מיידי אשר לא ניתן להתעלם מהן ולשמור את הטיפול בהן למועד מאוחר יותר. פסיקות אלה משמשות לרוב לניהול תהליכים קריטיים במחשב (כמו השעון), להודעה על שגיאות קריטיות בחומרה, או לטיפול במצבי קיצון (אתחול של המחשב באמצעות כפתור ה-Reset).
  • פסיקה סינכרונית או פסיקה פנימית - פסיקה הנוצרת על ידי החומרה או התוכנה במועד ידוע מראש עקב ביצוע פקודה מסוימת בתוכנית. פסיקה כזו קרויה "סינכרונית" משום שהיא צפויה - ניתן לחזות את התעוררותה כאשר יתבצע קטע הקוד המתאים.
    • פסיקה יזומה או פסיקת תוכנה - פסיקות הנוצרות על ידי התוכנה ומשמשות להעברת מידע בין תהליך כלשהו למעבד.
    • חריגה או Exception - פסיקה הנוצרת כדי לדווח על שגיאות במהלך ביצוע פקודות.
    • מלכודת - פסיקה המתעוררת בעקבות הדלקת דגל כלשהו.

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

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

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

הפעלת פסיקות[עריכת קוד מקור | עריכה]

בחומרה[עריכת קוד מקור | עריכה]

ניתן לחלק את פסיקות החומרה לשני סוגים:

  • Edge-Triggered Interrupts - פסיקות המעבירות סיגנל (אות מידע) כלשהו כדי לציין בקשת פסיקה. אפיק הנתונים ISA עובד בשיטה זו.
  • Level-Triggered Interrupts - פסיקות המשנות את מצב זרימת החשמל באפיק נתונים באופן קבוע עד לטיפול בפסיקה. ההתקן המעוניין בפסיקה משנה את מצב הקו עד לקבלת הודעה מהמעבד לגבי טיפול בפסיקה או טיפול במצב שעורר את הפסיקה. אפיקי הנתונים PCI ו-PCI Express עובדים בשיטה זו.

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

במערכת ההפעלה[עריכת קוד מקור | עריכה]

לאחר העברת המערכת למצב מיוחס בודקת מערכת ההפעלה בטבלת הפסיקות כיצד לטפל בשגרה. לרוב, מכילה טבלת הפסיקות פקודות קפיצה לכתובות המכילות שגרות לטיפול בפסיקה שהתעוררה. מערכת ההפעלה טוענת את השגרה הנמצאת בכתובת שהתקבלה מטבלת הפסיקות. במערכת ההפעלה DOS הייתה טבלת הפסיקות נטענת על גבי אוגר מיוחד שהכיל הפניות לכתובות בזיכרון שהכילו את השגרות שיש לבצע. מערכות הפעלה מתקדמות יותר מחזיקות מבנה נתונים בליבה המכיל את ההפניות לשגרות הרלוונטיות. בשני המקרים ניתן לשנות את טבלת הפסיקות כך שתפנה לשגרה אחרת מזו המוגדרת כברירת מחדל‏‏[1]. לאחר ביצוע שגרת הטיפול החדשה נהוג לקרוא לשגרה הישנה כדי להימנע מבעיות תאימות בין תוכנות. הטיפול בפסיקה יכול לכלול ביצוע שגרות טיפול, הערת תוכניות שביצעו המתנה רדומה והפעלת מגנון הפסיקות כך שתתאפשר קבלת פסיקות מחדש (בחלק מהארכיטקטורות). בגמר הטיפול המעבד טוען את הנתונים שנשמרו במחסנית, מכבה את בקשת הפסיקה ומחזיר את הבקרה להוראה הבאה אחרי זו שממנה נלקחה. ברוב המקרים, הפיקוח חוזר לתוכנית במרחב המשתמש.

שגרת הטיפול בפסיקה[עריכת קוד מקור | עריכה]

שגרת הטיפול בפסיקה (Interrupt Service Routine, ISR) היא שגרה המופעלת בעקבות קבלת פסיקה. במערכות הפעלה ישנות, בעת ביצוע שגרת הטיפול בפסיקה היה המעבד חסום בפני ביצוע פעולות נוספות. מסיבה זו, במערכות הפעלה מודרניות (ובמיוחד במערכות זמן אמת) שגרות הטיפול מחולקות לשני סוגים: שגרות טיפול מרמה ראשונה, ושגרות טיפול מרמה שנייה. שגרות הטיפול מרמה ראשונה מבצעות את הפעולות ההכרחיות לשחרור הפסיקה, ומתזמנות את ריצת שגרות הטיפול מהרמה השנייה, שאחראיות לטפל במידע שהתקבל באמצעות הפסיקה. בזמן הטיפול באמצעות שגרות מרמה ראשונה מופסקת ריצת התוכנית, דבר העשוי לפגוע בביצועיה. שגרות טיפול מרמה שנייה רצות לרוב מתוך תהליכון נפרד או בזמן הפנוי של המערכת).

מאפייני פסיקות[עריכת קוד מקור | עריכה]

פרט לחלוקת הפסיקות לפי מקור הפסיקה (פנימית או חיצונית) קיימים מספר מאפיינים נוספים לפסיקות:

  • מצב המערכת - פסיקות המשאירות את המערכת במצב מוגדר נקראות "פסיקות מדויקות". פסיקות אלה חייבות לקיים את התנאים הבאים:
    1. תוכן מונה הפקודות נשמר במקום ידוע.
    2. כל הפקודות שלפני הפקודה אליה מצביע מונה הפקודות בוצעו.
    3. אף אחת מהפקודות הנמצאות לאחר הפקודה אליה מצביע מונה הפקודות טרם בוצעה.
    4. מצב הפקודה שנמצאת במונה הפקודות ידוע (האם יש לבצע אותה או לא).
    פסיקות אשר אינן עומדות בקריטריונים אלה נקראות "פסיקות לא-מדויקות".
  • חידוש התהליך - פסיקות המאפשרות את המשך התהליך מהפקודה במונה הפקודות (הפקודה שגרמה לעירור הפסיקה) נקראות "פסיקות חוזרות". פסיקות הממשיכות את ביצוע התוכנית מהפקודה הבאה שאחרי הפקודה שבמונה הפקודות שהייתה אמורה להתבצע נקראות "פסיקות ממשיכות". פסיקות העוצרות את ביצוע התוכנית נקראות "פסיקות עוצרות".

בעיות בטיפול בפסיקות[עריכת קוד מקור | עריכה]

  • סדר הטיפול בפסיקות - בעת טיפול בפסיקות, הן בטיפול בשתי פסיקות המגיעות בו-זמנית והן בטיפול בפסיקה המגיעה בעת טיפול בפסיקה אחרת, חלק ממערכות ההפעלה ישעו את האפשרות לקבל פסיקות נוספות בעת הטיפול בפסיקה. כאשר משתמשים בשיטה זו, המעבד אינו יכול לטפל בפסיקות נוספות בזמן טיפול בפסיקה. שיטה זו עשויה לגרום לאובדן של פסיקות או לאי-הרצתן בזמן של פסיקות חשובות. מערכות הפעלה אחרות קובעות עדיפות לכל פסיקה (בדרך כלל דרך הכניסות של בקר הפסיקות, כך שפסיקות בכניסות נמוכות יותר מקבלות עדיפות על פני פסיקות בכניסות גבוהות יותר) ומטפלות בהן לפי סדר עדיפויות זה. כאשר מגיעה פסיקה המחוברת לכניסה נמוכה בזמן טיפול בפסיקה גבוהה, שומר המעבד את מצב המערכת (כפי שנעשה לתוכנית רגילה) ועובר לטפל בפסיקה הנמוכה.
  • ביצועים - פסיקות משמשות כדי להחליף את מנגנון ההמתנה הפעילה: על ידי הרדמת תהליכים הממתינים להתקני קלט/פלט והערתם באמצעות פסיקות ניתן לחסוך זמן עיבוד משמעותי המוקדש לתשאול ההתקן. יחד עם זאת, טיפול בפסיקה מחייב הכנסה ושליפה של מצב המערכת מהמחסנית והחלפת הקשר כפולה עבור כל פסיקה.

לקריאה נוספת[עריכת קוד מקור | עריכה]

  • ארגון המחשב ותכנותו כרכים א' - ב', אריה פיקז, הוצאת האוניברסיטה הפתוחה, מהדורת תשנ"ט.
  • מערכות מיקרו מחשבים, מיכאל קונג'ה, הוצאת שורש, 2012
  • מחשבים ספרתיים ומיקרו מחשבים, מיכאל קונג'ה, הוצאת שורש, 2008

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ ‏תהליך הנקרא Hooking