手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

基于 Linux 的实时系统

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


- Cello 磁盘调度算法 [Shenoy98];



图 3 Q Linux 系统结构


H-SFQ 资源调度算法由由德州大学的 Pawan Goyal 等人提出,他采用了一种分级调度的思想,先将资源在不同的应用类别之间进行按比例分配,并在应用类别之间提供对于资源使用的隔离,同时在每一个应用类别中 还能够使用不同的资源调度算法。这样做的目的是为了在多媒体系统中提供 QoS 支持。

LRP 技术是一种新颖的设计 OS 网络子系统的思想,他由 Rice 大学电脑系的 Peter Druschel 等人提出,其目的是为了解决普通 Unix 和类 Unix 系统中网络包接收的问题。

传 统的 Unix 系统没有对到来的网络包的协议处理的显式调度,他们一般采用中断驱动的机制。当网卡有中断时,CPU 就立即进行一系列由网卡中断程式启动的包接收和协议处理操作,将最终的数据送给等待接收的进程,并唤醒该进程。但这种处理方式会影响应用程式资源调度的性 能,并在系统处于过载状态时可能会引起一些应用层任务的饥饿,降低网络吞吐率,甚至会让系统没有响应。为了解决这些问题,LRP 的核心思想就是每一个 Socket 有一个 IP 包的队列,只有当上层应用程式请求数据时才进行协议处理,同时对协议处理操作以请求数据的应用的优先级进行显式的调度。通过这种途径增强了资源调度的公平 性,能够提供一定程度的流量隔离,同时能够提高系统过载状态时的吞吐量。

Cello 磁盘调度算法由德州大学 Prashant J. Shenoy 等人提出。他能够支持多种应用类别,比如:交互式尽力而为应用、大吞吐量尽力而为应用、连同软实时应用等类别,并公平地给各个类别的应用分配磁盘访问带宽。

在结构上 Cello 磁盘调度采用的是一种两级式的调度方式,他由多个和应用类别相关的调度器连同一个和应用类别无关的调度器组成(如图 4所示)。



图 4 Cello 磁盘调度


Cello 调度算法中应用类别无关的调度器管理时间上粗粒度的磁盘的调度,而应用相关的调度器控制着小粒度上磁盘调度。如上图中有n个应用类别,Cello使用一个 应用无关的调度器C和n个类别相关的调度器 ,系统中有n 1个调度队列。类别无关的调度器C决定您了何时连同多少磁盘请求被从等待队列(pending queue)移到调度队列(scheduled queue);类别相关的调度器Si对等待队列中的请求进行排序,并根据调度队列的状态来决定磁盘请求被插入到调度队列的什么位置。

3.6. Linux -SRT

Linux -SRT是剑桥大学David Ingram的博士论文项目 [SRTWeb][Ingram00],基本上是个实验性的东西,自从 Ingram 在 2000 年从剑桥毕业以后,该项目就再没有人维护。跟 Q Linux 相同, Linux -SRT 属于软实时的 Linux。

在 Linux -SRT 中能够给一个任务分配一定百分比的 CPU 时间,他通过 RM 算法实现了一种基于速率的调度机制来确保给任何多媒体应用的 QoS 需求;另外由于 CPU 并非唯一影响多媒体应用的资源,对于那些做图像显示的应用,X 服务器中的资源调度也十分关键,所以 Linux -SRT 对 XFree86 最了扩展,让 X 服务器能够对来自不同X客户的图像显示请求进行优先级排序;另外为了方便用户管理各个进程的 CPU 分配情况, Linux -SRT 提供了一个图像界面的程式。下面对于 Linux -SRT 对于普通 Linux 所作的修改做一具体说明。

Linux -SRT 也提高了系统的定时精度。但他并没有采用惯用的将时钟芯片置于单次触发模式的做法,而是简单地修改了 Linux 内核中HZ的定义,将 Linux 的时钟频率由每秒 100 次提高到了 1024。

另 外 Linux -SRT 在原有的 Linux 系统中的 SCHED_OTHER、SCHED_FIFO、SCHED_RR 这三个调度策略的基础上,给 Linux 增加了一些新的调度策略:SCHED_PAUSE、SCHED_IDLE、SCHED_QOS、SCHED_VAR;策略为 SCHED_PAUSE 的进程在调度时被调度程式忽略,不参和调度执行;使用 SCHED_QOS 调度策略的进程能够得到有确保的 CPU 执行时间;使用 SCHED_IDLE 策略的进程优先级最低,他被分配给那些只在系统空闲时才能够被调度执行的进程,比如一些批处理程式;SCHED_VAR 是个可变优先级的策略,他被用于解决由于临界资源访问时所产生的优先级倒置问题,即一个高优先级的任务等待低优先级任务占用的某种临界资源,但低优先级 任务又得不到CPU处理时间所造成的死锁问题;这时通过该调度策略将低优先级任务的优先级置为等待资源的高优先级任务的优先级(优先级继承)来解决死锁问 题。

对于使用 SCHED_QOS 调度策略的实时任务,采用RM静态优先级调度算法进行调度;另外在进行调度时,他还采用了一种双调度策略的方案,即当一个实时任务在当前的调度周期中用完 自己任何的时间片之后,在下次调度周期到来之前,并非简单地不调度执行他,而是使用他进程属性中的 Fallback policy 所定义的调度策略来调度他,让他以该策略参和本轮的剩余时间的调度。

Linux -SRT 按照 POSIX 推荐的方式扩展了传统的几个用户配置进程调度属性的系统调度,让用户或编程人员能够在后向兼容的情况下使用这些新添加的调度特性。另外为了使用的方便, 他还提出了 reserve 的概念,一个 reserve 在 /proc 文档系统中有一个结点,他包含有关资源分配的情况;reserve 单独和进程,一个进程能够通过新增加的 reserve 相关的系统调用申请加入(使用)或退出一个 reserve。

3.7. Hard-hat Linux

Hardhat Linux 是 MontaVista 公司所发布的一款主要面向各种嵌入式应用的 Linux 发布 [HardHatWeb][Morgan01]。Hard-hat Linux 最大的贡献在于:为了解决 Linux 在内核态不可被抢占的问题,他研发了一种抢占式(Preemptible)的内核,有人认为他的这种方法充其量也就是一种能够被抢占 (Preemptable)的内核。

其基本思想就是让调度程式获得更多的执行机会,从而减少了从一个事件发生到调度程式被执行的时 间间隔。可抢占内核的补丁包修改了 spinlock 的宏定义连同中断返回处理代码,当当前进程能够被"安全"地抢占并且有一个等待处理的重新调度请求,系统就会调用调度程式进行进程调度。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!