首页
学习
活动
专区
圈层
工具
发布

结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程

中断上下文的切换 进程上下文的切换 异常处理过程: 下面从逻辑上完整走一遍中断处理过程(结合中断上下文的切换,以定时器中断为例,假设从用户态进入中断): 1....中断控制器又与CPU的INTR引脚相连。当定时器产生中断时,中断控制器把对应的中断向量32放到一个I/O端口上,从而允许CPU通过数据总线读到这个向量。...硬件保存现场:SS、SP、eflags、cs、eip,保存到被中断进程的内核堆栈中(tr寄存器保存当前进程的tss段,而tss段里有最后一次访问内核栈的指针)。 3....读idtr寄存器指向的中断描述符表(idt)的第30项,得到相应的中段描述符,并用中断描述符里的段选择符(还要根据gdtr寄存器指向的全局描述符表gdt获取段选择符对应的段描述符)和偏移量装载CPU的cs...和eip寄存器。

1.5K01

查看进程的上下文切换pidstat

各个进程之间是共享 CPU 资源的,在不同的时候进程之间需要切换,让不同的进程可以在 CPU 执行,那么这个一个进程切换到另一个进程运行,称为进程的上下文切换。...进程是由内核管理和调度的,所以进程的切换只能发生在内核态。 所以,进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。...大家需要注意,进程的上下文开销是很关键的,我们希望它的开销越小越好,这样可以使得进程可以把更多时间花费在执行程序上,而不是耗费在上下文切换。 发生进程上下文切换有哪些场景? 1....当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度; 4. 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行; 5....发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序; 下面这个进程是php运行的其中存在sleep函数 查看到的进程切换如下 pidstat -w -p 进程PID 1 10 cswch

