预计阅读本页时间:-
12.3 Symbian操作系统中的进程和线程
Symbian操作系统是一个多任务操作系统,像其他操作系统那样,使用了进程和线程的概念。然而,Symbian操作系统的内核结构以及它对资源稀缺性的处理方式影响了它看待这些多任务对象的方式。
12.3.1 线程和纳线程
对于多任务,Symbian操作系统更倾向于线程,并且是建立在线程概念上的,而不是把进程作为多任务的基础。线程构成了多任务的中心单元。操作系统简单地把一个进程看成是具有一个进程控制块和某个内存空间的线程的集合。
Symbian操作系统对于线程的支持是基于纳线程的纳核。纳核仅提供简单的线程支持,每个线程是由一个基于纳核的纳线程来支持的。纳核为纳线程提供调度、同步(线程间通信)以及计时服务。纳线程运行在特权模式下,需要一个栈来存储它们的运行时刻环境数据。纳线程不能运行在用户态。这就意味着操作系统能够对每个纳线程保持紧密的控制。每个纳线程需要一个数据的极小集来运行:实质上就是它的栈以及栈的大小。操作系统保持对其他一切的控制,比如每个线程使用的代码,以及在运行时刻的栈上存储线程的上下文。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
同进程具有状态一样,纳线程也具有线程状态。Symbian操作系统的纳核使用的模型在基本模型中增加了一些状态。除了基本状态以外,纳线程还可以处于如下状态:
·挂起。这就是当一个线程挂起另一个线程时的状态,与等待状态不同,在等待状态下一个线程是被某个上层对象阻塞(例如,一个Symbian操作系统线程)。
·快速信号量等待。处于这个状态的线程正在等待一个快速信号量(哨兵变量的一种)得到信号通知。快速信号量是纳核级别的信号量。
·DFC等待。处于这种状态的线程正在等待一个延迟的函数调用或者要被加入到DFC队列中的DFC。DFC用在设备驱动实现中。它们代表对于内核的调用,可被Symbian操作系统内核层排入队列并且调度执行。
·休眠。休眠线程正在等候特定长度的时间过去。
·其他。还有一种通用状态,是当开发人员为纳线程实现额外的状态时使用的。当开发人员为新的手机平台(称作个性层)扩展纳核功能时使用该状态。进行这个工作的开发人员也必须实现这些状态与他们的扩展实现之间的来回跳转。
下面将纳线程思想与传统进程思想作比较。纳线程实际上是一个完全轻量级的进程。它具有极小的上下文,当纳线程进出处理器时进行切换。每个纳线程和进程一样具有一个状态。对于纳线程来说,关键是纳核对它们的紧密控制,以及构成每个纳线程上下文的极小数据集合。
Symbian操作系统线程依赖于纳线程,内核增加除纳核提供的功能之外的支持。标准程序使用的用户模式线程由Symbian操作系统线程执行。每个Symbian操作系统线程包含一个纳线程并且添加自己的运行时刻栈到纳线程使用的栈中。Symbian操作系统线程可以通过系统调用在内核模式下进行操作。Symbian操作系统也能为执行增加例外处理以及退出信号。
Symbian操作系统线程在纳线程实现之上实现自己的状态集。由于Symbian操作系统线程将一些功能性增加到纳线程实现中,因此新的状态反映了构成Symbian操作系统线程的新的思想。Symbian操作系统添加了Symbian操作系统线程可以进入的新的七种状态,来关注Symbian操作系统线程可能出现的特殊阻塞条件。这些特殊状态包括在信号量上的等待和挂起(正常的)、互斥变量以及条件变量。由于Symbian操作系统的实现处于纳线程之上,因此这些状态从某种方面上来说是由纳线程状态实现的,通常都是用不同的方式使用挂起的纳线程状态。