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

《操作系统 - 清华大学》 8 -11:进程管理:上下文切换

进程管理之上下文切换与进程控制详解

一、上下文切换的定义

在多程序运行环境下,程序以进程形式存在,且多个进程共享CPU资源。不同时刻,进程需要切换以获取CPU执行权,这个切换过程被称为进程的上下文切换。“上下文”英文为“context” ,“context switch”即上下文切换。

二、上下文切换的具体内容

传统操作系统课本指出,进程上下文切换涉及寄存器。寄存器与CPU联系紧密,若要在操作系统内实现进程切换,就必须清楚操作系统所在CPU的寄存器情况,包括寄存器的种类以及进程对它们的使用情况。
进程运行时依赖多种寄存器,例如程序计数器,它用于指示进程的执行位置;栈指针同样作为寄存器,栈能反映调用关系和局部变量的位置等。进程切换时,这些寄存器信息会被保存到进程控制块(PCB)的特定位置。当运行其他进程时,再从相应进程的PCB中取出寄存器等上下文信息,恢复到CPU中,依据PCB信息重新配置寄存器资源,确保新进程能在CPU上继续执行。

三、上下文切换的过程示例

以进程A和进程B为例,进程A执行一段时间后,操作系统会调度进程B执行。此时,进程A需将其“context”(即各类寄存器信息)保存到PCB中,随后将进程B的PCB中保存的上下文信息恢复到CPU,以此完成进程间的切换。
在这里插入图片描述

四、上下文切换的实现方式及开销要点

上下文切换涉及的信息与硬件关联密切,在实际操作和真实操作系统中,这部分代码大多由汇编代码编写。
上下文切换的开销十分关键,我们期望其开销越小越好,这样进程就能将更多时间用于执行自身任务,而非耗费在上下文切换上

五、进程队列管理

能够在CPU上执行的进程被放置在一个队列中,该队列常被称为就绪队列(也叫rq或运行队列等),它以链表形式存在,便于操作系统挑选进程执行。部分进程暂时无法占用CPU,它们在等待特定事件,这类进程会被置于等待队列。此外,还有一个僵尸队列,其具体含义将在后续进程控制时深入探讨,在此先给留个思考问题:僵尸队列中存放的是什么呢?
在这里插入图片描述

相关文章:

  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(六) 导航栏 和 个人信息设置
  • C语言基础系列【17】位域
  • 【NLP 30、大模型中的 ”Token“】
  • Tagr 5 for Mac v5.8.0 [MAS] 音频标签编辑工具 支持M、Intel芯片
  • 4.万事开头难—第一个Java程序
  • 使用Maven搭建Spring Boot框架
  • DH法建立6自由度机械臂正运动学模型
  • python (第九章 项目开发阶段)
  • explore与explode词源故事
  • 高频面试题(含笔试高频算法整理)基本总结回顾16
  • 992. K 个不同整数的子数组
  • nginx+keepalived实现高可用负载均衡
  • Python中文自然语言处理库SnowNLP
  • 建筑兔零基础人工智能自学记录34|深度学习与神经网络2
  • 【单点登录】SSO单点登录sa-token接入流程详解
  • Linux服务器Ubuntu系统环境中安装Jupyter Notebook并且配置内核以便在网页端调用
  • TCP通讯与基于C#TCP通讯,跨窗收发消息Demo
  • JavaScript 内存管理:利用数据结构优化内存使用
  • Linux系统中proc是做什么的?
  • MySQL索引深度剖析:从数据结构到实际应用
  • 新手建网站视频教程/美国新冠疫情最新消息
  • 自己做电影网站需要的成本/百度推广客户端怎么登陆
  • 韩国购物网站模板/郑州网络运营培训
  • 如何将网站转成小程序/seo推广具体做什么
  • 做网站框架搭建的人/如何建立一个网站平台
  • 品牌网站建设完善大蝌蚪/网站优化推广公司