线程的实现

线程的实现方式
1.内核线程KST
依赖于内核,利用系统调用由OS内核在内核空间完成创建、撤销、切换等进程工作(时间片分配给线程 ,所以多线程的进程获得更多CPU时间)
KST的优缺点

  • 多处理器系统下可实现多线程并行;

  • 一个线程发起系统调用而阻塞,不会影响其他线程的运行;

  • 线程切换开销远小于进程切换

  • 内核本身也采用多线程技术可提高系统执行速度和效率

  • BAD——用户态运行线程,调度和管理线程则是内核态,模式的切换开销大。2.用户线程ULT
    无需利用系统调用,不依赖于OS核心,进程利用线程库函数创建、同步、调度和管理控制用户线程。
    调度由应用软件内部执行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,速度比KST快。
    UTL优缺点:

  • 用户线程的维护由应用进程完成;内核不了解用户线程的存在;线程切换不用内核特权;

  • 用户线程调度算法可针对应用优化;

  • 多线程的实现与平台无关

  • 一旦系统调用引起进程阻塞,则整个进程的所有线程都不能执行;

  • 以进程为单位分配CPU,所以在多处理器系统中没有优势;
    3.组合方式
    把用户级线程和内核支持线程两种方式进行组合,在组合方式线程系统中,内核支持多个内核支持线程的建立、调度和管理。同时也允许用户应用程序建立、调度和管理用户线程。

- List item

线程的实现
1.内核线程的实现
内核支持的线程直接利用系统调用,线程控制很简单
(1)给创建的新进程分配一个任务数据区PTDA,存放其线程的TCB
(2)信息保存在内核空间中
(3)操作TCB控制线程调度和切换,花费较小
2.用户级线程的实现
用户级线程需借助某种形式的中间系统取得内核服务,用户程序复杂
(1)运行时系统:管理和控制线程的函数/过程集合
所有函数驻留在用户空间上;
线程切换由切换过程实现,线程的CPU状态保存在自己的堆栈中,切换不需要转入内核态执行;
根本上操作系统资源还是要由内核做。用户线程的所有要求给了运行时系统,由它通过相应的系统调用获得系统资源。

(2)内核控制线程,轻型进程LWP
在这里插入图片描述

线程的创建和终止

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值