设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。

题目

设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。


相似考题
更多“设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据 ”相关问题
  • 第1题:

    ● 某系统中有一个缓冲区,进程 P1 不断地加工数据送入缓冲区,进程 P2 不断地从缓冲区中取数据打印,用 PV操作实现进程间的同步模型如图 2 所示。假设信号量 S1的初值为 1,信号量 S2 的初值为 0,那么图 2 中 a、b、c、d 处应分别填 (51) 。

    (51)

    A. P(S2) 、V(S2) 、P(S1) 、V(S1)

    B. P(S2) 、V(S1) 、P(S1) 、V(S2)

    C. P(S1) 、V(S2) 、P(S2) 、V(S1)

    D. P(S1) 、V(S1) 、P(S2) 、V(S2)


    正确答案:C

  • 第2题:

    1、(8分)有3个并发进程P、P1、P2合作处理数据,P从输入设备读数据到缓冲区,缓冲区可存1000个字。P1和P2功能一样,都是从缓冲区取出数据并计算,再把结果打印请用信号量PV操作实现,其中语句read()从输入设备读入20个字到缓冲区;get()从缓冲区取出20个字;comp()计算40个字并输出并得到结果1个字;printf()打印结果2个字。


    BCD

  • 第3题:

    三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用procuce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。


    定义信号量sl控制P1与P2之间的同步;S2控制P1与P3之间的同步;empty控制生产者与消费者之间的同步;mutIe控制进程间互斥使用缓冲区。程序如下: 定义信号量sl控制P1与P2之间的同步;S2控制P1与P3之间的同步;empty控制生产者与消费者之间的同步;mutIe控制进程间互斥使用缓冲区。程序如下:

  • 第4题:

    某系统中有一个缓冲区,进程P1不断地生产产品送入缓冲区,进程P2不断地从缓冲区取产品消费。假设该缓冲区只能容纳一个产品。进程P1与P2的同步模型如图2-2所示。

    为此,应设信号量S1的初值为(1),信号量S2的初值为(2)。

    A.-2

    B.-1

    C.0

    D.1


    正确答案:D

  • 第5题:

    设有3个进程P1, P2, P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用Produce()生产一个正整数,并用Put()将其送入缓冲区的某一空闲单元中,P2每次用Getodd()从缓冲区中取出一个奇数并用Countodd()统计奇数的个数,P2每次用Geteven()从缓冲区中取出一个偶数并用Counteven()统计偶数的个数。使用信号量机制实现3个进程的同步与互斥活动,并说明所定义的信号量含义。要求用伪代码描述。


    解:定义信号量full1控制P1与P2之间的同步;full2控制P1与P3之间的同步;empty控制生产者与消费者之间的同步;mutex控制进程间互斥使用缓冲区。semaphore full1=0,full2=0,empty=N,mutex=1; void P1(){ do{x=produce(); P(empty); P(mutex); Put(); if (x%2==0) v(full2); else v(full1); v(mutex); } while(TRUE);}void P2(){ do{ P(full1); P(mutex); Getodd(); countodd(); V(mutex); V(empty); } while(TRUE);} void P3(){ do{P(full2) P(mutex); Geteven(); Counteven(); V(mutex); V(empty); } while(TRUE);}