操作系统基础——09 同步互斥
背景
独立进程&并发进程
进程并发执行的好处
进程并发执行出现异常的例子
再来看看程序实际运行的情况
由于在程序运行的时候进行了上下文切换,进程一保存的Reg1是100,所以最后进程一next_pid是101。
进程二也是一样,获取到的next_pid也是101。
原子操作
为了解决上面可能出现的异常问题,我们需要原子操作。
临界区
进程中访问临界资源的一段需要互斥执行的代码。
访问规则
-
空闲则入
没有进程在临界区时,任何进程可进入。 -
忙则等待
有进程在临界区时,其它进程不能进入。 -
有限等待
等待进入临界区的进程,不能无限期等待。 -
让权等待(可选)
不能进入临界区的进程,应释放CPU。
实现方法
- 禁用中断
- 软件方法
- 更高级的抽象方法
这里主要讲解一下禁用中断,另外两种可以自行去扩展了解。
禁用中断
-
没有中断,就没有了上下文切换,因此没有并发。
-
进入临界区
随即禁用中断 -
离开临界区
随即开启中断
缺点:
-
禁用中断后,进程无法被停止
-
临界区可能很长