网络操作系统 习题PV操作
- 格式:ppt
- 大小:154.50 KB
- 文档页数:7


semaphore s_empty=n , s_item=0;/*消息信号量*/
semaphore s=1;/*互斥信号量*/
int w=0,r=0;
item buf[n];
void pi()/* i=1,2,…,m*/ (生产者进程)
{ L1: 生产一个产品x;
wait(s_empty);
wait(s);
buf[w]=x;
w=(w+1) % n ;
signal(s_item) ;
signal(s);
goto L1 ; }
void pj() /* j=1,2,…,k*/ (消费者进程)
{ L2 : wait(s_item);
wait(s) ;
d=buf[r];
r=(r+1) % n ;
signal(s_empty) ;
signal(s);
消费产品d ;
goto L2 ; }
《网络操作系统》
考试时间:120分钟 考试总分:100分
题号 一 二 三 四 五 总分
分数
遵守考场纪律,维护知识尊严,杜绝违纪行为,确保考试结果公正。
1、操作系统中采用多道程序设计技术来提高CPU和外部设备的()。( )
A.利用率 B.可靠性 C.稳定性 D.兼容性
2、在WindowsNT网络中,转发程序作为客户/服务器模式下的客户方,执行SMB协议,与服务器方的网络服务程序共处于()。( )
A.传输层 B.会话层 C.表示层 D.网络层
3、当正在运行的程序要求数据传输时,CPU向通道发(),命令通道开始工作。( )
A.通道命令 B.I/O命令 C.程序状态字 D.中断信号
4、在操作系统中,一方面每个进程具有独立性,另一方面进程之间又具有相互制约性。对于任何两个并发进程,它们()。( )
A.必定无关 B.必定相关 C.可能相关 D.可能相同 姓名:________________ 班级:________________ 学号:________________
--------------------密----------------------------------封 ----------------------------------------------线-------------------------
5、在磁盘的移臂调度中,存取臂频繁改变移臂方向的调度算法是()。( )
操作系统PV操作习题
⼀、⽤P、V操作描述前趋关系。P1、P2、P3、P4、P5、P6为⼀组合作进程,其前趋图如图2.3所⽰,试⽤P、V 操作描述这6个进程的同步。p23
图2.3说明任务启动后P1先执⾏,当它结束后P2、P3可以开始执⾏,P2完成后P4、P5可以开始执⾏,仅当P3、P4、P5都执⾏完后,P6才能开始执⾏。为了确保这⼀执⾏顺序,设置5个同步信号量n、摄、f3、f4、g分别表⽰进程P1、P2、P3、P4、P5是否执⾏完成,其初值均为0。这6个进程的同步描述如下:
图2.3 描述进程执⾏先后次序的前趋图int f1=0; /*表⽰进程P1是否执⾏完成*/
int f2=0; /*表⽰进程P2是否执⾏完成*/
int f3=0; /*表⽰进程P3是否执⾏完成*/int f4=0; /*表⽰进程P4是否执⾏完成*/int f5=0; /*表⽰进程P5是否执⾏完成*/main()
{
cobegin
P1( );
P2( );
P3( );
P4( );
P5( );
P6( );
coend
}
P1 ( )
{
┇
v(f1);
v(f1):
}
P2 ( )
{
p(f1);┇
v(f2);
v(f2);
)
P3 ( )
{
p(f1);
┇
v(f3);
}
P4( )
{
p(f2);
┇
v(f4);
}
P5 ( )
{
p(f2);
┇
v(f5);
}
P6( )
{
p(f3);
p(f4);
p(f5);
┇
}
⼆、⽣产者-消费者问题p25
⽣产者-消费者问题是最著名的进程同步问题。它描述了⼀组⽣产者向⼀组消费者提供产品,它们共享⼀个有界缓冲区,⽣产者向其中投放产品,消费者从中取得产品。⽣产者-消费者问题是许多相互合作进程的⼀种抽象。例如,在输⼊时,输⼊进程是⽣产者,计算进程是消费者;在输出时,计算进程是⽣产者,打印进程是消费者。因此,该问题具有很⼤实⽤价值。
我们把⼀个长度为n的有界缓冲区(n>0)与⼀群⽣产者进程P1、P2、…、Pm和⼀群消费者进程C1、C2、…、Ck 联系起来,如图2.4所⽰。假定这些⽣产者和消费者是互相等效的。只要缓冲区未满,⽣产者就可以把产品送⼊缓冲区,类似地,只要缓冲区未空,消费者便可以从缓冲区中取⾛物品并消耗它。⽣产者和消费者的同步关系将禁⽌⽣产者向满的缓冲区输送产品,也禁⽌消费者从空的缓冲区中提取物品。
1 关于PV操作
在计算机操作系统中,PV操作是进程管理中的难点。
首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S):①将信号量S的值减1,即S=S1;
②如果S0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。
什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。
一般来说,信号量S0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。
利用信号量和PV操作实现进程互斥的一般模型是:
进程P1 进程P2 …… 进程Pn
…… …… ……
P(S); P(S); P(S);
临界区; 临界区; 临界区;