进程
进程的理论基础
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
-
狭义定义:进程是正在运行的程序的实例。
-
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域、数据区域和堆栈。
- 文本区域存储处理器执行的代码;
- 数据区域存储变量和进程执行期间使用的动态分配的内存;
- 堆栈区域存储着活动过程调用的指令和本地变量。
程序是一个没有生命的实体,只有在处理器赋予程序生命(也就是操作系统将其执行时),它才能成为一个活动的实体,也就是“执行中的程序”,我们称其为进程。
进程的特征:
- 动态性:进程是动态产生,动态消亡的。
- 并发性:任何进程都可以同其他进程一起并发执行。
- 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
- 异步性:不同的进程会按照各自独立的、不可预知的速度向前推进。
- 结构特征:进程由程序、数据和进程控制块三部分组成。
进程和程序的区别:
- 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程是程序在处理机上的一次执行过程,是一个动态的概念。
- 程序可以作为一种软件资料长期存在,而进程是有一定生命周期的。
- 程序是永久的,进程是暂时的。
补充:CPU的工作机制
CPU的工作机制:
1. 当程序遇到i/o的时候,cpu会自动剥夺执行权限
i/o:又称为i/o密集型,i: input, o: output
eg:
import time
print(123)
time.sleep(3)
print(1)
计算密集型:需要消耗CPU资源
2. 当程序占用时间过长的时候,cpu也会剥夺执行权限
进程的并行和并发
并行:并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU )。
并发:并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目的是提高效率。宏观上好像是同时发生。
问:在双十一时,淘宝的大量用户同时访问网站,是并行还是并发?
答:是并发。
总结:
- 并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。
- 并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session。
阻塞和非阻塞、同步和异步
同步与异步:所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么都成功,要么都失败,两个任务的状态可以保持一致。而异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列。
**阻塞与非阻塞:**阻塞和非阻塞与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。也就是说阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的。举个打电话的例子,阻塞就是拿起电话等待对面的回复,而非阻塞就是不等待。
四种状态:
- 同步阻塞:效率最低。
- 同步非阻塞:效率相对还是较低。
- 异步阻塞:效率较高。
- 异步非阻塞:效率更高。