0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

拯救被遗忘的软件,你知道吗?

IEEE电气电子工程师 来源:lq 2018-12-26 09:47 次阅读

2010年初,哈佛经济学家莱因•哈特(Carmen Reinhart)和肯尼斯•罗格夫(Kenneth Rogoff)发表了一篇涵盖多个国家经济数据的分析文章,并得出结论:当一个国家的债务水平超过该国国民生产总值的90%时,这个国家的经济增长即受到威胁。他们认为,在如此之高的债务水平下,预计增长将为负增长。

这篇分析文章是在2008年经济危机爆发后不久发表的,因此与当时的政策制定者有很大的关系。当时很多政策制定者都为了刺激国民经济而鼓励高额债务支出。与此同时,保守派政客,比如时任欧盟委员的奥利•雷恩(Olli Rehn)以及美国国会议员保罗•瑞安(Paul Ryan),根据哈特和罗格夫的研究结果呼吁采取财政紧缩政策。

3年后,一位来自马萨诸塞大学的研究生托马斯•赫恩登(Thomas Herndon)发现,当年哈特和罗格夫计算时所用的Excel电子数据表有错误。这个错误的影响是巨大的:赫恩登使用正确的电子数据表重新做的分析表明,债务水平超过国民生产总值90%时,平均经济增长为2.2%,而不是哈特和罗格夫当年所发现的-0.1%。

赫恩登可以轻而易举地测试当年哈佛经济学家得出的结论,因为他们当初所使用的软件——微软Excel——现如今依然使用方便。但是早期那些可以使用但目前难以继续使用的软件所得出的分析结论怎么办呢?

或许你觉得解决办法没什么难度:把相关软件保存下来供未来的研究人员使用即可。毕竟软件只是一堆文件,而这些文件又能以数字格式保存在硬盘或磁带上。对于某些软件来说,非常重要的源代码甚至被打印在纸上,以防其存储的数字媒介失效。

这是保存旧程序的常规方式,即使是对几十年前的旧软件也是如此。比如,你可以上网搜索到20世纪60年代将宇航员送上月球的阿波罗导航计算机的完整程序代码列表。这是2016年从纸上复制转录后上传到GitHub的。

尽管少数核心程序员喜欢研读老式源代码,但是大多数人对此并不感兴趣,他们只是想使用软件。但是让历史久远的软件得以运行十分困难,因为大多数旧代码都需要老式计算机以及老式操作系统才能运行。

如果你想再玩一次年轻时玩过的计算机游戏,可能也会面临类似的困境。而旧程序无法运行会带来更加严重的影响,尤其是对科学技术研究领域。

与经济学家一样,在日常工作中,物理学家、化学家、生物学家以及工程师等其他很多研究人员都使用软件来分析切割数据和显示分析结果。研究人员通过计算机模型来模拟现象,而计算机模型是通过一系列编程语言写成的,同时使用了多种软件数据库和参考数据集。这些研究及其依赖的软件对于新研究成果的发现和发表都至关重要。

想象你自己是一名研究者,此时你想检查另一名研究者25年前进行的运算。你能否获取并使用相关软件?也许相关软件的开发公司都已经不在了。即便该软件现在仍有新的版本,它能接受原始数据格式吗?计算过程与上一代计算机是否完全等同?例如舍入误差?可能不是。

研究者对计算机日益依赖,运行老式软件的困难削弱了研究者对已发表研究结果的检测能力。因此,旧软件的问题腐蚀掉了科学的基石——再现性——的前提。

这还会影响到法律诉讼。假设,工程师根据计算得出某建筑物设计得十分坚固,但该建筑物的屋顶还是塌了。这是工程师出了错,还是使用的计算软件出了错?如果多年后相关软件不能再使用,就很难说清楚了。

因此我和卡耐基•梅隆大学(位于匹兹堡)的同事们一直在研究一种无论现在还是将来都能方便运行的程序存档方式。大部分的编码工作由我的同事——计算机科学家本杰明•吉尔伯特(Benjiamin Gilbert)和简•哈克斯(Jan Harkes)完成。参与合作的还有软件档案管理员丹尼尔•瑞安(Daniel Ryan)、图书管理员格洛里安娜•圣•克莱尔(Gloriana St. Clair)、埃里克•林克(Erike Linke)以及基思•韦伯斯特(Keith Webster),他们都对如何妥善保存这份现代文化有浓厚的兴趣。

