האתר הישראלי להנדסת תכנה

דף ראשי | מפת האתר | רשימת מושגים | מקורות נוספים | אודות
מידול מערכות זמן-אמת מבצעי זמן-אמת

תכנות זמן-אמת

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

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

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

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

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

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

מידול מערכות זמן-אמת לתחילת הדף מבצעי זמן-אמת
©איתן 2003. כל הזכויות שמורות למערכת המידע איתן