CPU 上下文切换之理论篇(上)

  • 1.什么是上下文?
    答:上下文是由CPU寄存器和程序计数器组成

  • 2.CPU为什么进行上下文切换?
    答:CPU上下文切换,是保证Linux系统正常工作的核心功能之一

  • 3.什么是CPU上下文切换?
    答:CPU上下文切换,就是先把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器中,最后跳转到程序计数器所指的新位置,运行任务

  • 4.什么是cpu寄存器?
    答:cpu寄存器是cpu内置很小、但速度极快的内存

  • 5.什么是程序计数器?
    答:是用来存储CPU正在执行的指令位置、或者即将执行的下一条指令位置

  • 6.cpu保存的上下文会存储在哪里?
    答:存储在系统内核中

  • 7.操作系统管理的任务是什么?
    答:进程和线程

  • 8.cpu上下文切换有哪些场景?
    答:进程上下文切换、线程上下文切换、中断上下文切换

  • 9.ring0和ring3分别是什么?
    答:ring0是内核态、ring3是用户态

  • 10.特权模式切换是通过什么进行完成的?
    答:系统调用

  • 11.特权模式切换的步骤是什么?
    答:CPU寄存器里原来的用户指令需要先保存起来,为了执行内核态代码,CPU寄存器需要更新为内核态指令的新位置,最后跳转到内核运行内核任务

  • 12.一次特权模式切换发生了几次CPU上下文切换?
    答:2次

  • 13.什么是进程上下文切换?
    答:是指从一个进程切换到另一个进程

  • 14.进程上下文切换与特权模式切换有什么区别?
    答:进程上下文切换,是指一个进程切换到另一个进程
    特权模式切换是一直运行同一个进程

  • 15.什么时候会切换进程上下文?
    答:只有在进程调度时,才需要切换上下文

  • 16.进程在什么时候才会被调度到 CPU 上运行?
    答:
    (1)当某个进程时间片耗尽
    (2)进程在系统资源不足时
    (3)当进程通过sleep主动挂起时
    (4)当有优先级更高的进程运行时

  • 17.什么是进程?
    答:进程是调度的基本单位

  • 18.什么是线程?
    答:线程是资源拥有的基本单位

  • 19.线程与进程最大的区别是什么?
    答:
    (1)当进程只有一个线程时,可以认为进程等于线程
    (2)当进程拥有多个线程时,这些线程会共享相同的虚拟内存和全局变量等资源。这些资源上下文切换时是不需要修改的

  • 20.线程上下文切换有哪几种情况?
    答:前后线程不属于同一进程、前后线程属于同一进程

  • 21.什么是中断上下文切换?
    答:为了快速响应硬件事件,中断处理会打断进程的正常调度和执行


注:有哪些减少上下文切换的技术用例?
答:数据库连接池(复用连接)、合理设置应用的最大进程,线程数、直接内存访问DMA、零拷贝技术

原文地址:https://blog.51cto.com/13229718/2431541

时间: 2024-11-01 11:43:41

CPU 上下文切换之理论篇(上)的相关文章

二进制序列化与反序列化。Net理论篇上(一)

对于从事底层信息通信的同行而言,序列化及反序列化想必都是耳熟能详的.脱离很多书面的标准概念,就个人理解而言,序列化和反序列化的本质其实为了找到一种公共的通用的数据格式达到一个无界的境界,正如方言对于普通话,各国语言对于英语.而我们需要做的是去发现这么一种具体的格式,并且完成一个相对对称的特性,如同压缩跟解压缩. 常规的序列化和反序列化的格式通常有如下几种:binary,JSON, XML和SOAP等. 当然有其他的,这个只能恕我孤陋寡闻了.通常我们会选取短小精悍的JSON 和更具通用的XML,当

03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)

一.关于上下文切换的几个为什么 1.上下文切换是什么? 上下文切换是对任务当前运行状态的暂存和恢复 2.为什么CPU要进行上下文切换 当多个进程竞争CPU的时候,为了保证每个进程可以公平被CPU调用,采用处理任务按时间分片的机制,当某个时间片上的任务达到最后的时间点,那么这个任务就好被挂起,处理下一个任务,由于CPU处理的速度非常快,在人类感知上认为是并行处理的,实际是伪并行,同一时间只有一个任务在运行处理. 3.上下文切换主要消耗什么资源,为什么说上下文切换次数过多不可取? 浪费太多时间在切换

