Upload
sabina
View
234
Download
0
Embed Size (px)
DESCRIPTION
KLinux 操作系统概述. 成都研究所操作系统团队. KLinux 简介 KLinux 实时性改造 KLinux 的安装 KShell 介绍. 目录. KLinux 简介 — 由来. 当前实时嵌入式 Linux 分析 RT-Linux 在普通 Linux 内核上增加一个小的实时内核,实现了强实时性 缺点是破坏了 Linux 内核的完整性,并使得很多应用不能在上面运行 Montavista Linux 在普通 Linux 上加实时补丁,使得响应速度提高, 缺点是整个系统开销没有降下来,称之为低延时 Linux 内核更恰当. KLinux 简介 — 由来. - PowerPoint PPT Presentation
Citation preview
KLinux 简介—由来 当前实时嵌入式 Linux 分析
RT-Linux • 在普通 Linux 内核上增加一个小的实时内核,实现了强实时性• 缺点是破坏了 Linux 内核的完整性,并使得很多应用不能在上面运行
Montavista Linux• 在普通 Linux 上加实时补丁,使得响应速度提高,• 缺点是整个系统开销没有降下来,称之为低延时 Linux内核更恰当
KLinux 简介—解决方案 内核修改要点
内核线程库,提供内核线程的操作手段。 内核库函数修改,包括输入 / 输出、 Socket 、文件系统等。 调度算法修改,支持 O(1) 的优先级调度机制。 对多种 CPU 的适应修改,主要包括对 X86 、 PP
C 、 ARM 的支持。 支持在内核线程上的移植、包括消息队列、进程通讯、定时器、内存块管理等。
KLinux 简介—解决方案 Linux 强实时内核解决方案
Linux 修改内核KTH 库
KLibc 、 KCplus 库
X86 PPC ARM
上层应用 调 试 代 理
调 试 器
MIPS
OSS 支撑VxWorks 适配 内核态
KLinux 简介—体系结构 Linux 强实时内核体系结构
KLibc 、 KCplus :提供基本的 C 、 C++ 库函数支持KTH :提供强实时操作系统所需的基本功能管理Linux 内核:在标准内核基础上改造的支持 KTH 的新内核 KLibcKLibc 、、 KCplusKCplus
KLinux 简介—体系结构 模块间的调用关系
KTH 库模块和 KLibc 、 KCplus 模块直接调用修改后的 Linux 内核提供的调用接口 ( 通过 KAL 的封装 ) , Linux 内核则使用回调函数与 KTH 和 KLibc 模块联系 KTH 和 KLibc 、 KCplus 模块以可加载模块形式加入内核运行
KLibcKLibc,,KCplusKCplus
KLinux 简介—关键特性 KLinux 关键特性
强实时性 支持在内核线程上的移植 支持多种硬件体系
• X86 体系(支持所有 IA32 的 CPU 、虚拟机)• PPC 体系( 8240/8241/8245 、 860 、 852 、 8260 、 7
55 )• ARM-NOMMU ( ARM7 TDMI )• ARM ( ARM9 TDMI 、 IXP 1200 )• MIPS ( R4000 )
KLinux 简介—版本状况 KLinux2.0
基于 Linux2.4 的内核KTH 、 KLibc 、 KShell
KLinux2.2 完善 KTH 、 KLibc 、 Shell ,增加了 KCplus 模块 增加了调试器功能LSP , KBoot 的开发 完整的用户文档
KLinux3.0 基于 Linux2.6 的内核 设计中
KLinux 简介—应用现状 成研所 Linux 产品应用历史回顾
2005 年 10 月开始在网络事业部 A10 和 DSL 产品线进行应用2006 年 3 月 DSL A8000 core 板泉州试验局测试通过2006 年 4 月在中心研究院 MSCe 所有单板上进行内核替换验证成功2007 本部北研 数据事业部
KLinux 实时性改造— KLibc 库修改 KLibc 库修改
提供内核的 c 库 由 VxWorks 的 Libc 和 kLibc( 一个专为嵌入式应用的精简版用户态 libc 库 ) 修改而得。 新增了 KCplus 库,支持 c++
内核修改—调度 内核调度修改
增加新的调度方式 : KTH_SCHED 采用 bitMap 的调度算法256 级优先级 ( 越大越优先 ) , kth 使用 0-200,255 由主线程使用254 由 2 号线程使用,进行软中断操作。
内核修改—抢占 内核抢占修改
进程切换的时机• 1 )主动放弃• 2 )抢占
– 内核的抢占点:中断、提供调用、异常的返回 中断,异常只有在返回到用户态时才进行抢占 可抢占机制
• 分两种方式进行抢占,对原 Linux 内核执行代码,不进行抢占,只对 KTH 及以上支持的代码,进行抢占
KTH 修改—线程管理 KTH 线程管理
采用主线程和工作线程的方式 工作线程的创建和删除由主线程完成 增加接口函数
• 线程创建与删除– Kthread_create(),kthread_spawn()– Kthread_cancel(),kthread_join()
• 线程挂起与唤醒– kthread_suspend_np(), kthread_suspend_np()
• 开调度与关调度– kthread_switch_lock(), kthread_switch_unlock()
• 优先级的设置与获取– kthread_setschedparam(), kthread_getschedparam()
KLinux 强实时性能对比 上下文切换时间对比( tick )
0
500
1000
1500
2000
2500
3000
VxWorks KLinux 标准 Linux2.6
1735
826
2660
KLinux 强实时性能对比 获取信号量时间对比(纳秒)
020406080
100120140160
VxWorks Klinux 标准 Linux2.6
BinaryCount
121.8 112.7109.4
140.6 140.5
KLinux 安装 下载源代码
KLinux 提供的单独源代码包, KLinux-2.2.tar.gz ,将这些源代码下载到目标机器的 \usr\src目录下, 解包
输入命令 “ tar xzvf KLinux-2.0.tar.gz ”
KShell 简介类似于 MS-DOS 的命令行操作界面 KShell 提供两部分功能
• 提供丰富的 Shell命令(如 i 、 tt 、 ts 等),方便用户查看 KLinux 系统信息;• 提供简单的 C 语言语法解析机制( c 语法分析器)。
KShell 命令简介 任务及信号量相关
checkStack 、 i 、 msgQShow 、 objshow 文件及文件系统相关
cat 、 cd 、 df 、 du 、 ls 、 rm 网络设备相关
ifShow 、 ipstatShow 、 ping 设备及驱动相关
tcpstatShow
KShell 命令简介 调试相关
bdall 、 c 、 cret 内存管理
d 、 m 、 memShow 日志管理
closelog 、 disablelog 、 enablelog 其他
help 、 IkAddr 、 moduleShow 、 printErrno
KShell 语法简介 是标准 C 语法的一个子集 KShell 不支持下列 c 语法
逗号运算符“,”以及“ ++” 和“ --” 运算符; 结构定义和 enum 、 typedef ,也不支持 -> 和 .(结构成员运算符 ); 宏定义和预处理语法,如 #include 、 ifdef 等; 函数原型定义,变量类型定义; 类型转换操作
KShell支持文件脚本功能,脚本的编写遵循 KShell语法,具体的 KShell编程请参考“ KLinux编程指南”。