进程切换与中断

2023-05-16

进程切换指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行。

实质上就是被中断运行进程与待运行进程的上下文切换。

进程切换必须在操作系统内核模式下完成,这就需要模式切换。

模式切换又称处理器切换,即用户模式和内核模式的互相切换。

进程切换一定发生在中断/异常/系统调用处理过程中,常见的有以下情况:

1、阻塞式系统调用、虚拟地址异常。

导致被中断进程进入等待态。

2、时间片中断、I/O中断后发现更改优先级进程。

导致被中断进程进入就绪态。

3、终止用系统调用、不能继续执行的异常。

导致被中断进程进入终止态。

有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程。

以下是处理流程:

1、(中断/异常等触发)正向模式切换并压入PSW/PC 。

2、保存被中断进程的现场信息。

3、处理具体中断、异常。

4、恢复被中断进程的现场信息。

5、(中断返回指令触发)逆向模式转换并弹出PSW/PC。

进程切换的工作过程
1、(中断/异常等触发)正向模式切换并压入PSW/PC 。 (Program Status Word 程序状态字。program counter 程序计数器。指向下一条要执行的指令)

2、保存被中断进程的现场信息。

3、处理具体中断、异常。

4、把被中断进程的系统堆栈指针SP值保存到PCB。(Stack Pointer 栈指针。Process Control Block 进程控制块。)

5、调整被中断进程的PCB信息,如进程状态)。

6、把被中断进程的PCB加入相关队列。

7、选择下一个占用CPU运行的进程。

8、修改被选中进程的PCB信息,如进程状态。

9、设置被选中进程的地址空间,恢复存储管理信息。

10、恢复被选中进程的SP值到处理器寄存器SP。

11、恢复被选中进程的现场信息进入处理器。

12、(中断返回指令触发)逆向模式转换并弹出PSW/PC。

参考:
https://www.csdndoc.com/article/10376985

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

进程切换与中断 的相关文章

随机推荐

  • STM32F4 DMA

    STM32F4有2个DMA xff0c 每个DMA控制器有8个数据流 xff0c 每个数据流有多达8个通道 xff0c 但是DMA1 控制器 AHB 外设端口与 DMA2 控制器的情况不同 xff0c 不连接到总线矩阵 xff0c 因此 x
  • STM32粗略延时,大致精确

    考虑到一些情况下 xff0c 无法使用系统定时或者定时器 xff0c 而进行的时间计算 STM32F1系列 xff0c 对于72Mhz来说 void my delay ms u32 ms 对于stm32f1系列 72mhz大致是1ms u1
  • linux下的串口配置

    经过验证是准确无误的 xff0c 配置以后可以通过以下指令查看 stty F dev ttyUSB0 a 查看 dev ttyUSB0的串口配置 stty F dev ttyUSB0 ispeed 115200 ospeed 115200
  • Leetcode 42 接雨水

    Leetcode42接雨水 题解1 xff1a 正反两扫 xff08 Simple and effect xff09 题解2 xff1a DP题解3 xff1a 单调栈 xff08 单调栈存储的是下标 xff0c 满足从栈底到栈顶的下标对应
  • 错误 Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build*

    安装Roboware Studio后 xff0c 为了支持Python调试功能 xff0c 需要先安装pylint 使用sudo python m pip install pylint命令产生报错 xff1a Command python
  • imu可视化和frame_id的查询

    得到imu的frame id rostopic echo topic grep frame id 得到imu的可视化 xff1a 下载源代码 xff1a 链接 https github com ccny ros pkg imu tools
  • catkin_make 与cmake

    http blog csdn net zyh821351004 article details 50388429 1 catkin make 与cmake的关系 程序在cmake编译的流程 xff1a cmake指令依据你的CMakeLis
  • 报错:ResourceNotFound: gazebo_ros

    Traceback most recent call last File 34 opt ros kinetic lib python2 7 dist packages roslaunch init py 34 line 306 in mai
  • ROS中的ROS_MASTER_URI环境变量解析

    ROS MASTER URI 61 http localhost 11311中的ROS MASTER URI是什么呢 xff1f URI是什么呢 xff1f 查阅百度百科可知 xff1a URI xff08 Uniform Resource
  • win10 cmd窗口中文乱码,永久解决方法(编码格式设置为UTF-8)

    转 xff1a https blog csdn net tfs411082561 article details 78416569 commentBox 1 临时修改 xff0c 只作用于当前打开的窗口 进入cmd窗口后 xff0c 直接执
  • C#获取文本框的任意行内容

    C 中 textbox Lines Length 可以获得文本框里文本的行数 xff1b 而textbox Lines i 代表文本框任意一行的内容 xff0c 所以获取文本框最后一行的方法为 xff1a span class token
  • add-apt-repository命令详解

    该命令是通过PPA源方式安装软件的添加PPA源到Source list中的命令 xff0c 该软件安装方式的流程为 xff1a 1 搜索PPA软件源 xff0c 如在Google上软件名称关键字 43 PPA xff0c 或者也可直接到 l
  • sw2urdf插件安装提示

    sw2urdf 1 6版本安装在solid works2012 2014 2016 2017 2020上会闪退 xff08 亲测 xff09 sw2urdf 1 5版本安装在solid works2017 2020上可以正常运行 xff08
  • ROS多机通信

    假设需要让电脑biowin和电脑biowin G3实现连接 xff0c 并以biowin G3为主机 1 让所有计算机需要通信处于同一网络 2 将局域网地址绑定到主机名上 所有需要通信的电脑在 etc hosts文件中 xff0c 添加需要
  • gazebo仿真中遇到的坑

    1 urdf中的关节无法加载到gazebo error This robot has a joint named joint 1 which is not in the gazebo model 原因 xff1a urdf的link标签下的
  • 2021-02-19

    This node presents a fast and precise method to estimate the planar motion of a lidar from consecutive range scans It is
  • 牛客网错题整理--C++篇4

    能够在字符串 aabaaabaaaab 中匹配 aab xff0c 而不能匹配 aaab 和 aaaab 34 的正则表达式包括 A a b B a 2 b C aa b D aaa b 正确答案 C 我的答案 B C 错误原因 xff1a
  • 动手学无人驾驶(6):基于IMU和GPS数据融合的自车定位

    在上一篇博文 动手学无人驾驶 xff08 5 xff09 xff1a 多传感器数据融合 介绍了如何使用Radar和LiDAR数据对自行车进行追踪 xff0c 这是对汽车外界运动物体进行定位 对于自动驾驶的汽车来说 xff0c 有时也需要对自
  • ubuntu内核版本5.4.0-92-generic 编译 4.15版本内核遇到报错 :PIC mode相关错误 【已解决】

    背景 xff1a 需要换个低版本内核来编译东西 因为高版本kernel拿来编译相对老的内核的时候 xff0c 有一些报错 xff0c 比如这个 PIC mode 的错误 xff0c 也许是新版本支持 老版本不支持的特性 xff0c 此处就暂
  • 进程切换与中断

    进程切换指从正在运行的进程中收回处理器 xff0c 让待运行进程来占有处理器运行 实质上就是被中断运行进程与待运行进程的上下文切换 进程切换必须在操作系统内核模式下完成 xff0c 这就需要模式切换 模式切换又称处理器切换 xff0c 即用