下载本文的PDF版本 PDF

不那么隐藏的计算机

TERRY COATTA,独立顾问

专用系统日益增长的复杂性使得隐藏其中的计算机变得困难。

普适计算可能尚未到来,但普适计算机肯定已经到来。摩尔定律的持续改进导致微处理器被广泛应用于各种消费产品中。一辆典型的汽车包含 50 到 100 个处理器。您的微波炉有一个或可能更多。它们存在于您的电视、电话、冰箱、孩子们的玩具,在某些情况下,甚至在您的牙刷中。

当然,微处理器在消费品中的使用日益增加并非新趋势。工程师和开发人员已经在嵌入式系统领域工作了几十年。然而,在过去,设备包含一两个处理器的事实可能对外部观察者来说并不立即显而易见。盒子完成了一些工作,而我们绝大多数人可以幸福地对隐藏起来、默默执行数字奇迹的技术一无所知。

然而,VoIP 电话、MP3 播放器、DVR(数字视频录像机)以及许多其他数字设备的出现意味着人们每天都在更直接地与技术互动,以戏剧性地改变我们与媒体和信息关系的方式来操作数字信息。

这对软件开发人员意味着什么?当然,这意味着我们中更多的人将致力于在传统计算机之外的某种设备上运行的代码。这在计算领域可能看起来不是一个巨大的变化,因为嵌入式计算是一门成熟的学科。因此,如果您以前没有从事过嵌入式系统工作,那么有大量的书籍和课程可以帮助您快速入门。

较新的设备以及在为其设计和创建软件时出现的问题类型存在有趣的差异。在很大程度上,过去的嵌入式计算主要是关于创建软件来监控和控制其所在设备内的各个方面。从外部来看,它在很大程度上是不可见的——只是黑盒子内的另一个组件。

随着数字技术更充分地渗透到主流中,我们看到更多软件,像嵌入式系统一样,是为特定设备创建的,但也在盒子外部可见。除了嵌入式系统设计人员面临的传统问题外,这些专用系统还提出了与用户交互以及与其他设备集成的问题。

用户界面问题可能是最具挑战性的。鉴于大多数专用系统不会连接键盘和 17 英寸 LCD,因此一个问题是如何输入和输出信息。应该有一个按钮还是两个按钮?也许是一个拇指轮?它会有一个 LCD 屏幕吗?有多大?它需要遥控器吗?还有哪些其他类型的环境传感器,例如温度或运动传感器,可能适用?一旦您确定了 I/O 组件的物理特性,就存在如何使用每个组件的问题。双击的概念是否适用于设备上的按钮?鉴于有限的控件和输出能力,在功能与易用性之间取得平衡将是一个持续关注的问题。

一个相关的挑战是决定给定设备应如何与其他产品集成。这跨越了从给定产品的多个单元如何相互交互到产品如何与您的家庭或办公室网络协同工作的范围。例如,音乐播放器是否应该能够使用蓝牙或 Wi-Fi 与其他播放器交换歌曲?显然,这不仅涉及设计和实现问题,还涉及数字版权管理、安全和隐私的考虑。例如,让播放器充当一个小服务器,准备好与范围内任何其他设备交换歌曲而无需提醒其所有者,这意味着什么?一旦设备具有联网能力,就会出现大量的集成可能性。它应该向网络公开哪些功能?它是否与用户的 PC 通信?它是否需要专门的软件才能在用户的 PC 上运行?清单几乎是无止境的,因此有很多决策需要制定。

专用系统的另一个兴趣领域是使用更强大的通用软件环境的趋势。我曾经在一个嵌入式系统上工作,以控制一台液压机械。计算环境非常简单。我使用一种相当简单的类似汇编器的语言,甚至没有分支的能力,并且旨在以保证的时间一遍又一遍地执行指令序列。编程环境足够简单,以至于我实际上可以证明控制逻辑的各种属性,这对于做出安全保证很有用。

