跳转至

进程的同步

定义

进程同步是指在并发运行的进程中,当一个进程运行到某个特定位置(称为同步点)时,只有在其他进程已经完成某些操作、满足了继续运行的条件(称为同步条件)后,该进程才能继续运行;否则必须等待。

进程同步的关键要素:

  1. 同步点:进程在此处等待其他进程的某些操作完成,以满足继续执行的条件。

  2. 同步条件:必须满足的条件,使进程在同步点上能够继续执行。

  3. 作用:通过同步机制,可以协调多个进程的执行顺序,确保数据一致性和资源的正确使用,防止竞争和冲突。

进程同步常通过信号量机制事件通知条件变量等方式实现。

互斥问题

互斥问题主要解决的是多个并发进程对临界区(Critical Section)的访问控制问题。在并发系统中,多个进程可能同时访问共享资源,如果没有适当的控制机制,可能会导致竞态条件、数据不一致或资源冲突。

  • 信号量解决互斥问题: 利用信号量(Semaphore)可以解决互斥问题,通过对信号量的P(等待)和V(释放)操作来控制进程对共享资源的访问:
  • P操作:请求进入临界区,若信号量为0,进程会阻塞,直到信号量大于0。
  • V操作:退出临界区,释放信号量,通知其他进程可以进入临界区。

互斥的实现:通过设定一个信号量(如 semaphore mutex = 1),保证在任何时刻只有一个进程可以进入临界区,其他进程只能等待,直到信号量恢复,表示可以进入临界区。这样就解决了并发进程对临界区的互斥访问问题。

进程同步问题

进程同步问题则关注多个并发进程如何协调工作,确保按照某种顺序或规则执行,以实现共同的目标。不同于互斥,进程同步更多的是在进程间进行协作、协调,解决进程之间的顺序和依赖关系。

  • 异步环境下的进程同步问题: 在异步环境中,每个进程都是独立的,并以各自不可预知的速度推进。进程之间需要协调,才能完成一个共同的任务。例如,生产者-消费者问题、读写锁、信号量等机制都可以解决进程之间的同步问题。

  • 进程同步的定义

    • 进程同步:相互合作的一组并发进程,其中每一个进程都以各自独立的速度向前推进,但它们需要密切合作,以完成共同的任务。
    • 在这些进程之间,必须确保它们“知道”对方的存在,并且协调各自的工作,保证正确的执行顺序。

解决方法:使用两个信号量来控制同步:

  • 空槽信号量:表示缓冲区中空余的空间,初始值为缓冲区大小。

  • 满槽信号量:表示缓冲区中已存放的项目数量,初始值为0。