Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318761
  • 博文数量: 145
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 1510
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-19 11:12
文章分类

全部博文(145)

文章存档

2007年(75)

2006年(70)

我的朋友

分类: LINUX

2006-06-04 10:15:33

Linux Realtime



何谓实时系统:
POSIX 1003.b 定义:系统能够在限定的响应时间内提供所需的服务
Donald Gillies 的定义: 计算的正确性不仅取决于程序的逻辑正确性,也取决于产生结果的时间快慢。

分类:
【hard realtime(HRT)】在不满足响应时限、响应不及时或反应过早的情况下都会导致灾难性的后果
【soft realtime(SRT)】在不满足响应时限时,系统性能退化,但并不会导致灾难性的后果
【best effort(BE)】工作速度没有特定限制,快一点更好些

实时指标:
】Response time
】Latency
】Deadline
其中
HRT对以上三者都有硬性要求,否则服务完全失效。如工业控制,航天航空,军事应用等。
SRT无法提供服务质量。如多媒体实时需求。
BE,如一些字处理器,PC的常规应用。

影响实时的因素:
硬件--MPU的设计: Cache结构设计,上下文切换速度,异常处理,内嵌寄存器等。
软件--OS设计理念:kernel的可抢占、重入性,硬件支持程度,实时调度算法。
Linux的缺陷--Desktop,Server型OS,实时性有限。主要体现在:内核的可重入、可抢占性,系统时钟粒度,实时调度算法。

突破Linux缺陷的方法:
1】、增加kernel可抢占性
一般的kernel的不可抢占性使实时任务无法提供任务的调度权,可以通过修改源码,缩小禁止中断、内核加锁的范围。
2】、细化时钟粒度
一般的kernel无法提供高精度时钟,也即无法高精度分辨RT任务的到来,RTC可提供高精度。
3】、调度算法
一般的kernel是基于优先级的调度算法,无法满足HRT、QoS等的任务需求。可向调度器增加hook或改造调度器来改善。

实时调度算法概览:
三种模式:
TD--time driven: 被静态精确计算过的运行时任务计时,适合小型嵌入式系统、自动控制、传感器领域等。
具有稳定、已知输入的简单系统,通常提供数据处理的预测性。其本身是一种设计时就确定下来的离线的静态调度算法。在系统的设计阶段,对于任务的开始、切换、结束都事先做好安排。
有良好的任务可预测性,但缺乏灵活性,会出现CPU空闲但却有任务需要执行的情况。

PD--priority driven:静态优先级进程调度算法:静态分配给进程优先级,根据应用的属性进行。例如:任务周期,用户优先级,预先策略等等。RM(rate-monotonic)--根据任务的执行周期长短来决定调度优先级,小周期任务具有较高优先级。
动态优先级进程调度算法:根据进程的资源需求动态分配进程的优先级。许多非实时系统采有此种算法,如短作业优先调度算法。实时算法中EDF(earliest deadline first)较普遍--给就绪队列中的各任务的Deadline来分配优先级,Deadline最近的任务具有最高优先级。
基本可以说以上两类算法提供了硬实时调度。

SD--shared driven:基于CPU使用比例的进程调度算法,让他们的执行时间和他们的权重成正比。方法有两种:(1)、调节任务队列在调度队列队首的频率,(2)、根据权重分配时间片,并逐次调度队列中的进程投入运行。
主要类别:轮转法、公平共享、公平队列、彩票调度法(Lottery)。
缺点:没有优先级之分,任务共享资源,系统处于过载状态时,所有任务都按比例变慢,所以一般采用一种动态调节进程权重的方法。
基础是GPS(general processor sharing);算法有WFQ(weighted fair queueing);WF2Q;qlinux使用H-SFQ等。
适合实现资源预留,保障多媒体等软实时性能的算法模式,实现的前提要求系统提供某种静态优先级算法,以实现资源预留。
其一般内容包括:accounting, policing/enforcement,admission control。


linux上的实时多媒体性能
1】、linux-SRT (Cambridge Univ.)
采用高精度时钟,支持QoS,没有修改调度算法,通过在现行kernel中增加调度类来实现QoS(由于文档描述粗糙,可靠性收到怀疑)。
2】、Qlinux (Massachusetts Univ. 、Texas Univ. 、Ensim Corp.)
致力于支持高性能多媒体功能的linux,采用H-SFQ(hierachical start-time queueing),提供CPU,network,disk的QoS服务。
3】、linux/RK(Carnegie-Mellon Univ.、Timesys Corp.)
致力于资源预留的linux实现,通过实现资源预留管理模块、在内核调度相关代码中插入hook,达到预留CPU,network资源,并且向系统特殊任务实现QoS的目的。
4】、KURT-linux(Kansas Univ.)
提供高精度时钟&一种特殊的实时任务保障体制(文档缺少),提供的实时机制对多媒体性能没有什么特别。
5】、Red-linux(California Univ.)
整合了三种(TD、PD、SD)实时模式。

【注1】关于RTlinux/RTAI: 主要用于工控,但缺少学术价值,专利许可严密,最重要的是已经有理论支持(网上的adeos模型可以取代他)。

【注2】关于linux内核时间粒度:scheduling time slice的最大值为10ms; 时钟粒度主要取决于RTC。
对于arm来说,提供的high-res clock主要是通过RTC的高精度,而对于MIPS、PPC、x586这样的处理器还提供了基于总线仲裁的计数器,通常叫做TSC(timer stamp counter)来提高时钟精度。
就通常情况,时钟的频率是系统总线时钟频率的1/4。
【注3】关于抢占:抢占可以发生在任何进程的时间片内,而不必等到此进程时间片完成。
【注4】关于MontaVista Corp. : 开发了用于替换linux标准调度算法的算法,可以实现SRT ,提供high-res clock 。参见:
在MontaVista网站上有一个测试系统调用时间片的Demo,可以试试。
【注5】 the high-res timer Project :
阅读(1232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~