באגים הקשורים לשעה ותאריך

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

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

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

באגים היסטוריים[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – באג 2000
שנה תיאור פתרון
1970 במהלך שנות ה-60 של המאה ה-20 במספר תוכנות היה נהוג לייצג את השנה באמצעות ספרה בודדת (0–9). כך היה יותר פשוט לרשום, למשל בשפות תכנות כמו COBOL. הבעיה אותרה ותוקנה עוד לפני 1970 ולא ידוע על נזק שנגרם כתוצאה מכך.
1975 טווח השדה של השנה במערכת ההפעלה PDP-10 לא היה מסוגל להכיל יותר מידע החל מ-4 בינואר באותה שנה. נרשמו מספר תקלות[1]. פותח פורמט חלופי.
1997 מערכת ההפעלה Domain/OS (אנ') שהתבססה על חישוב זמן לפי 4 מיקרושניות הגיעה לסיומה[דרושה הבהרה] ב-2 בנובמבר, עת הגיעה ל-47 סיביות.
1999 התרחשו מספר באגים בחודשים האחרונים של השנה, הקשורים בהתכוננות לקראת באג 2000. בנוסף, התאריך 9 בספטמבר 1999 (9/9/99) שימש כדי לייצג תאריך לא ידוע.
2000 בשנה זו נוצרה בעיה מאחר שעד אותה שנה ספרות השנה הוצגו באמצעות שתי ספרות בלבד, מטעמי נוחות וחיסכון. מפתחי הקודים מעשרות שנים מלפני כן תיקנו את הבעיה ובפועל לא נגרמו נזקים משמעותיים[2].
2001 ב-9 בספטמבר התרחש [דרוש מקור] באג במערכת ההפעלה Unix כאשר מספר השניות בזמן יוניקס הגיע למיליארד. הבאג יצר בעיה בחישוב תאריכים המשווים שניות לתאריכים לפי זמן יוניקס.
2010 במספר מקרים נרשמו בעיות [דרוש מקור] במעבר בין קידוד מספרים בבסיס הקסדצימלי לבין עשרוני בקידוד בינארי.
2013 הגשושית פגיעה עמוקה של סוכנות החלל נאס"א איבדה קשר עם כדור הארץ באוגוסט 2013, אחרי שהשעון שבה ספר 32^2 עשיריות שנייה מאז 1 בינואר 2000.
2015 חלק מהטלפונים הסלולריים של סמסונג שהכילו ערכת שבבים של חברת Agere מיאנו לעבור את התאריך 31 בדצמבר 2014. השנה השתנתה אוטומטית ל-2015, אבל חזרה לתאריך הבסיס אחרי כל הפסקת מתח (כגון הוצאת סוללה).
2017 הדקה האחרונה בשנת 2016 הייתה דקה מעוברת ועם כניסת השנה החדשה, נוצרו בעיות בגישה למספר שרתים[3]. טכנאים התגברו על הבעיה בתוך 90 דקות.

באגים צפויים[עריכת קוד מקור | עריכה]

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

Postscript-viewer-shaded.png ערך מורחב – באג 2038

מערכות יוניקס המקוריות מותאמות למחשבי 32 ביט, ומונה הזמן בהן הוא מספר מסומן (כלומר חיובי או שלילי) שבו רק 31 ביטים מיועדים למנייה וביט אחד לסימן. המונה סופר שניות מ-1 בינואר 1970 בחצות, והוא יתמלא כשיגיע ל-2,147,483,647 ב-19 בינואר 2038. מרגע זה הוא יהפוך סימן ויתחיל למנות מ--2,147,483,647 המייצג את 13 בדצמבר 1901[2].

בעיה זו אינה קיימת במערכות יוניקס מודרניות שעובדות ב-64 ביט. מערכות יוניקס ישנות של 32 ביט שמחשבות תאריכים עתידיים, ייתקלו בבאג עוד לפני 2038.

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

במערכות של חברת אפל המבוססות על HFS (אנ') או על HFS Plus (אנ') (ברירת מחדל של מחשבי מקינטוש), טווח השעון הוא רק עד 6 בפברואר 2040. אפל מתכננת מערכת קבצים חדשה (אנ') שתחליף את המערכות האלו.

במערכות IBM I (AS400( בתאריכים עם שתי ספרות לשנה, תהיה בעיה בשנת 2040. עכשיו, אם השנה היא אחרי שנת 40 זה נחשב למאה ה-19, ואם השנה היא פחות משנת 40 נחשב למאה ה-20. IBM הצהירו שהם מתכוונים לתקן.

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

ב-17 בספטמבר 2042 הזמן האטומי הבינלאומי יתהפך במחשבי IBM מיינפריים (IBM mainframe) וכן בדורותיהם הבאים, כולל הzSeries. הזמן אוניברסלי מתואם יהיה מספר שניות מוקדם יותר עקב אי-שיקלולה של דקה מעוברת בחישוב הזמן.

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

תוכנות המחשבות ציון זמן לפי מספר ימים צפויות להיתקל בבאג, כאשר מספר הימים יגיע ל-32,768 (הם 215) מאז תחילת הספירה ב-1989. תוכנות אשר משתמשות בספירת זמן מאז 1 בינואר 1900 ייתקלו בבעיה ב-6 ביוני כאשר ייספרו 65,536 (216) ימים.

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

מערכות DOS ו-Microsoft Windows תומכות בממשק תכנות יישומים עד לתחילת שנת 2100, כאשר דבר זה מוצהר על-ידם. הסיבה היא שמערכות אלו לא מתוכנתות לכל הכללים הייחודיים של שנה מעוברת שיחולו בשנה זו[4]. ייתכנו בעיות לא צפויות ב-1 בינואר של שנה זו.

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

מערכות, קבצים וממשקים המשתמשים ב-Unix בפורמט זמן time_t מחשבים את הזמן לפי שניות שחלפו מאז 1 בינואר 1970 יסיימו את המקום בשדה המאפשר רישום. זה ייקרה בתאריך 7 בפברואר 2106.

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

הזמן שמוגדר ב-File Allocation Table שמבוסס על DOS ייכנס לערך שלילי ב-31 בדצמבר 2107.

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

תוכנות המחשבות תאריכים של לוח השנה העברי עלולות לא להיות פעילות כאשר שדה השנה, המתחשב בארבע אותיות כציון השנה, יצטרך לחשב תאריך בן חמש אותיות בשנת ה'תתקי"א[4]. עלולים להיתקל בבעיה זו עוד לפני כן בחישוב של תאריכים עתידיים.

באגים של שנים רחוקות מאוד[עריכת קוד מקור | עריכה]

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

10,000[עריכת קוד מקור | עריכה]

באג 10,000 (אנ') יתרחש כאשר המחשב יצטרך לזהות שנה בעלת חמש ספרות במקום ארבע. לפי הערכות, גם אם תתקיים האנושות עד אז, כל מערכות המחשבים ישתנו ללא היכר עד אז ולכן אין מה לדאוג בקשר לבעיה זו. עם זאת, בקרב מחקרים (בעיקר בפיזיקה ואסטרונומיה) נדרשים חישובים לתהליכים שאורכים אלפי שנים - למשל, בטיפול בפסולת גרעינית. במחשבי חברת אפל באג זה עלול להתרחש בשנת 10,001 בשל שיטת חישוב שונה של תאריכים.
ארגון בשם Long Now Foundation (אנ') פועל לשם הגברת המודעות לבאג ומנסה למצוא פתרונות מבעוד מועד[5].

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

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

  1. ^ ידיעה בתוך אתר The RISKS Digest, פורסם במקור ב-11 בדצמבר 1985 (באנגלית)
  2. ^ 2.0 2.1 עידו גנדל, באג מחשבים, באתר של "רשת 13", 10 בנובמבר 2008 (במקור, מאתר "nana10")
  3. ^ באג 2017: השנייה הנוספת יצרה פאניקה בשרתים, באתר ynet, 3 בינואר 2017
  4. ^ 4.0 4.1 אריה סתר, ‏באג 2100 ובאג תתקי"א, באתר "הידען", 28 בספטמבר 2004
  5. ^ אתר הארגון, נצפה ב-3 בדצמבר 2016 (באנגלית)