操作系统基础——09 同步互斥


背景


独立进程&并发进程

操作系统基础——09 同步互斥



进程并发执行的好处

操作系统基础——09 同步互斥



进程并发执行出现异常的例子

操作系统基础——09 同步互斥
再来看看程序实际运行的情况
操作系统基础——09 同步互斥
由于在程序运行的时候进行了上下文切换,进程一保存的Reg1是100,所以最后进程一next_pid是101。

进程二也是一样,获取到的next_pid也是101。


原子操作

为了解决上面可能出现的异常问题,我们需要原子操作。
操作系统基础——09 同步互斥



临界区

进程中访问临界资源的一段需要互斥执行的代码。



访问规则

  • 空闲则入
    没有进程在临界区时,任何进程可进入。

  • 忙则等待
    有进程在临界区时,其它进程不能进入。

  • 有限等待
    等待进入临界区的进程,不能无限期等待。

  • 让权等待(可选)
    不能进入临界区的进程,应释放CPU。



实现方法

  • 禁用中断
  • 软件方法
  • 更高级的抽象方法

这里主要讲解一下禁用中断,另外两种可以自行去扩展了解。


禁用中断

  • 没有中断,就没有了上下文切换,因此没有并发。

  • 进入临界区
    随即禁用中断

  • 离开临界区
    随即开启中断

缺点:

  1. 禁用中断后,进程无法被停止

  2. 临界区可能很长