zoukankan      html  css  js  c++  java
  • 操作系统之经典同步问题的理解

    1. 哲学家就餐问题

    资源:5个筷子

    进程:5个哲学家

    进程使用资源的方式:每个哲学家在吃饭时要用2个筷子,吃饭结束后放下

    怎样同步:

    A 设置一个资源为4的房间信号量,即每次只允许4个哲学家进入房间

    B 设置要求:一个哲学家要么不拿筷子,要么两根筷子都拿起来,则只有在判断两边没有吃饭的时候自己才吃

    2. 读者写者问题

    资源:一个文件

    进程:多个读者进程和多个写者进程

    进程使用资源的方式:读者进程可以同时访问文件,写者进程只能单独访问文件(不能有其他读或者写)

    怎样同步:

    A 读者优先:除了第一个读者要验证是否有写者,其他读者直接进来就可以;所有读者都进完了再唤醒写者;

    B 写者优先:直接修改读者的代码;这时要排两队,信号量1的队:给不是第一个的读者排的队,如果第一个读者没能读,那么他们进2队的机会都没有;信号量2的队:给第一个写者和第一个读者准备的队;不是第一个写者根本不用排队,直接进入文件临界区;

    3. 消费者问题

    资源:有限数目的消费(生产)空间;一个能生产或者消费的区域;

    进程:多个消费者和多个生产者

    进程使用资源的方式:消费者只有当有产品的时候才消费,生产者只有当有空间的时候才生产;消费者消费后空间增大,生产者生产后产品增多;区域一次只进一个人

    怎样同步:

    A 消费者根据产品数目排队,生产者根据空间排队;每次完成之后增加空间/产品

    代码参考:
    https://www.cnblogs.com/sinkinben/p/10713536.html

  • 相关阅读:
    MUI DtPicker 显示自定义日期
    Windows10更新后,远程桌面无法登录服务器 提示远程桌面协议 CredSSP 出现漏洞
    微信Access Token 缓存方法
    在Windows7/8/10上,安装IIS
    启明星系统微信接口配置
    c#使用QQ邮箱的SSL收发邮件
    使用ASP.NET+Jquery DataTables的服务器分页
    总是容易忘记:enum、int、string之间的快速转换
    Chrome浏览器导出pdf时,隐藏链接HREF
    SQL Builder 1.04
  • 原文地址:https://www.cnblogs.com/Plorde/p/12321056.html
Copyright © 2011-2022 走看看