为什么说“千年虫问题”解决起来很复杂
“千年虫问题”看似简单,只要把原来表示年份的两位数字转换为可区分20世纪和21世纪的四位数字即可,但实际上很复杂。当我们具体进入转换工作的操作时,就会发现这是一个很棘手的问题。原因之一是检测很复杂。日期问题涉及系统的各个层面,包括硬件时钟、操作系统、系统软件、中间层软件、第三方厂商软件包和大量用户自己开发的应用程序。在成千上万条程序中,怎样找到与日期有关的项目?大量的重要数据(包括文件、数据库的数据等),哪些与日期有关?在什么地方?怎么修改?统计显示,有40%~98%的程序、20%~85%的数据文件会因日期而受到影响。实际上,不是所有语言、所有平台都能找到解决年份问题的转换工具,也没有一种工具能发现全部与日期有关的项目,因为许多与日期有关的项目都隐藏在程序的逻辑或计算中,难以找到,需要人工干预。
“千年虫问题”对网络的影响尤为严重。网络中装有成千上万台服务器和客户机。在初始化PC工作站和服务器时,它通过读取BIOS及实时时钟的值来设置系统的日期和时间。PC机或服务器系统的日期可以被网络操作系统植入客户机/服务器的应用程序设置中。因此,如果BIOS不能成功地度过2000年,那么到时所有的日期和时间参考值将成为非法数据。网络应用程序得到错误日期的可能性十分巨大,据估计,1996年及以前的PC机有93%的BIOS不能成功地度过2000年,19%年以后的BIOS要好些,约有47%不能度过2000年。这是因为80年代初期诞生的PC机的老系统BIOS不允许输入日期大于1999年12月31日,后来的BIOS虽然更新了版本,但这一部分仍基本被保留下来。由此将引起电子函件的拒发和拒收、设备失去互操作能力、语音信箱和交换系统的混乱等。
“千年虫问题”的复杂性还存在于修改测试过程中。由于运行关键任务的系统无法停机,给修改、测试和更换带来很大困难。另外,运行关键任务的机构或多或少都带有各自的机密,从而对专业的解决方案、供应商的介入都有不同程度的限制。此外,2000年问题还涉及多种多样的带日期因素的机电一体化嵌入系统,它们量大、分布广,开发人员水平差异大,造成应用程序参差不齐,给系统更新带来更大的困难。
上述因素使得“千年虫问题”从一个小小的技术问题演变成一个到处都会碰到的巨大的系统工程问题。
关键词:计算机系统 “千年虫问题”