Bahaya Mengintai Saat Komputer Gagal Menentukan Waktu

Oleh: Ahmad Zaenudin - 23 November 2021
Dibaca Normal 3 menit
Untuk menentukan bahwa hari ini Selasa, 16 November 2021 tepat pukul 18:59:07, misalnya, komputer Mac menghitung mundur sejak 1 Januari 1970.
tirto.id - "Selasa siang, 14 September 2004, tatkala 800 pesawat tengah melintas langit California, Amerika Serikat, sebuah kesalahan matematis membuat para petugas pengatur lalu lintas udara di Los Angeles Air Traffic Control Center ketakutan setengah mati," tutur Matt Parker dalam Humble Pi: A Comedy of Maths Errors (2019).

Kala itu, tanpa peringatan apapun, radio komunikasi dan radar navigasi yang digunakan untuk mengetahui dan mengatur letak pesawat mati mendadak. Membuat komunikasi mereka terputus dengan para pilot pesawat yang tengah melintas di langit yang mereka kendalikan sehingga mengancam keselamatan ratusan ribu jiwa.

Agar pesawat tidak saling bertubrukan, mereka segera menghubungi Air Traffic Control terdekat untuk meminta bantuan mengetahui letak pesawat-pesawat di langit California, juga meminta sebagai penghubung ke para pilot yang menerbangkan pesawat-pesawat itu.

Hingga radio komunikasi dan radar navigasi berfungsi kembali tiga jam sejak petaka dimulai, strategi ini sukses dijalankan. Meski demikian, terdapat sepuluh pesawat yang terbang sangat dekat satu sama lain dari aturan yang diperbolehkan otoritas udara (minimal 5 mil laut secara horizontal atau 2.000 kaki secara vertikal) dan 600 penerbangan terpaksa dibatalkan.

Kacaunya langit California terjadi karena komputer yang menjadi pengendali radio komunikasi dan radar navigasi milik Los Angeles Air Traffic Control Center mengalami masalah timekeeping error atau kegagalan sistem pencatat waktu. Menggunakan sistem operasi Windows 95 buatan Microsoft, komputer melacak waktu--menentukan bahwa saat itu adalah tanggal 14 September 2004, misalnya--dengan menghitung mundur 4.294.967.295 setiap milidetik.

Artinya, karena satu milidetik sama dengan seperseribu detik, hitungan mundur dari angka yang terlihat sangat besar itu akan menjadi 0 (nol) atau habis tak tersisa dalam tempo 49 hari, 17 jam, 2 menit, dan 47,295 detik. Masalahnya, pada komputer-komputer jadul, ketika hitungan mundur menyentuh angka 0 (nol) dan membuat sistem tidak dapat mengetahui waktu, komputer akan melakukan reboot/restart (menyalakan ulang) secara otomatis. Mencoba kembali ke angka 4.294.967.295 untuk memulai ulang pelacakan waktu.

Komputer milik Los Angeles Air Traffic Control Center melakukan hal ini. Reboot/restart otomatis karena telah mencapai angka 0 (nol) setelah menyala terus-terusan selama hampir 50 hari. Kegagalan sistem ini tak terdeteksi karena biasanya komputer di-reboot/restart manual 30 hari sekali.

Tak hanya Los Angeles Air Traffic Control Center yang menyimpan bom waktu ini. Pada komputer yang menjadi pengendali pesawat Boeing 787 Dreamliner, misalnya, kerja timekeeping dilakukan serupa. Namun, jika komputer milik otoritas udara Los Angles menghitung mundur dari 4.294.967.295 tiap milidetik, maka 787 Dreamliner melacak waktu dengan menghitung mundur 2.147.483.647 setiap 10 milidetik atau seperseratus detik. Di mana 0 (nol) akan tercapai dalam tempo 248 hari, 13 jam, 13 menit, dan 56,47 detik--waktu yang jauh lebih dari cukup bagi para pilot untuk melakukan reboot/restart manual.

Bukan tanpa alasan komputer melacak waktu dengan menghitung mundur angka yang terlihat besar itu. Pelacakan waktu yang dilakukan komputer, sebagaimana dipaparkan Michael A. Lombardi dalam "Computer Timekeeping" (dipaparkan dalam lokakarya Measurement Science Conference, Anaheim, Kanada, 1996), ditujukan karena pelbagai perangkat keras dan perangkat lunak yang menyusun komputer memang membutuhkan informasi waktu yang akurat.

