《操作系统 - 清华大学》 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,它们在等待特定事件,这类进程会被置于等待队列。此外,还有一个僵尸队列,其具体含义将在后续进程控制时深入探讨,在此先给留个思考问题:僵尸队列中存放的是什么呢?
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/979835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity中动态切换光照贴图的方法

关键代码:LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图:lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张: using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

微服务笔记 2025/2/15

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。 微服务是一种架构。 微服务是一种架构。 微服务是一种架构。 以前自己做项目最常用的架构是单体架构。单体项目不适合开发大型项目。 学习微服务技术来解…

Android 端侧运行 LLM 框架 MNN 及其应用

MNN Chat Android App - 基于 MNN 引擎的智能聊天应用 一、MNN 框架简介与工作原理1.1 什么是 MNN?1.2 MNN 的工作原理 二、MNN Chat Android App2.1 MNN Chat 的功能2.2 MNN Chat 的优势2.3 MNN Chat Android App 的使用 三、总结 随着移动端人工智能需求的日益增长…

基于Python 宠物用品库存管理系统开发

Python 宠物用品库存管理系统开发 一、项目背景与需求分析 在宠物行业蓬勃发展的当下,宠物用品店的商品种类繁多,库存管理变得尤为重要。为了提高管理效率、减少人为错误,我们可以开发一个宠物用品库存管理系统。该系统需要具备商品信息管理…

Linux---共享内存

1.ipcs命令 IPC机制是一个让人烦恼的问题:编写错误的程序或因为某些原因而执行失败的程序将把它的IPC资源(如消息队列中的数据)遗留在系统里,并且这些资源在程序结束后很长时间让然在系统中游荡,这导致对程序的新调用…

数据结构与算法:二叉树

目录 树的概念 二叉树 二叉树性质 二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历 二叉树节点个数 二叉树叶子节点个数 二叉树高度 二叉树第k层节点个数 二叉树查找值为x的节点 判断二叉树是否是完全二叉树 二叉树销毁 树的概念 树型结构是一类重要的非线性…

中科大计算机网络原理 1.5 Internt结构和ISP

一、互联网的层次化架构 ‌覆盖范围分层‌ ‌主干网(Tier-1级)‌ 国家级或行业级核心网络,承担跨区域数据传输和全球互联功能。例如中国的四大主干网(ChinaNET、CERNET等)以及跨国运营商(如AT&T、Deuts…

AI编程界的集大成者——通义灵码AI程序员

一、引言 随着软件行业的快速发展和技术的进步,人工智能(AI)正在成为软件开发领域的一个重要组成部分。近年来,越来越多的AI辅助工具被引入到开发流程中,旨在提高效率、减少错误并加速创新。在这样的背景下&#xff0…

GPT-4.5震撼登场,AI世界再掀波澜!(3)

GPT-4.5震撼登场,AI世界再掀波澜! GPT-4.5震撼登场,AI世界再掀波澜!(2) (一)伦理困境:如何抉择 GPT-4.5 的强大功能在为我们带来诸多便利的同时,也引发了一系列深刻的伦理问题,这些问题犹如高…

electron-builder打包时github包下载失败【解决办法】

各位朋友们,在使用electron开发时,选择了electron-builder作为编译打包工具时,是否经常遇到无法从github上下载依赖包问题,如下报错: Get "https://github.com/electron/electron/releases/download/v6.1.12/ele…

【Linux】命令行参数 | 环境变量(四)

目录 前言: 一、命令行参数: 1.main函数参数 2.为什么有它? 二、环境变量: 1.main函数第三个参数 2.查看shell本身环境变量 3.PATH环境变量 4.修改PATH环境变量配置文件 5.HOME环境变量 6.SHELL环境变量 7.PWD环境变…

计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Python实现GO鹅优化算法优化BP神经网络回归模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 传统BP神经网络的局限性:BP(Back Propagation)神经网络作为一种…

1.忆往昔—Java发展史

在编程世界的远古时代,C语言和C统治着大地,但它们复杂且难以驾驭。1995年5月23日,Java 1.0正式发布,它像一把神奇的钥匙,打开了“一次编写,到处运行”的大门。 早在1991年Java就已经初见雏形,不…

Vue+Elementui 全局配置el-table表格列宽可拖拽

1、需求分析 如何让表格列宽可以拖动 elementui的el-table如果想要列宽可以拖动的话 有一个属性叫 border 在模板里添加这个属性即可实现 但是系统里面的表格我不可能一个一个去添加border太麻烦 如果能够全局配置岂不是非常省时间吗 我们在main.js里面通过全局混入的方式来…

“Web渗透测试实战指南|BWAPP靶场全关卡通关教程(含高中低/不可能级别)从SQL注入到XSS攻击手把手教学|网络安全工程师必备技能“ 内容较长点赞收藏哟

目录 Low级别 ---A1 - Injection{注入}-- HTML Injection - Reflected (GET) HTML Injection - Reflected (POST) HTML Injection - Reflected (URL) HTML Injection - Stored (Blog) iFrame Injection LDAP Connection Settings Mail Header Injection (SMTP) OS Co…

释放 Cursor 的全部潜能:快速生成智能 Cursor Rules

释放 Cursor 的全部潜能:使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件,轻松生成 Cursor Rules,并通过 PromptCoder 这个强大的工具,快速创建高质量的 curso…

DeepSeek开源周-汇总

当 ChatGPT、Claude 这些闭源大模型严防死守技术秘密时,DeepSeek 却反其道而行,选择了全面开源,为整个 AI 生态注入新的活力。 在过去短短一周内,DeepSeek 连续在 GitHub 开源了 8 个核心技术项目,完成了一次震撼业界…

02内存映射与bmp解码

一、mmap 内存映射 内存映射的作用是把硬件设备的地址,映射到应用层的内存空间,这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

I2C驱动(九) -- i2c_adapter控制器驱动框架编写

相关文章 I2C驱动(一) – I2C协议 I2C驱动(二) – SMBus协议 I2C驱动(三) – 驱动中的几个重要结构 I2C驱动(四) – I2C-Tools介绍 I2C驱动(五) – 通用驱动i2c-dev.c分析 I2C驱动(六) – I2C驱动程序模型 I2C驱动(七) – 编写I2C设备驱动之i2c_driver I2C驱动(八) – 编写I2C…