线程的模型

来源:互联网 发布:比价商城源码 编辑:程序博客网 时间:2024/06/07 18:49

1、内核线程:直接由操作系统内核支持的线程。用户线程不能直接调用系统内核线程,出现一个轻量级进程供用户调用,该轻量级轛程由操作系统创建,运行,调度,切换,映射到cpu上。是1:1的模型如下图所示:


其中P是用户的进程,由多个LWP(轻量级进程)同时执行,KLT(内核线程)。轻量级线程与内核线程是1:1的关系。

因此,LWP的创建 、执行、调度、映射到cpu上 、进程的切换都需要操作系统的支持,因此会很消耗操作体统的资源。

2、用户线程

用户线程狭义上讲,用户线程完全建立在用户空间的线程库上,系统的内核完全不能感知线程的存在,用户线程的创建、切换、同步、映射完全由用户编写编写程序,因此很难实现。1:N模型如下图所示:


3、用户线程与轻量级进程混合实现(N:M多对多模型)



这种模型可以减少系统资源的耗费。用户线程的创建、切换、析构等操作很廉价,用户线程可以与轻量级进程相对应,因此内核线程可以对用户的线程进行调度以及映射到cpu上执行。大大提高的系统的使用效率以及资源的最大化使用。


对于java线程的实现还是要看操作系统自身线程的实现策略;

对于sun JDK来说无论是windows还是linux,使用的都是1:1模型,一个java的线程对应一个轻量级进程来实现


0 0
原创粉丝点击