YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: KLinux 操作系统概述

©2007 ZTE Corporation

KLinuxKLinux 操作系统概述操作系统概述成都研究所操作系统团队

Page 2: KLinux 操作系统概述

目录• KLinux 简介• KLinux 实时性改造• KLinux 的安装• KShell 介绍

Page 3: KLinux 操作系统概述

KLinux 简介—由来 当前实时嵌入式 Linux 分析

RT-Linux • 在普通 Linux 内核上增加一个小的实时内核,实现了强实时性• 缺点是破坏了 Linux 内核的完整性,并使得很多应用不能在上面运行

Montavista Linux• 在普通 Linux 上加实时补丁,使得响应速度提高,• 缺点是整个系统开销没有降下来,称之为低延时 Linux内核更恰当

Page 4: KLinux 操作系统概述

KLinux 简介—由来 Linux 性能瓶颈

内核空间与用户空间的频繁切换 调度算法采用就绪队列遍历搜索 其它如:消息队列、信号量

Page 5: KLinux 操作系统概述

KLinux 简介—解决方案 内核修改要点

内核线程库,提供内核线程的操作手段。 内核库函数修改,包括输入 / 输出、 Socket 、文件系统等。 调度算法修改,支持 O(1) 的优先级调度机制。 对多种 CPU 的适应修改,主要包括对 X86 、 PP

C 、 ARM 的支持。 支持在内核线程上的移植、包括消息队列、进程通讯、定时器、内存块管理等。

Page 6: KLinux 操作系统概述

KLinux 简介—解决方案 Linux 强实时内核解决方案

Linux 修改内核KTH 库

KLibc 、 KCplus 库

X86 PPC ARM

上层应用 调 试 代 理

调 试 器

MIPS

OSS 支撑VxWorks 适配 内核态

Page 7: KLinux 操作系统概述

KLinux 简介—体系结构 Linux 强实时内核体系结构

KLibc 、 KCplus :提供基本的 C 、 C++ 库函数支持KTH :提供强实时操作系统所需的基本功能管理Linux 内核:在标准内核基础上改造的支持 KTH 的新内核 KLibcKLibc 、、 KCplusKCplus

Page 8: KLinux 操作系统概述

KLinux 简介—体系结构 模块间的调用关系

KTH 库模块和 KLibc 、 KCplus 模块直接调用修改后的 Linux 内核提供的调用接口 ( 通过 KAL 的封装 ) , Linux 内核则使用回调函数与 KTH 和 KLibc 模块联系 KTH 和 KLibc 、 KCplus 模块以可加载模块形式加入内核运行

KLibcKLibc,,KCplusKCplus

Page 9: KLinux 操作系统概述

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 )

Page 10: KLinux 操作系统概述

KLinux 简介—版本状况 KLinux2.0

基于 Linux2.4 的内核KTH 、 KLibc 、 KShell

KLinux2.2 完善 KTH 、 KLibc 、 Shell ,增加了 KCplus 模块 增加了调试器功能LSP , KBoot 的开发 完整的用户文档

KLinux3.0 基于 Linux2.6 的内核 设计中

Page 11: KLinux 操作系统概述

KLinux 简介—应用现状 成研所 Linux 产品应用历史回顾

2005 年 10 月开始在网络事业部 A10 和 DSL 产品线进行应用2006 年 3 月 DSL A8000 core 板泉州试验局测试通过2006 年 4 月在中心研究院 MSCe 所有单板上进行内核替换验证成功2007 本部北研 数据事业部

Page 12: KLinux 操作系统概述

目录• KLinux 简介• KLinux 实时性改造• KLinux 的安装• KShell 介绍

Page 13: KLinux 操作系统概述

KLinux 实时性改造—内核修改内核修改

内核抢占修改

内核调度修改

内核调试修改

内核线程删除修改

线程状态机修改

内核堆栈修改

tty修改

Page 14: KLinux 操作系统概述

KLinux 实时性改造— KTH 库修改 KTH 库修改

增强对内核线程的管理工作,提供‘标准’的接口 提供较完备的同步手段 ( 仿造 VxWorks 的机制 ) 提供一定的调试排错手段

Page 15: KLinux 操作系统概述

KLinux 实时性改造— KLibc 库修改 KLibc 库修改

提供内核的 c 库 由 VxWorks 的 Libc 和 kLibc( 一个专为嵌入式应用的精简版用户态 libc 库 ) 修改而得。 新增了 KCplus 库,支持 c++

Page 16: KLinux 操作系统概述

内核修改—调度 内核调度修改

增加新的调度方式 : KTH_SCHED 采用 bitMap 的调度算法256 级优先级 ( 越大越优先 ) , kth 使用 0-200,255 由主线程使用254 由 2 号线程使用,进行软中断操作。

