My Opera is closing 3rd of March

Ngọc Sơn

Thông tin ngập tràn - Dễ dàng chia sẻ

Sự cố Y2K38

, , ,

Hôm nay vào website của Mobifone thì thấy thông báo "Thông báo thời hạn sử dụng tối đa của thuê bao trả trước".

http://mobifone.com.vn/web/vn/home/news.jsp?id=2979

Tại sao Mobifone thông báo thời hạn sử dụng tối đa của thuê bao trả trước là 19/01/2038.

Chắc có khá nhiều bạn thắc mắc về thông báo này của Mobifone, và bây giờ chúng ta sẽ cùng tìm hiểu tại sao lại có thông báo này và 19/01/2038 là ngày gì?

Điều đầu tiên mình xin khẳng định là mạng Mobifone không hề muốn giới hạn thời hạn sử dụng của thuê bao trả trước, mà đây là hạn chế của hệ thống máy tính hiện tại.

Vào ngày 19/01/2038, sẽ có một sự cố máy tính tương tự như sự cố Y2K. Đó là sự cố năm 2038 hay còn được biết đến với các tên gọi khác như lỗi Unix Millennium Y2K38, Y2.038K or S2G. Lỗi này có thể làm một số phần mềm máy tính ngừng hoạt động trước, trong và sau năm 2038. Vấn đề này sẽ ảnh hưởng đến tất cả các phần mềm và hệ thống 32 bit. Thời gian cao nhất có thể được thể hiện theo cách này là 03:14:07 (giờ UTC) ngày thứ Ba 19, Tháng Một năm 2038. Thời gian lúc 03:14:08 19/01/2038 khi được dịch từ hệ nhị phân sang thập phân sẽ là một số âm (-2147483648), mà hệ thống máy tính sẽ hiểu đó là ngày 13/12/1901 20:45:52 (UTC) thay vì 03:14:08 ngày 19/01/2038. Mọi thời điểm sau lúc này đều được "dịch" ra là năm 1901 thay vì 2038.


Ảnh: Wikipedia (ảnh mô tả cách mà thời gian sẽ bị reset và ngày 19/01/2038)

Lý do của sự cố này là "Integer overflow" (tràn số nguyên). Như đã biết, chúng ta sử dụng kiểu số nguyên không dấu (unsigned integer) 32bit và nó chỉ đạt đến giá trị cao nhất là 2147483647. Vào thời điểm 03:14:08 ngày 19/01/2038, bộ đếm sẽ vượt ra ngoài giá trị lớn nhất của số nguyên 32 bit, một bit dấu sẽ được thêm vào và lúc này chúng ta có số -2147483648 (số âm). Giá trị này sẽ được tăng dần lên cho đến số 0. Điều này sẽ gây ra nhiều phiền toái vì hệ thống sẽ tính toán sai lệch đi.
Hơn nữa, trong khi hầu hết các chương trình sẽ chỉ bị ảnh hưởng trong hay rất gần với thời điểm 2038, nhưng các chương trình làm việc với các ngày trong tương lai sẽ bắt đầu gặp các vấn đề rắc rối sớm hơn nhiều.

Tuy vậy, chúng ta vẫn có thể giải quyết nó bằng cách sử dụng hệ điều hành 64bit, mặc dù với 64bit một số phần mềm sẽ có thể không tương thích, nhưng hầu hết hệ điều hành trên nền tảng này lại dùng 64-bit integer time_t. Và nếu bằng cách này, thời hạn “chết” của đồng hồ sẽ được kéo dài thêm xấp xỉ 292 tỉ năm kể từ bây giờ (ngày 4/12/292277026596).

Và cũng tương tự như năm 2038, đến năm 2106 chúng ta sẽ gặp phải sự cố như vậy, lúc đó chúng ta sẽ phải chuyển qua nền tảng 128 bit.

Bài viết có tham khảo từ Wikipedia

.NET framework – lịch sử hình thành và phát triểnHappy lunar new year

February 2014
M T W T F S S
January 2014March 2014
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28