现代操作系统可以提供各种工具来帮助开发人员使用现成的软件构建强大的、可安全认证的系统。
一个世纪前,拆除马匹并用马达代替它是一项重大创新。接下来是电启动器、自动变速器和收音机。随着电子产品的普及,我们看到了间歇性雨刷、燃油喷射以及发动机性能增强和监控。现在,微处理器和软件正在推动高级驾驶员辅助系统 (ADAS) 的发展,以帮助驾驶员驾驶汽车。
ADAS 从被动到初级,再到主动,最后到完全自主控制。在被动 ADAS 中,系统会向驾驶员发出警告,但要由驾驶员采取行动。例如,配备运动检测器的倒车摄像头可以在检测到车后有人时发出警报,但驾驶员仍必须踩刹车。基本 ADAS 控制的一个例子是自适应巡航控制,它可以保持驾驶员设定的速度并自动调整以确保与前方车辆的安全距离。主动 ADAS 的一个例子是自动车道保持,它不仅会警告驾驶员,还会主动控制车辆以使其保持在车道内。最终,这些技术将融合在自动驾驶汽车中——一种无需人工干预就能自行驾驶的汽车。
软件
ADAS 系统将硬件(例如,摄像头、雷达、外来激光瞄准系统)与相关的设备驱动程序和控制软件相结合。附加的软件层提供模块之间的通信并实现系统的“高级”功能,例如在倒车时避开汽车后面的行人或协调制动系统、转向系统和摄像头的交互以实现车道保持特征。自动驾驶汽车将需要更多的软件。
为了提供安全可靠的产品,开发人员必须使用经过认证的组件、方法和工具,但他们还必须处理成本限制。因此,为了按时按预算开发产品,使用商业现货 (COTS) 软件是有意义的。这种方法在多个 OEM 之间分摊了软件的开发、测试和认证成本。同样,硬件平台的通用性为 COTS 论点提供了支持——高端豪华车和低端多功能车之间的差异可能非常明显,但它们可能都使用相同的底层视觉系统。一旦 OEM 熟悉了硬件平台,他们就可以将其集成到多个型号和产品线中以降低成本。
不受干扰
汽车软件行业正在追随其他依赖软件并具有严格安全要求的行业的脚步,包括医疗、铁路和核能。每个都有流程和认证,以帮助确保一致性、质量,尤其是安全性。对于汽车,主要标准是 ISO 26262,“道路车辆 - 功能安全”。它以 IEC 61508“电气/电子/可编程电子安全相关系统的功能安全”为蓝本,但专门针对汽车行业并涉及整个软件生命周期。
ISO 26262 中的一个关键概念是不受干扰。简而言之,一个组件不能干扰另一个组件的操作。例如,如果系统同时包含媒体播放器和后视摄像头,则媒体播放器不应干扰摄像头的操作,即使两者可能共享同一个 LCD 面板。
现代操作系统平台的目标是减轻软件进程之间所有形式的干扰。例如,操作系统可以使用内存管理单元 (MMU) 来确保每个进程在一个私有的、硬件强制的地址空间中运行,只有该进程可以访问该地址空间。这种技术可以防止内存干扰。但其他形式的干扰仍然可能发生——例如,在拒绝服务 (DoS) 攻击中,一个进程可能会消耗所有可用的内存或 CPU 资源,从而使其他进程处于饥饿状态。因此,操作系统还需要支持资源限制和调度保证。
操作系统架构在这里有所作为。尤其是微内核操作系统,在确保不受干扰方面比其单片操作系统要好得多。例如,考虑设备驱动程序。在诸如 Linux 之类的单片操作系统中,设备驱动程序软件存在于内核中。因此,一个设备驱动程序中的故障将损坏或可能关闭整个操作系统。即使从安全角度来看,这也是一个严重的漏洞,因为破坏最不安全的设备驱动程序可以让攻击者完全控制操作系统。但是,在微内核操作系统中,情况并非如此。设备驱动程序作为常规的、最低特权的、受内存保护的进程运行,通过久经考验的 MMU 强制硬件保护相互隔离(和内核)。如果一个驱动程序发生故障,系统的其余部分将继续工作。
资源限制和自适应分区
调度争用是当多个进程共享一个 CPU 时可能发生的另一个干扰问题,并且不能通过简单地分配优先级来消除。要了解原因,请考虑以相同优先级运行的两个进程。由于错误,其中一个进程进入无限循环并永远运行。另一个进程不会被安排运行,因为第一个进程正在消耗所有可用的 CPU。解决方案可能看起来很简单:更改优先级,使一个进程的优先级高于另一个。但这只是将漏洞转移到不同的进程。当 bug 遇到优先级较高的进程时,该进程会占用其他进程的 CPU 时间。为了防止任务匮乏成为问题,系统设计人员可以使用自适应分区,
例如,使用自适应分区,设计人员可以将 60% 的 CPU 分配给一个进程,将 40% 分配给另一个进程。因此,即使两个进程都以最高优先级运行,操作系统也将确保第一个进程仅消耗 60% 的 CPU,而第二个进程则消耗 40% — 完全符合规定。因为这种方法是“自适应的”,它可以将空闲的 CPU 时间分配给可以从中受益的分区。例如,如果第一个分区没有使用任何 CPU,而第二个分区需要执行大量工作,则操作系统可以让第二个分区使用超过 40% 的份额,只要它不影响第一个分区的操作。当第一个分区需要 CPU 时间时,操作系统保证它应该拥有 60% 的 CPU。
高级操作系统提供细粒度的权限映射。内核提供的每个不同的功能,例如设置时间、附加到中断或创建进程,都被分配了一个特权级别。然后,操作系统内核将进程限制为所需的绝对最低权限。进程可以以“额外”权限启动(例如,为了设置硬件映射并附加到中断),然后它们可以在其稳态操作中放弃一次。“以 root 身份运行”的概念不再相关或不可接受。
管理程序
ISO 26262 认证的系统也可以使用管理程序。如前所述,自适应分区允许我们在同一个 CPU 上运行多个进程,并对它们之间的交互做出强有力的保证。管理程序允许我们从两个额外的配置选项中受益。在一种情况下,我们可能希望将经过认证的系统与未经认证的系统结合起来,例如后视摄像头和多媒体播放器。多媒体播放器可能会进行更频繁的更新,并且由于它不是关键系统,因此不需要进行认证。管理程序可以以简单且经济高效的方式在认证域和非认证域之间创建明确的分隔。
管理程序还可以允许多媒体播放器在未经认证的商品操作系统(例如 Linux)上运行,同时允许经过安全认证的关键软件在实时操作系统(例如 QNX Neutrino)上运行。同样,管理程序在认证部分和非认证部分之间提供了有效的屏障。使用管理程序的好处包括硬件整合(一个 CPU、一个 LCD 面板)和较低的认证成本,从而在保持安全认证的同时降低整体系统成本。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !