Why Windows 95 and 98 would crash after 49.7 days of uptime

栏目: IT技术 · 发布时间: 5年前

There’s a famous bug in Windows 95 and Windows 98 (now patched) that caused these systems to stop functioning after 49.7 days of uptime. I used to wonder how this happened – in addition to wondering how many Windows 95 / 98 systems could achieve such uptimes to begin with!

Finally, I did a little math and figured out what must be behind this bug. It’s actually quite cute.

First, we need to know about a function called GetTickTime which is part of the Windows API. This function returns a DWORD value representing the number of milliseconds which has elapsed since the system has come up.

What’s a DWORD? A Word on an x86 is 16 bits, so a Double Word is 32 bits. The maximum number expressed in 32 bits is 2 to the power of 32.

2^32 = 4,294,967,296

We’re expressing a number of milliseconds here. How many milliseconds are there in one day?

(milliseconds per second) * (seconds per minute) * (minutes per hour) * (hours per day) = 1000 * 60 * 60 * 24 = 86,400,000 .

Finally, we can find out how many days’ worth of milliseconds we can fit in the DWORD:

4,294,967,296 / 86,400,000 = 49.7102696

Voila! After 49.71 days, the number of milliseconds since startup exceeded the maximum value of a DWORD, and rolled to 0 (kind of like the odometer on Al Bundy’s Dodge rolling to 0 after the 999,999,999 th mile)

Depending on how you process the return value of GetTickCount(), this may or may not be a problem. Clearly some code in Windows didn’t handle this too well, and Windows hung.

References:

Microsoft Knowledge Base entry for the bug

http://support.microsoft.com/kb/q216641/

Docs for GetTickCount()

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/gettickcount.asp


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏编程算法与技巧

游戏编程算法与技巧

【美】Sanjay Madhav / 刘瀚阳 / 电子工业出版社 / 2016-10 / 89

《游戏编程算法与技巧》介绍了大量今天在游戏行业中用到的算法与技术。《游戏编程算法与技巧》是为广大熟悉面向对象编程以及基础数据结构的游戏开发者所设计的。作者采用了一种独立于平台框架的方法来展示开发,包括2D 和3D 图形学、物理、人工智能、摄像机等多个方面的技术。《游戏编程算法与技巧》中内容几乎兼容所有游戏,无论这些游戏采用何种风格、开发语言和框架。 《游戏编程算法与技巧》的每个概念都是用C#......一起来看看 《游戏编程算法与技巧》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具