用户线程、内核线程对应关系的三种模型

一对一模型

  • 一个用户线程唯一的对应一个内核线程(反过来不成立,一个内核线程不一定有对应的用户线程,有可能是闲置的状态)
    在这里插入图片描述
    优点:

  • 一个线程由于某种原因阻塞时,其他线程的执行不受影响

  • 可以让多线程程序在多处理器的系统上有更好的表现

缺点:

  • 许多操作系统限制了内核线程的数量,所以用户线程的数量也会收到限制
  • 许多操作系统内核线程调度的时候,上下文切换的开销比较大,导致用户线程的执行效率下降

多对一模型

  • 将多个用户线程映射到一个内核线程上,线程之间的切换由用户态的代码来实现,系统内核感受不到线程的实现方式。
    在这里插入图片描述
    优点:
  • 用户线程的建立、同步、销毁都是在用户态中完成,不需要内核的介入。所以说上下文的切换比较快。
  • 对用户线程的数量几乎没有限制。

缺点:

  • 如果其中一个用户线程阻塞,那么其他所有线程都将无法执行,因为此时内核线程也随之阻塞了。
  • 在多处理器系统上,处理器数量的增加对多对一模型的线程性能不会由明显的增加,因为一个进程的所有的用户线程都映射到一个处理器上了

多对多模型

  • 将多个用户线程映射到多个内核线程上。
  • 由线程库负责在可用的可调度实体上调度用户线程,这使得线程的上下文切换非常快,因为避免了系统调用。
    在这里插入图片描述

优点:

  • 一个线程的阻塞不会导致所有的线程阻塞,因为此时还有别的内核线程调度来执行。
  • 多对多模型对用户线程的数量没有限制
  • 在多处理器的模型中,多对多模型的线程也能得到一定的性能提升,但提升的幅度不如一对一的大
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值