第三周作业

阅读笔记

1.Linux 2.6内核的实时性分析

相对于老版本内核,Linux 2.6版本的内核结构做了很大的改动,开发者对很多功能模块的代码都进行了重写。最为显着的改进是在影响系统实时性的进程调度方面,包括采用可抢占内核和新的0(1)调度程序。
但是Linux在最初的设计是用作个人PC或者小型服务器的操作系统,由于设计要求的针对性,导致了Linux无法提供硬实时环境,直接影响了它的硬实时性能。这主要表现在两方面:

1.进程调度方式

Linux的进程调度采用的是时间片轮转调度策略。不论进程优先级的高低,Linux在某段时间内都会分配给该进程一个时间片运行,也就是说它的设计更注重任务调度的公平性。这种情况下,就会出现高优先级进程由于其时间片的耗尽而被迫放弃处理器,处理器被没有耗尽时间片的低优先级进程所占用的现象。

2.时钟粒度粗糙

在Linux 2.6版本内核中,时钟中断发生的频率范围为50~1 200Hz,周期不小于0.8 ms,而工业上很多的中断周期都在几十μs之内。
对于上面提到的影响Linux实时性的问题,目前的解决办法主要有2种:
①对Linux内核的内部进行实时改造,即直接修改Linux内核的数据结构、调度方式以及中断方式(主要是时钟中断)。
采用这种方法,实时化改造后的系统实时性较好,但是工作量大,并且可能会造成系统不稳定。最大的缺点是:原本在Linux上运行的设备驱动程序和应用程序不能直接在改进的内核上运行。典型代表有Kurt-Linux.
②对Linux内核的外部实时扩展,这种方法通常是采用双内核的办法。具体是在Linux内核和硬件间加入一个硬件抽象层(Hardware Abstract Layer,HAL),系统所有的硬件中断由这个抽象层控制。新创建一个内核专门用来调度实时进程,而普通进程通过原来的Linux内核进行调度。xenomai就是采用了这种结构。

2.Xenomai原理

- 简介

Xenomai是一个自由软件项目,提供了一个基于Linux的实时解决方案。它可以提供工业级RTOS的性能,而且完全遵守GNU/Linux自由软件协议。目前最新稳定版本是2.4.5.
Xenomai项目起始于2001年。从2003年夏天起,Xenomai和RTAI有了两年时间的合作,期间开发了广为人知的RTAI/fusion项目分支。到2005年,Xenomai项目又重新独立出来。而从2.0.0版本开始,Xenomai在硬件平台的移植就一直是基于Adeos构架来实现的。

- Adeos实现

在基于Adeos的系统中,分为多个域。每个域中独立运行一个操作系统(或者是实现一定功能的程序模块),每个域可以有独立的地址空间和类似于进程、虚拟内存等的软件抽象层。在各个域下层有一个Adeos通过虚拟中断等方法来调度上面的各个域。在基于Adeos的系统中,存在着A、B、C、D四种类型的交互,如图1所示。

A类交互是各个域直接操作硬件设备,包括访问内存等;B类交互指当Adeos接收到硬件中断后,会根据中断来对相应的域进行中断服务;C类交互指当前域内的操作系统主动向Adeos请求某些服务;D类交互是指Adeos接收硬件产生的中断和异常,同时也可以直接控制硬件。

团队项目

- 感兴趣的模块开发

图形化用户接口,对人机交互方面的设计比较感兴趣,不过没有很好的编程基础,需要加强学习。

- 团队协作开发的理解

良好的团队协作需要一个合适的分工,积极的工作氛围,以及稳定的计划安排保证工作及时完成。本人曾参与过一些团队的协作,在这些项目中我一般会倾向于做设计与测试的工作,也会协助做一些文案的编写。

posted @ 2016-12-13 16:37  sombra  阅读(175)  评论(6编辑  收藏  举报