计算机操作系统学习之用户级/内核级线程和多线程模型

一.概念

  • 有的进程可能需要“同时”做很多事情,而传统进程只能串行的执行一系列程序。为此,引入了线程,来增加并发度
  • 可以把线程理解为轻量级进程
  • 线程是一个基本的CPU执行单元,也是程序执行流的最小单元

二.线程带来的变化

  • 进程只是资源分配的基本单位,线程成为调度的基本单位
  • 各线程间也可以并发,提高了并发性
  • 线程间并发,如果是同一进程内的线程,则不需要切换进程环境,系统开销减小

三.线程的属性

  • 线程是处理机调度的单位
  • 多CPU计算机中,各个线程可以占用不同的CPU
  • 每个线程都有一个线程控制块(TCB)
  • 线程也有运行,就绪,阻塞三种基本状态
  • 线程几乎不拥有系统资源(因为引入线程以后,进程是资源分配的基本单位,线程只是处理机调度的基本单位)
  • 同一进程的不同线程共享进程的资源
  • 由于共享内存空间地址,同一进程内的线程间进行通信甚至不需要系统干预
  • 同一进程中的线程切换,不会引起进程切换
  • 不同进程中的线程切换,会引起进程切换

四.用户级线程和内核级线程

1.用户级线程

在这里插入图片描述

  • 用户级线程由应用程序通过线程库实现
  • 所有线程管理工作应用程序负责
  • 用户级线程,线程切换可以在用户态下完成,无需操作系统干预
  • 在用户看来,是有多个线程,但是操作系统内核并意识不到用户级线程的存在

2.内核级线程

在这里插入图片描述

  • 内核级线程的管理工作都由操作系统内核完成
  • 因此内核级线程的切换必须在核心态下才能完成
  • 当有多个处理机时,一个进程的多个线程可以同时执行
  • 内核级线程是操作系统内核可以感知到的

3.两者的关联性

  • 它们之间的差别在于性能
  • 内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知
  • 用户级线程的创建、撤消和调度不需要OS内核的支持
  • 用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断
  • 只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度
  • 用户级线程程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序

五.线程的实现方式

  • 同时支持内核级线程和用户级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m个内核级线程(n>m)
  • 由于操作系统只感知得到内核级线程,因此只有内核级线程是处理机分配的单位
    eg:在这里插入图片描述

上图中,该进程由两个内核级线程和三个用户级线程组成。在用户看来,这个进程中有三个线程,但因为只有两个内核级线程,即使该进程在一个四核处理机上运行,也最多只能分配到两个核,最多有两个用户级线程并行执行。

六.多线程模型

1.多对一模型

在这里插入图片描述

  • 多个用户级线程映射到一个内核级线程
  • 优点
    用户级线程的切换可以直接在用户态实现,不用切换到核心态,效率高
  • 缺点
    当一个用户级线程被阻塞时,整个进程都会被阻塞(因为多对一,对操作系统而言它只能看到一个内核级进程,当一个用户级线程阻塞了,该内核级进程也就阻塞了,操作系统就会去处理别的内核级线程),并发度不高。多个线程不可在多核处理机上并行运行。

2.一对一模型

在这里插入图片描述

  • 一个用户级线程映射到一个内核级线程
  • 优点
    当一个线程阻塞时,别的线程还可以继续执行,并发能力强,多线程可在多核处理机上并行执行
  • 缺点
    一个用户进程(注意这是进程)会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,线程管理的成本高,开销大。

3.多对多模型

在这里插入图片描述

  • n个用户级线程映射到m个内核级线程(n>m)
  • 克服了多对一的并发性不高的问题,也克服了一对一开销太大的缺点

七.小结

  • 线程就是轻量级进程,就是把进程细分了
  • 有了线程以后,线程就成为了调度的基本单位
  • 用户级线程就是用户视角下的线程,与内核牵扯不是很大
  • 内核级线程是操作系统内核视角下的线程,是由内核进行管理的
  • 只有内核级线程是处理机分配的单位,因为操作系统看不到用户级线程
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值