פסיקה (מחשב)
במחשוב, פסיקה (באנגלית Interrupt; לפי האקדמיה ללשון העברית: פְּסָק[1]) היא אות המגיע למעבד, מצד רכיב חומרה או תוכנה ומורה להפסיק תהליך מסוים כדי לעבד תהליך אחר שטיפולו חשוב יותר. לאחר מכן המחשב יחזור לעבד את התהליך שהופסק.
בעת קבלת הפסיקה משהה המחשב את ביצועה הסדרתי של התוכנית, כדי להפעיל שגרת טיפול בפסיקה.
לאחר הטיפול בפסיקה, ממשיך המחשב בביצוע הסדרתי של התוכנית; הדבר דומה לאדם המבצע מלאכה כלשהי, ומפסיק כדי לענות לשיחת טלפון, ולאחר סיום השיחה, ממשיך במלאכתו מהנקודה שהופסקה.
פסיקות תוכנה נמצאות בשימוש נרחב במחשבים הפועלים בריבוי משימות ומהוות הפסקת פעולת תוכנית מחשב שלא דרך בקרת זרימה.
אטימולוגיה
[עריכת קוד מקור | עריכה]המונח פסיקה נגזר מן המילה הפסקה, בעקבות interrupt האנגלית.
ביצוע התוכניות במחשב
[עריכת קוד מקור | עריכה]- ערך מורחב – מחזור הבאה-ביצוע
בעת הפעלת תוכנית טוענת מערכת ההפעלה את התוכנית לזיכרון. כל פקודה בשפת מכונה נמצאת בתא זיכרון המכיל קידוד למהות הפקודה שיש לבצע ואת כתובות הזיכרון הרלוונטיות לפקודה זו. לאחר הטענת התוכנית לזיכרון מבוצעות הפקודות באופן סדרתי בזו אחר זו; ביצוע כל פקודה נקרא "מחזור עבודה", והוא מורכב משלושה חלקים עיקריים: "מחזור פסיקה", "מחזור הבאה" ו"מחזור ביצוע". כתובת הזיכרון המכילה את הפקודה הבאה שיש לבצע נשמרת באוגר מונה הפקודות (PC – Program Counter) והפקודה שיש לבצע נקראת מהזיכרון לאוגר הנקרא MBR – Memory Buffer Register.
- מחזור פסיקה – במחזור הפסיקה בודק המעבד האם קיימות פסיקות הממתינות לטיפולו, ובמקרה שכן, הוא מטפל בפסיקה וממשיך במחזור העבודה.
- מחזור הבאה – המעבד קורא לתוך האוגר MBR את הפקודה הנמצאת בכתובת הזיכרון שבמונה הפקודות ומקדם את מונה הפקודות לכתובת הבאה.
- מחזור ביצוע – הפקודה לביצוע עוברת מהאוגר MBR לאוגר הנקרא IR – Instruction Register, מנותחת ומבוצעת על ידי המעבד. מחזור הביצוע מורכב מארבעה שלבים הנקראים "מיקרו-פקודות".
המחשב מבצע סדרת פעולות זו בלולאה. כאשר ישנה הפרעה לביצוע התוכנית הרגיל, הנגרמת על ידי אירוע לא-צפוי המעורר פסיקה (כגון הקשה על תו במקלדת או חלוקה באפס) עובר המחשב לביצוע מחזור פסיקה לאחר מחזור הביצוע (ולפני מחזור ההבאה) ומטפל בפסיקה. מטרת הפסיקות היא לאפשר טיפול באירועים, תקינים או בלתי תקינים, שאינם חלק מהביצוע הסדרתי של התוכנית.
סוגי פסיקות
[עריכת קוד מקור | עריכה]ניתן לחלק את הפסיקות למספר סוגים:
- פסיקה אסינכרונית או פסיקה חיצונית – פסיקה הנגרמת על ידי רכיב חומרה, באופן שאינו תלוי בריצת התוכנית הנוכחית.
- פסיקות המגיעות מבקר הפסיקות – פסיקות המופעלות על ידי רכיבי חומרה המחוברים לבקר הפסיקות.
- פסיקות שאינן ניתנות למיסוך – פסיקות הדורשות טיפול מיידי אשר לא ניתן להתעלם מהן ולשמור את הטיפול בהן למועד מאוחר יותר. פסיקות אלה משמשות לרוב לניהול תהליכים קריטיים במחשב (כמו השעון), להודעה על שגיאות קריטיות בחומרה, או לטיפול במצבי קיצון (אתחול של המחשב באמצעות כפתור ה-Reset).
- פסיקה סינכרונית או פסיקה פנימית – פסיקה הנוצרת על ידי החומרה או התוכנה במועד ידוע מראש עקב ביצוע פקודה מסוימת בתוכנית. פסיקה כזו קרויה "סינכרונית" משום שהיא צפויה – ניתן לחזות את התעוררותה כאשר יתבצע קטע הקוד המתאים.
פסיקות מאפשרות לבצע תקשורת בין התקני קלט/פלט לתהליכים. בפסיקות אסינכרוניות מופרעת ריצת התוכנית כדי להעביר מידע מהתקן חומרה כלשהו למעבד. התקן שעון, למשל, מעביר בקשת פסיקה בקבועי זמן ידועים, המאפשרים למערכת למדוד את הזמן שעבר בין פעולות ולתזמן את ריצת התוכניות. בפסיקות סינכרוניות מעביר התקן כלשהו הודעה למערכת. כאשר מתבצעת חלוקה באפס, גורמת יחידת העיבוד המתמטית להעלאת פסיקה כדי לטפל בשגיאה הנוצרת. בפסיקות יזומות מעבירה התוכנה באמצעות פקודה מיוחדת את מספר הפסיקה שיש לעורר ובאופן זה מעבירה מידע להתקני קלט/פלט.
בתהליכים מסוימים נעשה שימוש ביותר מסוג פסיקה אחד: בעת כתיבת מידע לכונן דיסקטים, היכול לכתוב בית אחד בכל פעם, מעבירה התוכנית את המידע המיועד לכתיבה יחד עם המידע הנלווה (הפעולה לביצוע, ההתקן לכתיבה ומענו) לאוגרים המתאימים בבקר הכונן ומפעילה בקשת פסיקה יזומה כדי להתחיל את פעילות הבקר. כאשר כונן הדיסקטים מסיים את פעולתו, הוא מעורר בקשת פסיקה (IRQ) א-סינכרונית דרך בקר הפסיקות של המעבד. בהתאם למספר הפסיקה פונה המעבד לטבלת הפסיקות הנמצאת בזיכרון ומפעיל את שגרת הטיפול המתאימה. בגמר שגרת הטיפול מודיע המעבד לבקר הפסיקות שהטיפול בפסיקה הסתיים, ובקר הפסיקות מכבה את בקשת הפסיקה.
כאשר מנגנון הפסיקות ממומש דרך המעבד, מחברים בקר פסיקות בין ההתקנים המעוררים את הפסיקה לכניסת הפסיקות של המעבד, ובאופן זה ניתן לרבב מספר פסיקות כך שניתן לטפל בהן לפי חוקיות כלשהי. כאשר המנגנון ממומש באמצעות הזיכרון, ממפים את הפסיקות לתאים ידועים בזיכרון, כך ששינוי מצב התא מעיד על התעוררות פסיקה.
שימוש אופייני
[עריכת קוד מקור | עריכה]פסיקות משמשות בדרך כלל לשרת תזמונים בחומרה, העברת נתונים לאחסון וממנו (למשל, דיסק I/O) וממשקי תקשורת (כגון UART ו-Ethernet), טיפול באירועי מקלדת ועכבר, וכדי להגיב לכל אירוע אחר רגיש לזמן כנדרש על ידי מערכת האפליקציה. פסיקות שאינן ניתנות למִסּוּךְ (non masking) משמשות בדרך כלל כדי להגיב לבקשות בעדיפות גבוהה כגון פסק זמן של שעון Watchdog, אותות כיבוי ומלכודות (אנ').
טיימרי חומרה משמשים לעיתים קרובות ליצירת הפרעות מחזוריות. ביישומים מסוימים, פסיקות כאלה נספרות על ידי מטפל הפסיקות (אנ') כדי לעקוב אחר הזמן המוחלט או שחלף, או משמשות את מתזמן המשימות של מערכת ההפעלה לניהול ביצוע של תהליכים רצים, או שניהם. פסיקות תקופתיות משמשות בדרך כלל גם כדי להפעיל דגימה מהתקני קלט כגון ממירים אנלוגיים לדיגיטליים, ממשקי מקודד תוספתיים וכניסות GPIO, ולתכנת התקני פלט כגון ממירים דיגיטליים לאנלוגיים, בקרי מנוע ויציאות GPIO.
פסיקת דיסק מסמנת את השלמת העברת נתונים מהציוד ההקפי של הדיסק או אליו. זה עלול לגרום לתהליך לרוץ כשהוא ממתין לקריאה או כתיבה. פסיקת כיבוי חוזה אובדן מתח העומד בפתח, ומאפשרת למחשב לבצע כיבוי מסודר בזמן שעדיין נשאר מספיק כוח לעשות זאת.
פסיקות מקלדת גורמות בדרך כלל לאחסן הקשות על מנת ליישם את ההקלדה.
פסיקות משמשות לפעמים כדי לחקות הוראות שאינן מיושמות במחשבים מסוימים. לדוגמה, הוראות נקודה צפה עשויות להיות מיושמות בחומרה במערכות מסוימות ולחקות אותן במערכות להן עלות נמוכה יותר. מקרה נוסף, ביצוע של הוראת נקודה צפה שלא הוטמעה יגרום לפסיקת חריגה של "הוראה בלתי חוקית". המנגנון המטפל בפסיקות יממש את פונקציית הנקודה הצפה בתוכנה ולאחר מכן יחזור לתוכנית שקיבלה פסיקה כאילו בוצעה ההוראה המיושמת בחומרה. זה מספק ניידות תוכנת יישומים על פני כל הקו.
הפעלת פסיקות
[עריכת קוד מקור | עריכה]בחומרה
[עריכת קוד מקור | עריכה]ניתן לחלק את פסיקות החומרה לשני סוגים:
- Edge-Triggered Interrupts – פסיקות המעבירות סיגנל (אות מידע) כלשהו כדי לציין בקשת פסיקה. אפיק הנתונים ISA עובד בשיטה זו.
- Level-Triggered Interrupts – פסיקות המשנות את מצב זרימת החשמל באפיק נתונים באופן קבוע עד לטיפול בפסיקה. ההתקן המעוניין בפסיקה משנה את מצב הקו עד לקבלת הודעה מהמעבד לגבי טיפול בפסיקה או טיפול במצב שעורר את הפסיקה. אפיקי הנתונים PCI ו-PCI Express עובדים בשיטה זו.
כאשר התקן מעוניין לעורר פסיקה, הוא מעביר בקשת פסיקה דרך אחת הכניסות של בקר הפסיקות. כל התקן המסוגל לעורר פסיקה מחובר לבקר הפסיקות דרך כניסה אחת המקצה לו מספר מזהה. בקר הפסיקות מעביר את בקשת הפסיקה למעבד דרך כניסה בודדת או זוגית במעבד, הנקראת "כניסת הפסיקות". המעבד בודק אחת לכמה זמן את כניסת הפסיקות שלו; כאשר הוא מגלה שקיימת בקשה לפסיקה, הוא שומר את מצב המערכת (הכולל את האוגרים, את הפקודה הבאה לביצוע וכתובות הזיכרון הרלוונטיות) במחסנית (סוג המחסנית תלוי במערכת ההפעלה) ומתשאל, באפיק מידע אחר, את בקר הפסיקות לגבי מספר הפסיקה. לאחר קבלת מספר הפסיקה מעביר המעבד את המערכת למצב מיוחס ומחפש בטבלת הפסיקות את שגרת הטיפול המתאימה.
במערכת ההפעלה
[עריכת קוד מקור | עריכה]לאחר העברת המערכת למצב מיוחס בודקת מערכת ההפעלה בטבלת הפסיקות כיצד לטפל בשגרה. לרוב, מכילה טבלת הפסיקות פקודות קפיצה לכתובות המכילות שגרות לטיפול בפסיקה שהתעוררה. מערכת ההפעלה טוענת את השגרה הנמצאת בכתובת שהתקבלה מטבלת הפסיקות. מערכות הפעלה מודרניות מחזיקות מבנה נתונים בליבה המכיל את ההפניות לשגרות הרלוונטיות. ניתן לשנות את טבלת הפסיקות כך שתפנה לשגרה אחרת מזו המוגדרת כברירת מחדל[2]. לאחר ביצוע שגרת הטיפול החדשה נהוג לקרוא לשגרה הישנה כדי להימנע מבעיות תאימות בין תוכנות. הטיפול בפסיקה יכול לכלול ביצוע שגרות טיפול, הערת תוכניות שביצעו המתנה רדומה והפעלת מגנון הפסיקות כך שתתאפשר קבלת פסיקות מחדש (בחלק מהארכיטקטורות). בגמר הטיפול המעבד טוען את הנתונים שנשמרו במחסנית, מכבה את בקשת הפסיקה ומחזיר את הבקרה להוראה הבאה אחרי זו שממנה נלקחה. ברוב המקרים, הפיקוח חוזר לתוכנית במרחב המשתמש.
שגרת הטיפול בפסיקה
[עריכת קוד מקור | עריכה]שגרת הטיפול בפסיקה (Interrupt Service Routine, ISR) היא שגרה המופעלת בעקבות קבלת פסיקה. במערכות הפעלה ישנות, בעת ביצוע שגרת הטיפול בפסיקה היה המעבד חסום בפני ביצוע פעולות נוספות. מסיבה זו, במערכות הפעלה מודרניות (ובמיוחד במערכות זמן אמת) שגרות הטיפול מחולקות לשני סוגים: שגרות טיפול מרמה ראשונה, ושגרות טיפול מרמה שנייה. שגרות הטיפול מרמה ראשונה מבצעות את הפעולות ההכרחיות לשחרור הפסיקה, ומתזמנות את ריצת שגרות הטיפול מהרמה השנייה, שאחראיות לטפל במידע שהתקבל באמצעות הפסיקה. בזמן הטיפול באמצעות שגרות מרמה ראשונה מופסקת ריצת התוכנית, דבר העשוי לפגוע בביצועיה. שגרות טיפול מרמה שנייה רצות לרוב מתוך תהליכון נפרד או בזמן הפנוי של המערכת.
מאפייני פסיקות
[עריכת קוד מקור | עריכה]פרט לחלוקת הפסיקות לפי מקור הפסיקה (פנימית או חיצונית) קיימים מספר מאפיינים נוספים לפסיקות:
- מצב המערכת – פסיקות המשאירות את המערכת במצב מוגדר נקראות "פסיקות מדויקות". פסיקות אלה חייבות לקיים את התנאים הבאים:
- תוכן מונה הפקודות נשמר במקום ידוע.
- כל הפקודות שלפני הפקודה אליה מצביע מונה הפקודות בוצעו.
- אף אחת מהפקודות הנמצאות לאחר הפקודה אליה מצביע מונה הפקודות טרם בוצעה.
- מצב הפקודה שנמצאת במונה הפקודות ידוע (האם יש לבצע אותה או לא).
- פסיקות אשר אינן עומדות בקריטריונים אלה נקראות "פסיקות לא-מדויקות".
- חידוש התהליך – פסיקות המאפשרות את המשך התהליך מהפקודה במונה הפקודות (הפקודה שגרמה לעירור הפסיקה) נקראות "פסיקות חוזרות". פסיקות הממשיכות את ביצוע התוכנית מהפקודה הבאה שאחרי הפקודה שבמונה הפקודות שהייתה אמורה להתבצע נקראות "פסיקות ממשיכות". פסיקות העוצרות את ביצוע התוכנית נקראות "פסיקות עוצרות".
בעיות בטיפול בפסיקות
[עריכת קוד מקור | עריכה]- סדר הטיפול בפסיקות – בעת טיפול בפסיקות, הן בטיפול בשתי פסיקות המגיעות בו-זמנית והן בטיפול בפסיקה המגיעה בעת טיפול בפסיקה אחרת, חלק ממערכות ההפעלה ישעו את האפשרות לקבל פסיקות נוספות בעת הטיפול בפסיקה. כאשר משתמשים בשיטה זו, המעבד אינו יכול לטפל בפסיקות נוספות בזמן טיפול בפסיקה. שיטה זו עשויה לגרום לאובדן של פסיקות או לאי-הרצתן בזמן של פסיקות חשובות. מערכות הפעלה אחרות קובעות עדיפות לכל פסיקה (בדרך כלל דרך הכניסות של בקר הפסיקות, כך שפסיקות בכניסות נמוכות יותר מקבלות עדיפות על פני פסיקות בכניסות גבוהות יותר) ומטפלות בהן לפי סדר עדיפויות זה. כאשר מגיעה פסיקה המחוברת לכניסה נמוכה בזמן טיפול בפסיקה גבוהה, שומר המעבד את מצב המערכת (כפי שנעשה לתוכנית רגילה) ועובר לטפל בפסיקה הנמוכה.
- ביצועים – פסיקות משמשות כדי להחליף את מנגנון ההמתנה הפעילה: על ידי הרדמת תהליכים הממתינים להתקני קלט/פלט והערתם באמצעות פסיקות ניתן לחסוך זמן עיבוד משמעותי המוקדש לתשאול ההתקן. עם זאת, טיפול בפסיקה מחייב הכנסה ושליפה של מצב המערכת מהמחסנית והחלפת הקשר כפולה עבור כל פסיקה.
ראו גם
[עריכת קוד מקור | עריכה]לקריאה נוספת
[עריכת קוד מקור | עריכה]- ארגון המחשב ותכנותו כרכים א'–ב', אריה פיקז, הוצאת האוניברסיטה הפתוחה, מהדורת תשנ"ט.
- מערכות מיקרו מחשבים, מיכאל קונג'ה, הוצאת שורש, 2012
- מחשבים ספרתיים ומיקרו מחשבים, מיכאל קונג'ה, הוצאת שורש, 2008
- Andrew S. Tanenbaum, Modern Operating System, Second Edition, Prentice Hall International, 2001 ISBN 0-13-092641-8.
- Kernel Extensions and Device Support Programming Concepts, IBM website.
הערות שוליים
[עריכת קוד מקור | עריכה]- ^ פְּסָק במילון טכנולוגיית המידע: טכניקות (תשס"ו), באתר האקדמיה ללשון העברית
- ^ תהליך הנקרא Hooking