【实验目的】
- 理解互斥概念、信号量机制及信号量结构;
- 掌握信号量的使用方法;
- 掌握PV操作的定义;
- 掌握PV操作实现互斥的方法。
【实验环境】VMware Workstation、RedHat
【实验步骤】
一、父子进程以非互斥方式共享访问临界资源
- 创建父子进程,父子进程共享一个临界资源,每个进程循环进入该临界区3次;父进程每次进入临界区后显示“parent in”,出临界区显示“parent out”。
- 子进程每次进入临界区后显示“child in”,出临界区显示“child out”。
3.观察执行结果。
二、PV操作实现进程互斥。以实验步骤一为基础,增加PV操作,实现父子进程互斥访问临界区。
- 定义与PV操作相关的数据结构;
- 定义信号量,给信号量赋值;
- 定义PV操作;
- PV操作实现进程互斥。
4.观察执行结果,并与实验步骤一的结果比较。
比较:实验步骤一父子进程访问临界资源时是无序的,可出现同时访问、交替访问、同时退出临界资源的现象;实验步骤二只能是父进程退出后子进程才能访问。
【实验报告】
填写《信息技术学院学生上机实验报告》。
【思考题】
- 实验步骤一的结果说明什么?
答:实验步骤一父子进程访问临界资源时是无序的,可出现同时访问、交替访问、同时退出临界资源的现象,是以非互斥的方式共享访问临界资源。
2. P、V操作在各进程代码中的位置应该如何处理?
答:临界区前用P操作实现资源的申请,临界区后用V操作实现资源的释放。