Dalam hardware, "IO_DISK_INCREMENT" dieksekusi terlebih dahulu daripada "IO_KEYBOARD_INCREMENT", misalnya. Atau, dari kasus Boeing 787 Dreamliner, informasi ini dibutuhkan untuk mengetahui bahwa "ailerons" diperintah pilot untuk bermanuver lebih dulu dibandingkan "flaps". Dan dalam kegunaan sehari-hari, pelacakan waktu ini dimanfaatkan untuk menentukan bahwa si A, B, C berhak membeli tiga tiket pernerbangan Jakarta-Amsterdam flash sale 11.11 dengan potongan harga 50 persen karena menekan tombol "beli" lebih dulu dulu dibandingkan ratusan orang lainnya yang mengantri di layar komputer.

Angka 4.294.967.295 sebagai patokan komputer milik Los Angeles Air Traffic Control Center tak ditentukan serampangan. Angka tersebut--sistem bilangan basis-10--jika diubah ke dalam bentuk yang dapat dimengerti komputer, setara dengan 11111111111111111111111111111111 (rangkaian 32 angka 1 berurutan) sebagai nilai tertinggi dari sistem binari (sistem bilangan basis-2) 32-bit.

Dan karena manusia mengenal bilangan negatif hingga desimal, terkadang komputer dirancang untuk tidak dapat memanfaatkan angka tertinggi dari sistem binari 32 bit tersebut. Misalnya, dengan memanfaatkan satu bit untuk digunakan sebagai petuntuk +/- (signed number) atau memaksa satu bit lain yang tersedia untuk berperilaku secara dinamis (floating point) guna dimanfaatkan, semisal, membentuk angka 3,14159265359 (pi). Pengecualian-pengecualian ini yang dapat membuat komputer melakukan fungsi matematis secara presisi. Inilah mengapa pada Boeing 787 Dreamliner hitungan mundur dimulai dari 2.147.483.647, atau setengah dari komputer Los Angeles Air Traffic Control Center atau rangkaian 31 angka 1 berurutan.

Infografik Ketika Komputer Menentukan Waktu
Infografik 4.294.967.295. tirto.id/Quita


Secara umum, pada pelbagai komputer, sistem pencatatan waktu dilakukan secara berbarengan di tingkat BIOS (Basic Input Output System) alias hardware clocks, dan di tingkat sistem operasi atau software clock dengan memanfaatkan modul khusus, misalnya, Intel 8254 Timer Counter. Komputer dihidupkan atau tidak, hitungan mundur untuk menentukan waktu terus dilakukan dalam tataran BIOS.

Sementara dalam tataran sistem operasi, hitungan mundur baru dilakukan ketika komputer dihidupkan dengan berpatokan pada hitungan yang telah dilakukan BIOS. Namun, terdapat perbedaan hitungan perdetik (interval) antara hardware clock dan software clock yang sukar disatukan ketika komputer dimatikan/dihidupkan dalam tempo yang jauh. Perbedaan kerja ini, kembali merujuk Lombardi, membuat "hardware clocks dan software clocks sering kali berbeda menentukan waktu alias, secara umum, komputer sebetulnya tidak dapat diandalkan soal waktu."

Perbedaan kian menjadi-jadi manakala Windows serta berbagai sistem operasi yang menginspirasi/diinspirasi Windows seperti DOS, dan macOS serta berbagai sistem operasi berbasis UNIX dan UNIX-like seperti Linux, melakukan penghitungan mundur dengan cara berbeda. Pada Windows NT--inti dari Windows 2000 hingga Windows 11--hitungan mundur dilakukan setiap milidetik (seperseratus detik). Sedangkan macOS melakukan hitungan mundur 1 per detik dimulai sejak 1 Januari 1970--ditentukan secara serampangan oleh Dennis Ritchie, salah satu programmer UNIX sekaligus pencipta bahasa C--dengan berpatokan pada 2.147.483.647. Artinya, macOS akan kehabisan patokan waktu pada 19 Januari 2038 tepat pukul 03:14:07.

Karena sistem penentuan waktu ini menyulitkan bagi manusia, maka komputer-komputer modern berpatokan pada Automated Computer Time Service guna memberitahu manusia bahwa hari ini, misalnya, merupakan Selasa, 16 November 2021 tepat pukul 18:59:07 dengan memanfaatkan sambungan telepon maupun internet.

Dan untuk mencegah macOS kebingungan menentukan waktu setelah 19 Januari 2038 tepat pukul 03:14:07 terlewati, sistem binari 64-bit diperkenalkan. Suatu sistem yang memungkinkan hitungan mundur dilakukan dari angka maksimal sebesar 9.223.372.036.854.775.807 alias baru akan habis--berada di titik 0 (nol)--pada Senin 4 Desember 292.277.026.596 Masehi.

Baca juga artikel terkait KOMPUTER atau tulisan menarik lainnya Ahmad Zaenudin
(tirto.id - Teknologi)

Penulis: Ahmad Zaenudin
Editor: Irfan Teguh Pribadi
DarkLight