发达国家的医疗保健服务已经超越了以医院为中心的模式,以初级和二级医疗为重点而不仅局限于医院。这些举措推动了用于医院之外、通常由病人自己使用的远程医疗设备的发展。
对远程医疗设备的迫切需求正在推动市场增长。美国2010年的无线消费医疗设备销售额达到6亿美元,2011年有望达到13亿美元 ,然而与全球医疗设备市场每年2000 亿美元的销售额相比仍然微不足道。
操作系统 - 关键区分要素
操作系统是所有电子医疗设备的关键区分要素,而且制造商也非常明白这一点。事实上,他们往往在选择板卡前先选择操作系统。
图 1 不同行业中首先选择操作系统的项目所占比率(选自 Balacco 等人的文章)
本文的讨论未包括消费级医疗设备,例如其发生故障时不会造成严重后果。对于出现故障时会导致严重后果的设备,可将其操作系统的关键特征归类如下:
·可信性:在规定的时间内对事件进行及时正确地响应
·连接性:直接或通过网络与不同设备和系统进行通讯
·数据完整性和安全性:安全地存储数据并防止未经授权的查阅
以上每个特征都值得深入讨论,在此我们只重点介绍其中最重要的一种特征--可信性。
图2 一种简单的远程病人监护网络
选择GPOS 还是RTOS?
可信性将可用性和可靠性合二为一。可用性要求系统能够及时响应请求的概率,可靠性则表明响应的正确率。对一个可靠的操作系统的要求是排除使用通用操作系统(GPOS),因为GPOS不能提供严格的可用性和可靠性的保障。
与此相反,实时操作系统(RTOS)本身就是为了保证可用性和可靠性而精心设计的。设计人员可以信赖实时操作系统随时响应需求的可用性和按要求完成任务的可靠性。因此,可以得出这样的结论,即:大部分的医疗设备需要实时操作系统。
实时操作系统架构
即使像配药机这样简单的设备也不允许出现故障。假如故障导致数据损坏,配药机可能改变剂量,最终的严重后果可想而知。既然操作系统架构对系统的可靠性有重要影响,那么首先就应对它进行严格评估。实时操作系统最常见的三种架构是实时执行、宏内核和微内核。
实时执行架构
基于实时执行架构,所有的软件组件包括内核、网络协议栈、文件系统、驱动程序和应用程序都在同一个内存地址空间内运行。这种架构虽然高效,但它有两个明显缺点。首先,任何模块内的单个指针错误都可能损坏内核或任何其他模块所用的内存。其次,系统崩溃后不会留下诊断信息。
宏内核架构
有些实时操作系统通过宏内核架构(其中的程序可作为内存受保护的进程运行)解决可能引起整个系统故障的内存错误。这种架构的确能防止用户故障代码损坏内核。但是,内核组件仍与其他服务共享相同的地址空间。因此,任何服务中的单个编程错误都可能导致整个系统崩溃。
微内核架构
在微内核实时操作系统中,设备驱动程序、文件系统、网络协议栈和应用程序都运行在内核外部的独立地址空间,因此它们不仅与内核隔离,而且彼此之间也互不影响。一个组件出现故障不会导致整个系统瘫痪,组件中的内存故障不会影响其他进程或内核。这样,操作系统就能自动重启故障组件。
图 3 病人监护系统中的微内核操作系统
实时操作系统的关键特征
在众多操作系统特征中,除了系统架构必须仔细评估,其他重要特征包括:
·确保实时性
·防止优先级反转
·确保可用性
·监视和重启进程
确保实时性
对所有需要确保实时性的系统而言,抢占式内核至关重要。例如,病人摔倒时触发了报警器应能抢占进程并发出警报。
为确保优先级高的进程随时获得所需的CPU周期,实时操作系统的内核需要进行抢占式运行,此外内核的设计必须尽可能简单,以保证最长的不可被抢占代码路径有执行时间的上限。只要操作系统的内核能将任务密集的运行分配到外部进程或线程,并只包括路径短的服务就能在操作系统内核实现这种简洁性设计。
防止优先级反转
操作系统中最令人头疼的错误是优先级反转。它是指低优先级任务阻止高优先级任务完成运行的状态。例如,在报警控制、数据记录仪和数据聚合器共享资源的病人监控系统里,优先级高的任务(报警控制器)必须等待优先级低的任务(数据记录器)结束才能继续运行。第三项任务(数据聚合器)的优先级比报警控制器的低,但比数据记录器的高。数据聚合器会抢占数据记录器的优先级,进而抢占报警控制器的优先级,这就无法满足实时提交的要求。
优先级继承
优先级继承是指将被阻止的高优先级任务的优先级分配给阻止任务的低优先级线程,直至完成被阻止的任务,以此防止优先级反转。例如,数据记录器可继承报警控制器的优先级,这样它就不会被数据聚合器抢占。当任务结束后,它会恢复最初的优先级,报警控制器会解除阻止并继续运行。
图 4 优先级继承防止优先级反转
确保可用性
对许多系统来说,资源的可用性至关重要。假如某一子系统出现CPU周期匮乏,会导致十分严重的后果。例如,如果心脏监护仪的连接中断可能导致中心监护系统误认为出现报警情况并派出急救人员,或当病人真出现危急状况时,系统却无法发出报警信息。
根据以往经验,解决这一问题的途径是更新硬件或重新设计软件。虽然将新设计的软件发送到联网的医疗设备上是一个可行方案,但这不仅使成本高昂,而且还可能导致该设备已有的产品认证失效。
分区分区技术通过执行CPU预算并防止进程独占CPU周期,使资源匮乏的问题迎刃而解。可选择两种类型的分区:固定式和自适应式。
采用固定分区,系统设计人员为每个任务指定分配的CPU时间。分区内的任务消耗的CPU时间都不能超过分区时已分配的时间比例,以便于其他分区内的进程保持随时可用,进而保证所有关键进程随时可用。
遗憾的是,采用固定分区时,即使分配到其他地方的周期未被使用,另一个分区内的进程也无法使用,因为它不能使用超出其所在分区预先分配的CPU周期,固定分区虽然能防止系统出现资源匮乏,但它却浪费了CPU周期,而且削弱了系统应对高峰需求的能力。
与固定分区类似,自适应分区也能防止资源匮乏。然而,自适应分区采用一种动态调度算法将一个分区内闲置的CPU周期重新分配到另一个需要更多处理时间的分区内。当多个分区内的进程争夺CPU周期时,自适应分区会执行资源分配。这样,设计人员就能充分依赖系统资源保证,不必再为固定分区造成的处理能力降低而寻找良策了。
监视、停止或重启进程
防止整个系统的进程发生连锁故障和自我修复功能对可信赖的操作系统至关重要。需确保系统可用性的设备可采用面向硬件的高可用性解决方案和软件监视程序。
监视程序监视系统并进行多级恢复或按要求平稳关机。根据执行方式的不同,当出现故障时它应:先终止然后重启出现故障的进程而无需重启系统,或者,终止故障进程和相关进程,初始化硬件使其进入"安全"状态,然后以协调方式重启终止的进程,或者,如故障比较严重或危及安全,能以受控方式关机或使整个系统复位,并向系统操作员发出报警。
在所有情况下,监视程序都必须能自我监控并灵活响应内部故障。如果监视程序意外停止,它必须通过一个镜像进程复制本身的状态。
最后,软件监视程序能监视传统硬件监视程序看不到的系统事件。例如,硬件监视程序能确保驱动程序为硬件服务,但却很难检测到其他程序是否正与该驱动程序正确通话。软件监视程序能弥补这一不足,它会在驱动程序本身出现问题前采取行动。
结论
发达国家的人口老龄化趋势和健康预算紧缩都促使医疗服务方式由常规医院模式向远程医疗和家庭自助模式转变。这些变化和最新技术推动远程医疗设备的市场不断扩大,其发展速度之快在十年前是难以想象的。
设备制造商通过认真分析所选操作系统的性能特征,从而降低成本并提升其产品顺利通过行业认证而在市场上大获成功的机会。采用曾多次成功通过产品安全认证(有据可查)的供应商提供的微内核实时操作系统,能帮助客户减少顺利获得FDA、MDD和其他标准认证所需的费用。