这个项目更多地涉及档案保存,并不是主流计算机科学项目,我们获得的资金来源不是政府计算机科学基金部门,而是艾尔弗•P•斯隆基金会(Alfred P.Sloan Foundation)以及博物馆和图书服务协会(Institute for Museum and Library Services)。在资金支持下,我们展示了如何重建年代已久的运算环境并将其发布到网上,任何计算机用户只要一点鼠标,就可以即刻复原过去的运算环境。

我们创建的系统叫做Olive,该名字由开放虚拟执行图像库(Open Library of Images for Virtualized Execution)的英文首字母组成。Olive通过互联网提供一种与早期计算机、操作系统和应用运行完全相同的体验。安装Olive后,便可以像运行新软件一样运行旧软件。Olive就像一台针对软件内容的时光机。

若要理解Olive如何还原早期运算环境,你必须了解几个软件抽象层。最底层与目前多数计算机技术所使用的基础相同:使用1个或多个x86微处理器的标准台式电脑或笔记本。我们在这台电脑上运行Linux操作系统,构成Olive的第二个抽象层。

操作系统的上层是我们实验室开发的软件VMNetX,意指虚拟机网络执行(Virtual Machine Network Execution)。虚拟机是在不同类型计算机上通过运行软件来模拟一类特定计算机的运算环境。VMNetX的特别之处在于它允许将虚拟机存储在中心服务器上,按照远程系统要求来运行虚拟机。这种设置的优势在于运行虚拟机之前,计算机不需要从服务器上下载虚拟机的全部磁盘和内存状态。再上一层的虚拟机监视程序(也称为管理层)会按照需要成批恢复虚拟机硬盘及内存中的信息,可保持几台虚拟机同时运行。

每个虚拟机分别运行一个硬件模拟器,亦即Olive的再上一抽象层。模拟器展现一台现已淘汰的老式计算机的虚拟环境,比如配备20世纪90年代摩托罗拉68040 CPU的老式麦金塔Quadra计算机。(如果你存档的软件是运行在x86计算机上,那么模拟器层可以省略。)

再往上一层是存档软件工作所需的旧操作系统。旧操作系统可以接入虚拟硬盘,由虚拟硬盘模拟真实硬盘存储,为更高的软件抽象层提供类似普通文件系统的环境。

旧操作系统再上一层为存档程序本身。存档程序可以是最高层,也可再多加一层,由你要存档程序运行所必须的数据等组成。

Olive的上面几层依据不同的存档应用而定,存储于中央服务器中。Olive系统的下面几层以Olive客户端软件包的形式安装于使用者的电脑中。启动一个存档应用时,Olive客户端将按需从中央服务器获取相关上层的部分内容。

━━━━

这就是Olive的组成结构。但是Olive都可以做什么呢?目前,Olive由17种不同的虚拟机组成,可以运行多种操作系统和应用。这些配置选择是出于好奇心、可行性以及个人喜好。比如,我们团队的一个成员依然记得自己在20世纪90年代初期在学校玩《俄勒冈小道》游戏的场景。于是我们拿到了这款游戏一个旧的Mac版本并通过Olive重新运行。我们成功运行这款游戏的消息不胫而走,很多人纷纷找到我们询问是否可以“复活”他们曾经最爱的软件。

我们复原年代最久的应用是《逃出神秘房间》,这款图形游戏于20世纪80年代初开始在苹果II计算机上运行。另一个年代久远的程序是NCSA Mosaic,上了年纪的人或许还记得就是这款浏览器引领他们进入万维网世界。

Olive提供运行苹果麦金塔7.5操作系统的1993年Mosaic版本。这套操作系统运行于摩托罗拉68040 CPU模拟器上,而这款处理器是由运行Linux系统的x86计算机中的软件创造的。尽管是虚拟的,但性能还是不错的,毕竟现代计算机要比原始的苹果硬件快得多。

把Olive重建的Mosaic浏览器套用在当代网络中很有启发性:Mosaic早于JavaScript、HTTP1.1、层叠样式表(CCS)和HTML5等网络技术,因此不可能呈现多数现代网站。但是追踪很早以前建立的网站很有乐趣,它们看起来还不错。

Olive还有什么功能呢?或许你会好奇英特尔引进奔腾处理器之后,商业上所使用的工具都有哪些。这一点Olive可以帮你,比如让你体验1994年开发的微软Office 4.3(幸好这个软件开发得比讨厌的自动办公助理软件Clippy早)。

