进程同步(英文名:Process Synchronization[1]),在广义上指并发进程在执行时序上的相互制约关系,它包括进程的同步和互斥,[3]在狭义上指为完成某种任务而建立的两个或多个进程,因需要在某些位置上协调它们的工作次序而产生的互相等待的制约关系。[4]进程同步可以实现对于I/O设备等一些共享资源中某个进程要独占式访问的要求。[5]
进程同步的实现需要遵循相应的机制和方法,其同步机制包括空闲让进、忙则等待、有限等待、让权等待。[6]进程同步的实现方法可分为软件方法和硬件方法,其中硬件方式包括禁止中断和专用机器指令等,[7][8]而软件方式则可以依靠锁机制、信号量机制以及管程机制,其中信号量机制又可以细分为整形信号量、记录型信号量 、AND型信号量和信号量集类型。[9][10]
典型的同步问题包括生产者—消费者问题、读者—写者问题以及哲学家进餐问题,其可以通过不同的信号量机制来解决,[11][12]而参照这些经典问题可以直接或间接地解决 生活中的实际问题。[13]
概念定义
进程同步的出现是为了针对I/O设备等一些共享资源,经常会有某个进程要独占式访问的要求,因此需要进程同步机制来保证这些资源再同一时间内仅有一个进程访问。[5]广义上的进程同步定义为并发进程在执行时序上的相互制约关系,它包括进程的同步和互斥。[3]狭义上的进程同步是指为完成某种任务而建立的两个或多个进程,因需要在某些位置上协调它们的工作次序而产生的互相等待的制约关系。[4]