对于并发百度百科上这样描述的:
并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能只有一道程序在执行,故微观上这些程序只能是分时交替执行。
打个比方:你在一家公司工作,boss让你既做前台又做HR,这时候你就并发了,后来老板看来你干得不错,公司又融到资了,觉得HR更适合你,又招了一个前台,这时候你们两就并行了。
为了并发这个理论的实现,操作系统弄出了进程这个东西。但是多进程的出现会引发原子性、如何协作问题,为了解决这个问题先辈们又引入了一系列的概念。
我们继续看看百度百科是怎么引出这些概念的。
进程同步
是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。
进程互斥
是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。
临界资源
在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程所共享的一些变量和数据等(如果这类资源不被看成临界资源加以保护,那么很有可能造成丢数据的问题)。
对于临界资源的访问,必须是互诉进行。也就是当临界资源被占用时,另一个申请临界资源的进程会被阻塞,直到其所申请的临界资源被释放。而进程内访问临界资源的代码被成为临界区。
这时候大家是不是想起了常问的防止死锁的四个必要条件,这个大家自行百度回温一下。
好了,那么上面仅仅是概念,操作系统为了实现这些究竟用了什么手段呢。
信号量、管程(Monitor)相继出现
那么并发究竟是要解决什么问题呢,为了解决这些问题又产生了哪些技术?