03讲基础篇:经常说的CPU上下文切换是什么意思(上)

1.多任务竞争CPU,cpu变换任务的时候进行CPU上下文切换(context switch).CPU执行任务有4种方式:进程.线程.或者硬件通过触发信号导致中断的调用.2.当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容.因此,上下文是指某一时间点CPU寄存器(CPU register)和程序计数器(PC)的内容, 广义上还包括内存中进程的虚拟地址映射信息.3.上下文切换的过程:(1)记录当前任务的上下文(即寄存器和计算器等所有的状态):(2)找到

CPU上下文切换(上)

CPU上下文切换 ? 我们经常说的平均负载和cpu升高没有直接的关系,在不同的场景cpu升高会导致系统负载,但是系统负载不一定是cpu升高导致的. 一.系统负载过高的三种场景 cpu密集型进程,使用大量cpu会导致平均负载升高,此时这两者是一致的. io密集型进程,等待io也会导致平均负载升高,但cpu不一定很高. 大量等待cpu的进程调度也会导致平均负载升高,此时cpu使用率也会比较高. ? 大量进程竞争cpu(也就是上面的第三个场景),往往是被忽略的,cpu虽然没有使用,只是在竞争,也会发生

Linux性能优化从入门到实战:03 CPU篇:CPU上下文切换

??linux操作系统是将CPU轮流分配给任务,分时执行的.而每次执行任务时,CPU需要知道CPU寄存器(CPU内置的内存)和程序计数器PC(CPU正在执行指令和下一条指令的位置)值,这些值是CPU执行任务所依赖的环境,也就是CPU上下文. ??CPU上下文切换,就是把前一个任务的CPU上下文(CPU寄存器和程序计数器)保存起来,然后加载入新任务的上下文到CPU寄存器和程序计数器中,最后跳转到程序计数器所指的位置,运行新任务. ??保存下来的上下文会在系统内核中,并在任务重新调度执行时再次加载进

动态路由协议之OSPF理论篇(上)

OSPF路由协议基本原理 解决RIP的瓶颈--15跳数 OSPF路由协议总述(知识点纲要) 四种路由类型:DR.BDR.ABR.ASBR 五大区域:骨干区域.标准区域.末梢区域.纯末梢区域.非纯末梢区域 五大数据包类型:Hello.DBD.LSR.LSU(包含多个LSA).LSACK 六种LSA:Type1.Type2.Type3.Type4.Type5.Type7 七个状态:Down.Init.2-Way.Exstart.Exchange.Loading.Full 一.网关协议 1.内部网关协

《JVM调优实战-理论篇》

1 理论篇1.1 多功能养鱼塘-JVM内存大鱼塘O(可分配内存): JVM可以调度使用的总的内存数,这个数量受操作系统进程寻址范围.系统虚拟内存总数.系统物理内存总数.其他系统运行所占用的内存资源等因素的制约.小池塘A(堆内存):JVM运行时数据区域,它为类实例和数组分配的内存.堆可以是固定大小的也可以是可变大小的.其中 Heap = {Old + NEW = { Eden , from, to } }.小池塘B(非堆内存):包括所有线程之间共享的一个方法区域和JVM为优化或内部处理所分配的内存

深入解析病毒(一)理论篇

猪年送安康,祝大家新一年健康.快乐.愿大家都做一个勤奋努力.真诚奉献的人,幸运会永远的眷顾你们.?引子:?某一天饶有兴趣在卡饭上浏览着帖子,故事的相遇就那么简单.当时一条评论勾起我的好奇心,那么好逆向开始.?根据我的习惯,拿到样本我会线上恶意代码分析,直接拉到virustotal之类的网站上,看看是否已经被大多数杀毒软件所能识别,看一些有价值的数据,如下图所示:??????????????????图片一:基本信息?当看到这个页面时候,看到最后的分析日期是18年11月,又看了一下导出表的函数信息,

cpu上下文切换(下)

cpu上下文切换如何查看 上一篇介绍了cpu上下文切换几种场景以及数据保存恢复过程,这篇文章介绍如何查看cpu上下文切换 一.vmstat 安装:yum install -y sysstat vmstat是一个常用的系统性能分析工具,主要用来分析系统的内存情况,也常用来分析cpu上下文切换和中断的次数. # vmstat <br/>procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----&l