Page 17: KLinux 操作系统概述

内核修改—抢占 内核抢占修改

进程切换的时机• 1 )主动放弃• 2 )抢占

– 内核的抢占点:中断、提供调用、异常的返回 中断,异常只有在返回到用户态时才进行抢占 可抢占机制

• 分两种方式进行抢占,对原 Linux 内核执行代码,不进行抢占,只对 KTH 及以上支持的代码,进行抢占

Page 18: KLinux 操作系统概述

内核修改—状态机 线程状态机修改

线程退出方式的增加 • 线程处于非运行状态时,也能被其他线程强行终止

增加了对 STP 的转换途径 • STP 状态可以与其它状态自由转换

Page 19: KLinux 操作系统概述

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()

Page 20: KLinux 操作系统概述

KTH 修改—信号量管理 KTH 信号量管理

同步原语采用 VxWorks 的实现机制,提供与其相似的接口。信号量 能否重复获取 能否在中断中释放

B 不能 能C 能 不能M 能,计数值减一 能

Page 21: KLinux 操作系统概述

KLibc 修改 KLibc 修改

在内核态运行 只支持标准 c 库的一个子集

• string• stdio• stdlib• math• socket• files• error

Page 22: KLinux 操作系统概述

KLinux 强实时性能对比 任务调度时间对比(微秒)

00.5

11.5

22.5

33.5

44.5

5

VxWorks KLinux 标准 Linux2.6

1.73 1.66

4.59

Page 23: KLinux 操作系统概述

KLinux 强实时性能对比 上下文切换时间对比( tick )

0

500

1000

1500

2000

2500

3000

VxWorks KLinux 标准 Linux2.6

1735

826

2660

Page 24: KLinux 操作系统概述

KLinux 强实时性能对比 获取信号量时间对比(纳秒)

020406080

100120140160

VxWorks Klinux 标准 Linux2.6

BinaryCount

121.8 112.7109.4

140.6 140.5

Page 25: KLinux 操作系统概述

目录• KLinux 简介• KLinux 实时性改造• KLinux 的安装• KShell 介绍

Page 26: KLinux 操作系统概述

KLinux 安装 下载源代码

KLinux 提供的单独源代码包, KLinux-2.2.tar.gz ,将这些源代码下载到目标机器的 \usr\src目录下, 解包

输入命令 “ tar xzvf KLinux-2.0.tar.gz ”

Page 27: KLinux 操作系统概述

KLinux 目录结构

线程管理库c库支持

改进的内核代码

c++库支持

工程目录调试代理代码用户应用程序代码

Page 28: KLinux 操作系统概述

KLinux 目录结构硬件结构相关代码配置文件参考文档设备驱动文件系统头文件启动代码进程通讯代码核心代码库代码内存管理代码无mmu的内存管理代码网络部分代码配置脚本

Page 29: KLinux 操作系统概述

目录• KLinux 简介• KLinux 实时性改造• KLinux 的安装• KShell 介绍

Page 30: KLinux 操作系统概述

KShell 简介类似于 MS-DOS 的命令行操作界面 KShell 提供两部分功能

• 提供丰富的 Shell命令(如 i 、 tt 、 ts 等),方便用户查看 KLinux 系统信息;• 提供简单的 C 语言语法解析机制( c 语法分析器)。

Page 31: KLinux 操作系统概述

KShell 命令简介 任务及信号量相关

checkStack 、 i 、 msgQShow 、 objshow 文件及文件系统相关

cat 、 cd 、 df 、 du 、 ls 、 rm 网络设备相关

ifShow 、 ipstatShow 、 ping 设备及驱动相关

tcpstatShow

Page 32: KLinux 操作系统概述

KShell 命令简介 调试相关

bdall 、 c 、 cret 内存管理

d 、 m 、 memShow 日志管理

closelog 、 disablelog 、 enablelog 其他

help 、 IkAddr 、 moduleShow 、 printErrno

Page 33: KLinux 操作系统概述

KShell 语法简介 是标准 C 语法的一个子集 KShell 不支持下列 c 语法

逗号运算符“,”以及“ ++” 和“ --” 运算符; 结构定义和 enum 、 typedef ,也不支持 -> 和 .(结构成员运算符 ); 宏定义和预处理语法,如 #include 、 ifdef 等; 函数原型定义,变量类型定义; 类型转换操作

KShell支持文件脚本功能,脚本的编写遵循 KShell语法,具体的 KShell编程请参考“ KLinux编程指南”。

Page 34: KLinux 操作系统概述

©2007 ZTE Corporation