9.2.2 嵌入式Linux简介
嵌入式系统是指嵌入到对象体系中执行独立功能的专用计算机系统。嵌入式系统的三个基本要素是专用性、计算机系统和嵌入性,包括定时器、存储器、传感器、微控制器、微处理器等一系列器件与微电子芯片,以及嵌入在存储器中的控制应用软件、微型操作系统,共同实现诸如数据处理、实时控制、管理、监视、移动计算等各种自动化处理任务。嵌入式Linux是指对Linux小型化裁减后,能够固化在容量有限的存储器芯片中,应用于特定嵌入式场合的Linux操作系统。因为Linux自身的优点使其非常适合作为嵌入式操作系统,其优点表现为以下几个方面:
1)开发成本小,源代码公开。大多数商业操作系统都是价格昂贵的,Linux是一个免费的性能优秀的操作系统且源代码公开,使不同领域和不同层次的用户可以根据自己的应用需要对内核进行裁减。
2)可靠性高,稳定性好,容易移植。同目前流行的操作系统相比,Linux是非常稳定和可靠的,这一点已经得到很多用户的肯定。另外,Linux也是一个多平台的操作系统,可以运行在很多种处理器上,这一点对于嵌入式的应用尤其重要。
3)功能强大的开发工具。Linux提供C、C++、Java等很多开发工具,而且开发者可以免费获得。Linux具备这么多的工具,使得用户可以自行建立嵌入式系统的开发环境和交叉运行环境,而且可以不用专门的仿真工具直接在Linux内核调试即可。(https://www.daowen.com)
正是由于Linux具有上述的诸多优势,使得它近几年在嵌入式应用领域发展迅速,嵌入式实时Linux的开发和研究成为目前操作领域的一个热点。然而,Linux作为嵌入式实时操作系统,也存在着一些不足,如Linux系统的实时性较差,极大地限制了Linux系统在嵌入式方面的应用,主要表现在以下方面。
1)关中断问题。在系统调用中,为了保护临界区资源,Linux处于内核临界区时,中断会被系统屏蔽,这就意味着假如当前进程正处于临界区,即使他的优先级较低,也会延迟高优先级的中断请求。在实时应用中,这是个十分严重的问题。
2)进程调度问题。Linux采用标准的UNIX技术使得内核是不可抢占的。采用基于固定时间片的可变优先级调度,不论进程的优先级多么低,Linux总会在某个时候分给该进程一个时间片运行,即使同时有能够运行的高优先级进程,它也必须等待低优先级进程的时间片用完,这对一些需要高优先级进程立即抢占CPU的实时应用是不能满足需要的。
3)时钟问题。Linux为了提高系统的平均吞吐率,将时钟中断的最小间隔配置为10ms,这对于一个周期性的实时任务,间隔需要小于10ms时,就不能满足实时任务的需要。假如要把时钟的间隔改小以满足周期性的实时任务的需要,由于Linux的进程转换比较费时,时钟中断越频繁,而花在中断处理上的时间就越多,系统的大部分时间是调用进程调度程式进行进程调度而不能进行正常的处理。
这些问题是Linux用于嵌入式环境时碰到的问题,但是Linux操作系统本身的优势决定了Linux经过改造后仍然适合嵌入式环境,将Linux经过改造,使其成为一个能运行于嵌入式系统的操作系统是现在操作系统领域中研究的一个热点,例如RTLinux和RTAILinux就是Linux实时性改造的成功范例[2-5]。