理解CPU上下文切换

本文详细介绍了CPU上下文切换的概念,包括进程上下文切换、线程上下文切换和中断上下文切换。在多任务操作系统中,当任务数量超过CPU核心数时,系统会频繁进行上下文切换。进程上下文切换涉及用户态和内核态,而线程切换相对较轻量。中断上下文切换用于快速响应硬件事件,优先级最高。
摘要由CSDN通过智能技术生成

liunx是多任务操作系统,但当任务数量大于CPU数量时,系统会在很短的时间内将CPU轮流分配给任务,并不是所有的任务都在同时运行。

每个任务在运行前,系统都需要事先设置好CPU寄存器和程序计数器。
CPU寄存器是CPU内置的容量小速度极快的内存,程序计数器是用来存储CPU正在执行的指令位置、或者即将执行的下一条指令位置。他们称为CPU的上下文

CPU上下文切换指的是CPU将当前任务的CPU寄存器和程序计数器保存起来,然后加载新任务CPU寄存器和程序计数器,再跳到新任务的程序计数器指的位置,运行新任务。

保存起来的CPU上下文会存储在系统内核中,等待任务重新调度。

保存CPU上下文和恢复CPU上下文是需要系统内核在CPU上运行才能完成的。

CPU上下文切换大体可以分为三种,进程上下文切换、线程上下文切换、中断上下文切换。

进程上下文切换

进程的上下文切换是指从一个进程切换到另一个进程运行。

liunx将进程的运行空间分为内核空间和用户空间。
内核空间具有最高等级,可以直接访问所有系统资源。
用户空间只能访问有限资源,不能直接访问内存等硬件设备,必须通过系统调用深入内核才能访问这些资源。

进程是由内核来管理和调度的,进程的切换只能发生在内核态。进程的上下文不仅包括了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的状态。

进程可以在这内核空间和用户空间运行,分别称为进程的用户态和进程的内核态。

从用户态到内核态的转变需要通过系统调用来完成,需要进行CPU上下文切换,保存用户态的CPU上下文,加载内核

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值