/ Science

2038 ปีแห่งวิกฤตของ UNIX x86

หลายคนคงได้ผ่านเหตุการณ์ Y2K หรือช่วงก้าวข้าม Melinium จากยุค 1000 มาจนถึงยุค 2000 ซึ่งในสมัยนั้นเป็นที่กังวลเกี่ยวกับระบบคอมพิวเตอร์และอินเตอร์เน็ต รวมถึงระบบดิจิตอลทั่วโลก ดาวเทียม, สถานีอวกาศ, อาวุธนิวเคลีย ทั่วโลกว่าะเกิดความผิดพลาดในการกำหนดเวลา (เนื่องจากในระบบคอมพิวเตอร์ เวลานั้นสำคัญมากในการใช้อ้างอิงการทำงาน ดังนั้นเวลาของคอมพิวเตอร์จึงต้องเที่ยงตรงที่สุด โดยสามารถอ่านเรื่อง นาฬิกาอะตอมเวลาได้ ที่นี่) ในตอนนั้นผมยังจำความอะไรไม่ได้ เพราะอายุเพิ่งจะ 2 ขวบ แต่ก็ได้ฟังจากปากของพ่อที่ทำงานให้กับบริษัทด้านระบบ Network ของธนาคารว่า มีการออก patch กันยกใหญ่ คอมพิวเตอร์ที่ไม่มีสติกเกอร์ Meleminum จะถูกยกเลิกการใช้งานและสั่งตัวใหม่ที่ผ่านการรับรองมาแทน ทีมโปรแกรมเมอร์ทั้งบริษัทพยายามทดสอบซอฟแวร์เพื่อให้คาดว่าจะทำงานในช่วงคืนข้ามปีที่จะข้ามสู่ปี 2000 ได้อย่างไม่ส่งผลใดๆ ไม่ใช่แค่ในบริษัท แต่ทั่วโลกก็ได้ตื่นตระหนกกันแบบนี้เป็นทั่วไป พ่อผมถึงขนาดว่ายอมลงทุนซื้อ Windows Me ราคาหลายพัน มาลงบนคอมพิวเตอร์ที่บ้าน ที่ตอนนั้นรัน Windows 98 ที่ OEM มากับเครื่อง และนี่ก็คือเรื่องราวของปี 2000

2038

ปัญหาคือข้อผิดพลาดของคอมพิวเตอร์และการจัดเก็บข้อมูลในการที่ค่าของเวลาจะถูกเก็บไว้หรือคำนวณเป็นจำนวนเต็ม (int) 32 บิต และหมายเลขนี้จะถูกระบบตีความว่าเป็นจำนวนวินาทีตั้งแต่ 00:00:00 utc ที่ 1 มกราคม 1970 (จุดเริ่มนับเวลาของ UNIX) โดยคาดว่าระบบจะไม่สามารถแปลงไบนานี่หลังจากจาก 03:14:07 UTC ที่ 19 มกราคม 2038 ปัญหาคล้ายกับ Y2K ด้านบน ทำให้เวลาทั้งหมดถูกตีค่าเป็น 00:00:00 อีกครั้ง

ภาพอธิบายการนับเวลาของ UNIX โดยเปลี่ยนจากไบนารี่มาเป็นจำนวนเต็มสิบ

อธิบายง่ายๆก็คือ ค่า int ของ time stamp ของ UNIX แบบ 32 bit มันจะตัน นับเวลาต่อไม่ได้ ทำให้การอ้างอิงเวลาผิดพลาดไปซึ่งจะส่งผลต่อระบบต่อไปนี้

  • ระบบ Filesystem ที่ใช้การอ้างอิงข้อมูลเวลาแบบ 32 bit
  • Binary file formats ที่ใช้การอ้างอิงข้อมูลเวลาแบบ 32 bit
  • ฐานข้อมูล ที่ใช้การอ้างอิงข้อมูลเวลาแบบ 32 bit
  • ฐานข้อมูลและระบบเชื่อมฐานข้อมูล โดยเฉพาะ SQL ที่มีการใช้งานกับคำสั่ง UNIX_TIMESTAMP() หรือใกล้เคียง
  • ระบบ ERP,Monitor subsystems ต่างๆ
  • อุปกรณ์ทางการแพทย์และทหาร รวมถึง อุปกรณ์ด้านวิทยาศาสตร์ และยานอวกาศ อากาศยาน ระบบปฏิบัติการ UNIX
  • ระบบปฏิบัติการต่างๆเช่น Linux , Apple OS X, Apple iOS, Google Android และระบบปฏิบัติการต่างๆบน server,supercomputer ล้วนมีพื้นฐานมาจาก UNIX

    การแก้ปัญหา

    ปัจจุบันยังไม่มีองกรณ์ใดมาเสนอถึงวิธีการแก้ปัญหาอย่างเป็นทางการ แม้กระทั่งกลุ่มผู้ใช้งาน UNIX และ ระบบปฏิบัติการแยกย่อย ทั้งรายเล็กรายใหญ่ โดยปัญหานี้จะไม่เกิดขึ้นสำรับระบบปฏิบัติการที่เป็น x64 หรือ 64bit โดยหวังว่าเราจะเปลี่ยนไปใช้ x64 กันอย่างทันเวลา ก่อนที่จะมีอะไรเกิดขึ้น โดยสำรับ x64 นั้น ปัญหาแบบนี้จะเกิดขึ้นมาอีกทีหลังจากวันนี้ สองร้อยล้านปี ครับ

    แต่ก่อนหน้านั้นเราต้องเจอกับวิกฤตคศ.10,000กันก่อนครับ

    เห็นมั้ยครับ ว่าคอมพิวเตอร์ก็คือคอมพิวเตอร์ ถูกขับเคลื่อนด้วยเลขเพียง 2 ตัว คือ 0 และ 1 ซึ่งไม่สามารถดำเนินการได้เหมือนกับนาฬิกาธรรมชาติ อย่างเอกภพของเราได้ครับ ไว้ครั้งหน้าถ้ามีโอกาสผมจะเขียนเรื่อง คอมพิวเตอร์ใหม่ที่ใช้หลักฟิสิกส์ควอนตัมในการประมวผล โดยเลขฐานสองนั้น สามารถเป็นได้ทั้ง 0 และ 1 ในเวลาเดียวกัน ซึ่งเป็นความหวังของมนุษยชาติในการช่วงให้เรารู้จักกับเอกภพของเรามากขึ้นครับ