上下文切换

作者&投稿:粱翔 (若有异议请与网页底部的电邮联系)
~

锁的竞争太激烈会导致锁升级为重量级锁,未抢到锁的线程会进入monitor,而monitor依赖于底层操作系统的mutex lock,获取锁时会发生用户态和内核态之间的切换,所以会发生进程间的上下文切换。

线程间上下文切换就是一个工作的线程被另外一个线程暂停,另外一个线程占用了处理器开始执行任务的过程 。系统和 Java 程序自发性以及非自发性的调用操作,就会导致上下文切换,从而带来系统开销。 线程越多,系统的运行速度不一定越快 。那么我们平时在并发量比较大的情况下,什么时候用单线程,什么时候用多线程呢? 一般在单个逻辑比较简单,而且速度相对来非常快的情况下,我们可以使用单线程 。例如Redis,从内存中快速读取值,不用考虑 I/O 瓶颈带来的阻塞问题。 而在逻辑相对来说很复杂的场景,等待时间相对较长又或者是需要大量计算的场景,我建议使用多线程来提高系统的整体性能 。例如,NIO 时期的文件读写操作、图像处理以及大数据分析等。

上下文都包括哪些内容呢?具体来说,它包括了寄存器的存储内容以及程序计数器存储的指令内容。CPU 寄存器负责存储已经、正在和将要执行的任务,程序计数器负责存储 CPU 正在执行的指令位置以及即将执行的下一条指令的位置

结合图示可知,线程主要有“新建”(NEW)、“就绪”(RUNNABLE)、“运行”(RUNNING)、“阻塞”(BLOCKED)、“死亡”(DEAD)五种状态。到了 Java 层面它们都被映射为了 NEW、RUNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINADTED 等 6 种状态。

如果是监视某个应用的上下文切换,就可以使用 pidstat 命令监控指定进程的 Context Switch 上下文切换

至于系统开销具体发生在切换过程中的哪些具体环节,总结如下:




进程切换的进程切换步骤
进程上下文切换由以下4个步骤组成:1)决定是否作上下文切换以及是否允许作上下文切换。包括对进程调度原因的检查分析,以及当前执行进程的资格和CPU执行方式的检查等。在操作系统中,上下文切换程序并不是每时每刻都在检查和分析是否可作上下文切换,它们设置有适当的时机。(2)保存当前执行进程的上下文。这...

时间片轮转的时间片长度的影响
时间片轮转调度中特别需要关注的是时间片的长度。从一个进程切换到另一个进程是需要一定时间的--保存和装入寄存器值及内存映像,更新各种表格和队列等。假如进程切换(process switch) - 有时称为上下文切换(context switch),需要5毫秒,再假设时间片设为20毫秒,则在做完20毫秒有用的工作之后,CPU将花...

如何理解进程调度中的时间片切换策略
如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。结束的进程会从运行队列中清除,剩下的时间片随进程结构的清除而清除,并不影响到其他进程的调度。时间片由操作系统内核的调度程序分配给每个进程。首先,内核会给每个进程分配相等的初始时间片,然后每个进程轮番地执行相应的时间,当所有进程都处于...

线程数量怎么设置才最合理
上下文切换 首先在单核CPU中,也是可以处理多线程的,只是CPU通过给每个线程分配CPU时间片来处理的,假设我们有A、B两个线程执行任务,CPU在非常短的时间(时间片)执行A线程,然后再执行B线程,如此往复执行,不停的切换(切换时保持之前的状态),由于时间片的间隙非常短,让我们感觉是同时执行的,即...

Linux性能度量标准
10) 上下文切换 :在系统上发生线程之间切换的数量。 大量上下文切换如果与大量中断相关,则可能是驱动程序或应用程序出现问题 。上下文切换通常是不利的,因为每一次上下文切换都会导致CPU缓存被刷新,但是有些上下文切换是必要的。11) 中断 :中断包含硬中断与软中断。硬中断对系统性能有更加不利的...

