您的位置:首页 > 运维架构 > 网站架构

实时 Linux 架构简介

2010-05-10 16:10 393 查看
作者:李智敏,华清远见嵌入式学院上海中心讲师。
实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。换句话说,系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。
注意,实时性与速度关系不大:它与可预见性有关。例如,使用快速的现代处理器时,Linux 可以提供 20 μ 微秒的典型中断响应,但有时候响应会变得很长。这是一个基本的问题:并不是 Linux 不够快或效率不够高,而是因为它不能提供确定性。
当中断到达时(event),CPU 发生中断并转入中断处理。执行一些工作以确定发生了什么事件,然后执行少量工作分配必需的任务以处理此事件(上下文切换)。中断到达与分发必需任务之间的时间(假设分配的是优先级最高的任务)称为响应时间。对于实时性要求,响应时间应是确定的并应当在已知的最坏情况的时间内完成。因此,对于某些高安全性的场合,操作系统应快速地分配任务,并且不允许其他非实时处理进行干扰。晚一秒钟响应比没有响应的情况更糟糕。
除为中断处理提供确定性外,实时处理也需要支持周期性间隔的任务调度。大量控制系统要求周期性采样与处理。某个特定任务必须按照固定的周期(p)执行,从而确保系统的稳定性。在某些控制场合下,为了保持控制系统的正常工作,传感器的采样与控制必须按照一定的周期间隔。这意味着必须抢占其他处理,以便特定任务能按照期望的周期执行。
能够在指定的期限完成实时任务(即便在最坏的处理负载下也能如此)的操作系统称为硬实时 系统。但并不是任何情况下都需要硬实时支持。如果操作系统在平均情况下能支持任务的执行期限,则称它为软实时 系统。硬实时系统指超过截止期限后将造成灾难性后果(例如展开气囊过晚或制动压力产生的滑行距离过长)的系统。软实时系统超过截止期限后并不会造成系统整体失败(如丢失视频中的一帧)。
Linux 架构支持通过以下几种方式实现硬实时。
1. 瘦内核方法
瘦内核(或微内核)方法使用了第二个内核作为硬件与 Linux 内核间的抽象接口。非实时 Linux 内核在后台运行,作为瘦内核的一项低优先级任务托管全部非实时任务。实时任务直接在瘦内核上运行。
瘦内核主要用于(除了托管实时任务外)中断管理。瘦内核截取中断以确保非实时内核无法抢占瘦内核的运行。这允许瘦内核提供硬实时支持。
虽然瘦内核方法有自己的优势(硬实时支持与标准 Linux 内核共存),但这种方法也有缺点。实时任务和非实时任务是独立的,这造成了调试困难。而且,非实时任务并未得到 Linux 平台的完全支持(瘦内核执行称为瘦 的一个原因)。
使用这种方法的例子有 RTLinux。
2. 超微内核方法
瘦内核方法依赖于包含任务管理的最小内核,而超微内核法对内核进行更进一步的缩减。通过这种方式,它不像是一个内核而更像是一个硬件抽象层(HAL)。超微内核为运行于更高级别的多个操作系统提供了硬件资源共享。
这种方法和运行多个操作系统的虚拟化方法有一些相似之处。使用这种方法的情况下,超微内核在实时和非实时内核中对硬件进行抽象。这与 hypervisor 从客户(guest)操作系统对裸机进行抽象的方式很相似。
3. 资源内核法
这种方法为内核增加一个模块,为各种资源提供预留(reservation)。这种机制保证了对时分复用(time-multiplexed)系统资源的访问(CPU、网络或磁盘带宽)。这些资源拥有多个预留参数,如循环周期、需要的处理时间(也就是完成处理所需的时间),以及截止时间。
资源内核提供了一组应用程序编程接口(API),允许任务请求这些预留资源。然后资源内核可以合并这些请求,使用任务定义的约束定义一个调度,从而提供确定的访问(如果无法提供确定性则返回错误)。通过调度算法,内核可以处理动态的调度负载。
资源内核法实现的一个示例是 CMU 公司的 Linux/RK,它把可移植的资源内核集成到 Linux 中作为一个可加载模块。这种实现演化成商用的 TimeSys Linux/RT 产品。
如果您喜欢这篇文章,可以加华清远见老师为好友,单击以下链接即可:

http://student.csdn.net/invite.php?u=45153&c=8af704eb3cd8e773

(作者:华清远见嵌入式培训中心 www.embedu.org www.farsight.com.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: