软考(一 PV操作)

来源:互联网 发布:软件测试柠檬班靠谱吗 编辑:程序博客网 时间:2024/06/05 14:07

进程三态图
就绪 等待CPU资源
运行 得到资源与CPU
等待(阻塞) 等待除CPU外的其他资源,最经常的有打印机

生产者与消费者
p操作 消费者 信息量-1 拿去一个商品
v操作 生产者 信息量+1 生产一个商品
当缓冲区信息量满的时候 不能再添加生产的商品
用到p操作 (阻塞)
生产者生产 -》 判断缓冲区是否满产品 -》 放入缓冲区

一.生产者与消费者(售票员与司机)
制约关系
启动车辆 正常行车 到站停车
关车门 售票 开车门
启动前关车门,到站停车后开车门

s1是否允许司机启动车,s2是否允许售票员开车门,初始都为0

售:
关车门
vs1
售票
ps2
开车门
司:
ps1
启动车辆
正常行车
到站停车
vs2

二.读者与写者
共享一组数据区
多个读者可同时工作
多个写者不可同时工作
读者,写者不可同时工作

**思路**

读者来
无人可读
读者优先,有写者等,可读
有写者写,要等

写者来
无人可写
有写者,写者等
有读者,写者等

第一个读者进入时,不允许写者进入,允许其它读者进入
最后一个读者出来时,允许写者进入

w写者可以进入,初始为1

**读**while(true){P(mutex)readcount++;if(readcount==1)p(w);v(mutex);读P(mutex);readcount--;if(readcount==0)v(w);v(mutex);

};

while(true){
p(w);

v(w);
};

mutex增加pv操作的互斥性
因为存在多个读者,所以操作时需要把readcount操作当成一个整体
避免多个读者之间产生相互干扰

管程
内部提供资源,不被外面程序所使用,只被内部资源使用
put(item)与get(item)

0 0