看到运行 Linux 的专用系统并不少见。监控摄像头、家庭网络产品、DVR、GPS 设备、电话、PDA 甚至玩具都使用 Linux。鉴于像这样的通用操作系统和编程环境,可能有很多工作要做,以使系统 24/365 全天候运行,而无需用户进行任何管理。开源社区正在承担其中一些工作。特殊嵌入式版本的 Linux 解决了一些问题,例如确保不使用日志文件填满磁盘(或其他存储设备)。即使您正在使用这样的系统,应用程序的健壮性和错误恢复仍然存在问题,您正在其之上构建应用程序。例如,当出现问题时,简单地重启系统并希望这能解决问题是否合理?

对复杂性的推动

虽然从头开始避免所有这些并从底层构建专用系统似乎是明智的——也就是说,尽可能多地将功能转移到硬件中,并为其从头开始构建一个简单而可靠的软件系统——但当今市场中起作用的力量正在朝着另一个方向发展。尽管简单性的优点不容低估,但支持与用户交互以及与其他系统集成的需求正在推动更复杂的软件。

例如,考虑一下可能具有代表性的专用设备:手机。我的是第二代智能手机。除了作为一部电话之外,它还配备了摄像头,提供 IP 连接,拥有 Web 浏览器,并允许我安装第三方软件。在这些功能中,我不太使用的唯一功能是摄像头。这些并非可以轻易从设备中删除而不会使其失去太多价值的附加功能。这种程度的功能已经意味着几乎不可能从头开始编写手机的所有软件。实际上,该手机基于一个操作系统,该操作系统提供各种核心服务。

然而,它的操作系统不如我的台式电脑上的操作系统复杂。差异在两个领域尤为显着。首先,手机的操作系统不提供进程之间的内存保护。其次,它使用协作式多任务处理而不是抢占式多任务处理。第一个问题意味着一个糟糕的应用程序可能会使整个手机崩溃——不仅是手机上运行的第三方应用程序,而是整个手机。我经历过不止几次这样的情况:我正在和某人通话,同时使用手机上的其他应用程序之一,然后该应用程序崩溃并导致我的通话中断。

如果我是一个典型的消费者,我可能不了解受保护的内存,但我肯定会对一款不会因为行为不端的应用程序而丢失通话的手机感兴趣。即使提供受保护的内存意味着硬件和软件方面的额外复杂性,但它对消费者来说具有明确的价值。

协作式多任务处理涉及类似的权衡。毫无疑问,基于协作式多任务处理构建操作系统更容易,但结果是当我在手机上运行 MP3 播放器软件时,它对其他事物(例如处理来电)的响应变得迟缓。鉴于我希望我的手机继续充当手机,而不管我正在运行什么软件,我认为这是一个相当严重的缺点。几乎可以肯定的是,我的手机没有必要的 CPU 能力来同时播放 MP3 并处理通话,但我宁愿接听电话;如果我的 MP3 播放因此中断一点,我可以忍受。同样,消费者的需求正在推动软件和硬件方面更大的复杂性。

最后一个例子展示了专用设备设计中另一个有趣的方面。顾名思义,这些设备具有它们旨在实现的特定用途。有时,像智能手机一样,它们支持广泛的用途,但其功能集中的某些方面是主要的。虽然我使用了我的智能手机的大部分功能,但它必须始终真正出色地完成的一项工作是作为一部电话。如果它做不到这一点,那么无论它播放 MP3 或浏览 Web 的效果多么出色,我都不会使用它。虽然消费者会要求设备提供更广泛的功能集,但需要注意确保这些功能不会损害设备的目的。一个必然结果是,设备应该有一个明确的目的。市场上充斥着未能流行起来的设备,因为它们不太清楚自己应该是什么。另一方面,视频 iPod 的成功可能表明我们已经达到了设备可以以相当透明的方式服务于多种用途的阶段。无论哪种情况,结果都是相同的:驱动这些设备的软件更加复杂。

即使在似乎更接近传统嵌入式系统的领域,也感受到了这种向更复杂系统发展的压力。您汽车中的大多数处理器都相当不显眼,忙于监控燃油流量或变速器转动的速度。然而,与手机一样,面向消费者的功能正在推动更高程度的集成。例如,在某些汽车中,变速器中的微处理器与收音机中的微处理器交换信息。为什么?因为这样就可以根据发动机速度变化产生的不同噪音水平来调节收音机的音量。因此,尽管环境噪声水平发生了变化,但收音机始终保持相同的音量。

