线程的实现方式(用户线程与内核线程的区别)

线程的实现可分为两大类,用户级线程(user-levelthread,ULT)和内核级线程(kernel-levelthread,KLT)。后者又称为内核支持的线程或轻量级进程。

(1)用户级线程

在一个纯粹的用户级线程软件中,有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。

使用用户级线程而不是内核级线程的优点有:

  • 线程切换不需要内核态特权,进程并不需要为了线程管理而切换到内核态
  • 可以为应用程序量身定做调度算法而不扰乱底层的操作系统调度程序
  • 用户级线程可以在任何操作系统中运行,不需要对底层内核进行修改以支持用户级线程

相比内核级线程,用户级线程有两个明显的缺点:

  • 许多系统调用都会引起阻塞,当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞
  • 在纯粹的用户级线程策略中,一个多线程应用程序不能利用多处理技术

(2)内核级线程

在一个纯粹的内核级线程软件中,有关线程管理的所有工作都是由内核完成的,应用程序部分没有进行线程管理的代码,只有一个到内核线程设施的应用程序编程接口(API)。

该方法克服了用户级线程方法的两个基本缺陷:内核可以同时把同一个进程的多个线程调度到多个处理器中;如果进程中的一个线程被阻塞,内核可以调度同一个进程中的另一个线程。

相比用户级线程它的主要缺点是:用户级线程的线程切换需要少量的机器指令,而内核级线程需要完整的上下文切换,修改内存映像,使高速缓存失效,这导致了若干数量级的延迟。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值