<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6272c23cc0b40515e3dfb975/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272c23cc0b40515e3dfb975/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">Linux <span class="ff2 fs1">作为一种嵌入式操作系统 </span></div><div class="t m0 x1 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0">作者:<span class="ff1 fs0">Jerry Epplin</span></div><div class="t m0 x1 h3 y4 ff3 fs1 fc0 sc0 ls0 ws0">Linux <span class="ff2">作为一种嵌入式操作系统有潜力吗?高档商业</span>RTOS <span class="ff2">厂商会穿着布鲁诺玛格里站立不稳</span></div><div class="t m0 x1 h3 y5 ff2 fs1 fc0 sc0 ls0 ws0">吗?本文将评估<span class="ff3">Linux </span>的功能性,强壮性,局限性,以及最重要的是,它的实时处理设施。</div><div class="t m0 x1 h3 y6 ff2 fs1 fc0 sc0 ls0 ws0">更多地使用<span class="ff3">PC </span>硬件是近几年来高端嵌入式系统中最重要的发展之一。由于这个趋势,高档系</div><div class="t m0 x1 h3 y7 ff2 fs1 fc0 sc0 ls0 ws0">统</div><div class="t m0 x1 h3 y8 ff2 fs1 fc0 sc0 ls0 ws0">的硬件成本已经大幅下降,使得有些以前由于非基于<span class="ff3">PC </span>的嵌入式硬件成本之高,不会被做的</div><div class="t m0 x1 h3 y9 ff2 fs1 fc0 sc0 ls0 ws0">项</div><div class="t m0 x1 h3 ya ff2 fs1 fc0 sc0 ls0 ws0">目成为可行。但作为嵌入式<span class="ff3">PC </span>平台,软件的选择却不像硬件那么有吸引力。您可以选择</div><div class="t m0 x1 h3 yb ff3 fs1 fc0 sc0 ls0 ws0">DOS<span class="ff2">,</span></div><div class="t m0 x1 h3 yc ff2 fs1 fc0 sc0 ls0 ws0">但它有众所周知的局限性<span class="ff3">;</span>微软<span class="ff3">Windows</span>,缺乏实时能力<span class="ff3">;</span>或某种高端实时操作系统,它昂贵,</div><div class="t m0 x1 h3 yd ff2 fs1 fc0 sc0 ls0 ws0">专</div><div class="t m0 x1 h3 ye ff2 fs1 fc0 sc0 ls0 ws0">用,而且大多不可移植。<span class="ff3">Linux </span>操作系统为上述选项提供了一个非常具有吸引力的替代方案,</div><div class="t m0 x1 h3 yf ff2 fs1 fc0 sc0 ls0 ws0">它</div><div class="t m0 x1 h3 y10 ff2 fs1 fc0 sc0 ls0 ws0">没有上述缺点。<span class="ff3">Linux </span>操作系统以前几乎只是被有太多空闲时间的<span class="ff3">Unix </span>爱好者用于台式电脑,</div><div class="t m0 x1 h3 y11 ff2 fs1 fc0 sc0 ls0 ws0">现今已发展成一个必须被认真对待的又先进又可靠的操作系统。其中一个最近期的发展是对操</div><div class="t m0 x1 h3 y12 ff2 fs1 fc0 sc0 ls0 ws0">作</div><div class="t m0 x1 h3 y13 ff2 fs1 fc0 sc0 ls0 ws0">系统添加实时设施,它完成了<span class="ff3">Linux </span>从一个爱好者的玩具到一个被嵌入式系统设计师使用的宝</div><div class="t m0 x1 h3 y14 ff2 fs1 fc0 sc0 ls0 ws0">贵</div><div class="t m0 x1 h3 y15 ff2 fs1 fc0 sc0 ls0 ws0">工具的转型。这些实时设施还没有那些高端<span class="ff3">RTOS </span>中使用的设施先进,<span class="ff3">Linux </span>永远不会适用于</div><div class="t m0 x1 h3 y16 ff2 fs1 fc0 sc0 ls0 ws0">必</div><div class="t m0 x1 h3 y17 ff2 fs1 fc0 sc0 ls0 ws0">须尽量减少<span class="ff3">RAM </span>和<span class="ff3">ROM </span>使用的系统。但是,对于许多应用,<span class="ff3">Linux </span>系统的优点能克服这些缺</div><div class="t m0 x1 h3 y18 ff2 fs1 fc0 sc0 ls0 ws0">点。</div><div class="t m0 x1 h3 y19 ff2 fs1 fc0 sc0 ls0 ws0">在嵌入式系统中使用<span class="ff3">PC </span>硬件的优点现在已众所周知了。与许多专为嵌入式市场开发的硬件相</div><div class="t m0 x1 h3 y1a ff2 fs1 fc0 sc0 ls0 ws0">反,</div><div class="t m0 x1 h3 y1b ff3 fs1 fc0 sc0 ls0 ws0">PC <span class="ff2">硬件是大规模生产的,容易获得,成本低廉。您可以预期模拟和数字输入</span>/<span class="ff2">输出板,网络接</span></div><div class="t m0 x1 h3 y1c ff2 fs1 fc0 sc0 ls0 ws0">口,</div><div class="t m0 x1 h3 y1d ff2 fs1 fc0 sc0 ls0 ws0">图像采集与处理板之类接口板,用<span class="ff3">VME </span>总线设计时要比用某种<span class="ff3">PC </span>总线设计时多花两倍以上成</div><div class="t m0 x1 h3 y1e ff2 fs1 fc0 sc0 ls0 ws0">本。</div><div class="t m0 x1 h3 y1f ff2 fs1 fc0 sc0 ls0 ws0">随着高性能<span class="ff3">PCI </span>总线越来越多的使用,使用<span class="ff3">PC </span>平台时吞吐量也不再有什么问题。</div><div class="t m0 x1 h3 y20 ff2 fs1 fc0 sc0 ls0 ws0">但在操作系统的能力方面并没有发生与此相称的革命。随着对较低硬件成本的需求,高端嵌入</div><div class="t m0 x1 h3 y21 ff2 fs1 fc0 sc0 ls0 ws0">式</div><div class="t m0 x1 h3 y22 ff2 fs1 fc0 sc0 ls0 ws0">系统需要更先进的功能,如图形用户界面和<span class="ff4">联</span>网能力。许多高端<span class="ff3">RTOS </span>的供应商<span class="ff4">们</span>提供了这些</div><div class="t m0 x1 h3 y23 ff2 fs1 fc0 sc0 ls0 ws0">能</div><div class="t m0 x1 h3 y24 ff2 fs1 fc0 sc0 ls0 ws0">力,这<span class="ff4">往往</span>是要求更高<span class="ff4">价</span>格的选项。微软<span class="ff3">Windows </span>也提供了这些功能,但它缺乏多数嵌入式</div><div class="t m0 x1 h3 y25 ff2 fs1 fc0 sc0 ls0 ws0">系统</div><div class="t m0 x1 h3 y26 ff2 fs1 fc0 sc0 ls0 ws0">要求的实时功能。<span class="ff4">人们</span>或许可以以<span class="ff3">DOS </span>为基<span class="ff4">础拼凑</span>一个系统,对<span class="ff4">每</span>个<span class="ff4">组</span>件<span class="ff4">都</span>采用<span class="ff4">单独</span>的<span class="ff4">第三</span>方</div><div class="t m0 x1 h3 y27 ff2 fs1 fc0 sc0 ls0 ws0">工</div><div class="t m0 x1 h3 y28 ff2 fs1 fc0 sc0 ls0 ws0">具,但具<span class="ff4">体</span>实施<span class="ff4">起</span>来必会<span class="ff4">失败</span>,<span class="ff4">因</span>为不<span class="ff4">存</span>在为<span class="ff4">建</span>立这<span class="ff4">样</span>一种系统提供的<span class="ff4">支持</span>。<span class="ff4">我们</span>需要的是一</div><div class="t m0 x1 h3 y29 ff2 fs1 fc0 sc0 ls0 ws0">个</div><div class="t m0 x1 h3 y2a ff2 fs1 fc0 sc0 ls0 ws0">有<span class="ff4">足够</span>多<span class="ff4">支持</span>的操作系统,它<span class="ff4">既便宜</span>又成<span class="ff4">熟</span>,而且提供了高端嵌入式系统必须具<span class="ff4">备</span>的功能。</div><div class="t m0 x1 h3 y2b ff2 fs1 fc0 sc0 ls0 ws0">由于上述许多理由,<span class="ff3">Linux </span>操作系统最近开<span class="ff4">始受</span>到来<span class="ff4">自主流</span>出<span class="ff4">版</span>界的<span class="ff4">注意</span>。<span class="ff3">1 </span>许多台式<span class="ff4">机</span>用户</div><div class="t m0 x1 h3 y2c ff2 fs1 fc0 sc0 ls0 ws0">被</div><div class="t m0 x1 h3 y2d ff2 fs1 fc0 sc0 ls0 ws0">它的功能和强壮性所吸引,<span class="ff4">另</span>一个<span class="ff4">事</span>实是,要<span class="ff4">取</span>得它只需花<span class="ff4">费通过<span class="ff3">FTP </span></span>进行下<span class="ff4">载</span>的成本。它<span class="ff4">包</span></div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272c23cc0b40515e3dfb975/bg2.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h4 y2 ff4 fs1 fc0 sc0 ls0 ws0">括</div><div class="t m0 x1 h3 y3 ff3 fs1 fc0 sc0 ls0 ws0">UNIX <span class="ff2">用户期待的一<span class="ff4">套</span>完<span class="ff4">整</span>的功能和开发工具。几乎所有的</span>Unix <span class="ff2">系统和应用软件已被移植到了</span></div><div class="t m0 x1 h3 y4 ff3 fs1 fc0 sc0 ls0 ws0">Linux <span class="ff2">系统。提供了基于</span>TCP/IP <span class="ff2">的网络<span class="ff4">协议</span>。提供了<span class="ff4">互联</span>网<span class="ff4">客</span>户<span class="ff4">机</span>和服<span class="ff4">务器</span>软件。提供了</span>X</div><div class="t m0 x1 h3 y5 ff3 fs1 fc0 sc0 ls0 ws0">Windows<span class="ff2">,并可以在几个<span class="ff4">窗</span>口<span class="ff4">管</span>理<span class="ff4">器</span>中进行选择。为</span>C <span class="ff2">,</span>C<span class="ff4">++<span class="ff2">,</span></span>Java <span class="ff2">和其<span class="ff4">他语言配备</span>了<span class="ff4">良</span></span></div><div class="t m0 x1 h3 y6 ff2 fs1 fc0 sc0 ls0 ws0">好的</div><div class="t m0 x1 h3 y7 ff4 fs1 fc0 sc0 ls0 ws0">编译器<span class="ff2">。用户能发现这些功能比<span class="ff3">Windows </span>提供的更成</span>熟<span class="ff2">,更完</span>整<span class="ff2">,也更容易使用。</span>很<span class="ff2">多</span>公司</div><div class="t m0 x1 h4 y8 ff4 fs1 fc0 sc0 ls0 ws0">都至</div><div class="t m0 x1 h3 y9 ff2 fs1 fc0 sc0 ls0 ws0">少有一个<span class="ff3">Linux </span>的爱好者,<span class="ff4">当</span>一个问题<span class="ff4">很难</span>或<span class="ff4">根</span>本不可能用<span class="ff3">Windows <span class="ff4">解决(例</span></span>如,<span class="ff4">配置</span>一台</div><div class="t m0 x1 h5 y2e ff3 fs1 fc0 sc0 ls0 ws0">PC</div><div class="t m0 x1 h3 yb ff4 fs1 fc0 sc0 ls0 ws0">机<span class="ff2">作为</span>拨号<span class="ff2">网络服</span>务器)<span class="ff2">,</span>他马<span class="ff2">上会</span>说<span class="ff3">"</span>嗯<span class="ff2">,要是</span>我们<span class="ff2">有<span class="ff3">Linux </span>系统</span>就<span class="ff2">好</span>办<span class="ff2">了</span>……<span class="ff2"> <span class="ff3">"</span></span></div><div class="t m0 x1 h3 yc ff2 fs1 fc1 sc0 ls0 ws0">现在,不<span class="ff4">管</span>比<span class="ff4">尔<span class="ff3">·</span>盖茨</span>是<span class="ff4">否</span>有点<span class="ff4">担心</span>在一些<span class="ff4">杂志</span>中<span class="ff4">辩论</span>的一个<span class="ff4">主</span>题。重要的是不被<span class="ff4">任何公司拥</span>有</div><div class="t m0 x1 h3 yd ff2 fs1 fc1 sc0 ls0 ws0">和<span class="ff4">支持</span>的<span class="ff3">Linux <span class="ff4">正</span></span>开<span class="ff4">始</span>被<span class="ff4">很</span>多不能被认为是电脑<span class="ff4">迷</span>的<span class="ff4">桌</span>上型电脑用户所接<span class="ff4">受</span>。如今这点之所以</div><div class="t m0 x1 h3 ye ff2 fs1 fc1 sc0 ls0 ws0">成</div><div class="t m0 x1 h3 yf ff2 fs1 fc1 sc0 ls0 ws0">为可能,是<span class="ff4">因</span>了操作系统的成<span class="ff4">熟</span>以及<span class="ff4">过去</span>几年中<span class="ff4">因特</span>网的<span class="ff4">日益风</span>行。<span class="ff4">遇</span>到问题的<span class="ff3">Linux </span>用户能</div><div class="t m0 x1 h4 y10 ff4 fs1 fc1 sc0 ls0 ws0">通</div><div class="t m0 x1 h3 y11 ff4 fs1 fc1 sc0 ls0 ws0">过因特<span class="ff2">网</span>新闻组<span class="ff2">和</span>邮寄名单<span class="ff2">获得数以</span>千<span class="ff2">计的</span>联机<span class="ff2">用户的专</span>门<span class="ff2">知</span>识<span class="ff2">的</span>帮助<span class="ff2">。您</span>遇<span class="ff2">到的</span>任何<span class="ff2">问题必</span></div><div class="t m0 x1 h4 y12 ff4 fs1 fc1 sc0 ls0 ws0">然</div><div class="t m0 x1 h3 y13 ff2 fs1 fc1 sc0 ls0 ws0">已经被这些用户之一所<span class="ff4">遇</span>到<span class="ff4">过<span class="ff3">,</span></span>并且其中大<span class="ff4">部分人都愿意帮助</span>您。以<span class="ff4">我</span>的经<span class="ff4">验</span>而<span class="ff4">言</span>,与<span class="ff4">依赖</span>于</div><div class="t m0 x1 h3 y14 ff3 fs1 fc1 sc0 ls0 ws0">RTOS <span class="ff4">技术支持部门<span class="ff2">相比,使用</span>因特<span class="ff2">网</span>资源通<span class="ff2">常能更</span>快<span class="ff2">地</span>解决<span class="ff2">问题。您可能必须</span>整<span class="ff2">理来</span>自<span class="ff2">其它</span></span></div><div class="t m0 x1 h4 y15 ff4 fs1 fc1 sc0 ls0 ws0">新</div><div class="t m0 x1 h3 y16 ff4 fs1 fc1 sc0 ls0 ws0">闻组参<span class="ff2">加者的成</span>打<span class="ff2">的非</span>正<span class="ff2">式</span>回答<span class="ff2">,但是</span>至<span class="ff2">少有一个</span>回答<span class="ff2">是可能有</span>帮助<span class="ff2">的。比较</span>起<span class="ff2">来,您从</span>技术</div><div class="t m0 x1 h4 y17 ff4 fs1 fc1 sc0 ls0 ws0">支</div><div class="t m0 x1 h3 y18 ff4 fs1 fc1 sc0 ls0 ws0">持部门<span class="ff2">一</span>次<span class="ff2">只能得到一个</span>答<span class="ff2">案。如</span>果<span class="ff2">它并非</span>恰当<span class="ff3">,<span class="ff2">您必须再</span></span>次<span class="ff2">开</span>始整<span class="ff2">个</span>过程<span class="ff2">。此</span>外<span class="ff2">,为<span class="ff3">Linux </span>提</span></div><div class="t m0 x1 h3 y19 ff2 fs1 fc1 sc0 ls0 ws0">供<span class="ff4">支持</span>的<span class="ff4">公司</span>也已经开<span class="ff4">始</span>出现,为那些<span class="ff4">觉</span>得与常规<span class="ff4">技术支持部门打交道</span>更<span class="ff4">自</span>在的用户提供了一</div><div class="t m0 x1 h3 y1a ff2 fs1 fc1 sc0 ls0 ws0">个</div><div class="t m0 x1 h3 y1b ff2 fs1 fc1 sc0 ls0 ws0">选择<span class="ff4">余</span>地。此<span class="ff4">外整</span>个<span class="ff3">Linux </span>提供了<span class="ff4">源</span>代<span class="ff4">码</span>,为<span class="ff4">回答</span>最<span class="ff4">困难</span>的问题提供了种种<span class="ff4">手段</span>。</div><div class="t m0 x1 h3 y1c ff2 fs1 fc1 sc0 ls0 ws0">有些嵌入系统设计者会发现<span class="ff4">就</span>现<span class="ff4">状</span>来<span class="ff4">说<span class="ff3">Linux </span></span>已<span class="ff4">很</span>好用。它在<span class="ff4">视窗</span>或者<span class="ff3">DOS </span>之<span class="ff4">外</span>,为那些没有</div><div class="t m0 x1 h3 y1d ff2 fs1 fc1 sc0 ls0 ws0">实</div><div class="t m0 x1 h3 y1e ff2 fs1 fc1 sc0 ls0 ws0">时要求的应用或者<span class="ff4">虽</span>有实时要求但可以采用专用硬件或<span class="ff4">协</span>处理<span class="ff4">器</span>的应用提供了一个好的替代选</div><div class="t m0 x1 h3 y1f ff2 fs1 fc1 sc0 ls0 ws0">择。但是这种应用非常<span class="ff4">罕见</span>。需要有一种方<span class="ff4">法</span>用<span class="ff3">Linux </span>实现实时系统,在这方面已经<span class="ff4">取</span>得了<span class="ff4">足</span></div><div class="t m0 x1 h4 y20 ff4 fs1 fc1 sc0 ls0 ws0">够</div><div class="t m0 x1 h3 y21 ff2 fs1 fc1 sc0 ls0 ws0">进展,<span class="ff4">允</span>许实现<span class="ff4">很</span>多高端嵌入式应用。被采用的实时<span class="ff3">Linux </span>方案有两种,<span class="ff4">我把</span>它<span class="ff4">们</span>称为<span class="ff3">POSIX</span></div><div class="t m0 x1 h3 y22 ff2 fs1 fc1 sc0 ls0 ws0">方案和低<span class="ff4">层次</span>方案。</div><div class="t m0 x1 h6 y2f ff1 fs0 fc0 sc0 ls0 ws0">POSIX <span class="ff2">和</span>Linux</div><div class="t m0 x1 h3 y24 ff5 fs1 fc0 sc0 ls0 ws0">POSIX <span class="ff2">是一种<span class="ff4">运动</span>,以规<span class="ff4">范</span></span>Unix <span class="ff2">型操作系统必须具<span class="ff4">备</span>的功能和接口类。设<span class="ff4">想</span>是,提高用</span></div><div class="t m0 x1 h7 y30 ff5 fs1 fc0 sc0 ls0 ws0">UNIX</div><div class="t m0 x1 h3 y26 ff4 fs1 fc0 sc0 ls0 ws0">编写<span class="ff2">的软件可移植性,使<span class="ff5">Unix </span></span>程序员<span class="ff2">的工作更为容易。一些实时</span>扩<span class="ff2">展,称为<span class="ff5">posix.1b </span>或</span></div><div class="t m0 x1 h7 y31 ff5 fs1 fc0 sc0 ls0 ws0">IEEE</div><div class="t m0 x1 h3 y28 ff5 fs1 fc0 sc0 ls0 ws0">1003.1b<span class="ff2">,已被<span class="ff4">列</span>入<span class="ff4">标准</span>。这些<span class="ff4">扩</span>展<span class="ff4">包括</span>如<span class="ff4">信号</span>量,<span class="ff4">内存锁定</span>,时<span class="ff4">钟</span>和<span class="ff4">定</span>时<span class="ff4">器</span>,<span class="ff4">消息队列</span>,和</span></div><div class="t m0 x1 h3 y29 ff2 fs1 fc0 sc0 ls0 ws0">先<span class="ff4">占</span>优先<span class="ff4">级调度等</span>设施。</div><div class="t m0 x1 h3 y2a ff2 fs1 fc0 sc0 ls0 ws0">使用 <span class="ff5">POSIX </span>作为规<span class="ff4">范</span>实时操作系统的<span class="ff4">特</span>点的基<span class="ff4">础</span>已被<span class="ff4">正确</span>地<span class="ff4">批</span>评。 <span class="ff5">2 <span class="ff4">该标准</span></span>大而<span class="ff4">拙劣</span>,有许</div><div class="t m0 x1 h3 y2b ff2 fs1 fc0 sc0 ls0 ws0">多</div><div class="t m0 x1 h3 y2c ff4 fs1 fc0 sc0 ls0 ws0">臃肿<span class="ff2">的适</span>合桌<span class="ff2">面<span class="ff5">UNIX </span>工作站的功能,但</span>无助<span class="ff2">于嵌入式系统。</span>该标准<span class="ff2">的</span>决策机构主<span class="ff2">要是</span>受<span class="ff2">工作</span></div><div class="t m0 x1 h3 y2d ff2 fs1 fc0 sc0 ls0 ws0">站</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6272c23cc0b40515e3dfb975/bg3.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff4 fs1 fc0 sc0 ls0 ws0">制造<span class="ff2">商的</span>支配<span class="ff2">,不</span>愿<span class="ff2">对<span class="ff5">RTOS </span>的供应商和用户作出</span>让步<span class="ff2">。此</span>外<span class="ff2">,<span class="ff5">POSIX </span>系统</span>调<span class="ff2">用反</span>映<span class="ff2">了<span class="ff5">Unix</span></span></div><div class="t m0 x1 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0">系统<span class="ff4">调</span>用的<span class="ff4">晦涩</span>和<span class="ff4">繁琐</span>的<span class="ff4">语法</span>,使得使用<span class="ff5">VxWorks </span>或<span class="ff5">pSOS<span class="ff4">+</span></span>时只要<span class="ff5">1</span>,<span class="ff5">2 <span class="ff4">次调</span></span>用的操作<span class="ff4">竟</span>需</div><div class="t m0 x1 h3 y4 ff2 fs1 fc0 sc0 ls0 ws0">要<span class="ff4">十</span>多<span class="ff4">次<span class="ff5">POSIX </span>调</span>用。<span class="ff5">Unix <span class="ff4">程序员习惯</span></span>了这种<span class="ff4">烦扰</span>,但嵌入式系统<span class="ff4">程序员</span>却<span class="ff4">觉</span>得<span class="ff4">无法忍受</span>。</div><div class="t m0 x1 h3 y5 ff2 fs1 fc0 sc0 ls0 ws0">许多 <span class="ff5">Linux </span>开发<span class="ff4">人员正</span>在<span class="ff5">Linux </span>中<span class="ff4">努</span>力实施<span class="ff5">posix.1b </span>功能。 <span class="ff5">3 </span>这一<span class="ff4">运动</span>已经<span class="ff4">看</span>到了一些</div><div class="t m0 x1 h3 y6 ff2 fs1 fc0 sc0 ls0 ws0">成</div><div class="t m0 x1 h3 y7 ff2 fs1 fc0 sc0 ls0 ws0">功,并<span class="ff4">仍</span>在<span class="ff4">继续努</span>力。 <span class="ff5">POSIX <span class="ff4">扩</span></span>展<span class="ff4">内存锁</span>设施和<span class="ff4">确定调度算法</span>的功能已<span class="ff4">付诸</span>实施。<span class="ff4">另</span>一方面,</div><div class="t m0 x1 h3 y8 ff2 fs1 fc0 sc0 ls0 ws0">计时<span class="ff4">器</span>功能和<span class="ff5">posix.1b <span class="ff4">讯号尚未</span></span>完成。或许最<span class="ff4">严</span>重的是,<span class="ff4">任何</span>认真的<span class="ff5">RTOS </span>必不可少的</div><div class="t m0 x1 h7 y32 ff5 fs1 fc0 sc0 ls0 ws0">POSIX</div><div class="t m0 x1 h3 ya ff4 fs1 fc0 sc0 ls0 ws0">信号<span class="ff2">量和</span>消息队列<span class="ff2">功能</span>尚未<span class="ff2">可用。</span></div><div class="t m0 x1 h3 yb ff2 fs1 fc0 sc0 ls0 ws0">一个基于<span class="ff5">POSIX </span>的<span class="ff5">Linux </span>的有前<span class="ff4">途</span>的发展是<span class="ff5">POSIX </span>线<span class="ff4">程</span>的实现,它在<span class="ff5">posix.1c <span class="ff4">(</span></span>或</div><div class="t m0 x1 h7 y33 ff5 fs1 fc0 sc0 ls0 ws0">IEEE</div><div class="t m0 x1 h3 yd ff5 fs1 fc0 sc0 ls0 ws0">1003.1c <span class="ff4">)<span class="ff2">中</span>定义<span class="ff2">。在一个进</span>程<span class="ff2">中,您可以有多个线</span>程<span class="ff2">,</span>共享同<span class="ff2">一地</span>址<span class="ff2">空间。这与</span>熟<span class="ff2">知的嵌</span></span></div><div class="t m0 x1 h3 ye ff2 fs1 fc0 sc0 ls0 ws0">入式系统中的<span class="ff4">任务概念刚</span>好相<span class="ff4">符</span>。<span class="ff5">Linux </span>中已有一些<span class="ff5">POSIX </span>线<span class="ff4">程</span>实现可供使用。</div><div class="t m0 x1 h3 yf ff2 fs1 fc0 sc0 ls0 ws0">尽<span class="ff4">管</span>实现一个实时<span class="ff5">Linux </span>的<span class="ff5">POSIX </span>方案还是有一些前<span class="ff4">途</span>的,但在目前和可预<span class="ff4">见</span>的<span class="ff4">未</span>来,只</div><div class="t m0 x1 h3 y10 ff2 fs1 fc0 sc0 ls0 ws0">有<span class="ff5">"</span></div><div class="t m0 x1 h3 y11 ff2 fs1 fc0 sc0 ls0 ws0">最软的<span class="ff5">"</span>实时应用能<span class="ff4">够</span>用<span class="ff5">posix.1b </span>功能来实现。<span class="ff4">企</span>图<span class="ff4">把<span class="ff5">posix.1b </span></span>功能移植到<span class="ff5">Linux </span>所面</div><div class="t m0 x1 h4 y12 ff4 fs1 fc0 sc0 ls0 ws0">临</div><div class="t m0 x1 h3 y13 ff2 fs1 fc0 sc0 ls0 ws0">的最<span class="ff4">根</span>本的问题是,<span class="ff4">事</span>实上<span class="ff5">Linux </span>有一个非先<span class="ff4">占</span>式<span class="ff4">内核</span>。所以如不从<span class="ff4">根</span>本上<span class="ff4">改变内核</span>的设计,</div><div class="t m0 x1 h3 y14 ff2 fs1 fc0 sc0 ls0 ws0">要实现<span class="ff5">"</span>硬<span class="ff5">"</span>实时<span class="ff4">特</span>性,<span class="ff4">看</span>来<span class="ff4">似</span>乎是不可能的。不<span class="ff4">过</span>,<span class="ff4">至</span>少有一个<span class="ff4">小组</span>已经成功地完成了这个目</div><div class="t m0 x1 h3 y15 ff4 fs1 fc0 sc0 ls0 ws0">标<span class="ff2">。</span></div><div class="t m0 x1 h6 y34 ff2 fs0 fc0 sc0 ls0 ws0">实时<span class="ff1">Linux </span>的低<span class="ff4">层次</span>方案</div><div class="t m0 x1 h3 y17 ff2 fs1 fc0 sc0 ls0 ws0">比基于 <span class="ff5">POSIX </span>的<span class="ff4">运动</span>更有<span class="ff4">直</span>接<span class="ff4">利益</span>的是实现一个<span class="ff5">"</span>硬<span class="ff5">"</span>实时<span class="ff5">Linux </span>的<span class="ff4">努</span>力,其中最有前<span class="ff4">途</span>的</div><div class="t m0 x1 h3 y18 ff2 fs1 fc0 sc0 ls0 ws0">可</div><div class="t m0 x1 h3 y19 ff2 fs1 fc0 sc0 ls0 ws0">能是<span class="ff4">新墨西哥</span>采<span class="ff4">矿<span class="ff5">h </span></span>和<span class="ff4">技术学院</span>的实时<span class="ff5">Linux<span class="ff4">(</span>RT-Linux<span class="ff4">)</span></span>项目。由于<span class="ff4">观察</span>到<span class="ff5">Linux </span>是一</div><div class="t m0 x1 h3 y1a ff2 fs1 fc0 sc0 ls0 ws0">种</div><div class="t m0 x1 h3 y1b ff2 fs1 fc0 sc0 ls0 ws0">为台式电脑用户设计的操作系统,那<span class="ff4">儿</span>的<span class="ff4">研究</span>者得出<span class="ff4">结论</span>,<span class="ff4">尝<span class="ff6">试</span>把</span>实时功能<span class="ff6">嫁</span>接到一个为<span class="ff4">分</span>时</div><div class="t m0 x1 h3 y1c ff2 fs1 fc0 sc0 ls0 ws0">设</div><div class="t m0 x1 h3 y1d ff2 fs1 fc0 sc0 ls0 ws0">计的操作系统将是<span class="ff6">徒劳<span class="ff4">无益</span></span>的。<span class="ff5 fs2">4 </span><span class="ff4">他们</span>的替代<span class="ff4">办法</span>是在操作系统下面实现一个<span class="ff6">简<span class="ff4">单</span></span>的实时<span class="ff4">内核</span>,</div><div class="t m0 x1 h3 y1e ff4 fs1 fc0 sc0 ls0 ws0">把<span class="ff5">Linux <span class="ff2">本<span class="ff6">身</span>作为</span></span>该内核<span class="ff2">里</span>运<span class="ff2">行的一个</span>任务<span class="ff2">。<span class="ff5">Linux </span>的</span>运<span class="ff2">行具有最低的优先<span class="ff6">权</span>,而且可以在</span></div><div class="t m0 x1 h4 y1f ff4 fs1 fc0 sc0 ls0 ws0">任</div><div class="t m0 x1 h3 y20 ff4 fs1 fc0 sc0 ls0 ws0">何<span class="ff2">时<span class="ff6">候</span>被更高优先<span class="ff6">权</span>的</span>任务<span class="ff2">所<span class="ff6">抢</span>先。</span></div><div class="t m0 x1 h3 y21 ff5 fs1 fc0 sc0 ls0 ws0">RT-Linux <span class="ff2">的设计理<span class="ff4">念</span>是,只提供必要的为实现实时应用必需要件,以尽量减少对</span>Linux <span class="ff2">本</span></div><div class="t m0 x1 h4 y22 ff6 fs1 fc0 sc0 ls0 ws0">身</div><div class="t m0 x1 h3 y23 ff2 fs1 fc0 sc0 ls0 ws0">进行<span class="ff4">变</span>更。<span class="ff5 fs2">5 </span>由于尽量减少<span class="ff4">打扰<span class="ff5">Linux</span></span>,<span class="ff4">就</span>更容易<span class="ff4">把<span class="ff5">RT – Linux </span></span>移植到<span class="ff6">后</span>来出现的<span class="ff4">新版</span>本</div><div class="t m0 x1 h3 y24 ff5 fs1 fc0 sc0 ls0 ws0">Linux<span class="ff2">。<span class="ff4">因</span>此,</span>RT - Linux <span class="ff4">依赖<span class="ff2">于</span></span>Linux <span class="ff2">本<span class="ff6">身</span>,以提供几乎所有的必需服<span class="ff4">务</span>,而</span>RT-</div><div class="t m0 x1 h7 y30 ff5 fs1 fc0 sc0 ls0 ws0">Linux</div><div class="t m0 x1 h3 y26 ff2 fs1 fc0 sc0 ls0 ws0">只提供低<span class="ff4">层次</span>的<span class="ff4">任务<span class="ff6">创</span>建</span>,<span class="ff6">安装</span>中<span class="ff6">断</span>服<span class="ff4">务例程</span>,并为<span class="ff6">各</span>种低<span class="ff4">层次任务</span>,中<span class="ff6">断</span>服<span class="ff4">务例程</span>,和</div><div class="t m0 x1 h7 y31 ff5 fs1 fc0 sc0 ls0 ws0">Linux</div><div class="t m0 x1 h3 y28 ff2 fs1 fc0 sc0 ls0 ws0">进<span class="ff4">程</span>之间的<span class="ff4">通信</span>提供<span class="ff6">排<span class="ff4">队</span></span>。</div><div class="t m0 x1 h3 y29 ff2 fs1 fc0 sc0 ls0 ws0">这种设计的<span class="ff4">结果</span>之一是,一个<span class="ff5">RT-Linux </span>的应用可以被<span class="ff4">当</span>成具有两个<span class="ff6">领域<span class="ff5">-</span></span>实时的和非实时的。</div><div class="t m0 x1 h3 y2a ff2 fs1 fc0 sc0 ls0 ws0">实时<span class="ff6">领域</span>里的功能能<span class="ff6">满<span class="ff4">足</span></span>其实时性要求,但必须非常<span class="ff6">简<span class="ff4">单</span></span>,<span class="ff4">因</span>为它<span class="ff4">们</span>可用的<span class="ff4">资源</span>相<span class="ff4">当</span>有限。<span class="ff4">另</span></div><div class="t m0 x1 h3 y2b ff2 fs1 fc0 sc0 ls0 ws0">一</div><div class="t m0 x1 h3 y2c ff2 fs1 fc0 sc0 ls0 ws0">方面,非实时功能有<span class="ff6">全</span>方<span class="ff6">位</span>的<span class="ff5">Linux <span class="ff4">资源</span></span>可供<span class="ff4">利</span>用,但不能有<span class="ff4">任何</span>实时性要求。为两个<span class="ff6">领域</span></div><div class="t m0 x1 h3 y2d ff2 fs1 fc0 sc0 ls0 ws0">之</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>