进程同步/异步

进程同步:这是进程间的一种运行关系。“同”是协同,按照一定的顺序协同进行(有序进行),而不是同时。即一组进程为了协调其推进速度,在某些地方需要相互等待或者唤醒,这种进程间的相互制约就被称作是进程同步。这种合作现象在操作系统和并发式编程中属于经常性事件。具有同步关系的一组并发进程称为合作进程

  • 间接制约:当两个进程需要同一资源时,当A进程占用资源时,B进程就不能使用资源,从而导致阻塞,当A进程使用完毕时,B进程才能从阻塞状态转为就绪状态;
  • 直接制约:A进程需要获取写入内存,B进程需要从此内存中读出数据,这是当A进程没有写入时,B进程就处于阻塞状态,当A进程写入B进程才能转为就绪执行

举例:一个进程访问一个临界资源,如果临界资源被占据,另一个进程就必须等待它释放临界资源它才可以访问,两个进程之间按这种顺序执行。

进程异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。两个进程同时运行,与并行操作不同,它的两个进程之间是有关系的。即调用者不会一直按照这个顺序傻傻等待着被调方处理完,而是在这段期间做自己的事,直到被调方给他通知再去处理。异步需要内核底层的一些机制,来通知另一个进程去访问临界资源

举例:两个进程访问一个临界资源,如果进程A正在访问临界资源,这时B进程也访问临界资源,发现被占用,于是B就会去干自己的事情,等到A进程释放临界资源,会通知B,B就会来访问资源。

同步是指两个进程的运行是相关的,其中一个进程要阻塞等待另外一个进程的运行。异步的意思是两个进程毫无相关,自己运行自己的。 

并发操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。

并行当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)

互斥并发进程之间的制约关系有两种,即互斥同步

多个并发进程之间,因竞争使用临界资源而互相排斥执行的间接制约关系,叫作互斥。

互斥与同步的区别:

互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源

也即进程互斥就是指多个进程在对临界资源进行访问的时候,应采用互斥方式。而进程同步是指相互合作去完成相同的任务的进程间,由同步机构对执行次序进行协调。

如何实现进程同步:

1、信号量:signal=1时 ,A进程可以占用资源,占用资源后signal-1;此时signal=0;B进程不可占用此资源,当A进程释放资源后,signal+1(即signal=1)时,B进程可使用

2、互斥机制:你用我就不能用,一山不容二虎

阻塞运行/非阻塞运行和进程同步/进程异步的区别?

进程同步/异步指的是进程之间的运行关系,但是阻塞和非阻塞是访问资源的一种运行状态

同步是阻塞模式,异步是非阻塞模式。 

猜你喜欢

转载自blog.csdn.net/Eunice_fan1207/article/details/83032622