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

  • 相关阅读:
    软件RAID 0
    逻辑卷管理lvm
    磁盘配额quota
    合并 CentOS 6.8 的两个ISO镜像
    挂载mount
    非交互式添加分区
    磁盘分区-gdisk用法
    C博客作业01--分支、顺序结构
    C语言--第0次作业
    浅议正则表达式
  • 原文地址:https://www.cnblogs.com/Plorde/p/12321056.html
Copyright © 2011-2022 走看看