当前位置: 首页 > news >正文

秒懂:进程上下文切换

1、进程上下文的组成部分


进程的物理实体(代码和数据等)和支持进程运行的环境合称为进程的上下文:

        由进程的程序块、数据块、运行时的堆和用户栈(两者通称为用户堆栈)等组成的用户空间信息被称为用户级上下文。


        由进程标识信息、进程现场信息、进程控制信息和系统内核栈等组成的内核空间信息被称为系统级上下文。


        处理器中各寄存器的内容被称为寄存器上下文(也称硬件上下文),即进程的现场信息。

 2.进行进程切换的时机

下降进程自身造成切换(例如产生异常)或者外界强制下降进程和上升进程切换(例如cpu时间片用完)。
下降进程指的是当前即将被中断运行的进程。
上升进程指的是按照调度算法从就绪队列中选择的一个即将被运行的进程。

3.系统如何得知我们当前执行到那行代码? 

寄存器中有一种叫做程序计数器:pc,eip:

记录当前进程正在执行指令的下一行指令的地址!!

        寄存器的作用一般都是是为了提高效率 

4、进程上下文切换具体流程

(1)保存当前进程的硬件上下文(PC/PSW/SP和通用寄存器等);

对linux系统而言,其硬件上下文大部分保存在struct thread_struct thread中,但通用寄存器(eax/ebx等保存在内核栈里)
(2)修改当前进程的PCB,比如将其状态由运行改为就绪或者阻塞,并将该进程PCB加入相关队列;

(3)调度另外一个进程(这涉及调度)
(4)修改被调度进程的PCB,将其状态改为运行(系统上下文)
(5)将“当前进程”的存储管理数据改为被调度进程的存储管理信息(如页表、TLB)(用户级上下文)
(6)恢复新进程的硬件上下文(即现场),让PC指向新进程代码

5.注意

进程从cpu上离开的时候,要将自己的上下文保存好,甚至带走。(它们一般保存在寄存器和自己的PCB上)

目的是为了自己被再次调度的时候,能够恢复。

进程被切换时候,

简单来说:保存上下文。

                  切换上下文。


http://www.mrgr.cn/news/24251.html

相关文章:

  • Oracle数据恢复—Oracle数据库误删除表数据如何恢复数据?
  • 网络操作系统项目
  • LEAN 类型系统属性 之 定义上相等的非确定性(Undecidability of Definitional Equality)注解
  • 蓝牙核心规范解析
  • chapter14-集合——(List)——day18
  • xLSTM模型学习笔记
  • 在 Android 中,事件的分发机制
  • JAVA学习-练习试用Java实现“二叉树的序列化与反序列化”
  • 多多优品:多多采集软件-不用买手-采集不限制
  • 【Web】骨架屏
  • 《中国食品工业》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • strtok函数讲解使用
  • 【NOI-题解】1272. 郭远摘苹果1274. 求各个科目成绩的平均分1275. 输出杨辉三角的前N行1496. 地雷数量求解
  • RP2040 C SDK ADC功能使用
  • 如何用ChatGPT创建阅读10W+爆款文章标题
  • 重温学习之C语言学习笔记3
  • 强密码策略+使用jasypt保存用户密码
  • Linux cut命令详解使用:掌握高效文本切割
  • Web3附录
  • [240911] 11 款最佳 Linux 控制台文件管理器 | OpenAI 或将推出每月2000美元的 LLM 订阅服务