编辑: yyy888555 2019-07-02
进程管理习题 图书馆有100个座位,有一张登记表,要求:阅读者进入时登记,取得座位号;

出来时,注销;

登记表同时只能由一个人使用;

用P、V原语描述一个读者的使用过程 进程管理习题 信号量SN,表示可用座位数,初值为100;

信号量sb, 表示登记表是否正在使用,初值为1;

reader(int i){ enter();

阅读;

outer()} enter( ){ P(SN) P(sb) 登记;

V(sb);

} outer( ){ P(sb);

注销;

V(sb);

V(SN);

} 进程管理习题 有3个进程PA,PB和PC合作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;

PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;

PC将缓冲区2的内容打印出来,每执行一次打印一个记录.

缓冲区的大小等于一个记录大小;

请用P,V操作来保证文件的正确打印 进程管理习题 设置4个信号量:empty

1、empty

2、full

1、full2empty1及empty2分别表示缓冲区1及缓冲区2是否为空,初值为1full1,full2分别表示缓冲区1及缓冲区2是否有记录可供处理,其初值为0 缓冲区1 缓冲区2 PA 从磁盘读入 PB 复制 PC 打印 进程管理习题 PA() 从磁盘读一 个记录;

P(empty1);

将记录存入 缓冲区1;

V(full1);

PB() P(full1);

从缓冲区1中 取出记录;

V(empty1);

P(empty2);

将记录存入缓 冲区2;

V(full2);

PC() P(full2);

从缓冲区2 取一个记录;

V(empty2);

打印记录;

缓冲区1 缓冲区2 PA 从磁盘读入 PB 复制 PC 打印 进程管理习题 公共汽车上,司机和售票员的活动分别为: 司机:启动车辆;

正常行驶,到站停车 售票员: 关车门;

售票;

开车门;

司机P1 售票员P2 启动 关门 正常运行 售票 到站停 开门 进程管理习题 设信号量S1:是否允许司机启动汽车,初值为0, S2:是否允许售票员开门,初值为0 Driver() { While (1) { P(S1);

启动汽车;

正常行车;

到站停车;

V(S2) Busman() { While (1) { 关车门;

V(S1);

售票;

P(S2);

开车门;

上下乘客;

Int s1=0;

Int s2=0;

Main( ) { Cobegin Driver();

Busman();

Coend } 进程管理习题 三个进程P

1、P

2、P3互斥使用一个包含N(N>

0)个单元的缓冲区.P1每次用produce()生成一个正整数并用put()送入缓冲区某已空单元中;

P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;

P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数.请用信号量机制实现这三个进程的同步和互斥活动,并说明所定义信号量的含义.要求用伪码描述. 进程管理习题 互斥信号量:mutex初值为1;

同步信号量:P

1、P2因奇数的放与取而同步,设置信号量odd;

P

1、P3因偶数的放与取而同步,设置信号量even;

P

1、P

2、P3因共享缓冲区而同步,设置信号量empty. 进程管理习题 互斥信号量:mutex初值为1;

同步信号量:P

1、P2因奇数的放与取而同步,设置信号量 odd;

P

1、P3因偶数的放与取而同步,设 置信号量even;

P

1、P

2、P3因共享缓冲 区而同步,设置信号量empty. P1: P(empty);

P(mutex);

put();

V(mutex);

If number%2==0 V(even) Else V(odd);

P2: P(odd);

P(mutex);

getodd();

V(mutex);

V(empty);

countodd();

P3: P(even);

P(mutex);

geteven();

V(mutex);

V(empty);

counteven();

进程管理习题 设自行车生产线上有一支箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题