操作系统课程笔记-中国大学Mooc哈工大李治军老师-进程同步

李治军老师操作系统课程系列笔记

进程同步

进程同步概念
多进程共同完成一个任务需要等待其它进程的配合(走走停停)

信号与信号量

信号量
信号量是一种整型变量,用来判断什么时候需要睡眠以及唤醒的信息

信号量临界区保护

数据竞争
如果一个进程P1在修改信号量empty的中途时间片到时发生调度,切换到进程P2执行,信号量的修改会发生错误,因此需要在P1执行修改信号量的阶段给empty上锁(临界区保护)
上锁
临界区

临界区代码的保护原则:

  1. 互斥进入: 必须满足,保证正确性;
  2. 有空让进: 临界区空闲状态,应该使进程能够进入;
  3. 有限等待: 不能始终只有一个进程循环进入临界区,其它进程发出请求一段时间之后也能进入。

临界区代码保护方法:

  1. 软件方法:两个进程(Peterson算法),多个进程(Lamport面包店算法)
  2. 硬件方法:开关中断(只适用于一个CPU),硬件原子指令法(较好)

用临界区保护信号量(保证信号量语义正确),根据信号量语义实现多进程同步

死锁处理

死锁定义:互相等待对方持有的资源而造成谁都无法执行

死锁示意图
死锁的四个必要条件:

  1. 互斥使用:
    同一时刻只能有一人使用
  2. 不可抢占:
    只能自愿放弃,主动结束使用
  3. 请求和保持:
    进程必须占有资源,同时再去申请新的资源
  4. 循环等待:
    在资源分配图中存在一个环路

死锁处理的四种方法:

  • 死锁预防
    破坏死锁出现条件
    如:
    • 进程执行前一次性申请所有需要的资源
      • 缺点1:需要预知未来,编程困难
      • 缺点2:很多资源分配后很长时间才使用,资源利用率低
    • 对资源类型进行排序,自愿申请必须按序进行,不会出现环路等待
      • 缺点:资源浪费
  • 死锁避免
    检测每个资源请求,如果造成死锁就拒绝
    • **安全状态:**系统中的所有进程存在一个可完成的执行序列P1,…,Pn,则系统处于安全状态
    • **安全序列:**可执行序列P1,…,Pn
    • 找出系统中的安全序列(银行家算法,Dijkstra提出)
      银行家算法
    • 每次申请资源时执行银行家算法,判断之后会不会造成死锁
  • 死锁检测+恢复
    检测到死锁出现时,让一些进程回滚,让出资源
  • 死锁忽略
    忽略死锁问题,等待重启
    PC机上装的Linux、Windows等系统都采用死锁忽略方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值