zoukankan      html  css  js  c++  java
  • 操作系统几个PV操作算法模型

    考前抱佛脚T-T这几题感觉比那几个典型的好理解多了。。看着课本上那几道例题越看越懵。。是我有问题还是书上写着有问题。。下面三个是偶自己写的不懂对不对。。。假装自己写的都对吧XD来不及了

    男女共浴问题

    问题描述:假设某宿舍楼有一共用浴室,学校颁布规定:当有一个女生正在使用浴室,则其他女生可以进入,但是男生不行,反之亦然。在每个浴室门上有一个滑动指示符号,表示当前处于以下三种可能状态之一:
    (1)空 (2)有女生 (3)有男生

    semaphore mutex = 1,mutex_man = 1,mutex_woman = 1;
    int man_count = 0,woman_count = 0;
        
    void Boy(){
        /* 1.跟其他男孩子抢着进浴室 */
        P(mutex_man);
        man_count++;
        if(man_count==1){
            P(mutex);	//跟其他女孩子抢浴室的主权
        }
        V(mutex_man);
        /* 跟其他男孩子抢着进浴室 */
        洗白白ing
        /* 2.洗完澡走人 */
    	P(mutex);
        if(man_count==0){	//男孩子们都洗完了,女孩子们就可以进去洗澡了
            V(mutex);
        }
    	V(mutex);
        /* 洗完澡走人 */
    }
    
    void Girl(){
        /* 1.跟其他女孩子抢着进浴室 */
        P(mutex_woman);
        woman_count++;
        if(woman_count==1){
            P(mutex);	//跟其他男孩子抢浴室的主权
        }
        V(mutex_woman);
        /* 跟其他女孩子抢着进浴室 */
        洗白白ing
        /* 2.洗完澡走人 */
    	P(mutex);
        if(woman_count==0){	//女孩子们都洗完了,男孩子们就可以进去洗澡了
            V(mutex);
        }
    	V(mutex);
        /* 洗完澡走人 */
    }
    

    农民和饭馆交易动物问题

    问题描述:有一只铁笼子,每次只能放入一只动物,猎手向笼子里放入老虎,农民向笼子里放入;动物园等待取笼子里的老虎,饭店等待取笼子里的猪。现请用wait和signal操作写出能同步执行的程序。

    image-20200709174036690

    image-20200709174056721

    阅览室进出问题

    有一阅览室,共有100个座位。读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。读者离开时要注销掉登记内容。

    semaphore mutex = 1;
    semaphore s = 100;
    
    void readers(){
        while(true){
            P(s);	//先观察阅览室里边有没有座位,有则进入阅览室
            /* 1.登记并进入阅览室 */
            P(mutex);
            读者在登记表上登记个人信息
            V(mutex);
            /* 登记并进入阅览室 */
            读者开始愉悦地看起了书
            /* 2.注销并退出阅览室 */
            P(mutex);
            读者在登记表上登记个人信息
            V(mutex);
            /* 注销并退出阅览室 */
            V(s);	//从阅览室出来以后,空出一个座位
        }
    }
    
  • 相关阅读:
    SpringCloud : yml文件配置 获取系统环境变量的值
    SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案
    SpringCloud : Feign 不捆绑远程应用名称, 实现服务应用名称传入,调用通用自动化
    SpringCloud : Feign 使用 FastJson 解析数据
    Mybatis中在log日志或控制台打印执行的sql
    iOS 基于 itemServices 进行本地安装 ipa 应用安装包
    MySQL5.5 数据热备份
    如何在 Fiddler Script 中 自定义 修改 Request 、 Response
    Dubbo 分布式 日志 追踪
    shell脚本并发执行
  • 原文地址:https://www.cnblogs.com/lightice/p/13275181.html
Copyright © 2011-2022 走看看