基于Linux嵌入式操作系统的研究
基于Linux系统中嵌入式GUI的研究与分析

个 能够移植到多 种硬件平 台上的嵌入 式 G 系统 , UI 应
用 至 少抽 象 出 两类 设 备 : 于 图形 显 示 设 备 ( VG 卡 ) 图 基 如 A 的 形抽象层G AL( a hcA src L y r , 于 输 入 设 备 ( Grp i b tat a e) 基 如键
1 嵌入式G UI的系统 架构
1 1 基 于嵌 入 式 Ln x的 G . iu UI系统 底 层 实 现 基 础
一
者 函数库 ) 一般作 为其他 高级 图形 或者 图形应 用程 序的基本
函数 库 。 些 系 统 ( 者 函 数 库 ) 要 包 括 :V 这 或 主 S GAl 、 iGGI i Lb b 、 Xwid 、 rmeb f r , 述 如 下 : n o F a uf 等 详 e
122 S _ . VGAl i b
盘, 触摸层 等) 的输入抽 象层 I Ip tAbtatL yr , AI(n u s c a e ) 如 r
图1 示 : 所
抽 象 层 的 概 念 类 似 Liu 内 核 虚 拟 文 件 系 统 的 概 念 , nx 定
引 言
近年 来 , 入 式 系 统 取 得 了迅 猛 的 发 展 , 消 费 类 电 子 产 嵌 在
接 口。AI 层则 需要实现对于各类 不同输 入设备的控 制操作 , I
提供 统 一 的 调 用 接 口。GAL层 与 I 层 的 设 计 概 念 , 以 极 AL 可 大 程 度 地 提 高 嵌 入 式 GUI 可 移植 性 。而 用 于 实 现 这 一 抽 象 的
F a u fr等 。 r meb fe
G 应 具 备 高 度 可 移 植 性 与 可裁 减 性 、 层 接 口与 硬 件 无 关 、 UI 上
嵌入式Linux操作系统通信管理机的设计研究

操作 系统也在不断 的更新换代 ,以及进行技术
改进 ,在不断的改 进和更新 发展中 ,L i n u x操 作 系统具有这些特点 :
4 小 结
嵌入式 L i n u x操作 系统在通信管理机 中的 面我们 就研 究基于嵌入式 L i n u x操作系统的通 使用 ,体现了它的优势,保证 通信管理机 的整 信管理机 的设计 。 ( 1 )L i n u x 操 作系 统具 有 开放 性。该 操 体稳定运行 ,可以满足用户的各项需 求,为 自 作系统必须坚持的一个原则就是开放性 ,要保 3嵌入式L i n u x 操作系统通 信管理机 的设 动化控制系统的安全运行提供 了很好 的技术保
在信 息技术的不断 发展 中 ,嵌入式 L i n u x
理机接 口丰富 ,而且很容易进行扩展 ,其 中兼 L i n u x 操作系统 的基 础上对其 内核 的文件系统 容的总线可以对众多设备进行管理 ,并有很多 进行制定和删减 ,通信管理机 的上层软件则是 的接 口,实现通信管理机和 外部设备之 间的连 实 现 通 信 口协 议 的 解 释 ,通 过 动态 的链 接 库 , 接 ,保 证 通 信 管 理机 可 以 同 时进 行 网络 下 载 和 对通信管理机的各种标准通信规约程序进行集 系统的调试。 成。 以嵌入式 L i n u x操作系统为基础 的通信管 通信 管理机 的 硬件平 台是 P C1 0 4总 线, 理机在 支持多种通信方式时 ,还可以对通信协 P C 1 0 4总线为 用户提供数据 、地址 以及控制总 议进行独立编制 ,不需要对通信组件的核心程 线 ,而通信管理机的外围模 块设计 采用的 3片 序进行 修改,为用户提供 了很大的开放性。通 T L1 6 C 5 5 4 A,进而实现 了多 串口扩展芯片、控 信管理机在应用 系统 中担任着重要的角色 ,有 制器等的通信功能。通信管理机采用的是大屏 很多的功 能作用 ,可 以根据实 际的工作需求 , 幕液 晶显示和小键盘操作 ,所以可 以实现对系 进行各 种系统之 间的搭建 组合 [ 3 ] 。所 以嵌入 统参数 的随时查看和修改 ,通信管理机的所有 式L i n u x操作 系统可以实现通信管理机的各项 通信 口都设置 了光 电隔离措施和防雷电措施, 具有 很高 的电磁兼容性 [ 2 ] 。但是 通信管理 机 只有硬件是不 能工作 的,他必须有一个吃撑它 的软件 ,才可 以完成整个嵌入式完成产品。下
基于ARM—Linux的嵌入式系统开发平台教学实验研究

