Skip to content

2.12 同步互斥概念

Giovanna

About 647 wordsAbout 2 min

2024-08-31

一、相关的关键概念

  • 临界资源

    • 一次仅允许一个进程访问的资源为临界资源
  • 临界区(critical section)

    • 把在每个进程中访问临界资源的那段代码称为临界区
    • 代码作为一个共享资源,一次只能允许一个进程访问
  • 死锁

    • 两个或两个以上的进程相互等待导致都不能执行
  • 互斥

    • 当一个进程在临界访问共享资源时,其他进程不能进入该临界区访问共享资源
  • 竞争

    • 多个进程读写一个共享变量,该变量的最终值依赖它们执行的相对速度
  • 饥饿

    • 一个进程已经完全具备了执行条件,但是得不到CPU资源

二、进程并发导致的问题

  • 进程的并发会导致程序执行结果不封闭

    • 全局资源:对全局资源的访问秩序非常重要
    • 资源分配:不好的分配算法可能导致死锁
  • 为了实现对临界资源的访问,每个进程都互斥地进入自己的临界区:一次只有一个程序在临界区。

    1. 在进入临界区之前,对预先访问的临界资源进行检查
    2. 若该资源尚未被访问,则可以进入临界区;反之则不能
    3. 设置正在访问标志
    4. 访问结束后将资源恢复为未访问标志

三、互斥可能带来的问题

  • 死锁
    • 进程P1占有资源R1,等待资源R2;进程P2占有资源R2,等待资源R1
  • 饥饿
    • 无限期地被推迟访问

四、同步机制遵循的准则

  • 空闲让进。当没有进程处于临界区时,可以允许一个请求进入临界区的进程立即进入自己的临界区。

  • 忙则等待。当已有进程进入其临界区时,其他试图进入临界区的进程必须等待。

  • 有限等待。对要求访问临界资源的进程,应该保证能在有限时间内进入自己的临界区。

  • 让权等待。当进程不能进入自己的临界区时,应释放处理机。

五、如何实现互斥访问

  • 严格轮换:每个进程每次都从头执行到尾

  • 屏蔽中断:刚刚进入临界区时就屏蔽中断,刚要出临界区就打开中断

  • 专用机器指令test_and_settest_and_clear

  • 软件方法

  • 信号量