持续更新中。。。
1. 进程、线程、协程的原理和比较
简答:
1. 进程:
2. 线程:
3. 协程:
1.进程:
-
操作系统分配最小单元, 进程是一个实体。每个进程都有自己的地址空间(CPU分配)。实体空间包括三部分:
* 文本区域:存储处理器执行的代码。 * 数据区域:存储变量或进程执行期间使用的动态分配的内存。 * 堆栈:进程执行时调用的指令和本地变量。
-
进程是一个"执行中的程序"
程序是指令与数据的有序结合, 程序本身是没有生命的, 只有CPU赋予程序生命时(CPU执行程序), 它才能成为一个活动的实体, 成为"进程"
概括来说, 进程就是一个具有独立功能的程序在某个数据集上的一次运行活动
-
进程的特点:
* 动态性:进程是程序的一次执行过程,动态产生,动态消亡。 * 独立性:进程是一个能独立运行的基本单元。是系统分配资源与调度的基本单元。 * 并发性:任何进程都可以与其他进程并发执行。
-
并发与并行
并发:在操作系统中,某一时间段,几个程序在同一个CPU上运行,但在任意一个时间点上,只有一个程序在CPU上运行。
当有多个线程时,如果系统只有一个CPU,那么CPU不可能真正同时进行多个线程,CPU的运行时间会被划分成若干个时间段,每个时间段分配给各个线程去执行,一个时间段里某个线程运行时,其他线程处于挂起状态,这就是并发。并发解决了程序排队等待的问题,如果一个程序发生阻塞,其他程序仍然可以正常执行。
并行:当操作系统有多个CPU时,一个CPU处理A线程,另一个CPU处理B线程,两个线程互相不抢占CPU资源,可以同时进行,这种方式成为并行。
区别:
并发只是在宏观上给人感觉有多个程序在同时运行,但在实际的单CPU系统中,每一时刻只有一个程序在运行,微观上这些程序是分时交替执行。
在多CPU系统中,将这些并发执行的程序分配到不同的CPU上处理,每个CPU用来处理一个程序,这样多个程序便可以实现同时执行。