从事的行业具有较高 的行业幸福感 。作为 向社会输送 人才 的各大高校 ,也紧跟I 技术发展潮流 ,面 向市场 T 需求,相继开设 了嵌入式系统开发课程 ,并积极 引导 学生参加各种形式 的嵌入式设计大赛等活动,提 高学
生 的综 合 能力 ,提 升 学 生 的 培 养质 量 ,增 强 学生 的就 业竞 争 力 。
的 平 台 可 以 选 用 ¥ C 4 0 S C 4 0 理 器 。 由于 3 4 B 或 3 2 l处
工程个人情况 、嵌入式行业 公司的基本情况 、嵌入式 工程师对职业生涯的看法、嵌入式 工程师对参加培训 的看法等几个方面进行 了调查研 究,结果表 明,嵌入 式公司行业分布广泛 ,嵌入式工程 师具有很 高的 自我
子板形式的G R 模块 电路和G S P S P 模块 电路等 ,同时, 该平 台也提供 了丰富的接 口,包 括1 0M以太 网接 口,
US 接 口电路 ,2 'S 3 串行 口,I 音频 信 号 接 口, B - R 22  ̄ I S 2 C N接 口, 1 ̄D 硬 盘 接 口, l' C 扩 展 插槽 和 1 个 A )IE dP I  ̄ 个P 2 口,C 存 储 卡 接 口 ,S 卡 接 口等 。 同时 , 开 S接 F D
关键 词 :AR —iu ;嵌 入 式 系 统 ;实 验 教 学 M L nx
Te c n x e i e t e e r h o mb d e yse e e o me t a f r b s d o a hi g e p rm n s a c fe e d d s tm d v l p n to m a e nARM - n x r pl Li u
2 1年 第1期 02 1 总第1 7 4 期
中 砚代 装 国 孝 备
基于Linux的嵌入式系统设计与实现

L 2 07 0 是一种 基 于A M体 系结构 的 ,用于 高端 嵌 7 0/2 5 R
入式设备硬 件平 台。采用AR 70为 中央处理器 ,具 有 自己 M 2 的数 字协处理 器 ,D MA数据通道 ,彩 色L D显示器 ,调 制 C
解 调器 ,lMB可擦 写内存 。除 了存储器 ,几乎与现代P 6 C结
Ln x 一个和Unx iu 是 i相似 、以 内核为基 础 的、具 有完 全
有特殊 的需求 。LLnx 南京 大学与美 国LnU 公 司、 中 -i 是 u i p k 国海 信 集 团3 家合 作 的科 研 项 目。希 望在 Ln Up L 2 0 ik 的 7 0 ,
L 2 5 发 系统上 ,类 似Wi o E功能 ,构 建一个 完 整 70开 n ws C d
Lnx i 的嵌入式操作系统及其 上层GUI u 环境。 关键词 :嵌入式系统 ;Ln x iu ;图形 用户界 面
De i n & I l m e t to f n Em b d d O S Ba e n Li u sg mp e n a i n 0 a e e s d0 n x
构 完全相同。
L 2 07 0 支持 的嵌 入式 操作 系统 包括 Wid w E 7 0 /2 5 no sC 。
高端嵌入式系统要求许多诸如 图形 用户界而和 网络支持之 类 的功能 ,大多数 原始 的软 件 支撑 平 台不 具备这个 功能 。微 软 的Wid w E已有此类功 能 ,但 不具备 大多数嵌 入式 系 no s C 统要求 的实时性 能 。嵌 入式Ln x iu 操作 系统 以价格低 廉、 功
r q r m e f h i u W eas s h s e hnqu st m pe n n e b d d os a d ishi e e . e uie nto t e L n x. lou et e et c i e oi lme ta m e de n t ghlv l UI
天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发

