并行与并发
并行
在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
并发
了解下单道程序技术和多道程序技术可以加深对并发的理解。
单道程序技术
为了实现对作业的连续处理,作业以脱机IO的形式输出到磁带上,并在系统中配备监督程序。
作业被一个一个的连续处理,直至作业被全部处理完成(程序的顺序执行)。单道程序技术是为了解决人机矛盾和CPU与IO设备不匹配的问题,但是不能充分的利用系统的资源,现已很少被使用。
多道程序技术
在该系统中,用户提交的作业会暂时存在存放在外存上,并排成一个队列,称为后备队列。然后作业调度时会按一定的算法从队列中选取若干作业放入内存,使他共享cpu和系统中的各种资源。在执行一程序时利用IO操作cpu处于空挡期在调用另一程序运行,进而实现多道程序交替运行,提高CPU的利用率。
正因为系统中的多道程序技术,使得程序可以并发执行。
并发是指在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行)。
通俗理解
假如有一个场景,某个人正要做两个事,吃饼干,看书。下面有两种情况
情况一 他在看书的同时吃饼干,最后饼干吃完了,书也看完了
情况二 他看书的时候,没有吃饼干,在吃饼干的时候没有看书,但是这两件事件在一段时间内做完了。
并行为情况一,在同一时刻做多件事
并发为情况二,在一段时间内,多个事件在做,宏观上相当于这段时间内同时做多件事,但在微观上同一时刻只能做一件事。
单处理机系统和多处理机系统中的并发
单处理机系统,将CPU执行分成多个时间片,在不同的时间片中切换不同的程序,使之交替执行,在微观上,同一时刻只能运行一个程序,宏观上,在一个时间段内多个进程是同时进行的。
多处理机的系统,可以充分利用多处理机的优势,这些并发执行的程序可被分在多个处理机中实现并行执行。
备注:单处理机系统指系统中有一个物理CPU,多处理机系统是指系统中有多个物理CPU。
进程和线程
进程
为了对并发执行的程序加以描述和控制,引入了进程的概念,为多个程序建立多个进程,他们可以并发执行。进程是指在系统中能独立运行并作为资源分配的基本单位,他是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
不过进程的时间和空间开销较大,比如一个进程并发执行需要以下步骤
1、创建进程,分配资源,建立PCB
2、撤销进程,回收占用资源
3、进程的切换,对进程进行上下文切换,需要保留当前CPU环境,并设置新选中的CPU环境
线程
线程作为比进程更小的调度和分派的基本单位,不在拥有资源的基本单位属性,共享进程中分配的资源,是进程的实体。
线程是轻型进程,在线程切换时仅需保存和设置寄存器中的少量内容,相较于进程切换来说,线程的切换代价远小于进程切换,此外线程在分配和回收PCB和其他资源时,线程付出的代价也远小于进程。
进程与线程的关系
- 一个程序中至少拥有一个进程,一个进程中至少拥有一个线程。
- 在多处理机系统中,单线程进程只能运行在一个处理机上,但对于多线程进程,其可以将一个进程中的多个线程分配到多个处理器上,并行运行。
- 多进程,多线程在多处理机系统中都可以利用多个处理机的优势,可以实现并行执行,在单处理机中只能并发执行。
协程
协程,相较线程来说更加轻量级的;它不被操作系统的内核所管理,完全由程序所控制,在并发时不需要切换上下文,极大的减少了资源的消耗。