进程具有异步性的特征。
异步性是指各并发执行的进程以各自独立的、不可预知的速度向前推进。操作执行的先后顺序不确定。
同步亦称直接制约关系,它是指为完成某种任务而建立的两个/多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
进程同步讨论的就是怎么解决异步问题。
(1)进程互斥:当一个进程在访问临界资源时,另一个想要访问该临界资源的进程必须等待。
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
互斥,亦称间接制约关系。
(2)对临界资源的互斥访问,可以在逻辑上分为如下四个部分:
①进入区:负责检查是否可进入临界区,若可进入,则应设置正在访问临界资源的标志(上锁)。
②临界区:访问临界资源的代码段。
③退出区:负责解除正在访问临界资源的标志(解锁)。
④剩余区:做其他处理。
注意:进入区和退出区是负责实现互斥的代码段。
(3)为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:
①空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
②忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
③有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)。
④让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。