一文梳理内核级线程与用户级线程

参考

先了解一下:Linux的用户空间与内核空间

内核空间:Linux操作系统和驱动程序运行的空间

用户空间:应用程序运行在用户空间

内核级线程KLT, Kernel-Level-Threads

线程管理所有的工作都由OS内核来做,OS提供了一个程序设计接口的API,供开发者使用KLT,OS直接调度KLT。

在同一个进程里面,控制权从一个线程传到另外一个线程时需要模式切换,系统开销较大。

用户级线程ULT, User-Level-Threads

 

用户空间运行的线程库,提供多线程的开发和运行环境,线程管理的所有工作都在应用程序完成,内核没有意识到线程的存在。

所有线程管理数据结构均在进程的用户空间中,线程切换不需要内核模式,能节省模式切换开销和内核的宝贵资源。

但是一个ULT发生堵塞,整个进程将堵塞。

Jacketing技术

把堵塞式系统调用改造成非阻塞式系统,jacketing程序检查使用情况,以决定是否执行进程切换或传递控制权给下一个线程。

用户态到内核态的转换

用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖无为

感谢你们的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值