并发、并行和进程、线程的认识
并发和并行
- 并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
- 并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行。
从微观角度来看,并行(多处理机的情况下,多个京城同时运行)并发(单个处理机的情况下,多个进程在同一时间间隔运行)。
下面用一幅图片来具体展示一下计算机中的并发和并行。
时间片的概念:
现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。所谓的多任务,就是操作系统可以同时运行多个任务。
操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。
这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发。而并行,是多个处理器处理多个任务,是真实的同时进行。
线程和进程
-
进程
进程是正在运行的程序的实例。进程是线程的容器,即一个进程中可以开启多个线程。 -
线程
线程是进程内部的一个独立执行单元;一个进程可以同时并发运行多个线程。
进程中的上下文
上下文简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文环境的切换就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。