临界区
虽然多个进程可以共享系统资源,但是其中许多资源一次只能被一个进程使用,这种资源称为临界资源。将每一个进程访问临界资源的那段代码称作临界区,为了保证临界资源正常使用,可以把临界资源访问分为四个部分:
- 进入区 进入区检查当前代码是否可以进入临界区,如果可以进入临界区,则应该应该设置正在访问临界区的标志,以阻止其它进程同时进入临界区。
- 临界区 指进程访问临界资源的那段代码。
- 退出区 将正在访问临界区的标志清除。
- 剩余区 代码中的其余部分。
为避免两个进程同时进入临界区,同步机制应该遵寻以下准则:
- 空闲让进 临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区
- 忙则等待 当已有`进程进入临界区时,其它试图进入临界区的进程必须等待
- 有限等待 对请求访问的进程,应该保证能在有限时间内进入临界区
- 让权等待 当进程不能进入临界区时,应立即释放处理器,防止进程忙等待。
区分同步和互斥: 同步称作直接制约关系,它是指为了完成某种任务而建立的2个或者多个进程,这些进程因为要在某些位置上协调工作次序而等待、传递消息所产生的制约关系。例如:写进程A通过单缓冲区向读进程B提供数据。当缓冲区为空时,进程B因为不能获得数据而阻塞,一旦进程B将数据写入缓冲区,进程B被唤醒,反之,当缓冲区满时,进程A被阻塞,仅当B取走缓冲区数据时,才唤醒A。 互斥称作间接制约关系,它指当一个进程进入临界区时空,另一个进程必须等待,当它退出临界区时,另一个进程才允许访问临界区。例如有一台打印设备,有两个进程A和B,如果A需要打印时,系统已经将打印机分配给B,则进程A必须阻塞,一段进程B将打印机释放,系统便唤醒进程A,并将其阻塞状态变为就绪状态。
未完,待续....