操作系统复习篇(6)——进程同步

第6章 进程同步

  • 临界区概念
  • 同步的多种解决方案
  • 引入原子事务的概念

临界区问题(critical section)

  • 临界区需要满足以下三个条件
  • 互斥(mutual exclusion):一次只能有一个进程在临界区中执行
  • 前进(progress):如果没有进程在执行,而且有进程需要进行,此时理解去不能为空,即必须推进去处理
  • 有限等待(bounded waiting):等待区为有限

Peterson 算法

硬件同步

  • 锁:进程在进入临界区之前必须得到锁,在退出临界区时释放锁

信号量

  • 信号量:整数变量,除了初始化,只能通过wait跟signal两个原子操作来修改
  • 原子操作,系统操作的最小单位
  • 当信号量为0时,说明资源已被全部使用;当不为0时,说明还有资源可以使用
  • wait:等待资源,如果信号量不为0,则减1
  • signal:释放资源,在进程结束后释放占有的资源,信号量加1
  • 更好的实现方法是将忙等待改为本身进程的阻塞
  • 死锁(deadlock):进程需要两种资源,两个进程各拥有一个资源,等待另外的进程释放资源
  • 饥饿(starvation):无限期等待,即永远阻塞,不会被执行

经典同步问题

有限缓冲问题

  • 生产者生产满缓冲项
  • 消费者生产空缓冲项

读者-写者问题

  • 读者优先:如果有读者在等待,下一个进程必须是读者
  • 写者优先:如果有写者在等待,下一个进程必须是写者

哲学家进餐问题

  • 进程需要多个资源
  • 只获得其中的某种资源造成死锁
  • 解决方案1:当左右两边的筷子可以用的时候,才可以拿起筷子
  • 解决方案2:实行非对称性拿筷子

原子事务(见数据库)

你可能感兴趣的:(OS)