18:19
4
3.1.1 嵌入式软件体系结构
18:19
5
1. 设备驱动层
设备驱动层是嵌入式系统中必不可少的重 要部分,使用任何外部设备都需要有相应 驱动程序的支持,它为上层软件提供了设 备的操作接口。 上层软件不用理会设备的具体内部操作, 只需调用驱动层程序提供的接口即可。 驱动层一般包括硬件抽象层HAL、板级支 持包BSP和设备驱动程序。
18
3.2.2 基于开发板的二次开发
所谓二次开发是利用现成的开发板进行开发,不同于通用 计算机和工作站上的软件开发工程,一个嵌入式软件的开 发过程具有很多特点和不确定性。其中最重要的一点是软 件跟硬件的紧密耦合特性。 由于嵌入式系统的灵活性和多样性,这样就给软件设计人 员带来了极大地困难。第一,在软件设计过程中过多地考 虑硬件,给开发和调试都带来了很多不便;第二,如果所 有的软件工作都需要在硬件平台就绪之后进行,自然就延 长了整个的系统开发周期。这些都是应该从方法上加以改 进和避免的问题。 为了解决这个问题,通常的做法是基于某种开发板做二次 开发,从这个角度看,硬件开发所占的比重不到20%,而 软件开发的比重占到了80%。
3.1 嵌入式软件结构 3.2 嵌入式软件开发流程 3.3 嵌入式linux开发环境 3.4 嵌入式系统引导代码 3.5 linux内核结构及移植 3.6 嵌入式文件系统及移植 3.7 linux设备驱动概述 3.8 设备驱动程序接口 3.9 linux设备驱动开发流程
18:19 3
3.1 嵌入式软件结构
?在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器rs232接口lcd等等
嵌入式Linux系统的研究与应用

