计算机操作系统原理
发布网友
发布时间:2022-05-07 08:39
我来回答
共3个回答
热心网友
时间:2023-10-22 19:01
在本题中,A,B端的演员(进程)共用一条钢丝(可用资源或信号量的缓冲区)
钢丝上一次只能通过一个演员。当钢丝上为空时,
A端可通过一个演员,这时B端的第一个演员等待,
重复过程,A,B两端N个演员全部通过,
设缓冲区的编号为1~z-1,定义两个指针in和out,它们分别是A端演员进程和B端演员进程使用的指针,指向下一个可用的缓冲区。
设置两个信号量分别为Gs 和Gsfull
int Gs=1; /*钢丝是否为空,缓冲区空了,初始值为1*/
int Gsfull=0; /*钢丝是否有人,缓冲区满了,初始值为0*/
main()
{
cobegin
int n=10
int i=1
while(i<=n)
{
i++;
Ags();
Bgs();
}
coend
}
/*A端演员进程*/
Ags()
{
while(1)
{
P(Gs);
A端演员上钢丝绳;
in=(in+1)mod z;
V(Gsfull);
}
}
/*B端演员进程*/
Bgs()
{
while(1)
{
P(Gsfull);
B端演员上钢丝绳;
out=(out+1)mod z;
V(Gs);
}
}
}
热心网友
时间:2023-10-22 19:02
我不会
热心网友
时间:2023-10-22 19:02
A==B==C,
热心网友
时间:2023-10-22 19:01
在本题中,A,B端的演员(进程)共用一条钢丝(可用资源或信号量的缓冲区)
钢丝上一次只能通过一个演员。当钢丝上为空时,
A端可通过一个演员,这时B端的第一个演员等待,
重复过程,A,B两端N个演员全部通过,
设缓冲区的编号为1~z-1,定义两个指针in和out,它们分别是A端演员进程和B端演员进程使用的指针,指向下一个可用的缓冲区。
设置两个信号量分别为Gs 和Gsfull
int Gs=1; /*钢丝是否为空,缓冲区空了,初始值为1*/
int Gsfull=0; /*钢丝是否有人,缓冲区满了,初始值为0*/
main()
{
cobegin
int n=10
int i=1
while(i<=n)
{
i++;
Ags();
Bgs();
}
coend
}
/*A端演员进程*/
Ags()
{
while(1)
{
P(Gs);
A端演员上钢丝绳;
in=(in+1)mod z;
V(Gsfull);
}
}
/*B端演员进程*/
Bgs()
{
while(1)
{
P(Gsfull);
B端演员上钢丝绳;
out=(out+1)mod z;
V(Gs);
}
}
}
热心网友
时间:2023-10-22 19:02
我不会
热心网友
时间:2023-10-22 19:02
A==B==C,