操作系统(5)线程

传统的进程是程序执行流的最小单位,但是有的进程需要同时做很多的事情:比如打开QQ,你可以打视频的同时发文件,而这些动作都是同时发生的,但是传统的进程中必须一条一条代码来执行,很明显不能实现同时完成这些动作,所以需要引入线程!
引入线程后,线程成为了程序执行流的最小单位。我们可以线程理解为轻量级进程,且线程是一个基本的CPU执行单元,也是程序执行流的最小单位
同时,在引入线程之后,不仅进程之间可以并发,进程内的各个线程之间也可以并发,从而使得一个进程内也可以并发处理各种任务。
(进程并发:同时在电脑上运行QQ、微信、游戏
线程并发:QQ里面打视频、发文件;微信里面聊天、看图片;)
并且引入线程之后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)在这里插入图片描述
在这里插入图片描述
线程的实现方式

  • 用户级线程(User-Thread,ULT)
    用户级线程由应用程序通过线程库实现。所有线程管理工作都由应用程序负责(包括线程切换)
    用户级线程中,线程切换可以在用户态下即可完成,无需系统干预
    在用户看来,是有多个线程。但是在操作系统看来,并不能意识到线程的存在。(用户级线程对用户不透明,对操作系统是透明的)
    可以这样理解用户级线程就是从用户视角能看到的线程
  • 内核级线程(Kernel-Level Thread,KLT,“又称内核支持线程”)
    内核级线程的管理工作由操作系统完成。线程调度、切换等工作都有内核来负责,因此内核级线程的切换必须在核心态下才能完成
    可以这样理解,内核级线程就是从从操作系统内核视角才能看到的线程!
    重点:操作系统只看得见内核级线程,因此只有内核级线程才是处理机分配的单位!

疑问:
为什么要分用户级线程和内核级线程??
我的理解是用户级线程只能是并发的,因为内核并不能意识到用户级线程,那么就不能给其分配更多的资源,而内核级线程是可以被内核发现的,内核可以给他分配更多的资源,让内核级线程可以并行的工作,提高了对多处理器机器的资源利用,而用户级线程减少了操作系统在切换状态时的开销。
(如果理解的不对,欢迎纠正)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值