操作系统作业2__进程和进程通信

合集下载

操作系统作业二

操作系统作业二

1 填空题1.设单CPU环境下,有三道作业,它们的提交时间及运行时间如下表:若采用短作业优先调度策略,作业单道串行运行时的调度次序为J1,J3,J2,平均周转时间=8。

2.进程间通信的类型有:基于内存通信、基于文件通信、基于网络通信和基于报文传递通信。

3.在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,运行时间短作业将得到优先调度;当各个作业要求运行的时间相同时,等待时间长得到优先调度。

4.有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1<T2<T3。

系统按单道方式运行且采用短作业优先算法,则平均周转时间是1/3*(3t1*2t2*t1)。

5.如果信号量的当前值为3,表示可用的资源数目为3,如果信号量的当前值为-3,则表示系统中有三个资源在等待。

6. 现代操作系统的特征是互斥、异步、虚拟和共享。

7.产生死锁的四个必要条件是互斥和请求和保持,不可剥夺和循环等待条件。

2选择题1.若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许( D )个进程参于竞争,而不会发生死锁。

A、5B、2C、3D、42.产生系统死锁的原因可能是由于( C )。

A、进程释放资源B、一个进程进入死循环C、多个进程竞争,资源出现了循环等待D、多个进程竞争共享型设备3.( C)不是分时系统的基本特征:A、同时性B、独立性C、实时性D、交互性4.进程所请求的一次打印输出结束后,将使进程状态从(B D)A、运行态变为就绪态B、运行态变为等待态C、就绪态变为运行态D、等待态变为就绪态5.一作业进入内存后,则所属该作业的进程初始时处于( B C)状态。

A、运行B、等待C、就绪D、收容6.运行时间最短的作业被优先调度,这种企业调度算法是(C )A.优先级调度B.响应比高者优先C.短作业优先D.先来先服务7.产生死锁的主要原因是进程运行推进的顺序不合适(C )A.系统资源不足和系统中的进程太多B.资源的独占性和系统中的进程太多C.进程调度不当和资源的独占性D.资源分配不当和系统资源不足8.B是指从作业进入系统到作业完成所经过的时间间隔;D是从作业进入后备队列起,到被调度程序选中时的时间间隔。

南通大学操作系统第2章作业参考答案 (1)

南通大学操作系统第2章作业参考答案 (1)

13简答题:简述处理机管理的主要功能。

进程控制和管理;⑵进程同步和互斥;⑶进程通信;⑷进程死锁;⑸线程控制和管理;⑹处理器调度。

(每条1分,总分4分)14简答题:简述中断和异常的区别中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,在两条机器指令之间才可响应中断;异常是由处理器正在执行现行指令而引起的,一条指令执行期间允许响应异常。

(1分)⑵中断处理程序处理过程中是不能阻塞的,异常处理程序处理过程中是可以阻塞的。

(1分)⑶中断允许发生嵌套,但异常大多为一重。

(1分)异常处理过程中可能会产生中断,但中断处理过程中决不会被异常打断。

(1分)15简述进程的主要属性。

(1)动态性:有一定的生命周期⑵共享性:多个进程可执行同一程序,进程可以共享公共资源⑶独立性:是一个独立实体,有自己的虚存空间、程序计数器和内部状态,是资源分配、保护和调度的基本单位⑷制约性:存在制约关系(5)并发性:执行时间上会有所重叠16(每条1分,总分4分)16简答题:简述引起进程状态转换的具体原因。

(1)运行态→等待态:等待使用资源或某事件发生;(1分)⑵等待态→就绪态:资源得到满足或事件发生;(1分)⑶运行态→就绪态:运行时间片到;出现有更高优先权进程;(1分)⑷就绪态→运行态:CPU空闲时选择一个就绪进程。

(1分)17、简答题:进程的基本状态有哪些?请画出进程的状态转换图。

进程的基本状态包括:就绪态、运行态和等待态;(2分)⑵进程的状态转换图如下:(2分)18、简答题:简述进程映象的要素。

(1)进程控制块:标志信息、现场信息、控制信息;(1分)⑵进程核心栈:中断/异常现场、函数调用的参数和返回地址;(1分)⑶进程程序块:进程执行的程序;(1分)⑷进程数据块:私有地址空间,私有数据、用户栈。

(1分)19、简答题:简述引起进程调度的原因。

