【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信
- 进程的互斥、同步与通信
- 进程的互斥
- 进程的同步
- 进程的通信
进程的互斥、同步与通信
进程的互斥
两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。我们可以看出,进程的互斥离不开临界资源和临界区,其可以定义为:在某段时间内只允许一个进程使用的资源称为临界资源,使用临界资源的那一部分程序称为程序的临界区。它存在的目的是有效的防止竞争条件又能保证最大化使用共享数据。而这些并发进程必须有好的解决方案,才能防止出现以下情况:多个进程同时处于临界区,临界区外的进程阻塞其他的进程,有些进程在临界区外无休止的等待。除此以外,这些方案还不能对CPU的速度和数目做出任何的假设。
为了提供对互斥的支持,系统必须满足以下条件:
- 互斥:一次最多一个进程能够进入临界区,当有进程在临界区执行时,其它进程若想要进入临界区,则需要等待。
- 有限等待:不能让一个进程无限制地在临界区内执行,即任意进入临界区的进程必须在有限时间内退出临界区。
- 空闲让进:如果某进程退出临界区,而有其它进程正在等待进入临界区时,应当让这个进程进入。
互斥机制可以在体系结构层次上实现,也可以在软件层次上实现。
-
通过禁止中断实现。即在进入临界区之间通过设置特殊的寄存器实现中断的屏蔽(禁止中断),然后在临界区执行完成后再恢复中断。其保证了临界区不会发生中断,所以可以保证进程在进入临界区后不会被打断执行,因此有效地实现了互斥。其也具有一些缺点:该方法的代价太高,由于禁止了中断,系统执行的效率会有明显的降低;该方法不能用于多处理器结构。
-
通过专用机器指令实现。此方法是通过一条或多条为互斥功能开发的专用指令实现的,比如
compare_and_swap
指令,这种方法的实现一般需要体系结构提供互斥锁或通过指令实现互斥锁或自旋锁机制。这种方法的优点表现为:适用范围广。适用于在单处理器或共享内存的多处理器上的任意数目进程;使用简单。指令设置简单,容易验证其正确性。
可支持多个临界区。当然,其也有一些缺点:导致CPU空耗。当一个进程等待进入临界区时,会不断地持续检测,消耗处理器时间;导致饥饿进程。由于各种原因,当有多个进程都在等待进入临界区时