באג 2038 הוא תקלה שנובעת עקב הגעת שיטת ספירת הזמן הממוחשבת UNIX Time לקיצה, מה יקרה לכל התוכנות שמשתמשות בשיטה זו, והאם יש לנו ממה לחשוש?
למי שלא זוכר, באג 2000 איים לשתק את עולם המחשבים ולגרום לקריסת מערכות טוטאלית בעת הגעת התאריך 1.1.2000, מה שבסופו של דבר התברר כמהומה על לא מאומה. האם האיום הבא שנקרא באג 2038 יתברר גם הוא כלא קטלני בכלל, או שהפעם אנו באמת עומדים לפני קריסת מערכות טוטאלית?
באג 2000
על מנת שנוכל להבין יותר טוב להבדלים שבין שני האירועים, יש להבין קודם את הגורמים והתוצאה של באג 2000. התברר שבנתונים תאריכיים רבים המאוחסנים במאגרי נתונים ממוחשבים רשומה השנה, בשתי ספרות בלבד (שנת 1982 נכתבת כשנת 82). בצורת רישום זו לא הייתה בעיה כל עוד הנתונים עסקו רק באירועים שקדמו לשנת 2000, אך יש בה בעיה כאשר הנתונים הם משנת 2000 והלאה. השוואה בין תאריך בשנת 2000, שבו הוצגה השנה בצורה "00", לבין תאריך בשנים עברו תיתן במצב זה תשובה שגויה, משום ש-"00" קטן מ-"82", אף ששנת 2000 מאוחרת משנת 1982. גם חישובים בין הזמנים שחלפו בין שנה לשנה תציג תשובה שגויה. באג זה נקרא בזמנו באג 2000 או BUG Y2K, ועורר חשש כבד מאוד, הן ביחס לתפקודן של מערכות מידע כגון שרתים בנקאיים, שירותי מחשוב לחלל ועוד.
בסופו של דבר לא התממש החשש מבאג 2000, ככל הנראה עקב ההשקעות שנעשו לפתרון הבעיה קודם להגעתה של שנת 2000. שתי שיטות עיקריות ששימשו להתמודדות עם בעיית באג 2000 היו מעבר יסודי על חומרה ותוכנה בניסיון לאתר טיפול שגוי בתאריכים ותיקונו, והחלפת חומרות ותוכנות מיושנות שנכלל בהן באג 2000. ההכנות האינטנסיביות לבאג הביאו, מכל מקום, לשדרוג מערכות מחשוב בעולם כולו, מעל ומעבר לטיפול בבאג עצמו.
באג 2038
זמן יוניקס (Unix time), היא שיטה לתיאור נקודה בזמן המוגדרת על ידי מספר השניות שחלפו מאז יום חמישי, 1 בינואר 1970, בשעה 00:00:00 לפי הזמן האוניברסלי המתואם מבלי לספור דקות מעוברות. שיטה זו נפוצה בעיקר בקרב מערכות הפעלה מסוימות וקבצים. כיוון ששיטה זו לא כוללת דקות מעוברות, זו אינה תצוגה אמיתית של הזמן האוניברסלי המתואם. סופה של שיטת ספירה זו תגיע לקצה בתאריך היעד שלה – 19.1.2038, מה שאומר כמובן שכל מחשב שמערכת ההפעלה שלו משתמשת בשיטת זמן יוניקס, וכל תוכנה שמשתמשת בשיטה זו יגיעו לקיצם בתאריך זה.
הבאג אינו קיים רק במערכות הפעלה, אלא בכל תוכנה המשתמשת במשתנה בן 32 סיביות לשמירת הזמן באופן מובנה בה. בין הדוגמאות לכך נמצאים מערכות קבצים השומרות את הזמן במשתנה בן 32 סיביות, פורמטים של קבצים בינאריים למערכות 32 סיביות, בסיסי נתונים עם משתני זמן בני 32 סיביות ושפות שאילתא דוגמת SQL עם פקודות דוגמת ()UNIX_TIMESTAMP.
פתרונות אפשריים
בשלב הנוכחי אין פתרון קל ופשוט כגון עדכון תוכנה שניתן להוריד ולהתקין בכל המחשבים שבהם ישנו פוטנציאל נזקי. במערכות הפעלה מסויימות כגון NetBSD בגרסה 6.0 ומעלה, OpenBSD ועוד ישנה כבר התאמה ל-64 סיביות על מנת להכיל את אורך המחרוזת של זמן היוניקס, אך הבעיה אינה נפתרת במידע ישן וקיים, אלא רק בחדש. מערכת ההפעלה לינוקס משתמשת במשתנה זמן של 64 סיביות עבור ארכיטקטורת חמחשב של 64 סיביות בלבד (ולא עבור גרסאות 32 ביט), עבר מעבדים שנבנו בארכיטקטורה של 32 סיביות לא נעשה כל שינוי וזאת על מנת שלא לפוגע במערכות קיימות. מערכת ההפעלה Windows לדוגמה כבר הפסיקה להציע מערכות הפעלה של 32 סיביות, אך צריך לזכור שאלו עדיין קיימות במחשבים רבים בשוק, למשל עשרות מיליוני מחשבים אשר עדיין מריצים את Windows XP.
הפתרון האולטימטיבי הוא סבלנות, שכן הסיכויים שבשנת 2038 עדיין נוכל למצוא שרתים ומחשבים, בעיקר במגזרים הממשלתיים או העסקיים אשר עדיין מריצים מערכות מחשוב ישנות המתבססות על מעבדים ומערכות הפעלה בעלות 32 סיביות הוא נמוך מאוד עד כדי לא קיים. בממשלות, חברות וארגונים נוהגים לשדרג את שירותי המחשוב והשרתים המרכזיים שלהם מדי כמה שנים ולכן הסיכוי הגדול הוא שבסופו של דבר נוכל לעבור את ה-19.1.2038 בבטחה כפי שעברנו את ה-1.1.2000, אז העולם עצר נשימתו בפני הבאג ש"הולך לשגע את המערכות הפיננסיות בעולם".
תגובה אחת
פיל לבן פירושו מבנה או כל אובייקט אחר שאין לו שימוש, למרות שנבנה או נוצר כדי לשמש למשהו.
מה שאתה מתכוון אליו הוא "עורבא פרח": שמועת שווא, שאין בה ממש.