入 式
广
L 系统的研究与应用 iu nx
R s a c n p 1 c t n f E b d e i U y t m e e r h a d A p a i o m e d d L f X S s e i o l
肖 红
Xa o gi o H n
了要求 , 这使得嵌入式设 备不再是孤 立的 。它们要 通过互联
网 、 线或是其他 的方式 实现相 互连接 , 无 同时它 们也是 软件
生态系统 (o t a e e o y t m 的~部 分。 初的嵌入 式设 s f w r c s s e ) 最
泛的应用, 出现 了数量可观的嵌入式 L 并 i
系统 。其 中有
一
足 1B并且 同样稳定 。 M, 另外, 它与多数 Ui 系统兼容 , nx 应用 程序 的开发和移植相 当容易 。同时, 由于具有 良好的可移植 性, F X{  ̄成功使 Lnx运行于数百种硬件平 台之上 嘲 J iu 。
然而, i u L n x并非 专门为实时性应用而设计, 因此 如果 想 在对实 时性 要求较高 的嵌人 式系统 中运 行 L n x 就必须 iu , 为之添加实时软 件模块 。 些模 块运行 的内核 空间正是 操作 这 系统 实现进程调度 、 中断处理和程 序执行 的部分 , 因此错误 的代码可能会破坏操 作系统, 进而影 响整个 系统的可靠性和
s t t hn og an i tr uce t e ed d ys em ec ol y d n od d he mb de Li x ese rc an th us ge nu r a h d e a
.
Ke wo d E b d e ; Li u ; O e a i g S s e y r s: m e d d nx p r t n y tm
嵌入式Linux操作系统的研究

嵌入式Linux操作系统的研究作者:陈国强来源:《计算机光盘软件与应用》2014年第01期摘要:随着当前计算机技术的不断发展,嵌入式系统应用领域越来越广泛,尤其是Linux 操作系统在产业发展中起着举足轻重的作用。
Linux操作系统内核具备进程管理、文件管理、储存管理以及内核调度等功能,同时基于Linux应用环境前提下,在不同系统芯片硬件平台上,嵌入式Linux操作系统能够实现运行,通过进程调度以及文件设计等模块满足不同开发板与应用需求。
本文主要通过介绍嵌入式Linux操作系统的基本功能,从而具体阐述嵌入式Linux操作系统的设计。
关键词:操作系统;Linux;嵌入式操作系统中图分类号:TP316嵌入式操作系统作为嵌入式系统的关键内容,通过控制系统资源,提供开发应用程序,体现了嵌入式系统的外在功能。
笔者综合自身多年来的实践经验,结合嵌入式Linux操作系统的功能以及机理,详细研究与分析其在嵌入式领域应用的完善方法。
1 嵌入式Linux操作系统概述1.1 嵌入式系统内涵。
嵌入式系统在发展初期主要是以微处理器的形式而存在的,随着科学技术的不断发展,嵌入式系统已经渗透到了人们的工作、生活以及娱乐等方方面面。
从本质上来讲,嵌入式系统将复杂的软件与硬件进行紧密耦合,从而形成一个全新的计算机系统。
“嵌入式”即在各个完整的系统中吸纳一部分优越系统,将这些系统进行整合。
而就这些嵌入的系统本身而言,一般存在多种嵌入式系统。
在现阶段,随着微处理器制造技术的深入发展,嵌入式处理器制造取得了巨大的发展。
在系统硬件上,主要考虑价格、性能以及能耗等因素,其关键部分是应用软件与系统软件。
但是由于储存空间存在局限性,因此嵌入式系统对实时性要求越来越严格。
1.2 嵌入式Linux操作系统。
Linux主要是指开放源代码,一般包括四个方面:一是内核,二是系统工具,三是开发环境,四是Unix类操作系统。
Linux作为一个现代操作系统,其性能可靠、稳定,主要具备七个特征:第一,满足国际通用标准规范;第二,具有可移植性,灵活性强;第三,整个系统性能卓越;第四,在某种程度上动态链接能力强;第五,系统网络特征鲜明;第六,兼容性强大;第七,系统能够包容大容量用户,任务能力优越。
嵌入式Linux系统开发教程实验报告

嵌入式实验报告:学号:学院:日期:实验一熟悉嵌入式系统开发环境一、实验目的熟悉Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。
使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验容本次实验使用Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。
创建一个新目录,并在其中编写hello.c 和Makefile 文件。
学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。
四、实验步骤1、建立工作目录[rootlocalhost root]# mkdir hello[rootlocalhost root]# cd hello2、编写程序源代码我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[rootlocalhost hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq!”保存并退出。
这样我们便在当前目录下建立了一个名为hello.c的文件。
hello.c源程序:#include <stdio.h>int main() {char name[20];scanf(“%s”,name);printf(“hello %s”,name);return 0;}3、编写Makefile要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Linux 嵌入式操作系统的研究李红卫1,潘瑜1,王树亮2,薛小锋1(1.江苏技术师范学院计算机科学与工程学院,江苏常州213001;2.江苏技术师范学院图书馆,江苏常州213001)摘要:从Linux内核实时性、实时调度策略以及时钟细粒度定时器三个方面,对Linux嵌入式实时化技术进行了探讨。
在内核中插入抢占点或采用双内核系统,改善Linux的实时性能;通过动态优先级提高实时任务的调度性能;通过增加时钟中断频率或采用实时时钟一次性模式,实现时钟细粒度。
关键词:Linux;嵌入式系统;实时性;进程调度中图分类号:TP316.2文献标识码:A0引言嵌入式系统是集软硬件于一体可独立工作的计算机系统,它通常是更大系统中一个完整的部分[1]。
在早期的嵌入式系统设计中一般不包含操作系统,但当系统越来越复杂、应用范围越来越广泛时,没有操作系统已成为系统开发的最大障碍;因此,在嵌入式系统的发展中,出现了各种各样的商用嵌入式操作系统。
嵌入式操作系统的出现改变了以往嵌入式软件设计只能针对具体的应用从头做起,使嵌入式系统的开发方法更具科学性;同时,采用嵌入式操作系统提高了系统的开发效率,减少了开发的工作量,增强了软件的可移植性。
操作系统成为嵌入式系统的核心,是一个时代的特征,也是嵌入式系统从简单的单片机、微处理器走向愈来愈复杂的嵌入式SOC和CPU的自然体现[2]。
开源Linux操作系统的出现,给嵌入式操作系统的发展带来生机,将Linux应用于嵌入式系统开发环境中已十分广泛;但就目前而言,嵌入式Linux的研究成果与市场的真正需求仍有一段差距,还需要在嵌入式Linux系统的实时性、进程调度等方面对其进行不断的改进和完善。
1改造Linux为嵌入式操作系统的分析实时系统最重要的特征是实时性,实时性是指系统对外部事件的响应和处理要在一个给定的时间内完成,即计算必须在到达死线(deadline)前完成[1]。
根据丢失死线的容忍程度可将实时系统分为硬实时系统和软实时系统:硬实时系统必须保证任务在到达死线之前完成,丢失死线将会引发灾难;软实时系统能保证任务在死线之前完成,但死线的丢失并不会带来致命的错误。
在大多数嵌入式系统应用中往往要求系统具有实时性。
虽然Linux是一个分时操作系统,但其符合POSIX1003.1b关于实时扩展部分的标准,尤其Linux2.6的推出给嵌入式系统以及实时系统的应用带来生机。
将Linux改造为嵌入式实时操作系统具有(1)Linux功能强大、(2)开放源码、(3)支持多种硬件平台、(4)收稿日期:2006-02-21;修回日期:2006-04-03基金项目:江苏技术师范学院科研基金资助项目(KYY04001)作者简介:李红卫(1966-),男,山西阳城人,江苏技术师范学院计算机科学与工程学院副教授。
JOURNALOFJIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY江苏技术师范学院学报Apr.,Vol.12,No.220062006年4月第12卷第2期模块化设计、(5)函数接口符合国际和工业标准等优点[3],但同时也存在一些缺点;Linux毕竟是一个分时系统,在实时性方面无法与商用实时操作系统相比,仍然存在很大差距。
(1)Linux提供的是一种软实时调度算法[4],它对实时任务的调度不做任何保证。
在实现调度算法时,Linux注重的是公平、合理的调度策略,对实时进程采用了基于优先级的先进先出算法和基于优先级时间片轮转算法,这两种调度算法均按静态优先级对实时进程进行调度。
(2)Linux2.6采用了内核可抢占式调度方式,但它的实现仅仅是在内核中增加了抢占点,抢占点设在中断处理程序即将结束时或系统调用即将结束时。
对于强实时系统来说,一旦高优先级的任务进入就绪队列,应立即获得处理机,而调度程序schedule()通常是在中断处理程序结束或系统调用结束时,才有机会运行。
如果中断处理时间过长(中断嵌套)或系统调用占用时间过长,都会延误实时任务的执行;只有保证中断处理程序和系统调用执行时间在一个可控的范围内,才能保证实时任务的正确执行。
(3)时钟粒度粗糙。
时钟中断是驱动操作系统运作的最基本的动力源,系统用它来维持系统时间,监督进程运行,引起进程调度。
进程状态的转变在很多情况下也是由时钟中断直接或间接引起的。
虽然Linux2.6在i386体系结构中时钟粒度定义为1ms,但在其他大多数体系结构(比如ARM)中,时钟粒度仍然定义为10ms,而实时应用一般都需要微秒级的响应精度,10ms的时钟粒度远不能满足实时应用的要求。
综上所述,改造Linux为嵌入式操作系统,可从实时性、进程调度程序、时钟粒度着手进行研究与实现。
2Linux嵌入式操作系统的实时化2.1双内核结构实时化Linux可有多种实现方案,许多研究项目都在进行Linux方面的实时化改造。
采用双内核结构是实时化Linux常用的方案,它是在原有的Linux和硬件之间设计一个专门用于处理实时进程的实时内核,Linux作为此内核的一个优先级最低的任务运行,实时任务在实时内核上运行,非实时任务则在Linux内核上运行。
该方案的结构如图1所示。
这类方案的优点是对Linux内核的改动较小,实现了硬实时和内核可抢占。
采用这种结构的有NewMexicoInstituteofTechnogy的RT-Linux、意大利的RTAI、我国信息产业部基金资助的SOPCA[5]等。
其中RT-Linux开创了Linux硬实时支持的先河。
RTAI的设计更科学,它在硬件与实时内核之间增加了一层实时硬件抽象层RTHAL(real-timehardwareabstractionlayer)。
RTHAL将RTAI需要在Linux中修改的部分定义成一组程序界面,RTAI只使用这组界面与Linux沟通,这样,可以把对内核源码的改动降低到可以控制的程度,使内核移植更便捷。
特别是在最新版本的RTAI中采用了ADEOS(adaptivedomainenvironmentforoperatingsystems)超微内核(ADEOSnanokernel)技术[6],极大地提高了系统的可靠性,也为嵌入式应用方面提供了可抢占的、可伸缩的实时服务。
采用双内核结构支持实时系统的设计方案同样也存在一些缺点[3],所有实时任务都必须用内核模块的格式编写,从而导致实时应用的开发变得非常复杂,要求用户必须熟悉Linux内核和设备驱动程序的设计。
另外一个重要隐患就是,由于实时任务在核心态中运行,没有对内存进行保护,不当的编程可能会导致内核的崩溃;同时,实时程序的调试也很困难。
2.2直接修改Linux内核这类方案的共同点是直接修改内核,主要方法是对它的数据结构、调度函数、中断方式等进行修改,提供适应于实时系统的调度策略、提供细粒度的定时器和增加内核抢占点等,使其能处理实时进程。
典型实例是MontaVista公司的MontaVistaLinux、CELF组织的CELinux和加州大学Irvine分校开发的RED-Linux。
MontaVistaLinux采用标准Linux内核,针对嵌入式设备定制专用的嵌入式操作系统,根据应非实时任务实时任务计算机硬件实时内核Linux内核图1双内核结构Fig.1StructureofTwoKemels江苏技术师范学院学报52第12卷用需求及嵌入式系统资源有限的情况,对内核进行裁减、配置,保证系统稳定,性能突出。
在实时性能方面,它提供一个基于优先级的实时调度器。
对于无实时需求的进程,仍按Linux原有进程调度策略进行调度;对于实时进程,则按照优先级驱动的原则进行调度,实现了一定的抢占式内核。
RED-Linux是在Linux内核的很多函数中插入了抢占点,使得进程在内核态时可以被抢占,从而减小内核的抢占延迟。
另外,RED-Linux的调度器被分为两个构件:分派器(dispatcher)和分配器(allocator)。
分配器是一个由用户创建的用户实时进程,在用户态执行,它负责将应用程序的资源请求转换成内核可以理解的形式。
分派器作为一个内核模块存在,可动态加载并在内核态执行。
实时任务先在分配器中注册自己的调度函数参数,再由分派器调度。
用这种方法,调度策略易于修改。
采用直接修改Linux内核方案的优点是能够充分利用Linux本身所提供的各种功能和服务,系统结构清晰,能够支持众多硬件平台,可以很好地将嵌入式与实时性结合。
它的缺点是实时性能不及双内核方式高,另外直接修改Linux内核源代码进行实时化的工作量大,还可能影响系统的稳定性。
采用该方案的大多数嵌入式Linux内核是不可完全被抢占的,所以只能作为一种软实时方案。
3Linux嵌入式调度算法的优化进程调度的研究是整个操作系统理论的核心[7],在嵌入式操作系统中也不例外。
实时调度算法大致可分为三种:基于优先级的调度算法、基于时间驱动的调度算法和基于比例共享的调度算法[8]。
在Linux内核中调度算法是以优先级驱动的,即调度原则是按优先级的大小决定,并实现了三种调度策略,其中SCHED_FIFO和SCHED_RR应用于实时任务,SCHED_NORMAL应用于非实时任务,实时任务的优先级高于非实时任务的优先级。
SCHED_FIFO指当优先级相同时,按先进先出算法进行调度,它不使用时间片,适合于时间性要求比较强、但每次运行所需时间比较短的进程,采用该策略的进程获得CPU后,除非有更高优先级进程申请运行外,否则该进程将保持运行至退出或自愿放弃CPU;SCHED_RR指优先级相同时按时间片轮转算法进行调度;SCHED_NORMAL是基于优先级按时间片轮转算法进行调度,与SCHED_RR调度策略相似,所不同的是SCHED_RR采用静态优先级对实时任务进行调度,SCHED_NORMAL采用动态优先级对非实时任务进行调度。
因为,实时任务的优先级在运行过程中保持不变,非实时任务的优先级随进程的运行时间、等待时间、是否为交互式进程而动态改变。
在实时系统中,往往要求系统对外部事件的响应和处理要在一个给定的时间内完成,系统输出的正确性不仅依赖于计算的逻辑结果而且依赖于结果产生的时间。
随着时间的变化,实时任务的紧迫程度也在变化。
在基于优先级的调度算法中,实时进程的优先级如果能随着时间的变化而动态地改变,就能客观地反映出实时任务的紧迫程度。
显然,Linux对实时任务按静态优先级进行调度的策略在满足实时性要求时存在瑕疵。
在实时操作系统中,常常面临的另一个问题是优先级反转[9],可描述如下:当高优先级的任务获得运行资格后,发现它所需要的共享资源被某低优先级的任务占用,则该高优先级任务被阻塞;而该低优先级的任务又被中等优先级的任务强占而无法运行,致使高优先级的任务在有效时间内无法获得被低优先级任务所占用的共享资源而迟迟不能运行。