1、计算机学科专业基础综合计算机操作系统-8 及答案解析(总分:99.99,做题时间:90 分钟)一、综合应用题(总题数:25,分数:100.00)1.A 和 B 两个程序,程序 A 顺序执行情况如下:计算 20s,使用设备 10s,计算 10s,使用设备 20s,计算10s;程序 B 顺序执行情况如下:使用设备 20s,计算 20s,使用设备 10s,计算 10s,使用设备 20s。比较单道和多道程序(不考虑管理开销,设备和 CPU 都必须互斥使用)情况下 CPU 和设备各自的利用率是多少? (分数:4.00)_2.什么是内核支持线程和用户级线程?并对它们进行比较。 (分数:4.00)_3.什么
2、是线程?进程和线程是什么关系? (分数:4.00)_4.进程和程序之间可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系。 (分数:4.00)_5.为什么进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。 (分数:4.00)_6.线程和进程有什么区别?举例说明它们分别适用的系统环境。 (分数:4.00)_7.下面的进程状态转换可能发生吗?为什么? 阻塞运行;就绪阻塞;就绪退出。 (分数:4.00)_8.Windows XP 采用了动态优先级的调度算法对下面的进程的优先级进行提高。试分析这样做的原因和结果,由此说明 Windows X
3、P 的调度策略。 完成 I/O 操作的进程; 信号量或事件等待结束的进程; 前台进程(线程)完成一个等待操作; 由于窗口活动而被唤醒的应用程序进程; 进程(线程)在就绪队列中的等待时间过长。 (分数:4.00)_9.实现多进程并行程序的好处是什么?多线程并行程序对于多进程并行程序有哪些优势?原因是什么? (分数:4.00)_10.为什么说 ULT 不能实现在多个 CPU 上的真正并行,而混合实现线程则可以? (分数:4.00)_11.在多处埋机调度中,为什么需要让进程中的多个线程同时被调度执行? (分数:4.00)_12.设系统中有下述解决死锁的办法: 银行家算法; 检测死锁,终止处于死锁状态
4、的进程,释放该进程所占有的资源; 资源预分配。 简述哪种办法允许最大的并发性,也即哪种办法允许更多的进程无等待地向前推进?请按“并发性”从大到小的顺序对上述 3 种办法进行排序。 (分数:4.00)_13.什么是饥饿?死锁和饥饿的主要差别是什么? (分数:4.00)_14.假设某操作系统采用 RR 调度策略,分配给 A 类进程的时间片为 100ms,分配给 B 类进程的时间片为400ms,就绪进程队列的平均长度为 5(包括正在运行的进程),其中 A 类进程有 4 个,B 类进程有 1 个,所有进程的平均服务时间为 2s,问 A 类进程和 B 类进程的平均周转时间各为多少?(不考虑 I/O 情况
5、)。 (分数:4.00)_15.某多道程序设计系统中配有一台处理器 CPU 和两台输入/输出设备 IO 1 、IO 2 ,现有优先级由高到低的 3 个进程 P 1 、P 2 、P 3 同时存在,它们使用资源的先后顺序和占用时间分别是: 进程 P 1 :IO 2 (30ms),CPU(10ms),IO 1 (30ms),CPU(10ms),IO 2 (10ms)。 进程 P 2 :IO 2 (20ms),CPU(20ms),IO 1 (40ms)。 进程 P 3 :CPU(30ms),IO 2 (20ms)。 若进程调度采用“可抢占的最高优先级”调度算法,且忽略调度等所需的时间,请回答下列问题:
6、 (1)进程 P 1 、P 2 、P 3 从开始到完成所用的时间分别是多少?(要求用坐标画出进程 P 1 、P 2 、P 3 的工作过程,其中横坐标表示时间,纵坐标表示 CPU 和 I/O 设备)。 (2)这三个进程从开始到全部完成时 CPU 的利用率为多少?IO 1 、IO 2 的利用率为多少? (分数:4.00)_16.许多操作系统采用动态优先级调度算法,即当一个“阻塞”进程变成“就绪”时提高该进程的优先级。为什么采用这种方法? (分数:4.00)_17.论述一下解决双进程临界区问题的软件算法是错误的。 Process P0: do flag0=true; while(flag1); 临界
7、区 Flag0=false; while(1); Process P1: do flag1=true; while(flag0); 临界区 Flag1=false; while(1); (分数:4.00)_18.在具有 N 个进程的系统中,允许 M 个进程(NM1)同时进入他们的共享区,其信号量 s 的值的变化范围是 1,处于等待状态的进程数最多是 2 个。 (分数:4.00)19.有 3 个并发进程通过使用缓冲区 buf1、buf2 以及信号量 none1、nonf1、none2、nonf2,协作完成如图所示的任务,buf1、buf2 的大小分别为 n1、n2,S1 和 S2 的初值都为 1
8、。 (分数:4.00)_20.在一个仓库中可以存放 A 和 B 两种产品,但要求: (1)每次只能存入一种产品(A 或 B); (2)A 产品数量-B 产品数量M; (3)B 产品数量-A 产品数量N; 其中,M、N 是正整数,试用 P 操作、V 操作描述产品 A 与产品 B 的入库过程。 (分数:4.00)_21.今有一个文件 P 供多个进程共享,现把这些进程分成 A、B 两组,规定同组进程可以同时读文件 P,但当有 A 组(或 B 组)进程在读文件 P 时,就不允许 B 组(或 A 组)进程读文件 P。试用 C 语言实现两组进程的读文件过程。 (分数:4.00)_22.有座东西方向架设、可
9、双向通行的单车道简易桥,最大载重负荷为 4 辆汽年。请定义合适的信号量,正确使用 P 操作、V 操作,实现双向车辆的过桥过程。 (分数:4.00)_23.若系统中有 5 台绘图仪,有多个进程均需要使用 2 台,规定每个进程一次仅允许申请 1 台,则至多允许多少个进程参与竞争而不会发生死锁? (分数:4.00)_24.假设系统中有三类资源(A,B,C)和三个进程(P 1 ,P 2 ,P 3 ),假设在某时刻系统有如下状态: (分数:4.00)_著名的“哲学家就餐问题”是指:5 位哲学家围圆桌就座,桌上每两人之间放一根筷子,任一哲学家修学中饿了便能且只能拿起左右两边的筷子吃饭,餐后将两根筷子各放回
10、原处,自己继续做学问,如此往复,即对哲学家 P i (i=0,1,2,3,4)有循环进程 S i : P i 做学问; P i 取左手的第 i 号筷子; P i 取右手的第(i+1) mod 5 号筷子; P i 就餐; P i 将两根筷子分别放回原处。 哲学家就餐问题是由这样 5 个进程组成的系统。(分数:3.99)(1).请说明此系统是个会死锁的系统。(分数:1.33)_(2).请分别用死锁预防、死锁避免、死锁检测与恢复来改造系统。(分数:1.33)_(3).将上述情况之一编写程序实现。(分数:1.33)_计算机学科专业基础综合计算机操作系统-8 答案解析(总分:99.99,做题时间:90
11、 分钟)一、综合应用题(总题数:25,分数:100.00)1.A 和 B 两个程序,程序 A 顺序执行情况如下:计算 20s,使用设备 10s,计算 10s,使用设备 20s,计算10s;程序 B 顺序执行情况如下:使用设备 20s,计算 20s,使用设备 10s,计算 10s,使用设备 20s。比较单道和多道程序(不考虑管理开销,设备和 CPU 都必须互斥使用)情况下 CPU 和设备各自的利用率是多少? (分数:4.00)_正确答案:()解析:单道程序情况下,CPU 和设备利用率均为 多道程序情况下,CPU 和设备利用率均为2.什么是内核支持线程和用户级线程?并对它们进行比较。 (分数:4.
12、00)_正确答案:()解析:内核支持线程是在内核支持下实现的,即每个线程的线程控制块设置在内核中,所有对线程的操作(如创建、撤销和切换等),都是通过系统功能调用由内核中的相应处理程序完成。而用户级线程仅存在于用户空间中,即每个线程的控制块设置在用户空间中,所有对线程的操作也在用户空间中完成,而无需内核的帮助。 可从以下几个方面比较内核支持线程和用户级线程: (1)内核支持。用户级线程可在一个不支持线程的 OS 中实现,而内核支持线程则不然,它需要得到 OS 内核的支持。 (2)处理器的分配。在多处理机环境下,对纯粹的用户级线程来说,内核一次只为一个进程分配一个处理机,即进程无法享用多处理机带来
13、的好处。而在设置有内核支持线程时,内核可调度一个应用中的多个线程同时在多个处理机上并行运行,从而提高程序的执行速度和效率。 (3)调度和线程执行时间。对设置有内核支持线程的系统,其调度方式和算法与进程的调度相似,只不过调度的单位是线程。而对只设置了用户级线程的系统,调度的单位则仍为进程。因此,在条件相同的情况下,内核支持的线程通常比用户级线程得到更多的 CPU 执行时间。 (4)切换速度。用户级线程的切换,通常发生在一个应用程序的多个线程之间,由于不需陷入内核,而且切换的规则也相当简单,因此切换速度比内核支持线程至少快一个数量级。 (5)系统调用。在典型的 OS 中,许多系统调用都会引起阻塞。
14、当一个用户级线程执行这些系统调用时,被阻塞的将是整个进程。而当一个内核支持线程执行这些系统调用时,内核只阻塞这个线程,但仍可调度其所属进程的其他线程执行。3.什么是线程?进程和线程是什么关系? (分数:4.00)_正确答案:()解析:线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度的实体。 在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行的线程。 进程和线程的关系是: (1)线程是进程的一个组成部分; (2)进程的多线程都在进程的地址空间活动; (3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从
15、进程的资源配额中扣除并分配给它; (4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程; (5)线程在执行过程中,需要同步。4.进程和程序之间可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系。 (分数:4.00)_正确答案:()解析:执行一条命令或一个应用程序时,进程和程序之间形成一对一的关系;进程在执行过程中可以加载执行不同的应用程序,从而形成一对多的关系;当以不同的参数或数据多次执行同一个应用程序时,形成多对一的关系;当并发地执行不同的应用程序时,形成多对多的关系。 解析 从进程的概念、进程与程序之间的关系来考虑问题的解答
16、。进程是程序的执行过程,进程代表执行中的程序,因此进程与程序的差别就隐含在“执行”之中。程序是静态的指令集合,进程是程序的动态执行过程。静态的程序除占用磁盘空间外,不需要其他系统资源,只有执行中的进程才需要分配内存、CPU 等系统资源。 进程的定义说明了两点: (1)进程与程序相关,进程包含了程序。程序是进程的核心内容,没有程序就没有进程。 (2)进程不仅仅是程序,还包含了程序在执行过程中使用的全部资源,没有资源程序就无法执行,因此。进程是执行程序的载体。 当运行一个程序时,操作系统首先要创建一个进程,为进程分配内存等资源,然后将程序加载到进程中执行。就单个进程某个时刻而言,一个进程只能执行一
17、个程序,进程和程序之间是一对一的关系。但从整个系统中的进程集合以及进程的生命周期而言,进程和程序之间可以形成一对一、一对多、多对一、多对多的关系。5.为什么进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。 (分数:4.00)_正确答案:()解析:每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助于操作系统的系统调用函数实现进程之间的通信。进程通信的主要方式有: (1)共享内存区:通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区
18、时需要利用信号量解决同步互斥问题。 (2)消息传递:通过发送/接收消息系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区拷贝到内核中的消息缓冲区中,然后将消息缓冲区挂入消息队列中。进程发送的消息保持在消息队列中直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中拷贝到用户缓冲区,然后释放消息缓冲区。 (3)管道通信:管道是一个先进先出(FIFO)的信息流,允许多个进程向管道写入数据,允许多个进程从管道读出数据。在读/写过程中,操作系统保证数据的写入顺序与读出顺序是一致的。进程通过读/写管道文件或管道设备实现彼此之间的通信。 (4)共
19、享文件:利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要利用信号量解决文件共享操作中的同步互斥问题。 解析 在操作系统中,进程是竞争和分配计算机系统资源的基本单位。每个进程有自己独立的地址空间。为了保证多个进程能够彼此互不干扰地共享物理内存,操作系统利用硬件地址机制对进程的地址空间进行了严格的保护,限制每个进程只能访问自己的地址空间。6.线程和进程有什么区别?举例说明它们分别适用的系统环境。 (分数:4.00)_正确答案:()解析:进程是程序的执行过程,是竞争和分配计算机系统资源的基本单位。线程是进程中的一个程序执行单元。一个进程可以包含多个线程,进程中的程序可以由多个线程并发地
20、执行,因此线程是进程中的并发执行机制。进程中的多个线程共享进程的地址空间和其他资源。线程和进程之间的最大区别是它们的运行、管理和通信开销。创建进程需要建立进程的地址空间,而线程不需要,因为它共享进程的地址空间。在处理机调度过程中,进程切换包括切换 CPU 执行现场和进程地址空间,而同一进程下的线程切换只需要切换CPU 执行现场。由于共享进程的地址空间,同一进程下的线程之间可以直接进行数据交换,不需要调用操作系统的内核通信函数。 多线程并行程序适用于共享存储结构的多处理机系统(SMP),因为这类系统能够很好地支持线程对进程地址空间和资源的物理共享,而多进程并行程序适用于松散耦合的多处理机系统。
21、解析 需要了解和掌握线程、进程的基本概念以及它们之间的关系。操作系统为了支持多道程序的运行和管理,引入了进程概念和进程管理机制。为了加快应用程序的执行速度,提出了并行程序的设计思想。将一个大的应用程序或大作业分解成若干个能够并行处理的子任务,由执行主程序的进程创建多个子进程,每个子进程执行一个子任务。利用进程的并发性,使得多个子进程的 I/O 过程与 CPU 计算过程相互重叠,从而提高处理机利用率,加快应用程序的运行速度。 在多处理机系统中,为了进一步提高并行程序的运行效率。引入了线程概念和线程管理机制。线程是进程中的一个程序执行单元。线程包含 CPU 执行线程和执行堆栈,可以独立地执行程序。
22、进程中的程序可以由多个线程并发地执行,进程中的多个线程共享进程的地址空间和其他资源,包括程序、数据、文件、通信端口等。正是由于线程对进程的地址空间和资源的共享,明显地减少了并行开销(包括线程创建、切换和通信),非常有利于并行程序的开发和运行。7.下面的进程状态转换可能发生吗?为什么? 阻塞运行;就绪阻塞;就绪退出。 (分数:4.00)_正确答案:()解析:阻塞到运行状态是不可能的,因为必须经就绪状态;就绪到阻塞状态是不可能的;就绪到退出状态也是不可能的,中间必须经过执行状态。8.Windows XP 采用了动态优先级的调度算法对下面的进程的优先级进行提高。试分析这样做的原因和结果,由此说明 W
23、indows XP 的调度策略。 完成 I/O 操作的进程; 信号量或事件等待结束的进程; 前台进程(线程)完成一个等待操作; 由于窗口活动而被唤醒的应用程序进程; 进程(线程)在就绪队列中的等待时间过长。 (分数:4.00)_正确答案:()解析:第 1 种情况是因为进程完成 I/O 后,需要提高优先级,这是一种照顾 I/O 为主进程的策略;后 4 种情况均是因为它们长时间没有得到运行的机会,需要提高优先级,这是一种典型的动态优先级策略。9.实现多进程并行程序的好处是什么?多线程并行程序对于多进程并行程序有哪些优势?原因是什么? (分数:4.00)_正确答案:()解析:线程并行相对于进程并行可
24、以降低上下文的切换开销。10.为什么说 ULT 不能实现在多个 CPU 上的真正并行,而混合实现线程则可以? (分数:4.00)_正确答案:()解析:多 CPU 的调度依赖于操作系统内核的调度,而 ULT 不能影响操作系统的调度策略,因此不能实现真正的并行。11.在多处埋机调度中,为什么需要让进程中的多个线程同时被调度执行? (分数:4.00)_正确答案:()解析:提高并行执行的程度。12.设系统中有下述解决死锁的办法: 银行家算法; 检测死锁,终止处于死锁状态的进程,释放该进程所占有的资源; 资源预分配。 简述哪种办法允许最大的并发性,也即哪种办法允许更多的进程无等待地向前推进?请按“并发性
25、”从大到小的顺序对上述 3 种办法进行排序。 (分数:4.00)_正确答案:()解析:死锁检测方法可以获得最大并发性。并发性排序:死锁检测方法、银行家算法、资源预分配法。13.什么是饥饿?死锁和饥饿的主要差别是什么? (分数:4.00)_正确答案:()解析:饥饿是系统并没有死锁,但至少有一个进程被无限期地推迟的现象。饥饿不同于死锁。死锁是这样一种情形:其中某进程正等待一个绝不会发生的事件;而饥饿现象是指某进程正等待这样一个事件:它发生了但总是受到其他进程的影响,以致一直轮不到(或很难轮到)该进程。14.假设某操作系统采用 RR 调度策略,分配给 A 类进程的时间片为 100ms,分配给 B 类
26、进程的时间片为400ms,就绪进程队列的平均长度为 5(包括正在运行的进程),其中 A 类进程有 4 个,B 类进程有 1 个,所有进程的平均服务时间为 2s,问 A 类进程和 B 类进程的平均周转时间各为多少?(不考虑 I/O 情况)。 (分数:4.00)_正确答案:()解析:因为就像进程队列的平均长度为 5,单个 RR 调度循环周期的时间为: 4100+1400=800(ms) A 类进程需要 20 个时间片的执行时间,B 类进程需要 5 个时间片的执行时间(1s=1000ms)。A 类进程的平均周转时间为:200.8=16(s) B 类进程的平均周转时间为:50.8=4(s) 解析 时间
27、片轮转调度(RR)是轮流地调度就绪队列中的每个进程,进程每次占用 CPU 的时间长度限制为时间片的大小。当采用固定的时间片大小时,每个进程按照固定周期被循环地执行。所以,进程的执行速度是由该进程的时间片大小在一个循环周期中所占的比例决定的,比例越高,进程的相对执行速度就越快。15.某多道程序设计系统中配有一台处理器 CPU 和两台输入/输出设备 IO 1 、IO 2 ,现有优先级由高到低的 3 个进程 P 1 、P 2 、P 3 同时存在,它们使用资源的先后顺序和占用时间分别是: 进程 P 1 :IO 2 (30ms),CPU(10ms),IO 1 (30ms),CPU(10ms),IO 2
28、(10ms)。 进程 P 2 :IO 2 (20ms),CPU(20ms),IO 1 (40ms)。 进程 P 3 :CPU(30ms),IO 2 (20ms)。 若进程调度采用“可抢占的最高优先级”调度算法,且忽略调度等所需的时间,请回答下列问题: (1)进程 P 1 、P 2 、P 3 从开始到完成所用的时间分别是多少?(要求用坐标画出进程 P 1 、P 2 、P 3 的工作过程,其中横坐标表示时间,纵坐标表示 CPU 和 I/O 设备)。 (2)这三个进程从开始到全部完成时 CPU 的利用率为多少?IO 1 、IO 2 的利用率为多少? (分数:4.00)_正确答案:()解析:根据“可抢
29、占的最高优先级”调度算法画出进程 P1、P2、P3 的工作过程。(如下图所示) 16.许多操作系统采用动态优先级调度算法,即当一个“阻塞”进程变成“就绪”时提高该进程的优先级。为什么采用这种方法? (分数:4.00)_正确答案:()解析:进程进入“阻塞”状态,是因为进程需要等待某种资源。当进程获得资源时,进程被唤醒,变成“就绪”状态。这时提高该进程的优先级可以使进程尽快地完成慢速设备的 I/O 过程。这样,一方面提高了 I/O 设备的利用率,另一方面,设备的 I/O 活动能够与 CPU 执行其他进程的计算工作充分地并行,从而提高整个系统的性能。解析 在操作系统中,多个进程共享系统的资源必然发生
30、资源的竞争。进程在运行过程中,如果需要使用的资源(如 I/O 设备)正被其他进程占用,该进程就会进入“阻塞”状态,等待资源的释放。如果某种资源的使用时间比较长(例如慢速的 I/O 设备),就会发生许多进程等待该资源的情况,而 CPU 时常处于空闲状态。这时,慢速的 I/O 设备成为阻碍系统性能的瓶颈。提高设备的利用率和提高设备与 CPU 的并行度是解决瓶颈问题的方法之一。17.论述一下解决双进程临界区问题的软件算法是错误的。 Process P0: do flag0=true; while(flag1); 临界区 Flag0=false; while(1); Process P1: do fl
31、ag1=true; while(flag0); 临界区 Flag1=false; while(1); (分数:4.00)_正确答案:()解析:通过使用标志牌 flag0和 flag1能够保证满足“互斥”条件。但是,当两个进程按照的顺序执行程序时,它们各自举起标志牌,同时都因为观察到对方也举起了标志牌而等待在 while 语句中。由于两个进程都不会放下自己的标志牌,因此都无法进入临界区,不能满足“有限等待”的条件。所以,上述解决双进程临界区问题的算法是错误的。 解析 在算法中,两个进程 P 1 和 P 2 各自拥有自己的标志牌 flag0和 flag1。当进程需要进入临界区时,举起标志牌(设置值
32、为 true)。然后观察对方是否举起标志牌,是则等待并继续观察(while 语句),直到对方放下标志牌(设置值为 false)。这时,进程才进入临界区。进程退出临界区时,放下标志牌(设置值为 false)。18.在具有 N 个进程的系统中,允许 M 个进程(NM1)同时进入他们的共享区,其信号量 s 的值的变化范围是 1,处于等待状态的进程数最多是 2 个。 (分数:4.00)解析:(M-N,M);N-M。 解析 信号量 s 及其 P 操作、V 操作具有资源管理的内涵: s0:表示有 s 个资源可用。 s=0:表示无资源可用。 s0:表示有|s|个进程在等待资源。 P(s):表示申请一个资源。
33、 V(s):表示释放一个资源。 信号量必须置一次且只能置一次初值。互斥信号量的初值为 1,同步信号量的初值为 0,代表多个资源的信号量的初值为正整数,即为可用的资源总数。 在本题中,允许 M 个进程同时进入它们的共享区,可以看作有 M 个可用的资源总数。信号量 s 的最大值是可用资源总数 M,最小值是当 N 个进程都需要使用共享区时的值,这时有|M-N|个进程需要等待进入共享区。19.有 3 个并发进程通过使用缓冲区 buf1、buf2 以及信号量 none1、nonf1、none2、nonf2,协作完成如图所示的任务,buf1、buf2 的大小分别为 n1、n2,S1 和 S2 的初值都为
34、1。 (分数:4.00)_正确答案:()解析:P(nonf1) V(none1) P(s1) V(s1) P(none2) P(s2) V(s2) V(nonf2) 解析 信号量及其 P 操作、V 操作是解决同步、互斥问题的常用方法。在应用信号量时必须注意两点: (1)对信号量只能执行 P 操作、V 操作,且 P 操作、V 操作必须成对出现:当实现互斥时,它们出现在同一进程中;当实现同步时,则出现在不同的进程中。 (2)同步 P 操作与互斥 P 操作在一起时,同步 P 操作应该放在互斥 P 操作之前。 本题是一个生产/消费者类型的同步互斥问题。有两组生产者和消费者,利用不同的缓冲区进行操作。第
35、1 组生产者和消费者是输入进程和加工进程,第 2 组生产者和消费者是加工进程和输出进程。在生产者进程与消费者进程之间存在一种同步关系:生产者不能往“满”的缓冲区中放产品,必须等待消费者取走产品之后(第 1 个同步点);消费者亦不能从“空”的缓冲区中取产品,必须等待生产者放入产品之后(第 2个同步点)。也就是说,在生产者和消费者的程序中,需要使用两个信号量实现上述两个同步点。另外,还需要实现对缓冲区 buf1 和 buf2 互斥访问。 从列出的程序中可以看出,信号量 s1 和 s2 分别用于实现对缓冲区 buf1 和 buf2 互斥访问;none1 和nonf1 用于实现输入进程和加工进程之间的
36、同步,none2 和 nonf1 用于实现加工进程和输出进程之间的同步。20.在一个仓库中可以存放 A 和 B 两种产品,但要求: (1)每次只能存入一种产品(A 或 B); (2)A 产品数量-B 产品数量M; (3)B 产品数量-A 产品数量N; 其中,M、N 是正整数,试用 P 操作、V 操作描述产品 A 与产品 B 的入库过程。 (分数:4.00)_正确答案:()解析:产品 A 与产品 B 的入库过程如下: Semaphore:Sa,Sb,mutex; Sa=m-1;Sb=n-1;mutex=1; process_A() While(1) P(Sa); P(mutex); A 产品入库; V(mutex); V(Sb); Process_B() While(1) P(Sb); P(