新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 研友的交流园地,讨论关于计算机考研的方方面面。
    [返回] 计算机科学论坛计算机理论与工程『 计算机考研交流 』 → 我写的07 OS PV,帮忙修正 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 13691 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 我写的07 OS PV,帮忙修正 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     EagleSoaring 帅哥哟,离线,有人找我吗?金牛座1982-5-8
      
      
      等级:大三(研究MFC有点眉目了!)
      文章:114
      积分:828
      门派:W3CHINA.ORG
      注册:2006/7/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EagleSoaring发送一个短消息 把EagleSoaring加入好友 查看EagleSoaring的个人资料 搜索EagleSoaring在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看EagleSoaring的博客21
    发贴心情 

    楼主的答案我也给满分~~
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/9 16:22:00
     
     gradxixi 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2007/8/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gradxixi发送一个短消息 把gradxixi加入好友 查看gradxixi的个人资料 搜索gradxixi在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看gradxixi的博客22
    发贴心情 
    我想了一个方法(受到lionx启发),也许能够解决lionx说的问题
    增加一个信号量 mut 初值1.

    else
    {
       V(mutex);
      
       P(mut);         //既然要求  下面的这两个语句之间不能被其
       V(release1);
                  
       P(release2);               //等待裁判释放自己
       V(mut);        //它编号为偶数学生插入.加一个互斥信号量.
    }

    只是这样不知会不会引进新的问题,我会暂时没发现.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/9 23:16:00
     
     xianyun 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:92
      积分:547
      门派:XML.ORG.CN
      注册:2007/3/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xianyun发送一个短消息 把xianyun加入好友 查看xianyun的个人资料 搜索xianyun在『 计算机考研交流 』 的所有贴子 点击这里发送电邮给xianyun 引用回复这个贴子 回复这个贴子 查看xianyun的博客23
    发贴心情 
    以下是引用gradxixi在2008-1-9 13:09:00的发言:
    [quote]以下是引用xianyun在2008-1-8 23:54:00的发言:
    [quote]以下是引用EagleSoaring在2008-1-8 16:09:00的发言:
       觉得这个答案有问题,主要是同一组的两个人协调不好。
       比如同一组的学生A,B。
       在他们都上机结束后,都给老师一个v唤醒,但是这两个v之间可能隔了很多别的组的V唤醒。于是,老师可以执行一个组的一个V(比如是A的V),检查完A的上机情况,按照程序,A可以离开了。可是老师按照被V唤醒的次序,接着去检查别的组的,就先不管B的了,
      这就造成了同一组的不能同时被检查,也不能同时离开的情况。
      [/quote]
      确实,题目中“上机实习由一名教师检查,检查完毕,一组学生同时离开机房。” 很难用pv来实现
    [/quote]
    能不能这样来实现.
    对每台电脑加一个信号量computer,一个人(A)负责叫老师检查,另一个(B)阻塞在computer上,等待A来释放.


    如果让一组的一个让(如A)去叫老师,另一个(B)阻塞在某一个信号量上,的问题是,由于进程运行的随机性和不确定性,当老师来了,可能有多个进程阻塞在该信号量上,这时该唤醒哪个呢?
    于是想到给每个学生编一个号码,这样也会有问题

    银行问题也有类似的困境,如以下代码(来自http://www.ieee.org.cn/dispbbs.asp?BoardID=67&ID=39456&replyID=66533&skin=1

    int count_s = 0;
    int count_c = 0;
    semaphore customer;//初值为0
    semaphore mutex_s;//初值为0
    semaphore mutex_c;//初值为0
    semaphore staff;//初值为n

    void Staff(i){
            while(ture){
                    P(customer);
                    P(mutex_s);
                            count_s ++;
                            叫编号为count_s的顾客;
                    V(mutex_s);
                    服务;
            }
    }

    //////////////////////////////////////////////////////////

    void Customer(){
            P(mutex_c);
                    count_c ++;
            V(mutex_c);
            V(customer);
            P(staff);
                    接受服务;
            V(staff);
            离开;
    }


    上面的“叫编号为count_s的顾客;”很难办到,因为count_s号顾客可能正阻塞在 P(staff);处,而执行完 P(staff);语句的进程又不是count_s号顾客

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/10 0:25:00
     
     Spacewalk 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:112
      门派:XML.ORG.CN
      注册:2007/10/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Spacewalk发送一个短消息 把Spacewalk加入好友 查看Spacewalk的个人资料 搜索Spacewalk在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看Spacewalk的博客24
    发贴心情 
    好像没有体现出有k个裁判?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/10 22:54:00
     
     gradxixi 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:55
      积分:308
      门派:XML.ORG.CN
      注册:2007/8/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gradxixi发送一个短消息 把gradxixi加入好友 查看gradxixi的个人资料 搜索gradxixi在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看gradxixi的博客25
    发贴心情 
    以下是引用xianyun在2008-1-10 0:25:00的发言:
    [quote]以下是引用gradxixi在2008-1-9 13:09:00的发言:
    [quote]以下是引用xianyun在2008-1-8 23:54:00的发言:
      [quote]以下是引用EagleSoaring在2008-1-8 16:09:00的发言:
        觉得这个答案有问题,主要是同一组的两个人协调不好。
        比如同一组的学生A,B。
        在他们都上机结束后,都给老师一个v唤醒,但是这两个v之间可能隔了很多别的组的V唤醒。于是,老师可以执行一个组的一个V(比如是A的V),检查完A的上机情况,按照程序,A可以离开了。可是老师按照被V唤醒的次序,接着去检查别的组的,就先不管B的了,
       这就造成了同一组的不能同时被检查,也不能同时离开的情况。
       [/quote]
       确实,题目中“上机实习由一名教师检查,检查完毕,一组学生同时离开机房。” 很难用pv来实现
      [/quote]
      能不能这样来实现.
      对每台电脑加一个信号量computer,一个人(A)负责叫老师检查,另一个(B)阻塞在computer上,等待A来释放.
    [/quote]
    如果让一组的一个让(如A)去叫老师,另一个(B)阻塞在某一个信号量上,的问题是,由于进程运行的随机性和不确定性,当老师来了,可能有多个进程阻塞在该信号量上,这时该唤醒哪个呢?

    我的意思是:给每台电脑设置一个信号量,n台电脑n个信号量.
    B就阻塞在所用的电脑那个信号量.
    当然这就是假设B知道该阻塞在哪台电脑.

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/10 23:49:00
     
     sweepthesky 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:75
      积分:489
      门派:XML.ORG.CN
      注册:2006/10/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sweepthesky发送一个短消息 把sweepthesky加入好友 查看sweepthesky的个人资料 搜索sweepthesky在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看sweepthesky的博客26
    发贴心情 
    我来给一个我写的97年的题的答案 07年的只是一个简单的变种.解决同时进,同时离开问题.
    需要注意的是sem machine=m 初值.实际上就97年这个题目的条件,机器永远是充足的,可以忽略的,为了体现这个还是加个信号量吧.
    student:
    p(mutex)
    if(waits>0)   //waits其实只会有1,0两个可能值
       {p(machine)      //执行到这个分支约定是一组中的主动者,负责申请释放机器,教师,相当于                         //奇偶编号
         waits--;
         v(waitpartner)
         v(mutex)
         Enter()
         do_work();
         V(readytoleave)
         p(finish)                    //readytoleave和finish只是一组两人的简单同步,表示实习完成
         p(teacher)
             getchecked();
         v(check_over);
         v(checked)
         p(goout)
         v(machine)
             leave();
        }
      else
       {v(mutex)
         p(waitpartner)
         enter();
         dowork();
         v(finish)
         p(readytoleave)
         p(checked)
        v(goout)              //checked和goout实现同时离开.
           leave();
       }
    }
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/11 19:36:00
     
     sweepthesky 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(Java考了96分!)
      文章:75
      积分:489
      门派:XML.ORG.CN
      注册:2006/10/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sweepthesky发送一个短消息 把sweepthesky加入好友 查看sweepthesky的个人资料 搜索sweepthesky在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看sweepthesky的博客27
    发贴心情 
    ...忘了写教师代码和初始值了..
    sem machine=m,teacher=0;mutex=1,waitone=0,readytoleave=finish=checked=goout=0

    int waits=0

    teacher()   //题目规定只有一个老师,让问题简单不少.
       {
           repeat"
             v(teacher)
                   check()
             p(check_over);
       }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/11 19:39:00
     
     Spacewalk 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:12
      积分:112
      门派:XML.ORG.CN
      注册:2007/10/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Spacewalk发送一个短消息 把Spacewalk加入好友 查看Spacewalk的个人资料 搜索Spacewalk在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看Spacewalk的博客28
    发贴心情 
    以下是引用gradxixi在2008-1-6 23:21:00的发言:
    某高校有m个网球场,有n个学生预约打网球,有k个裁判。每两个学生组成一队,占用一个网球场练习,并安排一个裁判进行评分(没有安排时,裁判在休息室休息)。
        请用P、V操作正确完成网球场的分配和学生练习过程。

    我的想法是:
    理发师问题的变形.
    编号为奇数和偶数的学生分开处理..

    int count;    //初值0,记录学生人数
    semophore mutex;  //初值1,用于对count的互斥
    semophore release1;  //初值0
    semophore release2;  //初值0
    semophore playground;  //初值m(网球场)
    semophore referee;  //初值0
    semophore student; //初值0

    学生:
    P(mutex);
        count++;
    if(count%2==1)
    {
        V(mutex);
        P(release1);                 //等待搭档
        
        P(playground);
        
        P(referee);
        V(student);
    }
    else
    {
        V(mutex);
        V(release1);
                   
        P(release2);               //等待裁判释放自己
    }

    开始练习;
    练习完,回去喝"姚明的最爱"


    裁判:
    while(true)
    {
       V(referee);
       P(student);

       V(release2);
       公平正义地维护比赛现场的和谐气氛;

       比赛完;
       V(playground);
    }



    初值为什么是0不是k?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/12 21:11:00
     
     EagleSoaring 帅哥哟,离线,有人找我吗?金牛座1982-5-8
      
      
      等级:大三(研究MFC有点眉目了!)
      文章:114
      积分:828
      门派:W3CHINA.ORG
      注册:2006/7/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EagleSoaring发送一个短消息 把EagleSoaring加入好友 查看EagleSoaring的个人资料 搜索EagleSoaring在『 计算机考研交流 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看EagleSoaring的博客29
    发贴心情 
    以下是引用Spacewalk在2008-1-12 21:11:00的发言:

      
    [/quote]

    初值为什么是0不是k?



    裁判的程序 是对每一个裁判 i,i=1,2,..,k

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/13 11:34:00
     
     peterhertz 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:68
      积分:408
      门派:XML.ORG.CN
      注册:2006/12/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给peterhertz发送一个短消息 把peterhertz加入好友 查看peterhertz的个人资料 搜索peterhertz在『 计算机考研交流 』 的所有贴子 点击这里发送电邮给peterhertz  引用回复这个贴子 回复这个贴子 查看peterhertz的博客30
    发贴心情 
    good

    ----------------------------------------------
    吾生也有涯,而知也无涯,以有涯随无涯,殆也! 专业知识才是力量! 知识社会迟早会成型,好好学习,做个合格的知识工作者!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/17 14:10:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 计算机考研交流 』 的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/3 6:02:49

    本主题贴数30,分页: [1] [2] [3]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    109.375ms