上下文切换

作者: 墨白历险记 | 来源:发表于2019-07-02 15:37 被阅读0次

任务从保存到再加载的过程就是一次上下问切换.

概述

单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制.
CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务.
但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以加载这个任务的状态.

因为线程创建和上下文切换有开销,所以在执行速度上有时反而会比串行执行更慢.

如何减少上下文切换

  • 无锁并发编程
    • 多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据.
  • CAS算法
    • Java的Atomic包使用CAS算法来更新数据,而不需要加锁.
  • 使用最少线程
    • 避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态.
  • 协程
    • 在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换.

相关文章

  • CPU 上下文切换(上)

    根据任务的不同,CPU 的上下文切换就可以分为几个不同的场景 进程上下文切换 线程上下文切换 中断上下文切换 小结...

  • 2018-06-11-vmstat

    '''用Lmbench3测量上下文切换的时长 vmstat测量上下文切换次数'''

  • CPU性能分析--上下文切换

    内容提要 CPU上下文切换都做了哪些事? CPU上下文切换都有哪些场景? 系统调用上下文切换都做了哪些事? 进程上...

  • 监控CPU

    CPU 上下文切换 根据任务的不同,CPU 的上下文切换就可以分为几个不同的场景,也就是进程上下文切换、线程上下文...

  • 计算机组成原理

    进程上下文切换由以下4个步骤组成: 决定是否作上下文切换以及是否允许作上下文切换。包括对进程调度原因的检查分析,以...

  • Java并发编程-并发编程带来的问题

    并发编程带来的问题 上下文切换 多线程不一定快 如何减少上下文切换 减少上下文切换的方法有无锁编程、CAS算法、使...

  • 并发编程的挑战

    上下文切换 上下文切换发生于计算机CPU从一个进程或线程切换到不同的进程或线程。 上下文切换允许一个CPU处理多个...

  • 进程切换与系统调用(中断和异常)切换哪个耗时耗资源多?

    模式切换不同于进程上下文切换,它进行的应该是模式之间的上下文切换切换模式并不会发生进程上下文切换,因为用户和内核都...

  • 并发编程挑战

    影响并发原因 Lmbench3 上下文切换时长vmstat 上下文切换次数vmstat 1cs 表示次数 1、...

  • java并发编程的艺术笔记第一章——并发编程的挑战

    1、并发编程的挑战来自哪里? 1.1、上下文切换 1.2、死锁 1.3、资源限制的挑战 1.1、上下文切换 单核处...

网友评论

    本文标题:上下文切换

    本文链接:https://www.haomeiwen.com/subject/vwzzcctx.html