Symbian OS Internals——设计方案_抢占式内核、微内核、模块性、设计局限

来源:互联网 发布:建筑行业的大数据 编辑:程序博客网 时间:2024/05/16 11:04

现在,我将谈一谈我们在EKA2中采用的设计方案和它们如何帮助我们实现我们设定的目标。

 

1.3.3.1多线程抢占式内核

为了减少线程执行期,我们把EKA2设计成多线程的,允许低优先级的内核操作被高优先级的内核操作抢占。

EKA2有五个线程,它们是:

1Null Thread——空转(idles)CPU,重组(De-fragments)RAM。这个线程也被叫做Idle Thread

2、管理者线程——清理被杀死的线程和进程(killed threads and processes),提供异步对象的删除

3DFC 线程0——为comms、主板和数字转换器等通用设备驱动运行DFC

4DFC线程1——运行微内核时钟队列

5、计时器线程——运行Symbian OS的相对和绝对计时器(After(),At())

在第三章,线程、进程和库,我将深入描述这五个线程的目的。

内核多线程的本质也有助于我们达到另一个目标——使设备驱动编写者的工作变得更简单。你常常想从另外的操作系统移植设备驱动,但是EKA1的单线程设备驱动模型意味着移植一个多线程的设备驱动不是一项简单的工作——你往往必须从零开始设计驱动。在EKA2,设备驱动可以利用DFC线程0,或者根据需要创建自己的线程。有了这些机制,在其它操作系统上的设计可以被重用,而且现在移植也更简单了。

 

1.3.3.2微内核

我们选择了拥有一个独立的微内核,因为这样做有以下优点:

1、非常少而且可预测的中断及线程执行期。这是因为只有微内核可以关闭中断和执行重调度 (有很多关于这方面的异常,但它们在这里不重要)Symbian OS内核和内存模型的大部分,运行的时候都是开中断而且允许优先权抢占。因为微内核仅提供了一个简单的小片段,我们很容易决定要为了它而关闭中断和进行重调度的那个最长的执行期。

2、更好更简单的模拟。Windows下运行的Symbian OS模拟器有很多和实际设备一样的代码,这意味着这种情况下的模拟比EKA1模拟器上所做到的更真实。

3、支持单核电话。微内核允许在Symbian OS和它的PIM软件之外运行一个RTOS和它的GSM信号栈,1.3.2.4节讲述了这方面的更多细节。

 

1.3.3.3 模块性

新内核增加的模块性使得把操纵系统移植到新的ASSP更为容易了。大部分的专用处理器代码在微内核上,而且存储器和MMU的差异被限制在内存模型上。

得益于内存模型,利用直接内存模型往新的CPU结构上移植操作系统的前期步骤,以及进行了大量的调试后切换到移动或多态模型等这些工作就很容易。它允许你通过很少很简便的步骤就能移植操作系统。

 

1.3.3.4 设计上的局限性

设计实时性能在EKA2导致了两个局限性:

1.为了保证确定性的中断执行期,我们不能允许无限数量的中断服务程序绑定到一个中断资源上,而在EKA1中这样做是可能的。现在,一个中断上只绑定一个中断服务程序ISR(interrupt service routines)

2.为了保证有限的上下文转换次数,我们必须限定一个线程里最多只能有八个块,在EKA1里这个数字是没有限制的。(块是Symbian OS里内存分配的一个基本对象——第七章内存模型将讲述这方面的更多细节。)

有一点很重要,那就是并不是所有的EKA2服务都被限制为实时的,比如:内存的分配和释放就没有这样的限制。第十七章,实时性,将讨论这个问题。 

=====================================================================================

说明: 本文由Bequan翻译自Symbian Press的Symbian OS Internals: Real-time Kernal Programming一书。任何人需要转载或引用,请先通过Email(a-pangu@163.comsymbianchn@gmail.com)与Bequan联系,在获得许可后方可转载或引用,否则视为侵权行为。转载或引用时,请在文章中注明上述翻译信息。