单核多线程、多核多线程

1.时间片

    多任务系统往往需要同时执行多个任务,任务数往往大于系统的处理器数。然而,一个处理器同时只能执行一个任务(线程),那么如何让用户感觉这些任务(线程)正在同时进行呢?操作系统的设计者巧妙地利用了时间片。
    时间片是处理器分配给各个任务(线程)的时间。
 

2.多线程

2.1 线程上下文

    线程上下文 是 指某一时间点处理器的 寄存器 和 计数器 中的内容。
 

2.2 线程上下文切换

    处理器通过 时间片分配算法 来循环执行任务(线程)。在两个时间片之间需要切换线程上下文。
    由于时间片非常短,所以处理器需要频繁地切换线程上下文。
 

2.3 单核处理器

    在单核处理器中,多个线程在一个处理器上一个接一个执行(并发)。如果两个线程各自花费10us执行,那么在1核处理器系统上,净时间为20us。
    在单核处理器中,多线程一定存在线程上下文切换。
 

2.4 多核处理器

    在多核处理器中,多个线程在不同的处理器上同时执行(并行)。如果两个线程各自花费10us执行,那么在2核处理器系统上,净时间为10us。
    在多核处理器中,多线程不一定存在线程上下文切换,但当线程数大于处理器数时,就一定存在线程上下文切换。
 

2.5 多线程的缺点

    线程创建开销、线程上下文切换开销
 

3.单核处理器多线程的意义

    举一个例子来说明问题:在单核处理器中,需要执行4个任务,那么有如下两种执行方式:
在这里插入图片描述
    第一种方式,存在很多次线程上下文切换。第二种方式,只有很少几次线程上下文切换。我们知道线程上下文切换是很消耗性能的,那么理论上是第二种方式更快。如果确实是这样,那么单核处理器多线程(第一种方式)还有意义嘛?

    我们需要清楚的认识到多线程会提高效率到底指的是什么?实际上,多线程会提高效率是跟 I/O 操作相关。I/O 操作包括磁盘 I/O、网络 I/O。
    以磁盘 I/O 来说,实际上当处理器需要磁盘中的某些文件时,并不是直接向磁盘要数据,而是交给 DMA 来完成磁盘的数据读取,操作如下:
在这里插入图片描述
    从上图我们可以发现处理器在将指令告诉 DMA 之后就处于空闲状态了。如果磁盘读取的数据较大,则会长时间停留在第3步。那么,处理器空闲下来的时间,为啥不好好利用起来呢?因此,就出现了多线程,当一个任务被执行到第3步时,此时处理器是空闲的,那么我们就切换线程,让处理器执行其他任务(线程),从而提高整体的完成效率。
 
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WarmOrange0

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值