初识上下文切换

2023-11-08

上下文切换:
什么是上下文切换:

在单个处理器时期,操作系统就能够多线程并发执行任务。处理器给每个线程分配CPU时间片,线程在分配的时间片内执行任务
CPU时间片是CPU分配给每个线程执行的时间片段,一般几十毫秒,在这么短的时间里线程互相切换,我们根本感受不到,于是就像同时在运行一样。

时间片决定了一个线程可以连续占用处理器运行的时长,当一个线程的时间片用完了,或者因为自身原因被迫暂停运行了,这时候另外一个线程(可以是同一个线程或者其他线程)就会被操作系统选中,来占用处理器。这种一个线程被暂停剥夺线程使用权,另一个线程被选中开始或者继续运行的过程就称为上下文切换。

具体来说,一个线程被剥夺处理器使用权而被暂停运行,就是“切出”,另一个线程被选中开始或者继续运行就是“切入”。在这种切出切入的过程中,操作系统需要保存和恢复相应的进度信息,这个进度信息就被称为上下文。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识上下文切换 的相关文章

随机推荐

  • 如何写出高质量代码——站在巨人的肩膀上

    如何写出高质量代码 站在巨人的肩膀上 高质量代码的三要素 可读性 可维护性 可变更性 可读性强 可维护性 适应软件在部署和使用中的各种情况 1 3 可变更性 因需求变化而对代码进行修改 牛顿曾经说过 如果说我看得比别人更远 那是因为我站在巨
  • 遍历Newtonsoft.Json.Linq.JObject

    JObject 遍历 引用命名空间 using Newtonsoft Json Linq JObject jObject JObject Parse ID 001 Mark Hello Word StringBuilder str new
  • C++进阶:Makefile基础用法

    文章目录 1 Makefile基本语法与执行 2 Makefile简化过程 3 Makefile生成并使用库 3 1 动态库的建立与使用 3 2 动态加载库的建立与使用 1 Makefile基本语法与执行 作用 Makefile 文件告诉
  • 光纤收发器A,B端含义解释

    最近有朋友问到 光纤收发器型号或者收发器模块上A B字母的含义是什么 今天飞畅科技的小编就来为大家介绍一下 收发器中A B端字母的真正含义 一起来看看吧 首先 光纤收发器按光纤芯数分类有2种 一种是单模双纤光纤收发器 一种是单模单纤光纤收发
  • (二叉树)二叉树的序列化与反序列化

    题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作 进而可以将转换后的数据存储在一个文件或者内存中 同时也可以通过网络传输到另一个计算机环境 采取相反方式重构得到原数据 请设计一个算法来实现二叉树的序列化与反序列化 这里不限定
  • Highway network

    Highway Network主要解决的问题是 网络深度加深 梯度信息回流受阻造成网络训练困难的问题 假设定义一个非线性变换为 定义门函数 携带函数 对于门函数取极端的情况0 1会有 而对应的门函数使用sigmoid函数 则极端的情况不会出
  • Java接口详解

    一 static静态关键字 定义变量不加static关键字 每个对象单独保存一个变量 定义变量加static关键字 静态变量 类变量 共享变量 public static 数据类型 变量名 所有对象会共享该变量 如果一个变量 静态变量 类变
  • C++友元函数

    友元 让函数或者类作为另外一个类的朋友 则可以访问当前类的private或者protected 友元friend机制允许一个类授权其他的函数访问它的非公有成员 友元声明以关键字friend开头 它只能出现在类的声明中 它们不受其在类体中的p
  • node.js系统学习2

    1 最基础的东西 也很实用 用于工作 本地搭建一个简单的服务 实际工作中 有很多时候可能你自己需要一个简单的静态服务 但是你发现你的同事全都有 你没有 人家看一个那个产品原型直接用静态服务看 人家看一个文件直接用静态服务看 而你就很lowb
  • docker 简单运用,使用阿里镜像

    第一步 确定docker已经安装 第二步 去阿里上搜索镜像 找到你想要的镜像 然后点击详细中有命行 如下 注意后面加版本号 如 V1 0 docker pull registry cn hangzhou aliyuncs com kenny
  • 【JavaEE】线程安全

    文章目录 1 前言 2 线程安全的概念 3 造成线程不安全的原因 4 如何解决出现的线程不安全问题 4 1 如何使用 synchronized 加锁 4 2 解决上面自增问题导致的线程安全问题 5 synchronized 的特性 5 1
  • STM32 输入捕获的脉冲宽度及频率计算

    输入捕获模式可以用来测量脉冲宽度或者测量频率 STM32 的定时器 除了 TIM6 和 TIM7 其他定时器都有输入捕获功能 以下是对脉冲宽度及频率的计算 1 脉冲宽度 如下图所示 采集该高电平脉冲的宽度 只需要进入输入捕获上升沿检测 记录
  • 查看文件中关键字前后几行的内容

    有时候文件太大 我们无法全部看完 去查找我们想要的内容 这时我们需要linux命令来查看某个关键字前后几行的内容 grep 使用linux的help命令 如下图 我们可以看到grep的用法 这里我们关注关键字前后的显示问题 以文件test
  • elk多项目收集

    1 filebeat配置 gt etc filebeat filebeat yml filebeat prospectors type log enabled true paths root project logs all all log
  • BACnet MSTP协议485功能测试

    文章目录 BACnet MSTP协议485功能测试 一 命令行运行方法 二 测试工具 1 使用sscom串口助手 2 使用yabe查看结果 三 代码部分 1 包含头文件 2 变量和宏定义 2 RS485配置函数 3 RS485初始化函数 使
  • 【容器适配器的认识与模拟】

    目录 前言 一 引入 二 容器适配器 一 stack deque stack模拟实现 二 queue queue模拟实现 为什么栈和队列要使用deque 三 priority queue priority queue模拟实现 总结 前言 打
  • AngularJS 学习笔记(四)--- 表单验证和常用API

    一 表单验证 1 概念 AngularJS 表单和控件可以对输入的数据进行验证 并对用户输入的非法数据进行警告 一般来说就算前端进行了验证 后端为了安全还是要再次进行验证 HTML5的表单本身带有一定的验证能力 可以与 AngularJS
  • 最新JetBrains PyCharm 使用教程--常用快捷键和设置PyCharm为Eclipse快捷键(四)

    PyCharm常用快捷键使用 Ctrl D 复制当前行 Ctrl Y 删除当前行 Ctrl Z 撤销 Shift Enter 快速换行 Ctrl 快速注释 Ctrl F 查找 Ctrl H 替换 Tab 缩进 Shift Tab 取消缩进
  • nginx 转发webSocket连接请求

    一 导读 nginx 是一个反向代理的轻量服务器 能对http请求进行转发 但是最新学习websocket发现 普通的nginx转发http请求时候无法转发websocket请求 今天就来介绍一下nginx如何转发websocket请求 与
  • 初识上下文切换

    上下文切换 什么是上下文切换 在单个处理器时期 操作系统就能够多线程并发执行任务 处理器给每个线程分配CPU时间片 线程在分配的时间片内执行任务 CPU时间片是CPU分配给每个线程执行的时间片段 一般几十毫秒 在这么短的时间里线程互相切换