<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=50 </link><title>实时系统</title><author>east</author><pubDate>2009/11/25 23:38:01</pubDate><description><![CDATA[<div class="tit">Control plane and Data plane</div>
<table style="width: 100%; table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div id="blog_text" class="cnt">在高端嵌入式系统中，一般而言系统分为：Control Plane和Data Plane<br />
            <br />
            Control Plane一般是采用经过修改的操作系统，并在其上运行NON REALTIME或SOFT REALTIME的APPLICATIONS。 对那些需要高性能的ENGINE，都放在DATA PLANE上。<br />
            <br />
            一个基于IXP NP的IP路由器是这样实现的：<br />
            <br />
            ARM core里运行一个Linux kernel，执行Control Plane的工作，芯片NPE引擎运行微码，执行Data Plane的工作。Data Plane的工作就是接收数据包，查看来源数据包的IP头的源和目的地址，然后根据一个hash table来找到通过哪个接口转发，然后通过找到的接口发送数据。如果在hash table中查不到，就将数据包交给Linux。Linux会查找路由表，然后将找到的结果插入到hash table中。<br />
            <br />
            <br />
            对DATA PLANE的理解，一般而言是：ASIC，FPGA，SWITCH FABRIC和一些其它辅助作用的网络处理器(NP)。在DATA PLANE上，基本上无软件成分。<br />
            <br />
            CONTROL PLANE与DATA PLANE通过Ethernet， PCI或其他高速BUS来通信交换信息。<br />
            <br />
            趋势：传统以ASIC为主的DATA PLANE体系结构将会被以软件为主的DATA PLANE体系结构所代替！以Co-processor身份的NP(上面RUN一些简单的ENINE-SIMD和MIMD数据处理方式)将会被其主导作用的高端NP所替代！</div>
            </td>
        </tr>
    </tbody>
</table>
<div class="tit">Linux 的实时改进（笔记）</div>
<table style="width: 100%; table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div id="blog_text" class="cnt">0. 缘起<br />
            <br />
            Linux是一个通用的操作系统，满足不了实时应用：<br />
            <br />
            0.1 关中断问题<br />
            <br />
            在系统调用中，为了保护临界区资源，Linux处于内核临界区时，中断会被系统屏蔽，这就意味着如果当前进程正处于临界区，即使它的优先级较低，也会延迟高优先级的中断请求。在实时应用中，这是一个十分严重的问题。<br />
            <br />
            0.2 进程调度问题<br />
            <br />
            Linux采用标准的UNIX技术使得内核是不可抢占的。采用基于固定时间片的可变优先级调度，不论进程的优先级多么低，Linux总会在某个时候分给该 进程一个时间片运行，即使同时有可以运行的高优先级进程，它也必须等待低优先级进程的时间片用完，这对一些要求高优先级进程立即抢占CPU的实时应用是不 能满足要求的。<br />
            <br />
            0.3 时钟问题<br />
            <br />
            Linux为了提高系统的平均吞吐率，将时钟中断的最小间隔设置为10ms，这对于一个周期性的实时任务，间隔要求小于10ms时，就不能满足实时任务的 需要。如果要把时钟的间隔改小以满足周期性的实时任务的需要，由于Linux的进程切换比较费时，时钟中断越频繁，而花在中断处理上的时间就越多,系统的 大部分时间是调用进程调度程序进行进程调度而不能进行正常的处理。<br />
            <br />
            <br />
            1. 改进<br />
            <br />
            两种改进的思想：<br />
            <br />
            1.1 修改内核，增强其实时性<br />
            <br />
            &nbsp;&nbsp;&nbsp; 往这方面努力的有：TimeSys 和 MontaVista，其中MontaVista 贡献巨大，所主持的kernel preemption project (http://sourceforge.net/projects/kpreempt/) 早已进入内核主源码树。<br />
            <br />
            1.2 与其它RTOS混合 (A hybird Operating System Architecture)<br />
            <br />
            &nbsp;&nbsp;&nbsp; 这方面的有名例子有： RTLinux 和 RTAI (https://www.rtai.org/) <br />
            &nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; 其基本思想就是将标准Linux内核作为一个进程，运行于RTOS上：<br />
            <br />
            <div forimg="1"><img class="blogimg" border="0" src="http://hiphotos.baidu.com/comcat/pic/item/6cf32800f2907d8ae850cd58.jpg" small="0" alt="" /></div>
            <br />
            <br />
            这种改进的优点为：<br />
            <br />
            可以集合两种OS的优点，既能满足实时应用，又能尽可能复用现有资源（应用软件、开发工具以及开发人员等等）<br />
            <br />
            缺点为：<br />
            <br />
            进程不能同时请求Linux和RTOS为其服务 （实时的文件管理）<br />
            混合的结构也使开发环境和进程变得复杂 （调试器得支持两种OS才行）<br />
            <br />
            <br />
            2. Reference<br />
            <br />
            [1] &ldquo;Linux on ITRON&rdquo;: A Hybrid Operating System Architecture for Embedded Systems<br />
            [2] RTLinux versus RTAI <br />
            [3] 嵌入式实时操作系统RTLinux的分析和实现</div>
            </td>
        </tr>
    </tbody>
</table>]]></description></item></channel></rss>