当前位置:文档之家› 操作系统进程管理

操作系统进程管理

作业题:
1.有一个充分大的池子,两个人分别向池中扔球,甲扔红球,乙扔蓝球,一次扔一个,开始时池中有红、蓝球各一个,要求池中球满足条件:
红球数
1≤———≤ 2
蓝球数
用P、V操作描述两个进程。

Semaphore red =1;
Semaphore blue =0;
Void p1 ( )
{
While(true)
{
Semwait (red );
扔入一个红球;
Semsignal(blue);
}
}
Void p2( )
{
While(true)
{
Semwait(blue);
扔入一个蓝球;
Semsignal(red);
Semsignal(red);
}
}
Void main()
{parbegin(p1(),p2());}
2.有三个进程,进程get从输入设备上不断读数据,并存入buffer1;进程copy不断将buffer1的内容复制到缓冲区buffer2,进程put则不断将buffer2的内容在打印机上输出。

三个进程并发执行,协调工作。

写出该三个进程并发执行的同步模型。

Semaphore empty1=empty2=1;
Semaphore full1 =full2= 0;
Void get( )
{
While(true)
{
Semwait(empty1);
将数据存入buffer1;
Semsignal(full1);
}
}
Void copy( )
{
While(true)
{
Semwait(full1);
从buffer1里面读数据;
Semsignal(empty1);
Semwait(empty2);
把数据存入buffer2;
Semsignal(full2);
}
}
Void put( )
{
While(true)
{
Semwait(full2);
从buffer2读数据;Semsignal(empty2);
}
}
Void main( )
{
Parbegin(get(),copy(),put()); }。

相关主题