1.内核支持线程的实现
内核支持线程直接利用系统调用为它服务,控制简单。系统在创建一个新进程时,便为它分配一个任务数据区PTDA(Per Task Data Area),其中包括若干个线程控制块TCB空间,这些TCB中的信息被保存在内核空间中。内核支持线程的创建、撤消、调度和切换均与进程的相类似。
2.用户级线程的实现
用户级线程是在用户空间实现的,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。
1)运行时系统
运行时系统所谓“运行时系统”,实质上是用于管理和控制线程的函数(过程)的集合,其中包括用于创建和撤消线程的函数、线程同步和通信的函数以及实现线程调度的函数等。正因为有这些函数,才能使用户级线程与内核无关。运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口。用户级线程是在用户空间实现的,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。
2)内核控制线程
内核控制线程这种线程又称为轻型进程LWP。每一个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据结构(如TCB)。它们也可以共享进程所拥有的资源。LWP可通过系统调用来获得内核提供的服务,这样,当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。这种线程实现方式就是组合方式。由LWP实现了在内核与用户级线程之间的隔离,从而使用户级线程与内核无关。
利用轻型进程作为中间系统