By: DH Team
อัปเดตล่าสุด March 20, 2024
จำกันได้ไหมครับกับ "ปัญหาปี 2000" (Y2K) ในช่วงปลายยุค 90s? หรือปัญหาบั๊กปี 2000 เกิดจากในอดีตโปรแกรมคอมพิวเตอร์ถูกเขียนด้วยการประหยัดหน่วยความจำโดยใช้เพียง 2 หลักสุดท้ายของปีค.ศ. เช่น 98 แทนปี 1998 เมื่อถึงปี 2000 ระบบจึงอาจสับสนว่า 00 หมายถึงปี 1900 หรือ 2000 ปัญหานี้ส่งผลให้คอมพิวเตอร์และอุปกรณ์ที่ใช้ชิพคอมพิวเตอร์หลายประเภททำงานผิดพลาด
Year 2038 Problem คืออะไร ?
ปัญหา ปี 2038 (Year 2038 Problem) หรือที่รู้จักกันในชื่อ "Unix Millennium Bug"
เป็นปัญหาที่คล้ายกับปัญหา Y2K แต่เกิดขึ้นกับระบบปฏิบัติการยูนิกซ์และระบบอื่น ๆ ที่ใช้เวลาจำนวนเต็ม 32 บิต โดยนับจำนวนวินาทีตั้งแต่เวลา 00:00:00 UTC ของวันที่ 1 มกราคม ค.ศ. 1970
จำนวนวินาทีสูงสุดที่ระบบ 32 บิตสามารถจัดเก็บได้คือ 2,147,483,647 วินาที ซึ่งจะหมดลงในวันที่ 19 มกราคม 2038 เวลา 03:14:07 UTC หลังจากนั้นตัวนับวินาทีจะกลับไปนับใหม่จากศูนย์อีกครั้ง ส่งผลให้โปรแกรมที่พึ่งพาการนับวินาทีทำงานผิดพลาดทันที
ระบบเวลาของคอมพิวเตอร์แบบยูนิกซ์ (Unix) ส่วนใหญ่ใช้ตัวเลข 32 บิต บันทึกจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 (Unix Epoch) โดยตัวเลข 32 บิต มีขีดจำกัดในการเก็บค่าได้สูงสุด 2,147,483,647
ดังนั้นเมื่อเวลาของระบบเกินค่าดังกล่าว (คาดว่าจะถึงวันที่ 19 มกราคม 2038 เวลา 3:14:07 UTC) จะเกิดการ Overflow ทำให้ค่าผิดเพี้ยนเป็นค่าลบ ส่งผลกระทบต่อการทำงานของระบบซอฟต์แวร์
ปัญหานี้จะส่งผลกระทบต่อระบบสำคัญต่างๆ ที่ยังคงใช้งานยูนิกซ์ เช่น ระบบการจัดการฐานข้อมูล, การประมวลผลธุรกรรม, การทำงานของซอฟต์แวร์สำคัญ เป็นต้น
ระบบฝังตัว (Embedded System) และระบบเก่ามีความเสี่ยงค่อนช้างสูง ตัวอย่างเช่น ระบบโรงไฟฟ้า นิวเคลียร์ เครื่องบิน อุปกรณ์การแพทย์ อุปกรณ์โทรคมนาคม เครื่องใช้ไฟฟ้า เป็นต้น
และระบบปฏิบัติการบางรุ่นที่ยังใช้ตัวเลข 32 บิตในการบันทึกเวลา โดยฐานข้อมูลบางตัวที่ใช้ฟิลด์เวลา 32 บิต ก็ได้รับผลกระทบเช่นกัน
นอกจากนี้ยังรวมไปถึง
YouTube ช่อง PlanetScale อธิบายไว้ได้น่าสนใจในวิดีโอ "Your database will break in 2038"
Image source: YouTube PlanetScale
อ้างอิง
เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน
เรียนเขียนโปรแกรม