操作系统的互斥与同步

关键术语:
原子操作:一个或者多个指令的序列
临界区:一段代码,在该代码中进程将访问该共享资源
死锁:两个或者两个以上的进程因其中的每个进程都在等待其他进程做完事情而不能继续执行
活锁:两个或者两个以上的进程为了响应其他进程中的变化而持续改变自己的状态但是不做有用的工作
互斥:当一个进程在一个临界区访问共享资源时,其他进程不能进入该临界区访问任何共享资源
竞争条件:多个线程或者进程在读写一个共享数据时,结果依赖于它们执行的相对时间
饥饿:一个可运行的进程尽管能继续执行,但是被调度器无限期的忽视


并发的原理:

在单处理器多道程序设计系统中,进程交替执行,表现出一种同时执行的外部特征

在多处理器系统中,不仅可以交替执行,还能够重叠执行进程

单处理器,多道程序设计系统:
  • 全局资源充满危险
  • 操作系统很难对资源进行最优化分配
  • 定位程序设计存在困难

竞争条件:

竞争条件:多个进程或线程读写数据时,最终的结果依赖于多个进程的指令执行顺序

进程的交互:
知道程度 关系 一个进程对其他进程的影响 潜在的控制问题
进程之间不知道对方 竞争 一个进程的结果与其他的进程无关
进程的执行时间可能受到影响
  • 互斥
  • 死锁
  • 饥饿
进程间接知道对方存在 通过共享合作 一个进程的结果可能依赖于其他进程获得的信息
进程的执行时间可能会受到影响
  • 互斥
  • 死锁
  • 饥饿
  • 数据一致性
进程直接知道对方 通过通信合作 一个进程的结果可能依赖于其他进程获得的信息
进程的计时可能会受到影响
  • 死锁
  • 饥饿


互斥的要求:
  1. 必须强制实施互斥,一次只能有一个进程进入临界区
  2. 一个在非临界区停止的进程不能干涉其他进程
  3. 不允许出现需要访问临界区的进程被无限延迟的现象,不会出现死锁和饥饿
  4. 没有进程在临界区内,任何需要进入临界区的进程必须能够进入
  5. 进程的执行数目与处理器的数目没有任何限制
  6. 一个进程在临界区停留的时间必须有限

互斥:
两个或者更多的进程访问一个不共享的资源,在执行过程中,每个进程都给该IO设备发命令,接收状态信息,发送和接收数据,这类资源称为临界资源
使用临界资源的那一部分程序称为临界区

死锁
两个进程p1,p2,以及两个资源R1,R2,假设每个进程都需要访问该两个资源,
操作系统把R1分配给P2,R2分配给P1,每个进程都在等待另一个资源,在获得其他资源并完全成功前,不会释放已拥有资源


饥饿:
三个进程P1,P2,P3,每个进程都周期性的访问资源
P1拥有资源,P2和P3都被延迟,等待这个资源,当P1退出临界区时,P2和P3都被允许访问R,在P3访问完成临界区之前P1又需要访问该临界区,这样将访问权
轮流的授予P1和P3,就会出现饥饿状态






















你可能感兴趣的:(计算机系统结构)