用户线程和内核线程概述与总结

本文介绍了用户级线程和内核级线程的概念、区别以及四种线程模型(一对一、多对一、混合和多对多模型)。用户线程在用户空间实现,调度不需内核参与,但在多处理器系统中受限;内核线程由内核管理,支持多处理器并行执行,但上下文切换开销较大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程的实现可以分为两类:用户级线程(User-Level Thread)和内核线线程(Kernel-Level Thread),后者又称为内核支持的线程或轻量级进程。

用户线程:指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心。

  • 用户线程在用户空间中实现,内核并没有直接对用户线程进程调度,内核的调度对象和传统进程一样,还是进程(用户进程)本身,内核并不能看到用户线程,内核并不知道用户线程的存在。

  • 不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

  • 内核资源的分配仍然是按照进程(用户进程)进行分配的;各个用户线程只能在进程内进行资源竞争

  • 用户级线程内核的切换由用户态程序自己控制内核切换(通过系统调用来获得内核提供的服务),不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu。

  • 每个用户线程并不具有自身的线程上下文。因此,就线程的同时执行而言,任意给定时刻每个进程只能够有一个线程在运行,而且只有一个处理器内核会被分配给该进程。

优点: 

  1.  调度无需内核参与 
  2.  不支持线程的OS中也能实现 
  3. 线程创建、销毁、切换、管理的代价比内核线程少得多 
  4. 每个进程可定制自己的调度算法,线程管理灵活 
  5. 线程能够利用的表空间和堆栈空间比内核级线程多

缺点: 

  1. 资源调度按照进程进行,多个处理器时,同一个进程中的线程只能在同一个处理器下分时复用 
  2. 同一进程中通常只能同时有一个线程在运行,否则如果有一个线程使用了系统调用而阻塞,那
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值