(1)进程终止⑵进程阻塞⑶进程时间片用完经,⑷进程创建⑸进程请求I/O操作完成⑹进程优先级改变⑺进程运行过程中发生中断或异常⑻进程执行系统调用(每条1分,总分4分)20、下列指令中,哪些是特权指令?⑴关中断;⑵访管指令;⑶设置系统时钟;⑷移位指令;⑸启动I/O;⑹读时钟日期;⑺控制中断屏蔽位(1)、⑶、⑸、⑺(每答对1个得1分,答错1个扣1分)。

(完整版)第三章进程同步与通信作业习题与答案

(完整版)第三章进程同步与通信作业习题与答案

第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。

A.管道B.管程C.通道D.DMA2.以下_B__不是操作系统的进程通信手段。

A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。

A.3B.2C.1D.04.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理时信号量S的可能取值是_C__。

A.3,2,1,0,-1B.2,1,0,-1,-2C. 1,0,-1,-2,-3D.4,3,2,1,05.下面有关进程的描述,是正确的__A__。

A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。

A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B_ _。

A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。

A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。

A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。

A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。

操作系统第二章练习 答案

操作系统第二章练习 答案

1.P、V 操作是 A 。

A.两条低级进程通信原语B.两组不同的机器指令C.两条系统调用命令D.两条高级进程通信原语2.设系统中有 n(n>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况,不可能发生的情况是 A 。

A.没有运行进程,有2个就绪进程,n 个进程处于等待状态。

B.有1个运行进程,没有就绪进程,n-1个进程处于等待状态。

C.有1个运行进程,有1个就绪进程,n-2个进程处理等待状态。

D.有1个运行进程,n-1个就绪进程,没有进程处于等待状态。

3.若 P、V 操作的信号量 S 初值为2,当前值为-1,则表示有 B 等待进程。

A. 0个B. 1个C. 2个D. 3个4.用 V 操作唤醒一个等待进程时,被唤醒进程的状态变为 B 。

A.等待B.就绪C.运行D.完成5.用 P、V 操作可以解决 A 互斥问题。

A.一切B.某些C.正确D.错误6.多道程序环境下,操作系统分配资源以 C 为基本单位。

A.程序B.指令C.进程D.作业7.从下面对临界区的论述中,选出一条正确的论述。

(1)临界区是指进程中用于实现进程互斥的那段代码。

(2)临界区是指进程中用于实现进程同步的那段代码。

(3)临界区是指进程中用于实现进程通信的那段代码。

(4)临界区是指进程中用于访问共享资源的那段代码。

(5)临界区是指进程中访问临界资源的那段代码。

8.(A)是一种只能由 wait 和 signal 操作所改变的整型变量,(A)可用于实现进程的(B)和(C),(B)是排他性访问临界资源。

A:(1)控制变量;(2)锁;(3)整型信号量;(4)记录型信号量。

B:(1)同步;(2)通信;(3)调度;(4)互斥。

C:(1)同步;(2)通信;(3)调度;(4)互斥。

9.对于记录型信号量,在执行一次 wait 操作时,信号量的值应当(A),当其值为(B)时,进程阻塞。

在执行 signal 操作时,信号量的值应当为(C),当其值为(D)时,应唤醒阻塞队列中的进程。

操作系统第6章3.6 本单元作业二参考答案

操作系统第6章3.6 本单元作业二参考答案

单元六课后作业答案一、填空1.信号量的物理意义是当信号量值大于零时表示可分配资源的个数;当信号量值小于零时,其绝对值为等待使用该资源的进程的个数。

2.所谓临界区是指进程程序中需要互斥执行的程序段。

3.用P、V操作管理临界区时,一个进程在进入临界区前应对信号量执行P 操作,退出临界区时应对信号量执行V 操作。

4.有m个进程共享一个临界资源。

若使用信号量机制实现对临界资源的互斥访问,则该信号量取值最大为1 ,最小为−(m−1)。

注意,无论有多少个进程,只要它们需要互斥访问同一个临界资源,那么管理该临界资源的信号量初值就是1。

当有一个进程进入临界区时,信号量的值就变为0。

随后再想进入的进程只能等待。

最多的情况是让一个进程进入后,其余(m−1)个进程都在等待进入。

于是这时信号量取到最小值:−(m−1)。

5.对信号量S的P操作原语中,使进程进入相应信号量队列等待的条件是V s<0 。

6.死锁是指系统中多个进程无休止地等待永远不会发生的事件出现。

7.产生死锁的4个必要条件是互斥、非剥夺、部分分配和循环等待。

8.在银行家算法中,如果一个进程对资源提出的请求将会导致系统从安全的状态进入到不安全的状态时,就暂时拒绝这一请求。

9.信箱在逻辑上被分为信箱头和信箱体两部分。

10.在操作系统中进程间的通信可以分为低级通信与高级通信两种。

二、选择1.P、V操作是A 。

A.两条低级进程通信原语B.两条高级进程通信原语C.两条系统调用命令D.两条特权指令2.进程的并发执行是指若干个进程B 。

A.共享系统资源B.在执行的时间上是重叠的C.顺序执行D.相互制约3.若信号量S初值为2,当前值为−1,则表示有B 个进程在与S相关的队列上等待。

A.0 B.1 C.2 D.34.用P、V操作管理相关进程的临界区时,信号量的初值应定义为C 。

A.−1 B.0 C.1 D.随意5.用V操作唤醒一个等待进程时,被唤醒进程的状态变为B 。

A.等待B.就绪C.运行D.完成6.若两个并发进程相关临界区的互斥信号量MUTEX现在取值为0,则正确的描述应该是B 。

进程同步与通信作业习题与答案

进程同步与通信作业习题与答案

第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。

A.管道B.管程C.通道2.以下_B__不是操作系统的进程通信手段。

A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。

4.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理时信号量S的可能取值是_C_。

,2,1,0,-1,1,0,-1,-2C.1,0,-1,-2,-3,3,2,1,05.下面有关进程的描述,是正确的__A__oA.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误、V操作不是原语操作6.信号灯可以用来实现进程之间的_B_。

A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B__0A.没有进程进入临界区8.有1个进程进入了临界区C.有2个进程进入了临界区D.有1个进程进入了临界区并且另一个进程正等待进入8.信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_CA.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C.信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10.并发是指_C__。

A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11.临界区是_C__。

A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C_。

A.进程之间无关,系统是封闭的B.进程之间相互依赖相互制约C.进程之间可能有关,也可能无关D.以上都不对13.在消息缓冲通信中,消息队列是一种__A_资源。

操作系统进程通信

操作系统进程通信

进程通信-----消息传递通信的实现方式
通信链路:
第一种方式(主要用于计算机网络中):由发送进程在通信 之前用显式的“建立连接”命令请求系统为之建立一条通 信链路,在链路使用完后拆除链路。
第二种方式(主要用于单机系统中):发送进程无须明确提 出建立链路的请求,只须利用系统提供的发送命令(原 语),系统会自动地为之建立一条链路。
邮箱特点: (1)每一个邮箱有一个唯一的标识符; (2)消息在邮箱中可以安全保存,只允许核准的用户随时
读取; (3)利用邮箱可以实现实时通信,又可以实现非实时通信。
进程通信-----信箱通信
信箱结构:
信箱定义为一种数据结构,在逻辑上可以分为:
• 1,信箱头,用以存放有关信箱的描述信息,如信箱标识符,信箱的 拥有者,信箱口令,信箱的空格数等;
基于共享存储区的通信方式。在存储器中划出了一 块共享存储区,各进程可通过对共享存储区中的 数据的读和写来实现通信。适用于传输大量数据。
进程通信-----消息传递系统
消息传递机制 : 进程间的数据交换以消息为单位,程序员利用系统的通信原语(要
进行消息传递时执行send;当接收者要接收消息时执行receive)实 现通信。这种通信方式属于高级通信 。
b 接 收 区
原语描述
二、实例—消息缓冲队列通信机制
1、通信描述
PCB(B)
进程 A
进程 B
send (B,a)
mq mutex
sm
receive(b)
Emphead
a 发 sender: A 送 size:5 区 text:Hello
sender : A size : 5
i Text:Hello next: 0

进程同步与通信作业习题与答案

进程同步与通信作业习题与答案

第三章一.选择题(50题)1.以下_B__操作系统中的技术是用来解决进程同步的。

A.管道B.管程C.通道2.以下_B__不是操作系统的进程通信手段。

A.管道B.原语C.套接字D.文件映射3.如果有3个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为_B__。

4.设有4个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V操作管理时信号量S的可能取值是_C__。

,2,1,0,-1 ,1,0,-1,-2 C. 1,0,-1,-2,-3 ,3,2,1,05.下面有关进程的描述,是正确的__A__。

A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V 操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误、V操作不是原语操作6.信号灯可以用来实现进程之间的_B__。

A.调度B.同步与互斥C.同步D.互斥7.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示_B__。

A.没有进程进入临界区B.有1个进程进入了临界区C. 有2个进程进入了临界区D. 有1个进程进入了临界区并且另一个进程正等待进入8. 信箱通信是一种_B__方式A.直接通信B.间接通信C.低级通信D.信号量9.以下关于临界区的说法,是正确的_C__。

A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C. 信号量的初值非负,在其上只能做PV操作D.两个互斥进程在临界区内,对共享变量的操作是相同的10. 并发是指_C__。

A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程11. 临界区是_C__。

A.一个缓冲区B.一段数据区C.一段程序D.栈12.进程在处理机上执行,它们的关系是_C__。

A.进程之间无关,系统是封闭的B.进程之间相互依赖相互制约C.进程之间可能有关,也可能无关D.以上都不对13. 在消息缓冲通信中,消息队列是一种__A__资源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二进程和进程通信实验报告仅供参考仅供参考!(一)实验目的⏹通过使用进程和进程通信方面的系统调用的,加深理解有关进程方面的基本概念。

通过实验对进程有进一步的感性认识,掌握系统V的IPC机制。

(二)实验题目⏹1.设计一个程序,创建一个子进程,使父子进程合作,协调地完成某一功能。

要求在该程序中还要使用进程的睡眠、进程图象改换、父进程等待子进程终止、信号的设置与传送(包括信号处理程序)、子进程的终止等有关进程的系统调用。

⏹2.利用UNIX的消息通信机制、共享内存机制(要用信号灯实施进程间的同步和互斥)实现两个进程间的数据通信。

具体的通信数据可从一个文件读出,接收方进程可将收到的数据写入一个新文件,以便能判断数据传送的正确性(对文件操不熟悉的同学可不必通过读写文件,只要键盘输入和输出至屏幕进行比较即可)。

(蓝字部分对一般同学不作要求)(三)实验报告要求⏹要求在实验室当场调试完成,经老师检查通过,登记,实验报告可免做。

⏹对于因特殊情况,不能到实验室上机的同学,可在自己的Linux机器上机,但要求写实验报告,包括题目、数据结构的说明,画出程序框图,在源程序中加入注释,说明程序的测试方法和测试结果,以及实验总结或体会。

⏹在实验报告中要有一幅Linux系统运行的截图,截图中要注释实验者的姓名或学号。

实验报告不要做压缩文件。

⏹为了截图,可以建立以学号为用户名的帐号,或在命令行中输入姓名或学号(会显示出错,没有关系),或在程序加入注释,再对其截图。

⏹至少要完成一道实验题。

一、运行程序(一)、数据结构说明和程序框图1、数据结构说明main()函数:子进程的创建都是在main()函数里面;signalfun(),是信号SIGUSR1对应的处理函数;writetofile函数,是对一个文件写如一定的内容的函数;readfromfile,是从一个文件里面读取内容的函数。

2、程序框图如下:(二)、源程序1、父子进程程序#include <sys/types.h>#include <signal.h>main(){int pid,status = 1;void func();signal(SIGUSR1,func); /* 预置信号处理程序,将SIGUSR1设置为func函数的功能*/while ((pid=fork( ))==-1);if (pid) { /* 父进程*/printf("It is the parent process.\n");printf("Parent: will send signal.\n");kill(pid,SIGUSR1); /* 发送信号,即发送执行func函数的信息*/ pid = wait(&status); /* 父进程等待子进程终止*/printf("Child process %d,status=%d \n",pid,status);}else { /* 子进程*/sleep (2); /* 等待接受信号*/printf("It is the child process.\n");printf("Child:signal is received.\n");execvp ("pwd",(char*)0); /* 映像改换,显示当前工作区,exevcp不用给出具体路径,(char*)0指向pwd命令*/printf("execl error.\n"); /* 映像改换失败*/exit(2);}printf ("Parent process finish. \n");}void func (){system("date");}2、消息通信机制/* msgcom.h */#include <errno.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#define MSGKEY 5678struct msgtype{long mtype;int text;};#include "msgcom.h"main(){ /* 请求进程*/struct msgtype buf;int qid,pid;qid=msgget(MSGKEY,IPC_CREAT|0666); /* MSGKEY为约定的消息队列关键字,访问控制权限为0666 */buf.mtype=1; /* 请求进程发送消息标识为1 */buf.text=pid=getpid(); /* 请求进程发送消息内容为进程标识*/msgsnd(qid,&buf,sizeof(buf.text), IPC_NOWAIT|04000); /* 发送消息正文长度为buf的大小*/msgrcv(qid,&buf,512,pid,MSG_NOERROR); /* 指定接收mtype=pid的信息,即请求进程发送给服务器处理后的信息*/printf("Request received a massags from server, type is: %d\n",buf.mtype);}#include "msgcom.h"main(){ /* 服务器进程*/struct msgtype buf;int qid;if((qid=msgget(MSGKEY,IPC_CREAT|0666))== -1)return(-1); /* 出错处理*/while(1){msgrcv(qid,&buf,512,1,MSG_NOERROR); /* 接收所有请求进程发送的消息*/printf("Server receive a request from process %d\n",buf.text);buf.mtype=buf.text; /* 将请求进程的标识数作为mtype的值,以便于请求进程识别*/msgsnd(qid,&buf,sizeof(int),IPC_NOW AIT|04000); /* 将消息发送给请求进程*/ }}3、共享内存机制#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>#include <sys/shm.h>#include <stdio.h>#define SHMKEY 18001 /* 共享内存关键字*/#define SHMKEY2 18002#define SIZE 1024 /* 共享内存长度*/#define SEMKEY1 19001 /* 信号灯组1关键字*/#define SEMKEY2 19002 /* 信号灯组2关键字*/#define SEMKEY3 19003 /* 信号灯组3关键字*/static void semcall(sid,op)int sid,op;{struct sembuf sb;sb.sem_num = 0; /* 信号灯编号0 */sb.sem_op = op; /* 信号灯操作数加1或减1 */sb.sem_flg = 0; /* 操作标志*/if(semop(sid,&sb,1) == -1)perror("semop"); /* 出错处理*/};int creatsem(key) /* 信号灯组创建及初始化程序*/key_t key;{int sid;union semun { /* 如sem.h中已定义,则省略*/int val;struct semid_ds *buf;ushort *array;} arg;if((sid=semget(key,1,0666|IPC_CREAT))==-1) /* 创建1个关键字为1的信号灯组,访问控制权限为0666 */perror("semget"); /* 出错处理*/arg.val=1; /* 初值为1 */if(semctl(sid,0,SETV AL,arg)==-1) /* 将信号灯组的第一个信号灯的初值置1 */perror("semctl"); /* 出错处理*/return(sid);}void P(sid)int sid;{semcall(sid,-1); /*对关键字为sid信号灯组值减1,相当于wait */}void V(sid)int sid;{semcall(sid,1); /*对关键字为sid信号灯组值加1,相当于signal */}main(){char *segaddr,*segaddr2;int segid,segid2,sid1,sid2,sid3;if((segid=shmget(SHMKEY,SIZE,IPC_CREAT|0666))==-1) /* 创建共享内存段*/ perror("shmget"); /* 出错处理*/if((segid2=shmget(SHMKEY2,SIZE,IPC_CREA T|0666))==-1) /* 创建共享内存段2 */ perror("shmget"); /* 出错处理*/segaddr=shmat(segid,0,0); /* 将共享内存映射到进程数据空间*/segaddr2=shmat(segid2,0,0); /* 将共享内存2映射到进程数据空间*/sid1=creatsem(SEMKEY1); /* 创建三个信号灯,初值为1 */sid2=creatsem(SEMKEY2);sid3=creatsem(SEMKEY3);P(sid2); /* 置信号灯2值为0,表示缓冲区1空*/P(sid3); /* 置信号灯3值为0,表示缓冲区2空*/if(!fork()){if(!fork()){while(1){ /* 子进程的子进程,接收和输出*/P(sid3);printf("Received from Parent: %s\n",segaddr2);printf("Received from Grandparent: %s\n",segaddr);V(sid1);}}while(1){ /* 子进程,输入和存储*/P(sid2);scanf("%s",segaddr2);V(sid3);}}while(1) { /* 父进程,输入和存储*/P(sid1);scanf("%s",segaddr);V(sid2);}}(三) 测试方法:黑箱测试法二、测试结果1、父子进程通信2、消息通信1)请求进程2)服务器进程3、共享内存三、实验总结或体会进程间的通信的方法有很多种,可以通过管道、消息、信号、共享内存等等一些方法,来实现进程的协作,从而实现计算机间的协作,进而完成复杂的任务。

相关文档
最新文档