Python
进程、线程、协程详解
进程与线程的历史
我们都知道计算机是由硬件和软件组成的。
硬件中的
CPU
是计算
机的核心,
它承担计算机的所有任务。
操作系统是运行在硬件之
上的软件,是计算机的管理者,它负责资源的管理和分配、任务
的调度。
程序是运行在系统上的具有某种功能的软件,
比如说浏
览器,音乐播放器等。每次执行程序的时候,都会完成一定的功
能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要
一个专门的管理和控制执行程序的数据结构——进程控制块。
进
程就是一个程序在一个数据集上的一次动态执行过程。
进程一般
由程序、数据集、进程控制块三部分组成。我们编写的程序用来
描述进程要完成哪些功能以及如何完成;
数据集则是程序在执行
过程中所需要使用的资源;
进程控制块用来记录进程的外部特征,
描述进程的执行变化过程,系统可以利用它来控制和管理进程,
它是系统感知进程存在的唯一标志。
在早期的操作系统里,
计算机只有一个核心,
进程执行程序的最
小单位,任务调度采用时间片轮转的抢占式方式进行进程调度。
每个进程都有各自的一块独立的内存,
保证进程彼此间的内存地
址空间的隔离。随着计算机技术的发展,进程出现了很多弊端,
一是进程的创建、
撤销和切换的开销比较大,
二是由于对称多处
理机(对称多处理机(
SymmetricalMulti-Processing
)又叫
SMP
,