2.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    程序员被打断:中断和上下文切换的真正代价

    本文介绍了“上下文切换”的概念以及它所带来的心理成本。当程序员在复杂的编程任务中进行“上下文切换”时,重新回到之前的工作状态比“简单”的中断更具挑战性。...这种转换需要一定的思维和精力,也需要较长的时间来适应新的上下文环境。 为了减少上下文切换的影响,文章提供了一些实用的建议。例如,要尽可能避免中断,让程序员有更多的专注时间来完成任务。...此外,可以通过合理规划工作任务的时间和优先级,减少上下文切换的频率。 总之,上下文切换可能会带来不良的心理成本,降低程序员的工作效率和生产力。...因此,程序员应该尽量避免中断和上下文切换,合理规划任务,提高工作效率。...在复杂的编程任务之间切换时,通常比从“简单”的中断返回到流状态更具有挑战性。完全切换到其他事物需要清除缓存(短期记忆)并加载全新的上下文。

    68441

    进程、线程和协程之间的区别和联系

    文章目录 一、进程 二、线程 三、进程和线程的区别与联系 四、一个形象的例子解释进程和线程的区别 五、进程/线程之间的亲缘性 六、协程 一、进程 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体...三、进程和线程的区别与联系 【区别】: 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位; 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行; 拥有资源...四、一个形象的例子解释进程和线程的区别 这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“进程”的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个“线程”了。...协程在子程序内部是可中断的,然后转而执行别的子程序,在适当的时候再返回来接着执行。...,可以随时中断,去执行B,B也可能在执行过程中中断再去执行A,结果可能是:1 2 x y 3 z。

    2K30

    多线程和多进程之间的区别(总结)

    说到子进程仅仅是一个额外的流程。那他跟父进程的联系和差别是什么呢?...应该对多进程和多线程有个直观的认识。 假设总结多进程和多线程的差别,你肯定能说,前者开销大,后者开销较小。确实,这就是最主要的差别。 2.线程函数的可重入性: 说到函数的可重入。...属于同一进程的不同线程会共享进程内存空间中的全局区和堆。而私有的线程空间则主要包含栈和寄存器。 因此。对于同一进程的不同线程来说。每一个线程的局部变量都是私有的。...信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。...只是,在同一时候调用多进程(子进程里也调用线程函数)和多线程的情况下,函数体内非常有可能死锁。 详细的样例能够看看这篇文章。

    74510

    Spring --- 你真的明白Spring上下文之间的关系吗?

    (本文用的名字,方便交流),本文帮助完全弄明白他们之间的关系 上下文之间关系 本节内容完全COPY halty的回复,只是修改了一些拼写错误,鼓励大家去看原文 要想很好理解这三个上下文的关系,需要先熟悉...DispatcherServlet上下文在初始化的时候会建立自己的IoC上下文,用以持有spring mvc相关的bean。...先从ServletContext中获取之前的根上下文(即WebApplicationContext)作为自己上下文的parent上下文。...这样每个servlet就持有自己的上下文,即拥有自己独立的bean空间,同时各个servlet共享相同的bean,即根上下文(第2步中初始化的上下文)定义的那些bean。...亲测可以(但是很少这么使用,原因我还不清楚,如果你知道,还请指教,不胜感激) 参考 spring中DispatcherServlet、WebApplicationContext、ServletContext之间的关系

    1.4K40

    进程和线程的区别有哪些?进程和线程之间有哪些联系?

    ,那么进程和线程的区别有哪些?...进程和线程之间有哪些联系?小编下面就为大家来详细介绍一下相关的知识。 image.png 一、进程和线程的区别有哪些?...进程和线程都是属于计算机操作系统中的单位,属于专业性的术语,很多人都想知道进程和线程的区别有哪些?...一般来说操作系统都是以进程为单位执行任务的,如果遇到了很多种任务需要执行的话,就需要用线程来执行,因此进程和线程的区别就在于不同的资源管理方式。 二、进程和线程之间有哪些联系?...上面说了进程和线程之间的区别,大家肯定也知道进程和线程之间是有很大的联系的,面对不同种类的系统或者执行任务,就需要进程和线程之间互相配合,所以进程和线程之间最大的联系就是程序之间基本相同。

    49640

    jsp中的session和上下文

    Session的典型应用: 防止用户非法登录到某个页面。 网上商城的购物车 保存用户登录信息 注:多个请求要用的东西放在session中,多个会话之间要用的东西放在上下文中。...3,对于某一个会话设置有效时间,在Servlet中用session.setMaxAge(秒)来设置 上下文的作用 利用上下文对象可以实现多个用户之间的数据共享。 上下文对象如何创建的?...sc. getAttribute(String key) sc. getInitParameter(String path) ServletContext和ServletConfig...本来没有直接关系,但容器起动后,把得到上下文方法封装在servletConfig中,因为servlet继承了。...答: 如果在一个应用中有多个Servlet和JSP都使用的变量,以后还可能被修改,就可以考虑用上下文参数 在web.xml中配置: level

    1K50

    上下文学习和指令微调之间到底有什么关系?

    深度学习自然语言处理 原创 作者:cola 上下文学习(ICL)和指令调优(IT)是将大型语言模型(LLM)应用于下游应用的两种主要范式。...:上下文学习(ICL)和指令调优(IT)。...最终LLM的输入序列在基本情况和IT情况下都是完全相同的,唯一的区别是,基本情况是普通LLM,而IT情况是指令微调后的LLM。...从上下文学习中坜街指令微调 该实验不关注隐藏状态,而是计算LLM的每个token损失的变化。将每个token损失定义为序列中每个输出token和相应的真值token之间的交叉熵损失。...总结 本文探讨了上下文学习(ICL)和指令调优(IT)之间的联系。通过实验提供了强有力的证据,表明ICL可以通过IT实现。换句话说,IT可以通过使用示例改变LLM的隐藏状态,就等同于ICL。

    1.2K21

    JavaScript中的执行上下文和堆栈

    接下来让我们看一个包含global和function / local上下文的代码示例。 ?...img 这里没有什么特别之处,我们有一个由紫色边框表示的全局上下文,和由绿色,蓝色和橙色边框表示的3个不同的函数上下文。 只能有1个全局上下文,可以从程序中的任何其他上下文访问。...浏览器将始终执行位于堆栈顶部的当前执行上下文,并且一旦函数执行完当前执行上下文后,它将从栈顶部弹出,把控制权返回到当前栈中的下一个上下文。 下面的示例显示了递归函数和程序的执行堆栈: ? ?...创建`arguments object`,检查参数的上下文,初始化名称和值并创建引用副本。 扫描上下文以获取函数声明: 扫描上下文以获取变量声明: 确定上下文中“this”的值。...总结 希望到这里你已经能够很好地掌握了JavaScript解释器如何预处理你的代码。 理解执行上下文和堆栈可以让你了解背后的原因:为什么代码预处理后的值和你预期的不一样。

    1.5K40

    浅谈进程、线程和协程三者之间的区别和联系

    一、进程、线程、协程 1,进程 经典定义:一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文中。...4,区别和联系 首先,进程提供给应用程序的关键抽象为: 一个独立的逻辑控制流:它提供一个假象,好像我们的程序独占地使用处理器。 一个私有的地址空间,它提供一个假象,好像我们的程序独占地使用内存系统。...这里的切换涉及到状态的保存,状态的恢复,需要有一个东西去记录任务A和任务B分别需要什么资源,怎样去识别任务A和任务B,这时进程就出现了。 因此,通过进程来分配系统资源,标识任务。...若有一种机制,可以使任务A,B,C共享资源,这样上下文切换所需要保存和恢复的内容就少了,同时又可以减少通信所带来的性能损耗,那就好了。这时线程出现了。...为什么协程不需要经过内核级别的上下文切换,我是这样认为的: 进程和线程都是操作系统自带的,协程是有些程序原生支持的,例如go,lua, 有些是后期版本才有的,比如python2.5 C#等。

    9.5K95

    Flask 中的上下文管理和请求钩子

    在 Flask 框架中,这种传递数据的方式被称为上下文管理,在 Flask 框架中有四个上下文管理对象:request ,session , current_app 和 g 变量。...其中,request 和 session 被称为请求上下文,current_app 和 g 变量被称为应用上下文。...一、请求上下文 (request context) Flask 中的上下文对象相当于一个容器,保存了 Flask 程序运行过程中的一些信息,如请求方式和表单数据。...二、应用上下文 (application context) 应用上下文不是一直存在的,它的作用是帮助请求对象获取当前 Flask 应用 app 的信息,发送请求之后才会有应用上下文,请求结束后应用上下文就会失效...不同的请求中,g 变量是不同的,g 变量不能跨请求传递数据,在 Flask 底层实现中,不同请求的 g 变量通过 thread id 来区别。

    2.1K30

    进程和线程的区别

    进程是资源分配的最小单位,线程是CPU调度的最小单位 进程和线程的区别 线程不能看做独立应用,而进程可看做独立应用 进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径 线程没有独立的地址空间多进程的程序比多线程程序健壮...进程的切换比线程的切换开销大 java进程和线程关系 Java对操作系统提供的功能进行封装,包括进程和线程 运行一个程序会产生一个进程,进程包含至少一个线程 每个java进程对应一个JVM实例(每个JVM...实例对应一个堆),多个线程(每个线程有自- 己私有的栈)共享JVM里的堆 Java采用单线程编程模型,程序会自动创建主线程 主线程可以创建子线程,原则上要后于子线程完成执行

    74620

    线程和进程的区别

    #定义 线程:CPU 进行调度的基本单位----内存共享 进程:系统内存分配的基本单位------一个进程里面可以有多个线程 #区别 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位...在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小...所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行) 内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间...;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。...包含关系:进程是线程的容器,不存在没有线程的进程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

    98000

    ddd中的子域和界限上下文 顶

    上下文的意思就是说一个概念在一个上下文中所关注的是一种意思,到了另一个上下文中所关注的是另一种意思。...任何互联网产品都会有用户这个概念,但是这个概念在不同的上下文中可能就完全不一样,比如买家和卖家就是在不同上下文中的意义。如果一个概念在两个子域中都一样,那就有可能这两个子域属于同一个上下文。...先来说一下一个概念在不同的子域属于不同上下文的例子,比如顾客在电商系统中,在购买时,可能表示的是他过往的购买记录,消费水平,折扣这些。而购买之后可能表示名字,地址,购买价格等等。...一般系统中都有用户和权限的东西,但这种东西在界限上下文中都可能在子域中与各种协作人员发生耦合。用户和权限与协作活动没有任何关系,并且与协作的通用语言也风马牛不相及。...在协作上下文中出现的每一种概念都必须与协作存在语言层面上的关联。我们应该关注的是协作概念,比如作者和主持者,这些才是协作活动中的正确概念和语言。

    1.3K50

    理解JavaScript 中的执行上下文和执行栈

    阅读笔记 执行上下文是当前 JavaScript 代码被解析和执行时所在环境的抽象概念。...执行上下文的类型 执行上下文总共有三种类型 全局执行上下文:只有一个,浏览器中的全局对象就是 window 对象,this 指向这个全局对象。...根据执行栈LIFO规则,当栈顶函数运行完成后,其对应的函数执行上下文将会从执行栈中Pop出,上下文控制权将移到当前执行栈的下一个执行上下文。...拥有一个全局对象(window 对象)及其关联的方法和属性(例如数组方法)以及任何用户自定义的全局变量,this 的值指向这个全局对象。...在 ES6 中,词法 环境和 变量 环境的区别在于前者用于存储函数声明和变量( let和 const )绑定,而后者仅用于存储变量( var )绑定。

    57330

    写给Java程序员看的,CPU 上下文切换、用户态、内核态、进程与线程上下文切换(转)

    CPU的上下文切换分为几种场景:进程上下文切换、线程上下文切换、中断上下文切换 2.1、用户态、内核态 Linux按特权等级,将进程的运行空间分为 内核空间 和 用户空间 。 ?...系统调用过程通常称为特权模式切换,而不是进程上下文切换。 3、进程上下文切换 进程上下文切换跟系统调用又有什么区别呢? 首先,进程是由内核来管理和调度的,进程的切换只能发生在内核态。...因此,进程的上下文切换就比系统调用时多了一步:在保存当前进程的内核状态和 CPU 寄存器之前,需要先把该进程的虚拟内存、用户栈等保存下来;而加载下一个进程的内核态后,还需要加载这个进程的虚拟内存和用户栈...发生硬件中断,运行中的进程会被中断挂起,转而执行内核中的中断服务程序。 4、线程上下文切换 线程是调度的基本单位,而进程则是资源拥有的基本单位。...当进程只有一个线程时,可以认为进程就等于线程,当进程拥有多个线程时,这些线程会共享进程的虚拟内存和全局变量等资源。这些资源在上下文切换时是不需要修改的。

    2.3K40

    HTTP和HTTPS 之间的区别

    PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。...另外是加密,加密需要一个密钥交换算法,双方通过交换后的密钥加解密。 http与https有什么区别呢?本文详解http和https的区别。...所以http和https之间的区别就在于其传输的内容是否加密和是否是开发性的内容。这也是你为什么常常看见https开头的网址都是一些类似银行网站的这类网址的原因。...HTTPS和HTTP的区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。...b) 服务端和客户端之间的所有通讯,都是加密的. i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥,一般意义上的握手过程。 ii.

    2.5K40
    领券