59、硬件方式实现互斥

文章目录

软件方法

内存访问级

  • 设置一个全局变量来标记临界区是否空闲(flag = 1 || 0);
  • 需要一个仲裁程序来判定进程是否进入临界区;
  • Dekker‘s Algorithm,Peterson’s Algotithm
  • 能够解决两个进程的互斥;
  • 需要较高的额外开销;
  • 很容易出现逻辑错误;

硬件方法

屏蔽中断

  • 一个进程一直执行到被中断 或 是执行完毕自行退出;
  • 屏蔽掉系统中断后,就能保证其不会被系统中断其独占已经拿到的资源;
  • 代价及其高
  • 在多处理机系统中,屏蔽一个处理器的中断,并不会阻止其他处理器上的进程来竞争资源;

步骤

屏蔽中断 -> 进入临界区 -> 开启中断
所以,如果进入临界区的进程使用时间过长,对于系统的危害是非常大的;

专用机器指令

  • 机器指令会在一个指令周期内执行(在一个指令周期之间是没有中断点的,但是DMA是可以在机器指令中间中断的);
  • 一个指令周期和另一个指令就避免了冲突;
  • 测试
上一篇:【力扣笔记59】螺旋矩阵


下一篇:MySQL的常见数据类型来了!