- 哲学家进餐问题
  - 问题背景
    - 操作系统发展史中的重要地位
    - 涉及信号量机制、管程机制、资源竞争和死锁机制
  - 问题描述
    - 五位哲学家围坐圆桌
    - 每人需两只筷子才能进餐
    - 筷子为临界资源,用信号量表示
  - 问题约束条件
    - 必须拿到左右两支筷子才能进餐
    - 叉子被占用时需等待
    - 未拿到两支筷子前不能放下手中筷子
  - 问题分析
    - 并发执行可能导致死锁
    - 所有哲学家同时拿起左边筷子导致饥饿
  - 解决方案
    - 方法一:限制最多四位哲学家同时进餐
      - 使用信号量count控制并发数
    - 方法二:使用AND型信号量
      - 同时申请左右筷子,避免单只筷子占用
    - 方法三:增加互斥信号量mutex
      - 保护取筷子操作为原子操作
    - 方法四:奇偶哲学家不同取筷顺序
      - 奇数号先左后右,偶数号先右后左
      - 破坏环路等待条件
  - 问题推广
    - N个进程与M个共享资源的通用问题
    - 工具与方法
      - 拍摄网
      - 并发程序设计语言
  - 实际应用
    - 操作系统线程同步
    - 生活中人行马路同步问题

版权所有:全国高校教师网络培训中心

技术支持:北京畅想数字教育科技股份有限公司

联系地址:北京市西城区德外大街4号院A座2层

咨询电话:400-6699-800

京ICP备08008005号 京公网安备110102004467