或许你只是想在一个怀旧的夜晚,玩一下DOS版的《毁灭战士》游戏,或者了解一下为什么这款第一人称射击游戏在20世纪90年代初如此盛行。或许你想整理一下1997年的税务信息,却在阁楼里找不到存储当年特波税务软件(Turbo Tax)的硬盘。不用担心,Olive都有。

在较为严肃的软件方面,Olive涵盖了Chaste 3.1。这款软件的名称是癌症(Cancer)、心脏(Heart)和软组织环境(Soft Tissue Environment)的英文首字母组合。这是一款由牛津大学开发的仿真程序包,用于解决生物学和生理学领域需要计算的问题。Chaste 3.1版本出现在2013年3月发表的一篇研究论文中。论文发表后不到两年,当时新版Linux便不再编译Chaste 3.1的源代码了。这是Olive旨在克服科学再现性的标志性挑战。

为确保Chaste 3.1正常运行,Olive提供了当年的Linux环境。Olive复活的Chaste还包括2013年发表论文中的实例数据。利用这些数据再次运行Chaste,可以生成某些肌肉功能的可视化结果。对于未来想要研究这些可视化结果或改进已发表软件的生理学家来说,他们可以利用Olive在虚拟机上编辑并运行代码。

由于软件许可限制,现在Olive仅供少部分用户使用。Olive收集的早期软件目前只能限于参与这个项目的人员使用。相关公司需要授权许可,才能让Olive面向范围更广的用户。

不只我们一个团队在寻求还原旧软件的方法。比如,互联网档案馆(Internet Archive)就通过运行在用户浏览器中的MS-DOS仿真模拟器来保存成千上万个旧程序。耶鲁大学正在进行的项目EaaSI(Emulation as a Service Infrastructure,指“模拟器即服务基础设施”)就致力于模拟过去成千上万的软件环境。参加“软件保护网络”的学者和图书管理员们一直在协调这项工作以及类似研究。他们还在努力解决以这种方法恢复旧软件运行所带来的版权问题。

Olive系统已取得很大进展,但远未达到完善的程度。除了软件许可限制问题以外,还存在各种各样的技术障碍。

其中一大难题就是如何导入新数据以供旧应用进行处理。目前,新数据依靠人工导入,不仅任务繁重而且容易出错,也限制了可供分析的数据量。即便增加新的数据导入机制,导入的数据量还是受虚拟机的虚拟硬盘容量限制。这可能看起来问题不大,但是你要知道,有些旧式计算机文件系统的数据存储容量出奇地小。

另外一个难题是图形处理器(GPU)仿真。长久以来,科学界借助图形处理器的并行处理能力来提高各种运算的速度。为了把利用图形处理器的可执行软件存档,Olive需要再造这些芯片的虚拟版本。这是个十分棘手的任务。因为图形处理器的接口(输入和输出内容)并无标准。

很显然,在宣布可执行内容的存档问题已经解决之前,还有很多工作要做。但Olive已经开了一个好头,要确保直到未来也能开发、测试和使用过去的软件,正需要我们创造的这类系统。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微软
    +关注

    关注

    4

    文章

    6591

    浏览量

    104032
  • 计算机科学
    +关注

    关注

    1

    文章

    144

    浏览量

    11359

原文标题:拯救被遗忘的软件

