2038 ல் கம்ப்யூட்டர் பிரச்னை
2000 ஆண்டு தொடங்கும் முன்னால்,Y2K என்று ஒரு பிரச்னை அனைத்து ஊடகங்களிலும் பேசப்பட்டது. கம்ப்யூட்டரில் உள்ள புரோகிராம்கள், 2000 ஆண்டு தொடங்கும்போது தவறாக தேதியைக் கணக்கிடத் தொடங்கும் என்றும் இதனால் உலகெங்கும் பல பிரச்னைகள் ஏற்படும் வாய்ப்புகள் உள்ளன என்றும் பேசப்பட்டது.
பல நிறுவனங்கள் தற்காப்பு நடவடிக்கையாகப் பல வழிகளைக் கையாண்டனர். இறுதியில் எதிர்பார்த்த இழப்புகள் ஏற்படவில்லை. அதற்கான தேவையான மாற்றங்களைப் பல நிறுவனங்கள் தாங்களாக மேற்கொண்டனர்.
இப்போது இன்னொரு பிரச்னை எதிர்பார்க்கப்படுகிறது. இது 2038 ஆம் ஆண்டில் ஏற்படும் என அறியப்பட்டுள்ளது. இந்த பிரச்னைUnix Millennium Bug, Y2K38 அல்லது Y2.038K என அழைக்கப்படுகிறது.
இந்த பிரச்னைக்குக் காரணம் சி புரோகிராமிங் மொழியில் பின்பற்றப்படும் ஒரு செயல்பாடுதான். சி புரோகிராம் ஸ்டாண்டர்ட் டைம் லைப்ரரி என்று ஒரு கோட்பாட்டினைப் பின்பற்றுகிறது. இதில் நேரமானது 4 பைட் பார்மட்டில் கணக்கிடப்படுகிறது. இதனைப் பயன்படுத்தி நேரத்தின் மதிப்பு கணக்கிடப்படுகிறது.
அதன் அடிப்படையில் கணக்கீடுகள், மாற்றங்கள் மேற்கொள்ளப் படுகின்றன.
இந்த 4 பைட் ஸ்டாண்டர்ட் நேரத்தைக் கணக்கிடுகையில், நேரத்தின் தொடக்கத்தினை ஜனவரி 1, 1970 12:00:00 முற்பகல் ஆக எடுத்துக் கொள்கிறது. இந்த நேரத்தில் நேர மதிப்பு 0 எனத் தொடங்கப்படுகிறது.
எந்த ஒரு நேரம் மற்றும் தேதியின் மதிப்பு இந்த 0 மதிப்பிற்குப் பின்னர் விநாடிகளின் கணக்கில் எடுத்துக் கொள்ளப்படும். எனவே, எடுத்துக் காட்டாக 919642718 என்ற மதிப்பு ஜனவரி 1, 1970 12:00:00 முற்பகலுக்குப்பின் 919642718 விநாடிகள் எனக் கணக்கிடப்படும். அப்படிக் கணக்கிடப்படுகையில் விடை ஞாயிறு, பிப்ரவரி 21, 1999 16:18:38 எனக் கிடைக்கும்.
இது ஒரு வசதியான கணக்கீடு. ஏனென்றால் இரண்டு மதிப்புகளை விநாடிகளில் கணக்கிட்டு இதன் மூலம் நேரம் மற்றும் நாளினைக் கையாள முடிகிறது. இதன் மூலம் இரு வேறு நேரம், நாள், மாதம் ஆண்டுகளைக் கையாள முடியும்.
ஆனால் ஒரு 4 பிட் இன்டிஜர் வழியைப் பின்பற்றுகையில் அதன் வழி சொல்லப்படக் கூடிய அதிக பட்ச மதிப்பு 2,14,74,83,647ஆகும். இங்கு தான் ஆண்டு 2038 என்ற பிரச்னை எழுகிறது. இந்த மதிப்பை நாள் கணக்கில் பார்க்கையில், அது ஜனவரி 19, 2038 03:14:07 ஆக மாறுகிறது. இந்த நாள் அன்று, சி புரோகிராம்கள் நேரம் கணக்கிடுவதில் திணற ஆரம்பிக்கும். ஏனென்றால் இதற்குப்
பின்னர் இந்த புரோகிராம் கள் நெகடிவ் நேரம் காட்டத் தொடங்கும்.
புரோகிராம் எழுதத் தெரிந்தவர்கள், கீழ்க்காணும் சி புரோகிராம் ஒன்றை எழுதி இயக்கிப் பாருங்கள். உங்களுக்கு இதன் பொருள் தெரியும்.
01.#include
02.#include
03.#include
04.#include
05.
06.int main (int argc, char **argv)
07.{
08. time_t t;
09. t = (time_t) 1000000000;
10. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
11. t = (time_t) (0x7FFFFFFF);
12. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
13. t++;
14. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
15. return 0;
16.}
இந்த புரோகிராமின் அவுட்புட்
1.1000000000, Sun Sep 9 01:46:40 2001
2.2147483647, Tue Jan 19 03:14:07 2038
3.2147483648, Fri Dec 13 20:45:52 1901
என அமையும்.
இந்த பிரச்னையை சாப்ட்வேர் கட்டமைப்பைத் திருத்துவதன் மூலம் தீர்த்துவிடலாம் என்று அறிவிக்கப் பட்டுள்ளது. பழைய Y2K பிரச்னை போல பெரிய அளவில் பாதிப்பு ஏற்படாமல் தடுத்துவிடலாம் என்று நம்பிக்கை தெரிவித்துள்ளனர்.
சிலர், ஐ.பி.எம். வகை பெர்சனல் கம்ப்யூட்டர்களில் இந்த பிரச்னை 2016 ஆம் ஆண்டிலேயே வரும் எனக் கணித்துள்ளனர். ஏனென்றால் இந்த வகைக் கம்ப்யூட்டர்களில் நேரமானது ஜனவரி 1,1980 எனத் தொடங்கும் வகையில் அமைக்கப்பட்டுள்ளது. இந்த வகைக் கம்ப்யூட்டர்களைத் தான் நம்மில் பெரும்பாலோனோர் பயன்படுத்தி வருகிறோம்.
விண்டோஸ் என்.டி. சிஸ்டம் பயன்படுத்தும் கம்ப்யூட்டர்களில் இந்த பிரச்னை இப்போதைக்கு இல்லை. ஏனென்றால் அவற்றில் நேரத்தைக் கணக்கிட 64 பிட் இன்டிஜர் அடிப்படையாக உள்ளது. மேலும் அதன் கணக்கீடு 100 நானோ நொடிகளை அடிப்படையாகக் கொண்டது.
அதன் நேரம் ஜனவரி 1, 1601 என்பதால், 2184ல் தான் என்.டி. சிஸ்டங்களில் இந்த பிரச்னை ஏற்படும் வாய்ப்பு உள்ளது. இந்த பிரச்னை குறித்து ஆப்பிள் நிறுவனம் கூறுகையில் தன் கம்ப்யூட்டர்களில் இந்த பிரச்னைக்கு இடம் இல்லை எனத் தெரிவித்துள்ளது. இப்போதைக்கு உள்ள நிலையில், கணக்கீட்டின் அடிப்படையில், மேக் கம்ப்யூட்டர்களில் இந்த பிரச்னை 29,940 ஆம் ஆண்டில் தான் ஏற்படுமாம்.
பல நிறுவனங்கள் தற்காப்பு நடவடிக்கையாகப் பல வழிகளைக் கையாண்டனர். இறுதியில் எதிர்பார்த்த இழப்புகள் ஏற்படவில்லை. அதற்கான தேவையான மாற்றங்களைப் பல நிறுவனங்கள் தாங்களாக மேற்கொண்டனர்.
இப்போது இன்னொரு பிரச்னை எதிர்பார்க்கப்படுகிறது. இது 2038 ஆம் ஆண்டில் ஏற்படும் என அறியப்பட்டுள்ளது. இந்த பிரச்னைUnix Millennium Bug, Y2K38 அல்லது Y2.038K என அழைக்கப்படுகிறது.
இந்த பிரச்னைக்குக் காரணம் சி புரோகிராமிங் மொழியில் பின்பற்றப்படும் ஒரு செயல்பாடுதான். சி புரோகிராம் ஸ்டாண்டர்ட் டைம் லைப்ரரி என்று ஒரு கோட்பாட்டினைப் பின்பற்றுகிறது. இதில் நேரமானது 4 பைட் பார்மட்டில் கணக்கிடப்படுகிறது. இதனைப் பயன்படுத்தி நேரத்தின் மதிப்பு கணக்கிடப்படுகிறது.
அதன் அடிப்படையில் கணக்கீடுகள், மாற்றங்கள் மேற்கொள்ளப் படுகின்றன.
இந்த 4 பைட் ஸ்டாண்டர்ட் நேரத்தைக் கணக்கிடுகையில், நேரத்தின் தொடக்கத்தினை ஜனவரி 1, 1970 12:00:00 முற்பகல் ஆக எடுத்துக் கொள்கிறது. இந்த நேரத்தில் நேர மதிப்பு 0 எனத் தொடங்கப்படுகிறது.
எந்த ஒரு நேரம் மற்றும் தேதியின் மதிப்பு இந்த 0 மதிப்பிற்குப் பின்னர் விநாடிகளின் கணக்கில் எடுத்துக் கொள்ளப்படும். எனவே, எடுத்துக் காட்டாக 919642718 என்ற மதிப்பு ஜனவரி 1, 1970 12:00:00 முற்பகலுக்குப்பின் 919642718 விநாடிகள் எனக் கணக்கிடப்படும். அப்படிக் கணக்கிடப்படுகையில் விடை ஞாயிறு, பிப்ரவரி 21, 1999 16:18:38 எனக் கிடைக்கும்.
இது ஒரு வசதியான கணக்கீடு. ஏனென்றால் இரண்டு மதிப்புகளை விநாடிகளில் கணக்கிட்டு இதன் மூலம் நேரம் மற்றும் நாளினைக் கையாள முடிகிறது. இதன் மூலம் இரு வேறு நேரம், நாள், மாதம் ஆண்டுகளைக் கையாள முடியும்.
ஆனால் ஒரு 4 பிட் இன்டிஜர் வழியைப் பின்பற்றுகையில் அதன் வழி சொல்லப்படக் கூடிய அதிக பட்ச மதிப்பு 2,14,74,83,647ஆகும். இங்கு தான் ஆண்டு 2038 என்ற பிரச்னை எழுகிறது. இந்த மதிப்பை நாள் கணக்கில் பார்க்கையில், அது ஜனவரி 19, 2038 03:14:07 ஆக மாறுகிறது. இந்த நாள் அன்று, சி புரோகிராம்கள் நேரம் கணக்கிடுவதில் திணற ஆரம்பிக்கும். ஏனென்றால் இதற்குப்
பின்னர் இந்த புரோகிராம் கள் நெகடிவ் நேரம் காட்டத் தொடங்கும்.
புரோகிராம் எழுதத் தெரிந்தவர்கள், கீழ்க்காணும் சி புரோகிராம் ஒன்றை எழுதி இயக்கிப் பாருங்கள். உங்களுக்கு இதன் பொருள் தெரியும்.
01.#include
02.#include
03.#include
04.#include
05.
06.int main (int argc, char **argv)
07.{
08. time_t t;
09. t = (time_t) 1000000000;
10. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
11. t = (time_t) (0x7FFFFFFF);
12. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
13. t++;
14. printf (“%d, %s”, (int) t, asctime (gmtime (&t)));
15. return 0;
16.}
இந்த புரோகிராமின் அவுட்புட்
1.1000000000, Sun Sep 9 01:46:40 2001
2.2147483647, Tue Jan 19 03:14:07 2038
3.2147483648, Fri Dec 13 20:45:52 1901
என அமையும்.
இந்த பிரச்னையை சாப்ட்வேர் கட்டமைப்பைத் திருத்துவதன் மூலம் தீர்த்துவிடலாம் என்று அறிவிக்கப் பட்டுள்ளது. பழைய Y2K பிரச்னை போல பெரிய அளவில் பாதிப்பு ஏற்படாமல் தடுத்துவிடலாம் என்று நம்பிக்கை தெரிவித்துள்ளனர்.
சிலர், ஐ.பி.எம். வகை பெர்சனல் கம்ப்யூட்டர்களில் இந்த பிரச்னை 2016 ஆம் ஆண்டிலேயே வரும் எனக் கணித்துள்ளனர். ஏனென்றால் இந்த வகைக் கம்ப்யூட்டர்களில் நேரமானது ஜனவரி 1,1980 எனத் தொடங்கும் வகையில் அமைக்கப்பட்டுள்ளது. இந்த வகைக் கம்ப்யூட்டர்களைத் தான் நம்மில் பெரும்பாலோனோர் பயன்படுத்தி வருகிறோம்.
விண்டோஸ் என்.டி. சிஸ்டம் பயன்படுத்தும் கம்ப்யூட்டர்களில் இந்த பிரச்னை இப்போதைக்கு இல்லை. ஏனென்றால் அவற்றில் நேரத்தைக் கணக்கிட 64 பிட் இன்டிஜர் அடிப்படையாக உள்ளது. மேலும் அதன் கணக்கீடு 100 நானோ நொடிகளை அடிப்படையாகக் கொண்டது.
அதன் நேரம் ஜனவரி 1, 1601 என்பதால், 2184ல் தான் என்.டி. சிஸ்டங்களில் இந்த பிரச்னை ஏற்படும் வாய்ப்பு உள்ளது. இந்த பிரச்னை குறித்து ஆப்பிள் நிறுவனம் கூறுகையில் தன் கம்ப்யூட்டர்களில் இந்த பிரச்னைக்கு இடம் இல்லை எனத் தெரிவித்துள்ளது. இப்போதைக்கு உள்ள நிலையில், கணக்கீட்டின் அடிப்படையில், மேக் கம்ப்யூட்டர்களில் இந்த பிரச்னை 29,940 ஆம் ஆண்டில் தான் ஏற்படுமாம்.