事实上,汽车中各个处理器之间的数据交换已经变得如此广泛,以至于许多汽车现在都配备了连接处理器的网络。这使得制造商能够提供更集成化的功能,同时也显着减少了汽车中的布线量。然而,这并非没有危险。Embedded.com 2003 年 8 月的一篇文章指出,车载网络被用于支持汽车挂入倒档时自动向下倾斜侧后视镜。后视镜中的处理器接收来自变速器中处理器的有关汽车档位的数据。这使得网络靠近汽车的末端,因此据报道,小偷通过折断后视镜、接入网络并告诉汽车解锁车门并关闭其安全系统来偷车。

保持开发人员的生活充满乐趣

有些人可能会将此类问题视为“罪恶的代价”——因使用对于手头任务来说过于复杂的东西而导致的各种失败。毕竟,从变速器到后视镜拉一根电线来指示汽车何时处于倒档不是更明智吗?然而,如前所述,技术的发展不仅仅是由对新功能的渴望推动的。消除汽车中的点对点布线可以减轻重量、简化构造并提高诊断能力。这里真正要吸取的教训是,我们必须开始将从构建通用计算机系统中学到的经验教训应用于为专用系统开发的软件。

我们不太可能回到设备内简单自包含软件的时代。英特尔在 2006 年初对其公司进行了相当大的方向转变,推出了新的 Viiv 平台,将重点从纯粹的计算机马力转向消费媒体设备和笔记本电脑。这也预示着软件开发人员的趋势。我们中更多的人将创建在典型 PC 以外的其他设备上运行的软件。我们必须解决大量设计问题:人为因素、功耗、安全性、与其他设备的集成、是否精简标准操作系统以使其足够强大或从头开始构建更具体的东西、是否使用特殊硬件来实现某些功能;清单还在继续。这就是让开发人员的生活变得有趣的原因。过去,我常常认为我会在职业生涯的剩余时间里为 PC 开发软件,但随着专用设备的成熟,如果我最终制造出更好的菲比小精灵,也许我不会太惊讶。

TERRY COATTA 是一位独立顾问,专门从事开发方法论。在此之前,他曾担任 Silicon Chalk Inc. 的开发副总裁,这是一家位于不列颠哥伦比亚省温哥华市的小型初创公司,该公司生产用于高等教育的实时协作软件。他还曾在 Open Text Corporation 和 Network Software Group 工作过。他拥有不列颠哥伦比亚大学计算机科学博士学位(1994 年),他的研究领域是分布式系统。Coatta 曾参与并继续对分布式组件系统(如 .NET、COM、EJB 和 CORBA)感兴趣。

更多

数字图书馆中的相关文章

Bhatia, S., Consel, C., Pu, C. 2004. 操作系统:嵌入式设备系统代码的远程定制。《第 4 届 嵌入式软件国际会议论文集》(9 月)。

Borriello, G., Want, R. 2000. 嵌入式计算与万维网的结合。《 通讯》43(5)。

Di Pietro, R., Mancini, L. 2003. 手持和可穿戴无线设备的安全和隐私问题。《 通讯》46(9)。

Park, S. H., Won, S. H., Lee, J. B., Kim, S. W. 2003. 智能家居——数字化设计的家庭生活。《个人和普适计算》7(3-4)。

这些文章将于 4 月 1 日开始在 www.acmqueue.com 上在线提供八周。想要完全访问权限?立即加入 ,网址为 www.acm.org 并注册数字图书馆。

acmqueue

最初发表于 Queue vol. 4, no. 3
数字图书馆 中评论本文





更多相关文章

Jim Barton - TiVo-lution
设计计算机系统最大的挑战之一是确保系统本身对用户“不可见”。系统应该仅仅是通往所需结果的渠道。有许多此类专用系统的示例,从现代汽车到手机。





© 保留所有权利。

© . All rights reserved.