文章出处:【微信号:IEEE_China,微信公众号:IEEE电气电子工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SHS1000 X系列手持示波表基础介绍

    SHS1000X手持示波表的使用方法知道吗
    的头像 发表于 11-22 09:20 107次阅读
    SHS1000 X系列手持示波表基础介绍

    这些电源常用仿真软件知道吗

    电源系统的建模仿真是电源开发过程中不可或缺的一环,它可以帮助工程师模拟电源系统,测试电源功能,验证电源方案可行性,优化电源电路设计,加速电源系统开发。 选择一款合适的仿真软件至关重要,本篇将对在电源
    发表于 10-25 14:20

    这些电源常用仿真软件知道吗

    电源系统的建模仿真是电源开发过程中不可或缺的一环,它可以帮助工程师模拟电源系统,测试电源功能,验证电源方案可行性,优化电源电路设计,加速电源系统开发。选择一款合适的仿真软件至关重要,本篇将对在电源
    的头像 发表于 10-24 18:05 447次阅读
    这些电源常用仿真<b class='flag-5'>软件</b>,<b class='flag-5'>你</b>都<b class='flag-5'>知道吗</b>?

    晶振怎么用,真的知道吗

    导读晶振应该是陪伴我们最多而我们却并非那么熟悉的元器件之一,其频率对于电路的运作很重要,今天我们详细介绍晶振的谐振频率调整与常见应用。谐振频率的调整通常石英晶体产品给出的标称频率是外接一个小电容Cs(在石英晶体产品的技术手册中常称为负载电容)时校正的振荡频率,Cs与石英晶体串接如图1所示。利用Cs可使石英晶体的谐振频率在一个小范围内调整。Cs的值应选择得比C
    的头像 发表于 10-22 08:03 249次阅读
    晶振怎么用,<b class='flag-5'>你</b>真的<b class='flag-5'>知道吗</b>?

    电源的这些常识知道吗

    因为电源部件是消耗品,导致电源有一定的使用寿命。因此,使用一定时间后,我们或多或少会出现一些异常现象。一些简单的学生可以简单地自己解决。然而,许多情况下,涉及技术问题的人无法开始。这时,我们需要知道
    的头像 发表于 09-26 13:58 239次阅读

    物联网设备也需要双卡吗?

    知道吗?实际应用中,物联网设是必需的!
    的头像 发表于 09-21 08:12 220次阅读
    物联网设备也需要双卡吗?

    世界电信日之知道吗

    而设立的。1865年5月17日,国际电信联盟正式成立,为了纪念这一历史性的日子,自1969年起,每年的5月17日定为世界电信日。在2006年11月举行的国际电信
    的头像 发表于 05-19 08:05 112次阅读
    世界电信日之<b class='flag-5'>你</b><b class='flag-5'>知道吗</b>?

    X安规电容是 X安规电容的特点介绍 X电容耐压等级是多少知道吗

    X安规电容是 X安规电容的特点介绍 X电容耐压等级是多少知道吗? X安规电容是目前市场上主要应用于电子产品的电容器之一。它具有一系列特点,包括高质量、稳定性强、使用寿命长、噪音小等特点。此外,X
    的头像 发表于 03-14 15:46 945次阅读

    同步整流和异步整流的工作方式和区别,知道吗

    同步整流和异步整流的工作方式和区别,知道吗? 同步整流和异步整流是电力电子领域中常用的两种整流方式。它们在工作原理、结构设计以及特性等方面存在一定的区别。 一、同步整流工作方式及原理 同步整流
    的头像 发表于 02-04 10:06 2215次阅读

    烘缸轴头磨损的原因大家知道吗

    电子发烧友网站提供《烘缸轴头磨损的原因大家知道吗.docx》资料免费下载
    发表于 01-23 09:53 0次下载

    电力系统的奥秘:零线与地线的区别和联系知道吗

    电力系统的奥秘:零线与地线的区别和联系知道吗? 在电力系统中,零线和地线是两个非常重要的概念,它们在电力系统的运行和安全方面起着重要的作用。本文将详细介绍零线和地线的区别和联系,包括其定义、功能
    的头像 发表于 01-18 16:28 1770次阅读

    回馈电子负载的正确使用方法,知道吗

    回馈电子负载的正确使用方法,知道吗  回馈电子负载是一种用来模拟电路负载的仪器,它能够向电路提供可控的电流或电压,以测试电路的性能和稳定性。在电子设计、电路调试和故障排除等领域,回馈电子负载广泛
    的头像 发表于 01-18 14:32 790次阅读

    软件测试的7大原则,漏了几条?

    软件测试报告最需要注意的就是测试思考,而非测试执行。而对软件测试菜鸟来说,初入行,首先要知道软件测试的7条原则,了解这些可以让事倍功半。
    发表于 01-18 09:39

    太阳能光伏发电原理及优点,知道吗

    太阳能光伏发电原理及优点,知道吗? 太阳能光伏发电是一种利用太阳能将其转化为电能的发电方式。它基于光伏效应,即当光线照射到半导体材料上时,会激发出电子,从而形成电流。 光伏发电的原理是基于半导体
    的头像 发表于 12-29 15:17 1382次阅读

    SMT丝印技术的历史发展的四个阶段,知道吗

    SMT丝印技术的历史发展的四个阶段,知道吗
    的头像 发表于 12-27 10:15 924次阅读