进程控制的学习

进程控制(Process Control)是指操作系统对进程的创建、执行、暂停、恢复、终止等一系列状态变化进行管理和协调的过程

简单说,就是系统让各个程序能有序地运行,合理地使用CPU和资源,而不会互相冲突或者出错。

主要包括这些内容:

  • 创建进程:比如你打开一个软件,系统就会创建一个新的进程。

  • 调度进程:决定哪个进程先用CPU、用多久(比如短时间内切换很多次,给人感觉"同时在运行")。

  • 阻塞与唤醒进程:比如一个进程在等待数据(读文件),系统就可以让它暂时停下来,等数据到了再继续。

  • 终止进程:比如你关闭一个软件,系统就把对应的进程彻底结束,释放资源。

核心目的就是:保证多任务运行时,各进程高效、安全、公平地共享系统资源

你可以把 ​​原语​ ​ 想象成一种"​​不可分割的操作​​",就像你生活中的某些必须"一步到位"的事情一样。用三个关键词理解:


1️⃣ ​​举个栗子🌰:​

假设你要往存钱罐存钱:

  • ​正确操作(原语):​ 整个动作(打开盖子 → 放钱 → 盖上盖子)​必须一次性完成​,中间不能被打断。
  • ​错误操作(非原语):​ 如果你刚打开盖子,还没放钱就被妈妈叫走,存钱罐可能被弟弟抢走乱塞东西,导致结果混乱。

​原语的核心就是:要么不做,要么做完,没有中间状态!​

我们可以用 ​​"打游戏存档"​ ​ 来类比理解 ​​"保护进程运行现场"​​ 的含义:


​1️⃣ 什么是进程的运行现场?​

想象你在玩一个游戏(相当于一个进程),游戏进行到一半时,突然需要接电话(相当于操作系统要切换进程)。此时你必须记录以下信息才能之后继续游戏:

  • ​游戏进度​(程序执行到哪一行代码)
  • ​背包里的道具​(CPU寄存器的值)
  • ​角色位置和血量​(内存数据、堆栈状态)
  • ​当前的游戏设置​(进程打开的文件、权限等)

这些信息的总和就是 ​​"进程运行现场"​ ​,相当于游戏的 ​​"存档"​​。


​2️⃣ 为什么要保护运行现场?​

如果接电话前不存档:

  • ​回来继续游戏时​:忘记角色位置、道具丢失,游戏无法继续(进程崩溃)。
  • ​同时玩多个游戏​:切换游戏时进度混乱(多任务系统无法正常运行)。

​保护运行现场的核心目的​ ​:

让操作系统能随时暂停一个进程,去运行其他进程,之后再 ​​无缝恢复原进程的执行​​,就像什么都没发生过一样。


​3️⃣ 操作系统如何保护运行现场?​

​关键动作:上下文切换(Context Switching)​

1️⃣ ​​保存现场​ ​:

暂停当前进程时,操作系统会将其 ​​程序计数器(PC)、寄存器值、堆栈指针​ ​ 等关键数据保存到 ​​PCB(进程控制块)​ ​ 中。
(相当于把游戏存档到硬盘)

2️⃣ ​​加载新现场​ ​:

从另一个进程的PCB中读取其上次保存的状态,恢复寄存器、程序计数器等。
(相当于读取另一个游戏的存档)

3️⃣ ​​继续执行​ ​:

CPU根据恢复的现场数据,从上次中断的位置继续运行进程。
(接着上次的存档继续玩游戏)


​🌰 举个栗子​

  • ​场景​:你正在用浏览器下载文件(进程A),此时需要切换到微信聊天(进程B)。
  • ​保护现场​
    1. 操作系统保存浏览器当前的下载进度、网络连接状态、内存数据到PCB。
    2. 从微信的PCB中恢复上次的聊天窗口、输入光标位置等。
  • ​结果​
    切换回浏览器时,下载会从上次中断的位置继续,用户完全感知不到切换过程。

​4️⃣ 不保护运行现场会怎样?​

  • ​数据丢失​:进程恢复时找不到之前的执行位置,导致崩溃(比如银行转账中途被中断,钱扣了但没到账)。
  • ​多任务失效​:系统只能运行一个进程,无法实现"边听歌边写文档"。

​📌 总结​

​保护进程运行现场 = 给进程打"即时存档"​

  • ​目的​:实现多任务切换时"丝滑无感"。
  • ​核心操作​:保存寄存器、程序计数器等关键状态到PCB。
  • ​结果​:操作系统像魔术师一样,让多个进程"同时运行"(实际是快速切换)。

就像你同时追三部剧,每次切换时都能精准续播,全靠"进度保存"这个魔法! 🎮→📞→🎮

相关推荐
虾球xz12 分钟前
游戏引擎学习第247天:简化DEBUG_VALUE
c++·学习·游戏引擎
小趴菜5号1 小时前
windows下将Ctrl+Tab映射到Alt+Tab实现切换程序的解决方案
操作系统
superior tigre1 小时前
C++学习:六个月从基础到就业——模板编程:模板特化
开发语言·c++·学习
·醉挽清风·1 小时前
学习笔记—双指针算法—移动零
c++·笔记·学习·算法
艾醒(AiXing-w)2 小时前
探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码
人工智能·学习·语言模型
搏博4 小时前
机器学习之三:归纳学习
人工智能·深度学习·学习·机器学习
AgilityBaby4 小时前
unity Animation学习,精准控制模型动画播放
学习·3d·unity·游戏引擎
每次的天空5 小时前
Android学习总结之扩展基础篇(一)
android·java·学习
【0931】5 小时前
差错检测的学习
网络·学习
咦!一只菜鸡5 小时前
idea连接远程服务器kafka
分布式·学习·kafka