以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 操作系统原理 』  (http://bbs.xml.org.cn/list.asp?boardid=63)
----  [求助]哪位高手会做大学操作系统课程的题,帮忙给解一下此题1,谢谢  (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=49950)


--  作者:milk_liu
--  发布时间:7/14/2007 8:18:00 PM

--  [求助]哪位高手会做大学操作系统课程的题,帮忙给解一下此题1,谢谢
利用P—V原语解决以下问题:某超级市场,可容纳100人同时购物。入口处备有篮子,每个购物者可持一只篮子入内购物。出口处结帐,并归还篮子(出、入口仅容一个人通过)。试用P(s)、V(s)操作以及信号量写出购物同步算法。
--  作者:computer-1
--  发布时间:7/15/2007 2:58:00 PM

--  
入口和出口处存在竞争的关系,要将二者用信号量互斥。
#define N 100                             //缓冲区的槽数为100;
typedef int Semaphore                 //信号量是一种特殊的整型数据;
semaphore mutex=1                   //控制对临界区的访问;
semaphore empty=N                   //计数缓冲区的空槽数目;  
semaphore full=0                        //计数缓冲区的满槽数目;


void exit(void)
{
int item;

while(TRUE){                           //TRUE为常量1;  
item=exit_item();                     //产生放在缓冲区中的一些数据;
down(&empty);                        //空槽数目减1;
down(&mutex);               //进入临界区; 
insert_item(item);               //将新数据项放在缓冲区;
up(&mutex);               //离开临界区;
up(&full);               //满槽数加1;
  }
}

void entrance(void)           
{
    int item;

   while(TRUE){               //无限循环; 
   down(&full);               //满槽数减1;
   down(&mutex);                    //进入临界区;
   item = remove_item();        //从缓冲区中取出数据项;
   up(&mutex);             //离开临界区;
   up(&empty);             //空槽数目加1; 
   entrance_item(item);           //处理数据项;              
   }
}


--  作者:milk_liu
--  发布时间:7/15/2007 6:08:00 PM

--  
似乎不是用P-V原语写的,不过还是要谢谢
--  作者:xisiyuzn123
--  发布时间:7/24/2007 2:13:00 PM

--  
陕西3E技术研究中心
主要培训项目:网络工程师 LINUX UNIX系统集成工程师 思科CCNA CCNP认证
8月上旬将开 网络工程师长期班
LINUX UNIX系统集成工程师短期班 晚班
思科CCNA CCNP认证培训 晚班
咨询电话:029-88314059
咨询QQ:526950718
地址:陕西省西安市高新路新汇大厦A座2201室

--  作者:binaryluo
--  发布时间:7/27/2007 12:07:00 AM

--  
以下是引用milk_liu在2007-7-14 20:18:00的发言:
利用P—V原语解决以下问题:某超级市场,可容纳100人同时购物。入口处备有篮子,每个购物者可持一只篮子入内购物。出口处结帐,并归还篮子(出、入口仅容一个人通过)。试用P(s)、V(s)操作以及信号量写出购物同步算法。

分析:
1.入口至少送入一人,出口才允许出一人。
2.入口放入一人的前提是超市至少还有1个人的空间。

算法:
设以Pe表示入口进程;Po表示出口进程。Marketempty为Pe的私有信号量,Marketfull为Po的私有信号量。令Marketempty初值为100,Marketfull初值为0。
Pe: enter(person):
     begin
           P(Marketempty);
           person提篮子进入超市购物;
           V(Marketfull);
     end

Po: out(person):
     begin
           P(Marketfull);
           person结帐、放篮子出超市;
           V(Marketempty)
     end


--  作者:jt007500
--  发布时间:7/31/2007 10:28:00 AM

--  
buhui
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
58.594ms