进程互斥(英文名:mutual exclusion)[1],是指两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥,即一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。[2]与进程同步的直接相互制约关系相比,进程互斥是一种进程间接相互制约关系。[3]
实现进程互斥要编写进入区(entry section)和退出区(exit section),保证同一时刻最多只有一个进程处于临界区内。[2]为实现进程互斥须遵循空闲让进、 忙则等待、有限等待、让权等待四大准则。[4]
进程互斥的实现可以依靠Dekker算法、Peterson算法等软件方式;[5]以及开关中断指令、测试与设置指令、交换指令等硬件方式。[6][7]此外还可以依靠信号量机制来实现,信号量又可以分为整形信号量和结构型信号量等。[8]实现进程互斥的过程中,可能会遇到死锁和饥饿的问题。[9]在实际应用中,进程互斥主要应用于操作系统中的资源管理、数据库系统中的事务处理等领域中。[10][11]随着技术的发展,面向分布式系统的互斥算法:集中式算法、令牌环算法和分布式算法等。[12] 基本概念
进程互斥就是指两个或两个以上的进程不能同时进入关于同一组共享变量的临界区,否则可能发生与时间有关的错误。实现进程互斥就要编写进入区(entry section)和退出区(exit section),保证同一时刻最多只有一个进程处于临界区内。[2]进程互斥的目的就是使某一进程可以在某一时间内独占一些资源,避 免进程间的冲突和竞争。[13]