顺序程序设计:
一、执行的顺序性(即一个程序在处理器上是严格按照顺序执行的,每一个操做必须在一个操做开始以前结束)。
二、环境的封闭性(程序运行独占全机资源,注意,是全机资源!后面咱们能够看到和并发设计的不一样点)。
三、过程的可再重现性(简单点说就是无论你的计算机配置高仍是配置低、何时运行、什么地方运行,它输出的结果都是唯一的。这一点当你看到下面的并发进程就会深入体会到。由于并发程序执行的结果与时间相关)。并发
并发程序设计:
程序并发执行是指一组程序的执行在时间上是重叠的,所谓时间重叠就是一个程序还没运行结束另外一个程序就开始执行了,或者说,多个程序处于都已开始执行但都还未执行完成。举个栗子,A、B分别执行操做a1,a2,a3和b1,b2,b3。在单处理器上,顺序执行操做序列为a1,b1,a2,b2,a3,b3或a1,b1,a2,b2,b3,a3等,则称A和B的执行是并发的。从宏观上来看,并发性反映一个时间段内有几个程序都处于运行但还没有结束的状态。注意:这只是宏观上看来,其实处理器在同一时刻只能处理一个程序,千万不要觉得同一时刻处理器在处理多个程(要是有多个处理器那就另当别论了~)。就像你的大脑同样,让你同一时刻算多道运算题,你以为可能吗。计算机并发地计算多道题目只不过是先计算A题,可是还没执行完,而后又去执行B题,B题还没执行完,下面说不定又去执行A题或者其余的题目。这样在用户看来好像是多个程序在同时执行。固然了这一切的保证是计算机运算速度是至关快的。若是计算机运行的速度很是慢(究竟有多慢本身脑补),你会明显感受到cpu的控制权在各个程序之间来回交替。spa
进程的交互:竞争和协做
一、竞争关系
因为建立了多个进程,这些进程共享计算机的资源。而对于一些独占型(就是同一时刻只能有一个进程在占有这些资源)的资源,则会引起进程之间的竞争。 操作系统
进程互斥:若干进程相互争夺独占型资源而产生的竞争制约关系。举个通俗点的栗子,就像多个男同窗同时追一个女同窗,这个女同窗一次只能选择跟一个男生谈恋爱。这个时候女生就至关于那个独占型资源。固然了,若是人家就是喜欢跟一群~男生谈恋爱,那就另当别论了(有点邪恶了)。。。
二、协做关系
一组并发进程共同完成一个任务须要分工协做。可是因为它们都独立地以不可预知的速度推动(为何说不可预知,由于操做系统啥时候让你运行,让你运行多久都不是你这种小角色可以知道的~计算机的世界里,操做系统就是最大的领导),可是他们在前后次序上又有一些约束。上个栗子,有三个进程协做完成数据读入、加工和打印任务,在一块数据还未读入以前是不能进行够加工处理的,在加工处理完一块数据以前是不能打印输出的,这就是他们之间的协做关系。设计
进程同步:并发进程之间协做完成共同的任务,可是在前后次序等等条件上有一些制约关系。进程
进程之间的互斥关系是一种特殊的同步关系。由于它们在那群男生在排队和那一个女生谈恋爱的时候,也是有一个协调关系的。一次跟一群男生谈恋爱是很容易引发群架的~因此他们之间得有个前后关系。资源