1 / 34

KLinux 操作系统概述

KLinux 操作系统概述. 成都研究所操作系统团队. KLinux 简介 KLinux 实时性改造 KLinux 的安装 KShell 介绍. 目录. KLinux 简介 — 由来. 当前实时嵌入式 Linux 分析 RT-Linux 在普通 Linux 内核上增加一个小的实时内核,实现了强实时性 缺点是破坏了 Linux 内核的完整性,并使得很多应用不能在上面运行 Montavista Linux 在普通 Linux 上加实时补丁,使得响应速度提高, 缺点是整个系统开销没有降下来,称之为低延时 Linux 内核更恰当. KLinux 简介 — 由来.

sabina
Download Presentation

KLinux 操作系统概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KLinux操作系统概述 成都研究所操作系统团队

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

  3. KLinux简介—由来 • 当前实时嵌入式Linux分析 • RT-Linux • 在普通Linux内核上增加一个小的实时内核,实现了强实时性 • 缺点是破坏了Linux内核的完整性,并使得很多应用不能在上面运行 • Montavista Linux • 在普通Linux上加实时补丁,使得响应速度提高, • 缺点是整个系统开销没有降下来,称之为低延时 Linux内核更恰当

  4. KLinux简介—由来 • Linux性能瓶颈 • 内核空间与用户空间的频繁切换 • 调度算法采用就绪队列遍历搜索 • 其它如:消息队列、信号量

  5. KLinux简介—解决方案 • 内核修改要点 • 内核线程库,提供内核线程的操作手段。 • 内核库函数修改,包括输入/输出、Socket、文件系统等。 • 调度算法修改,支持O(1)的优先级调度机制。 • 对多种CPU的适应修改,主要包括对 X86、PPC、 ARM的支持。 • 支持在内核线程上的移植、包括消息队列、进程通讯、定时器、内存块管理等。

  6. 上层应用 调 试 器 调 试 代 理 OSS支撑 VxWorks适配 KLibc、KCplus库 KTH库 Linux修改内核 X86 PPC ARM MIPS KLinux简介—解决方案 • Linux强实时内核解决方案 内核态

  7. KLibc、KCplus KLinux简介—体系结构 • Linux强实时内核体系结构 • KLibc、KCplus:提供基本的C、C++库函数支持 • KTH:提供强实时操作系统所需的基本功能管理 • Linux内核:在标准内核基础上改造的支持KTH的新内核

  8. KLibc,KCplus KLinux简介—体系结构 • 模块间的调用关系 • KTH库模块和KLibc、KCplus模块直接调用修改后的Linux内核提供的调用接口(通过KAL的封装), • Linux内核则使用回调函数与KTH和KLibc模块联系 • KTH和KLibc、KCplus模块以可加载模块形式加入内核运行

  9. KLinux简介—关键特性 • KLinux关键特性 • 强实时性 • 支持在内核线程上的移植 • 支持多种硬件体系 • X86体系(支持所有IA32的CPU、虚拟机) • PPC体系(8240/8241/8245、860、852、8260、755) • ARM-NOMMU(ARM7 TDMI) • ARM(ARM9 TDMI、IXP 1200) • MIPS(R4000)

  10. KLinux简介—版本状况 • KLinux2.0 • 基于Linux2.4的内核 • KTH、KLibc、KShell • KLinux2.2 • 完善KTH、KLibc、Shell,增加了KCplus模块 • 增加了调试器功能 • LSP,KBoot的开发 • 完整的用户文档 • KLinux3.0 • 基于Linux2.6的内核 • 设计中

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

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

  13. 内核堆栈修改 内核抢占修改 内核调度修改 内核调试修改 内核线程删除修改 线程状态机修改 t t y 修 改 KLinux实时性改造—内核修改 内核修改

  14. KLinux实时性改造—KTH库修改 • KTH库修改 • 增强对内核线程的管理工作,提供‘标准’的接口 • 提供较完备的同步手段(仿造VxWorks的机制) • 提供一定的调试排错手段

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

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

  17. 内核修改—抢占 • 内核抢占修改 • 进程切换的时机 • 1)主动放弃 • 2)抢占 • 内核的抢占点:中断、提供调用、异常的返回 • 中断,异常只有在返回到用户态时才进行抢占 • 可抢占机制 • 分两种方式进行抢占,对原Linux内核执行代码,不进行抢占,只对KTH及以上支持的代码,进行抢占

  18. 内核修改—状态机 • 线程状态机修改 • 线程退出方式的增加 • 线程处于非运行状态时,也能被其他线程强行终止 • 增加了对STP的转换途径 • STP状态可以与其它状态自由转换

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

  20. KTH修改—信号量管理 • KTH信号量管理 • 同步原语采用VxWorks的实现机制,提供与其相似的接口。

  21. KLibc修改 • KLibc修改 • 在内核态运行 • 只支持标准c库的一个子集 • string • stdio • stdlib • math • socket • files • error

  22. 5 4.59 4.5 4 3.5 3 2.5 1.73 1.66 2 1.5 1 0.5 0 VxWorks KLinux 标准Linux2.6 KLinux强实时性能对比 • 任务调度时间对比(微秒)

  23. 2660 3000 2500 1735 2000 1500 826 1000 500 0 VxWorks KLinux 标准Linux2.6 KLinux强实时性能对比 • 上下文切换时间对比(tick)

  24. 160 140.5 140.6 140 121.8 112.7 120 109.4 100 Binary 80 Count 60 40 20 0 VxWorks Klinux 标准Linux2.6 KLinux强实时性能对比 • 获取信号量时间对比(纳秒)

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

  26. KLinux安装 • 下载源代码 • KLinux提供的单独源代码包,KLinux-2.2.tar.gz,将这些源代码下载到目标机器的\usr\src目录下, • 解包 • 输入命令 “tar xzvf KLinux-2.0.tar.gz ”

  27. 线程管理库 c++库支持 c库支持 改进的内核代码 工程目录 调试代理代码 用户应用程序代码 KLinux目录结构

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

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

  30. KShell简介 • 类似于MS-DOS的命令行操作界面 • KShell提供两部分功能 • 提供丰富的Shell命令(如i、tt、ts等),方便用户查看KLinux系统信息; • 提供简单的C语言语法解析机制(c语法分析器)。

  31. KShell命令简介 • 任务及信号量相关 • checkStack、i、msgQShow、objshow • 文件及文件系统相关 • cat、cd、df、du、ls、rm • 网络设备相关 • ifShow、ipstatShow、ping • 设备及驱动相关 • tcpstatShow

  32. KShell命令简介 • 调试相关 • bdall、c 、cret • 内存管理 • d、 m 、memShow • 日志管理 • closelog 、disablelog 、enablelog • 其他 • help、IkAddr、moduleShow、printErrno

  33. KShell支持文件脚本功能,脚本的编写遵循KShell语法,具体的KShell编程请参考“KLinux编程指南”。 KShell支持文件脚本功能,脚本的编写遵循KShell语法,具体的KShell编程请参考“KLinux编程指南”。 KShell语法简介 • 是标准C语法的一个子集 • KShell不支持下列c语法 • 逗号运算符“,”以及“++”和“--”运算符; • 结构定义和enum、typedef,也不支持 ->和 .(结构成员运算符); • 宏定义和预处理语法,如#include、ifdef等; • 函数原型定义,变量类型定义; • 类型转换操作

  34. 谢 谢

More Related