进程的互斥、同步:
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
进程的状态是基于一定的原因和条件而变化的。而这些原因和条件又常常是因为进程间的相互制约关系而引起的。系统中进程会有这种关系。主要是由于进程对资源的共享性,由于这种共享的特征,使系统中原来没有逻辑关系的进程因为互相竞争资源而发生了制约关系。这种关系的基本形式"进程-资源-进程"这是进程间通过资源而发生的一种间接关系。由于系统对进程所请求的许多资源常常是互斥满足的,所以这咱关系表现为互斥关系。
又由于系统中为了完成同一个任务而创建若干进程,它们之间必然是伙伴进程。如作业的一组并行进程共同完成一项任务,有时它们要在某点上互相等待或互通消息,这种关系的基本形式是"进程-进程",这是进程之间的一种直接关系,表现了进程之间的协同工作的特性,称为进程间的同步关系。例如:现在A,B两个进程,A进程负责输入数据并送入缓冲区中,B进程必须负责加工缓冲区中的数据并输出,为了保证这两个进程之间能够协同工作。则B进程必须等待A进程发来缓冲区已满的信号后才开始工作。A进程必须等待B进程发来缓冲区中的数据加工并输出后才能再输入下一批数据。这体现了进程之间的的同步关系。又由于这两个进程共用同一个缓冲区。因此,它们对缓冲区的操作还应该作到互斥。
消息通信机制的同步、异步:
所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。
而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。
举个通俗的例子:
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。
http://m.blog.csdn.net/Alvin_CSDN_blog/article/details/64124077点击打开链接
https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5/4855164?fr=aladdin点击打开链接
https://www.cnblogs.com/kubixuesheng/p/4355786.html点击打开链接