mmap简单理解
基于传统的IO方式,底层实际上通过调用 read() 和 write() 来实现。通过 read() 把数据从硬盘读取到内核缓冲区,再复制到用户缓冲区;然后再通过 write() 写入到 socket缓冲区 ,最后写入网卡设备。整个过程发生了 4次用户态和内核态的上下文切换 和 4次拷贝 ,具体流程如下:那么,这里指的 用户...

Linux 进程管理之进程调度与切换
有关调度相关的结构保存在 task_struct 中,如下:active_mm 是为内核线程而引入的,因为内核线程没有自己的地址空间,为了让内核线程与普通进程具有统一的上下文切换方式,当内核线程进行上下文切换时,让切换进来的线程的 active_mm 指向刚被调度出去的进程的 active_mm(如果进程的mm 域不为空,则其...

进程调度的上下切换
数据结构则包括PCB等在内的所有与执行该进程有关的管理和控制用表格、数组、链等。在发生进程调度时系统要做进程上下文切换。在进程(上下文)中切换的步骤n保存处理器的上下文,包括程序计数器和其它寄存器n用新状态和其它相关信息更新正在运行进程的PCBn把原来的进程移至合适的队列-就绪、阻塞n选择另一个...

什么是实时系统
一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。所谓“实时”,是表示“及时”,而实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。实时系统(...

计算机作业系统的相关知识?
3***进行程序上下文切换—个程序的上下文***context***包括程序的状态、有关变数和资料结构的值、机器暂存器的值和PCB以及有关程式、资料等。一个程序的执行是在程序的上下文中执行。当正在执行的程序由于某种原因要让出处理机时,系统要做程序上下文切换,以使另一个程序得以执行。当进行上下文切换时点统要首先检...

久治县13279829394: 上下文切换 - 搜狗百科
兴勇瑞达: 多线程会共同使用一组计算机上的CPU,而线程数大于给程序分配的CPU数量时,为了让各个线程都有执行的机会,就需要轮转使用CPU.不同的线程切换使用CPU发生的切换数据等就是上下文切换.

久治县13279829394: 进程调度中,上下文切换是什么意思?切换的什么? -
兴勇瑞达: 进程中断时,把该进程中断之前的状态信息保存下来叫做“上文”,“下文”是即将要恢复调用进程的状态信息,切换是进程的调度,从一个进程调度到另一个进程

久治县13279829394: 上下文切换的性能影响 -
兴勇瑞达: 上下文切换会对性能造成负面影响.一些上下文切换相对其他切换而言更加昂贵;其中一个更昂贵的上下文切换是跨核上下文切换(Cross-Core Context Switch).一个线程可以运行在一个专用处理器上,也可以跨处理器.由单个处理器服务的线程都有处理器关联(Processor Affinity),这样会更加有效.在另一个处理器内核抢占和调度线程会引起缓存丢失,作为缓存丢失和过度上下文切换的结果要访问本地内存.总之,这称为“跨核上下文切换”.

久治县13279829394: 什么叫cpu上下文切换? -
兴勇瑞达: 多核CPU为了给CPU留有处理时间产生的线程切换.称为CPU上下文切换.

久治县13279829394: 操作系统中,进程调度器的功能是什么? -
兴勇瑞达: 功能:1、记录系统中所有进程的执行情况;2、选择占有处理机的进程;3、进行进程上下文切换.

久治县13279829394: linux怎么查看端口的上下文 -
兴勇瑞达: LINUX查看指定进程的Context Switch上下文切换:pidstat Context Switch(CS)上下文切换是cpu性能中的一个重要指标,context switch过高会导致CPU像个搬运工,频繁在寄存器和运行队列之间奔波 ,更多的时间花在了线程切换,而...

久治县13279829394: 什么是进程?什么是线程?他们之间有什么关系? -
兴勇瑞达: 什么是系统进程 进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元.对于操作系统而言,其调度单元是线程.一个进程至少包括一个线程,通常将该线程称为主线程....

久治县13279829394: 嵌入式系统词汇 -
兴勇瑞达: 嵌入式系统词汇非常多,而且常用.下面就由福州卓跃教育继续为大家介绍. CPU(中央处理器) Central Processing Unit. 处理器中执行指令的那一部分. compiler(编译器) 把高级编程语言程序转换到只有特定的处理器能了解和执行的机器...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网