目录
https://blog.csdn.net/weixin_45792450/article/details/109314765
由CPU并行引发的思考
现代计算机CPU是并行执行程序的,本质上宏观上并行,微观上串行。
比如有A,B两个程序在并行执行,将CPU的1s时间平均分为一万份时间片,并排上序号0,1,2…,9999.在序号为偶数的时间片执行A,序号为奇数的时间片执行B,由于1s的万分之一特别短,以致出现了在宏观上感觉A和B在并行执行。
程序指令在CPU中执行,会使用CPU中的寄存器保存一些状态变量。那么,这引出了一个问题:怎样将在CPU状态下执行的A换成B或者B换成A呢?直接转换肯定不行,CPU中的寄存器数据会混乱。不止寄存器,还有一些CPU状态可能也会混乱。
很显然,需要记录A,B的CPU执行状态和其他的一些关键参数(比如CPU里面寄存器的内容等等,这些数据很可能换一个对象执行时会被污染),这叫保护现场。对应恢复程序原先执行环境参数的过程叫恢复现场,它们是协调工作的。
引入进程控制块PCB(Process Control Block)的数据结构,用于记录CPU再次执行A或B时需要的‘现场’。而上面的A,B是两个进程,两个独立执行的单位。
在上面例子中,A有一个PCB,B也有一个PCB。
进程概念的理解
进程 = 程序 + 数据 + 进程控制块PCB
它是程序一次运行的活动,是运行起来的程序。程序开始运行,相应进程创建;程序运行结束,相应进程销毁。
程序 作业 进程
程序:放在外存中的程序代码
作业:正准备从外存调入内存的程序
进程:正在从内存中运行的程序
一个理解进程鲜活的例子
# 进程与程序的区别