หลายคนอาจจะเคยได้ยินปัญหา Y2K มากันมากแล้ว โพสต์นี้ลองมาดูปัญหาของ Y2K38 กันบ้าง
ปัญหา Year 2038 Problem (หรือ Y2K38) เป็นปัญหาที่จะเกิดขึ้นกับระบบคอมพิวเตอร์ที่เก็บเวลาในรูปแบบของ จำนวนวินาทีที่ผ่านไปนับตั้งแต่วันที่ 1 มกราคม 1970 (Unix Epoch) โดยใช้ตัวแปรชนิด 32-bit signed integer (ตัวเลขมีขอบเขตทั้งบวกและลบ)
ทำไมถึงเกิดปัญหา?
- ขอบเขตของตัวเลข 32-bit signed integer
- ตัวเลขสูงสุดที่เก็บได้คือ 2,147,483,647 (หรือ 231−1)
- สิ่งที่เกิดขึ้นเมื่อเกินขอบเขต
- เมื่อถึงค่านี้และเพิ่มอีก 1 วินาที ตัวเลขจะล้นไปยังค่าต่ำสุดของ -2,147,483,648 ซึ่งหมายความว่าเวลาจะย้อนกลับไปที่ 13 ธันวาคม 1901 แทนที่จะเดินหน้าต่อไปในปี 2038
ผลกระทบ
- โปรแกรมหรือระบบที่พึ่งพาการคำนวณเวลาในรูปแบบนี้อาจทำงานผิดพลาด เช่น:
- คำนวณเวลาไม่ถูกต้อง
- เกิดข้อผิดพลาดในระบบฐานข้อมูล
- บริการหรือโปรแกรมหยุดทำงานโดยไม่คาดคิด
ตัวอย่างระบบที่อาจได้รับผลกระทบ
- ระบบปฏิบัติการเก่า (Linux/Unix เวอร์ชันเก่า)
- ซอฟต์แวร์ที่ไม่ได้อัปเดต
- อุปกรณ์ฝังตัว (Embedded Systems) เช่น ระบบ GPS, ระบบควบคุมในรถยนต์
แนวทางแก้ไข
- เปลี่ยนไปใช้ 64-bit integer สำหรับเก็บเวลา
- ตัวแปร 64-bit สามารถเก็บค่าได้มากกว่า 263−1 วินาที ซึ่งครอบคลุมเวลายาวนานถึงปี 292,277,026,596
- ระบบ 64-bit สมัยใหม่ส่วนใหญ่ได้แก้ไขปัญหานี้แล้ว
- อัปเดตซอฟต์แวร์และฮาร์ดแวร์
- พัฒนาให้รองรับการคำนวณเวลาที่ไม่ขึ้นกับ Unix Timestamp แบบ 32-bit
เทียบกับปัญหา Y2K
เมื่อเปรียบเทียบ Year 2038 Problem (Y2K38) กับ Y2K Problem (ปัญหาเปลี่ยนปี 2000) จะพบว่าผลกระทบและระดับความร้ายแรงแตกต่างกันในหลายด้าน:
1. ความแพร่หลายของระบบที่ได้รับผลกระทบ
-
Y2K (ปี 2000)
- ระบบส่วนใหญ่ในตอนนั้นเก็บปีในรูปแบบ 2 หลัก (เช่น "99" แทน 1999) ซึ่งเมื่อเปลี่ยนเป็นปี 2000 อาจทำให้ระบบเข้าใจผิดว่าเป็นปี 1900
- ผลกระทบครอบคลุม แทบทุกอุตสาหกรรม เช่น ธนาคาร, การบิน, พลังงาน, การสื่อสาร และรัฐบาลทั่วโลก
- เป็นปัญหาที่เกิดขึ้นพร้อมกันในเวลาเที่ยงคืนของวันที่ 1 มกราคม 2000
-
Y2K38 (ปี 2038)
- กระทบเฉพาะระบบที่ใช้ Unix Timestamp แบบ 32-bit ซึ่งในปัจจุบันใช้น้อยลง เนื่องจากระบบใหม่ๆ เปลี่ยนไปใช้ 64-bit แล้ว
- ผลกระทบส่วนใหญ่จำกัดอยู่ใน ระบบปฏิบัติการเก่า, Embedded Systems, หรือ อุปกรณ์ IoT รุ่นเก่า ที่ไม่ได้รับการอัปเดต
- ไม่ได้เกิดพร้อมกันทั่วโลกในเวลาเดียวกัน แต่ขึ้นอยู่กับการใช้งานเวลาในแต่ละระบบ
2. การรับมือ
- Y2K
- การแก้ไขต้องใช้ทรัพยากรจำนวนมาก เนื่องจากต้องตรวจสอบและปรับปรุงระบบทั่วโลก
- มีการเตรียมการระดับนานาชาติ โดยเฉพาะในอุตสาหกรรมสำคัญ เช่น ธนาคารและการบิน
- สร้างความตื่นตระหนกในช่วงใกล้เข้าสู่ปี 2000 เนื่องจากไม่มีใครมั่นใจว่าจะแก้ปัญหาทั้งหมดได้ทันเวลา
- Y2K38
- ปัญหามีเวลารับมือมากกว่า (ปัจจุบันเหลือเวลาอีกกว่า 10 ปี) และผู้พัฒนาเทคโนโลยีส่วนใหญ่ทราบถึงปัญหานี้แล้ว
- ระบบ 64-bit ที่รองรับเวลานานกว่าเริ่มเป็นมาตรฐานในหลายอุตสาหกรรม ทำให้ผลกระทบลดลง
- อุปกรณ์ที่ไม่สามารถอัปเดตได้ (เช่น Embedded Systems เก่า) อาจยังคงมีปัญหา
3. ความรุนแรงของผลกระทบ
- Y2K
- หากไม่มีการแก้ไข ผลกระทบอาจเกิดกับระบบสำคัญ เช่น การทำงานของระบบธนาคาร (เช่น คำนวณดอกเบี้ยผิดพลาด), การบิน (ระบบนำทาง), หรือโครงสร้างพื้นฐานด้านพลังงาน
- ผลกระทบคาดการณ์ว่าจะ "ร้ายแรงในระดับโลก" จึงมีการลงทุนแก้ปัญหาจำนวนมาก
- Y2K38
- ผลกระทบคาดว่าจะ จำกัดอยู่ในบางระบบ เช่น อุปกรณ์ฝังตัวที่ไม่ได้รับการอัปเดต หรือซอฟต์แวร์เก่า
- สำหรับระบบ 64-bit หรือที่ได้รับการอัปเดตแล้ว จะไม่มีผลกระทบเลย
4. ต้นทุนในการแก้ไข
- Y2K
- ทั่วโลกใช้เงินประมาณ 300-500 พันล้านดอลลาร์สหรัฐ เพื่อแก้ไขและตรวจสอบระบบ
- การตื่นตระหนกทำให้บางประเทศลงทุนมากกว่าที่จำเป็น
- Y2K38
- ต้นทุนคาดว่าจะน้อยกว่ามาก เนื่องจากเทคโนโลยีที่ทันสมัยกว่าและการแก้ไขมีเป้าหมายเฉพาะระบบเก่า
- อาจต้องใช้เวลาและงบประมาณเพิ่มเติมเฉพาะในอุตสาหกรรมที่ใช้งาน Embedded Systems จำนวนมาก
สรุป: ผลกระทบ Y2K38 เมื่อเทียบกับ Y2K
- Y2K: มีผลกระทบกว้างขวางและรุนแรงกว่า เนื่องจากเป็นปัญหาทั่วโลกที่กระทบหลายอุตสาหกรรมในเวลาเดียวกัน
- Y2K38: มีผลกระทบจำกัด เฉพาะระบบเก่าหรือ Embedded Systems ที่ไม่ได้รับการอัปเดต
อย่างไรก็ตาม หากระบบที่ได้รับผลกระทบในปี 2038 เป็นระบบสำคัญ เช่น ระบบควบคุมโครงสร้างพื้นฐานหรืออุปกรณ์การแพทย์ ก็อาจสร้างปัญหาได้เช่นกัน การเตรียมตัวและอัปเดตระบบจึงยังคงมีความสำคัญ!
อ่านเพิ่มเติมได้ที่:
https://computer.howstuffworks.com/question75.htm
https://en.wikipedia.org/wiki/Year_2038_problem
- Photo by Andrea Piacquadio: pexels.com
- Photo by cottonbro studio: pexels.com