实验5 Linux 信号量与 P、V操作函数的定义
1. 实验目的
(1) 掌握Linux信号量的使用方法和P、V操作函数的定义; (2) 掌握使用P、V操作实现进程之间的同步和互斥的方法; (3) 加深对进程同步互斥概念的理解。
2. 实验预备知识
(1) Linux信号量的使用方法请参考附件材料。 (2) 共享存储通信请参考附件材料.
(3) 用P、V操作实现进程互斥与同步请参考附件材料。
3. 实验内容
(1) 使用信号量及P、V操作实现进程互斥。阅读附件材料,将程序编译连接后运行,观察运行结果。
(2) 使用信号量及P、V操作实现子进程之间通过共享内存通信的读写同步,如实验图5-1所示。要求如下:
生产者进程 消费者进程A 父进程 sum
消费者进程B 实验图 5-1
① 请参考附件材料,设计一个父进程,创建三个子进程。3个子进程中一个是生产者
进程,两个是消费者进程。父子进程都使用父进程创建的共享存储区进行通信。 ② 由生产者进程发送数值1~10到由5个缓冲区组成的共享内存中,两个消费者进程
轮流接受并输入这10个数据,同时将两个消费者进程对读出的所有数据进行累加求和。
③ 3个子进程结束后,由父进程输出两个消费者进程所读出数据的累加和。 它们的同步关系使用P、V操作系统。
4. 实验思考
(1) 针对每个信号量需要进行哪些定义? (2) 总结使用信号量系统调用的步骤与方法。
(3) 进程之间如何使用信号量及其P、V操作实现互斥? (4) 进程之间如何使用信号量及其P、V操作实现同步? (5) 总结数值型共享内存作为变量或作为数组的使用方法。
相关推荐: