网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > 文章  
Linux 2.6 内核的嵌入式系统应用
文章来源: 电子技术应用 文章作者: 华中科技大学 信息与系统技术研 发布时间: 2006-07-12   字体: [ ]  
 

随着多媒体技术与通讯技术相结合的信息技术的快速发展和互联网的广泛应用,PC 时代也过渡到了后PC时代。在数字信息技术和网络技术高速发展的后PC时代,嵌入式技术越来越与人们的生活紧密结合。

 

操作系统为用户使用计算机及其外部设备提供最基本的接口程序,管理计算机上的资源。随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵活性、可伸缩性以及可裁剪性,一种以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统——嵌入式操作系统随之延生。

 

Linux 操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统,由于其体积小、可裁减、运行速度高、良好的网络性能等优点,可以作为嵌入式操作系统。随着2.6内核的发布,Linux向现有主流的RTOS提供商在嵌入式系统市场提出了巨大挑战,例如VxWorksWinCE,具有许多新特性,将成为更优秀的嵌入式操作系统。

 

Linux的低成本和开放性,为其在嵌入式系统领域的应用营造了肥沃的土壤。本文着重介绍Linux 2.6内核的新特性及其嵌入式应用中的优势,并将其移植到嵌入式平台中,成功支持H.264编解码多媒体系统。

 

1 Linux 2.6内核针对嵌入式开发显著特点

 

实时可靠性是嵌入式应用较为普遍的要求,尽管Linux 2.6 并不是一个真正的实时操作系统,但其改进的特性能够满足响应需求。Linux 2.6 已经在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高[4]。在企业服务器以及嵌入式系统应用领域,Linux 2.6 都是一个巨大的进步。在嵌入式领域,Linux 2.6 除了提高其实时性能,系统的移植更加方便,同时添加了新的体系结构和处理器类型——包括对没有硬件控制内存管理方案的 MMU-less系统的支持,可以支持大容量内存模型、微控制器,同时还改善了I/O子系统,增添更多的多媒体应用功能[4]

 

1.1 可抢占内核

 

在先前的内核版本中(包括2.4内核)不允许抢占以核心态运行的任务(包括通过系统调用进入内核模式的用户任务),只能等待它们自己主动释放CPU。这样必然导致一些重要任务延时以等待系统调用结束。

 

一个内核任务可以被抢占,为的是让重要的用户应用程序可以继续运行。这样做最主要的优势是极大地增强系统的用户交互性。

 

2.6内核并不是真正的RTOS(Real Time Operation System),其在内核代码中插入了抢占点,允许调度程序中止当前进程而调用更高优先级的进程,通过对抢占点的测试避免不合理的系统调用延时。2.6内核在一定程度上是可抢占的,2.4内核具备更好的响应性。但也不是所有的内核代码段都可以被抢占,可以锁定内核代码的关键部分,确保CPU的数据结构和状态始终受到保护而不被抢占。

 

软件需要满足最终时间限制与虚拟内存请求页面调度之间是相互矛盾的。慢速的页错误处理将会破坏系统的实时响应性,2.6内核可以编译无虚拟内存系统避免这个问题,这是解决问题的关键,但要求软件设计者有足够的内存来保证任务的执行。

 

1.2 有效的调度程序

 

2.6版本的 Linux内核使用了由 Ingo Molnar开发的新的调度器算法,称为O(1)算法,如图1所示。它在高负载情况下执行得极其出色,并且当有很多处理器并行时也可以很好地扩展[2]。过去的调度程序需要查找整个ready task队列,并且计算它们的重要性以决定下一步调用的task,需要的时间随task数量而改变。O(1)算法则不再每次扫描所有的任务,task就绪时被放入一个活动队列中,调度程序每次从中调度适合的task,因而每次调度都是一个固定的时间。任务运行时分配一个时间片,当时间片结束,该任务将放弃处理器并根据其优先级转到过期队列中。活动队列中任务全部调度结束后,两个队列指针互换,过期队列成为当前队列,调度程序继续以简单的算法调度当前队列中的任务。这在多处理器的情况更能提高SMP的效率,平衡处理器的负载,避免进程在处理器间的跳跃。

 

 o(1)调度算法

1 O(1)调度算法

 

 

 
推荐文章
·浅谈关于Linux系统内核的源代码
·嵌入式Linux平台的多协议路由器
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统的MiniGUI研究和
·基于Linux的移动电话开发技术及
·嵌入式uClinux的内核结构和开发
·基于 GTK+ 和 X-window 的 GUI
·基于Qt/Embedded和Qtopia的GUI设
·打造适合自己Slackware机器的内
·自己动手做一个最小的Linux kern
·一个Linux爱好者的2.6.11内核编
·定制Linux系统内核,发挥Linux潜
·如何编译一个操作系统内核-Ubunt
·重新编译Linux操作系统的内核指
 

 
共3页: 上一页 1 [2] [3] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·ARM的嵌入式Linux移植体
·U-Boot简介
·基于Qt/Embedded的GUI移
·基于Qt/Embedded和Qtopi
·U-BOOT的启动流程及移植
·ARM的嵌入式Linux移植体
·几种Linux嵌入式开发环
·ARM的嵌入式Linux移植体
相关文章
·双内核嵌入式处理器及其
·YAFFS文件系统在嵌入式L
·ARM7系统中实现CF卡存储
·嵌入式系统的人机界面原
·ARM入门
·嵌入式数据库
·基于μClinux的SoPC应用
·开源嵌入式数据库Berkel
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统