本资源包含详细的操作系统实验报告、实验指导书以及相关源代码,旨在帮助学生深入理解和掌握操作系统原理与实践技能。
《计算机操作系统》实验指导书
**实验类别:** 课内实验
**实验课程名称:** 计算机操作系统
**实验室名称:** 计算机科学与技术专业实验室
**实验课程编号:** N02140113
总 学 时:8学分:4.5
适用专业:软件工程
先修课程:计算机导论及操作、计算机硬件
---
### 实验一 进程同步控制
#### 开发语言及实现平台或实验环境
C++/JAVA, Turbo C / Microsoft Visual Studio 6.0 / Microsoft Visual Studio .NET 2010
#### 实验目的
(1)加强对进程概念的理解,尤其是对进程的同步与互斥机制的理解。
(2)分析进程竞争资源的现象,并学习解决进程互斥与同步的方法。
#### 实验要求
(1)理解利用进程控制机制;
(2)理解使用信号量进行进程同步控制原理;
(3)运用某种编程语言模拟实现生产者-消费者问题的程序设计。
---
### 实验原理
**生产者-消费者问题描述如下:**
一群生产者进程在生成产品,并将这些产品提供给消费者进程去消耗。为了使两者能够并发执行,在它们之间设置了一个具有n个缓冲区的缓冲池,生产者进程会将其所生产的物品放入一个缓冲区内;而消费者进程则可以从某个缓冲区中取出产品进行消费。尽管所有生产者和消费者的运行是异步的,但二者必须保持同步关系:不允许消费者从空缓存中取走商品也不允许生产者向已满的缓存投放商品。
这是一个涉及同步与互斥的问题。
**具体条件如下:**
(1)当消费者想要接收数据时,有界缓冲区里至少有一个单元是填充好的;
(2)当生产者打算发送产品时,有界缓冲区内则必须存在一个空位以供使用。因此设置两个信号量:
- empty:表示可用的缓存数量,初始值为n。
- full:表示已使用的缓存数,初始值设为0。
由于有界缓冲区属于临界资源,则各生产者进程和消费者进程之间需要互斥访问该区域。为此设立一个互斥信号量mutex,其初始化时设置为1。