收稿日期: 2008202221 基金项目: 国防预研课题
(
XXX
0601010301
)
资助. 作者简介: 邓广宏, 男, 1981 年生, 硕士, 工程师, 研究方向为软
件工程, 嵌入式系统, 操作系统; 曹万华, 男, 1966 年生, 研究员, 博士生导师, 研究方向为软件工程, 软件构件技术, 服务计算和信息集成;蔡 斌,
男, 1977 年生, 博士, 高级工程师, 研究方向为软件工程, 嵌入式系统, 操作系统.
基于嵌入式
L inux
系统的内核级线程库的研究与实现
邓广宏
2
, 曹万华
1, 2
, 蔡 斌
2
, 池志强
2
, 程 雄
2
, 黄治华
2
1
(
哈尔滨工程大学 计算机科学与技术学院, 黑龙江 哈尔滨 150001
)
2
(
武汉数字工程研究所, 湖北 武汉 430074
)
E
2
m ail
:
stephenden
@163.
com
;
caowanhua
@
vip
. 163.
com
;
hust
-
caibin
@
sohu
.
com
摘 要: 在当前嵌入式系统应用中, 性能问题一直是人们关注的重点. 大多数嵌入式
L inux
应用往往运行在用户态, 系统运行时
需要经常在内核态和用户态之间反复切换, 降低了关键业务的执行效率. 以往的研究较少从内核态下的线程库出发来考虑性能
优化的实现方法, 影响了嵌入式系统的整体性能. 对此, 本文提出一种适用于嵌入式
L inux
系统的内核级线程库
(
L KTL
)
, 并且
分析了实现的关键技术.
L KTL
提供了线程管理、信号量同步、内存的动态分配和回收、日志管理以及基本的
GNU C
库的功能,
不但大大提高了应用程序的运行效率, 还方便了应用程序的开发和移植. 实验表明
L KTL
能够显著优化嵌入式
L inux
系统的整
体性能.
关 键 词: 嵌入式系统;
L inux
操作系统; 内核级线程库; 上下文切换; 实时性
中图分类号:
TP
311 文献标识码:
A
文 章 编 号: 100021220
(
2009
)
0721393206
Research and Im plantation of a Kernel Thread L ibrary Based on Embedded L inux Operation
System
DEN G Guang
2
hong
2
,
CAO W an
2
hua
1, 2
,
CA IB in
2
,
CH I Zhi
2
qiang
2
,
CHEN G Xiong
2
,
HUAN G Zhi
2
hua
2
1
(
College of Comp uter S cience and T echnology
,
H arbin E ng ineering U niversity
,
H arbin
150001,
China
)
2
(
W uhan D ig ital E ng ineering R esearch Institute
,
W uhan
430074,
China
)
Abstract
:
Fo r em bedded system based app lications
,
perfo rm ance p roblem is a m ajor concern
.
How ever
,
mo st of em bedded
L inux system based applications often run on the user p rocedures state of the L inux operating system
,
w hich result in context
sw itch frequently
,
and therefore the perform ance of critical jobs m ight be reduced
.
M ost of the existing research seldom takes
into account the imp lem entation m ethods of the L inux kernel thread library
(
L KTL
)
,
w hich impairs the perform ance guarantee
from embedded system s
.
This paper p roposes a novel L KTL app lied for em bedded L inux system s and analyzes the key
technologies of the imp lem entation
.
L KTL p rovides the thread m anagem ent
,
sem aphore synchronization
,
m emory allocation
and de
2
allocation
,
log m anagem ent and basic GNU C library
.
Based on that
,
L KTL is not only able to boo st the perform ance
of the em bedded app lications p rom inently
,
but also to facilitate the app lications developm ent for em bedded L inux system and
m igration from o ther em bedded system s to em bedded L inux system
.
L ater experim ental results indicate that L KTL effectively
imp roves the over all perfo rm ance for em bedded L inux system s
.
Key words
:
em bedded system s
;
L inux operating system
;
kernel thread library
;
context sw itch
;
real
2
tim e ability
1 引 言
目前, 对嵌入式
L inux
的研究和开发主要集中在两个方
面: 嵌入式
L inux
开发环境的完善
[1, 2 ]
和
L inux
系统的实时性
扩展
[3 ]
. 对嵌入式
L inux
系统的实时性扩展主要是从内核运
行的角度提高任务调度的效率和实时性
[4 ]
. 但从应用程序运
行的角度看, 每次进行系统资源的访问时, 都要反复进行用户
态和内核态之间的切换工作, 而这种上下文的切换往往比较
耗时, 大大的降低了系统的执行效率. 因此, 嵌入式
L inux
应
用系统的一个主要瓶颈在于应用程序执行时用户态和内核态
之间的反复切换上.
为了降低反复切换带来的性能开销, 提高应用系统的整
体性能, 目前有两种解决方式: 一种是使用用户级线程库
[5 ]
,
它通过在用户空间中增加运行库, 然后由用户级线程库进行
用户线程的调度来规避这种反复切换的开销.
PO SIX
线程库
就是其中一个典型代表
[6 ]
. 这种方法的优点在于: 用户线程调
度时不需要切换到内核态, 免去了切换的开销. 然而它的缺点
也非常明显: 不能够利用内核中的实时调度机制
(
如
L inux
2.
6 内核版本的软实时调度
)
, 因此不适用于实时性要求较高的
嵌入式应用.
另 一种方式是将应用程序以内核模块的形式加载到
L in
2
ux
操作系统内核中, 直接在内核空间运行. 但是内核模块编
小 型 微 型 计 算 机 系 统
Journal of Chinese Computer System s
2009 年 7 月 第7 期
Vol
130
No
. 7 2009