מהי מערכת 'זמן אמת'?
מערכת חומרה או תכנה נקראות מערכות זמן-אמת, אם הנה נדרשת לעמוד בקבועי זמן מדויקים וקבועים מראש. מערכת אינה מערכת זמן-אמת אם כל שנדרש ממנה הוא "לעבוד כמה שיותר מהר". מערכת זמן-אמת נדרשת לעמוד בקבועי הזמן שהוגדרו לה, ללא תלות בעומס הכלליבמערכת. הגדרה נוספת למערכת זמן-אמת, היא מערכת שפעולה שלה מוגדרת כתקינה לא רק אם היא תקינה מבחינה לוגית, אלא גם תלויה בזמן שלוקח לבצע אותה.
דוגמה למערכת-זמן אמת היא מערכת להקלטה של שידורי וידאו. על מערכת כזו לקודד 30 פריימים בשנייה ובמקביל לקודד שני ערוצי שמע, תוך שמירה על סנכרון בין הווידאו והשמע. אם המערכת לא תעמוד בהגדרות הביצועים האלו, ייעלמו מקטעים מהתצוגה ו\או מהשמע – ואת זאת ניתן להגדיר ככישלון המערכת.
דוגמה למערכת שאינה מערכת זמן אמת, למרות שפעולה מהירה שלה נחשבת רצויה, היא מערכת Outlook לקריאת דוא"ל.גם אם מערכת זו לא תגיב במהירות, וייקח זמן מסוים כדי לעבור מקריאת הודעה אחת לשנייה, אין בכך משום כישלון בפעולת המערכת.
סוגים שונים של מערכות זמן-אמת
בספרות המקצועית מוגדרים שני סוגים של מערכות זמן אמת: מערכות Hard Real-Time ומערכות Soft Real-Time.
מלבד זאת, מערכות זמן אמת ממומשות על פלטפורמות שונות, החל ממיקרו-בקרים ועד למחשבי PC רגילים, כתלות במערכת ההפעלה מיוחדת המותקנת עליהם, למשל EMBEDDED LINUX
מערכת Hard Real Time
מערכת תוגדר כמערכת Hard Real Time אם במערכת קיימות פעולות שסיום ביצוען ללא עמידה בקבועי הזמנים שהוגדרו מראש היא חסרת כל תועלת.
דוגמאות למערכות Hard Real-Time:
-
מערכת בקרה של טיל ליירוט טילים כדוגמת החץ. מיותר להסביר מדוע אין משמעות לתגובה מאוחרת של מערכת כזו לתנועת הטיל אותו היא אמורה להשמיד.
-
מערכת בקרה של מנוע רכב, היות ועיכוב בשליחת סיגנל בקרה למנוע עלול להכשיל את פעולת המנוע או אפילו לפגוע בו.
-
מערכות בקרה תעשייתיות, או מערכות בקרה לרובוטיקה, בהן נדרש סנכרון מדויק בין מספר רכיבי מערכת.
מערכות Soft Real-Time
מערכת תוגדר כ Soft Real Time אם יש למערכת דרישות ביצועים מדויקות, אך אי עמידה בהם לא נחשבת לכישלון המערכת. לעיתים המערכת תוכל לספק מענה מופחת לדרישות אך לעמוד בקבועי הזמן. דוגמה לכך היא ניגון סרטון וידאו במחשב והצגה של חלק מהפריימים בלבד.
מדוע נדרש פיתוח Real-Time? הצורך בגרסת Real-Time Linux.
כאמור, לפעולות במערכת Real Time יש דרישות ביצועים במגבלות זמן מסוימות. נניח שאנו נדרשים לפתח אפליקציה שתגיב לפעולה מסוימת של המשתמש במגבלת זמן של עד שנייה אחת. נניח שפיתחנו את האפליקציה ושהיא רצה תחת גרסה רגילה של לינוקס (שאינה מ"ה זמן-אמת). בנוסף, בבדיקות הביצועים של האפליקציה נמדד זמן תגובה ממוצע של חצי-שנייה – מהיר ב-50% מהנדרש. האם הדרישות נענו? לצערנו, לא.
הסיבה לכך היא גרסת מערכת ההפעלה, שאינה Real Time. מתזמן התהליכים של לינוקס (Linux Scheduler) מתוכנן לזמן תגובה אופטימלי במקרה הממוצע. הוא מתוכנן בצורה כזו כדי ליצור תחושה של מערכת ריספונסיבית ומהירה, אפילו כשמספר רב של אפליקציות רצות במקביל. אולם הוא אינו מבטיח שהרצת תהליך מסוים תסתיים בזמן מוגדר. הרצת התהליך עלולה להיות מופסקת בכל רגע לטובת הרצת תהליכים אחרים (Context-Switching), או קריאות מערכת אחרות. מנגד, מערכת הפעלה שהינה Real-Time מציעה תזמון תהליכים עם חלוקת זמן מובטחת (Real Time Scheduler).
אלטרנטיבות לשימוש ב-Real Time Linux
רגע לפני שאנחנו קופצים למים העמוקים של RT Linux, חשוב לציין מספר אלטרנטיבות שכדאי לבחון. לפעמים אפשר לעקוף את הצורך בשימוש במערכת הפעלה זמן-אמת על ידי שימוש ברכיבי חומרה ייעודיים לביצוע חלק מפעולות המערכת. לדוגמה,במקום לפתח מערכת בקרה להנעת זרוע רובוטית באמצעות RT Linux, ניתן להשתמש במספר מעגלי בקרה למנועי צעד שיקבלו פקודות ממערכת הבקרה הראשית (שלא תהייה מונחת זמן-אמת). בצורה כזו חלק ניכר מעומס המערכת ודרישות הזמן הקפדניות מועברות לרכיבים חיצוניים, ובכך מונעים את הצורך בשימוש במערכת הפעלה זמן-אמת. כמובן שה-tradeoff הוא הוספת חומרה ייעודית והעלאת הסיבוכיות של ארכיטקטורת המערכת הכללית.