操 作 系 统 实 验 报 告 课程名称 操作系统实验 课程编号 0906553 实验项目名称 进程的同步 学号 ********** 年级 2011 姓名 张耀 专业 计算机科学与技术 学生所在学院 计算机科学与技术 指导教师 印桂生 实验室名称地点 21B 276 哈尔滨工程大学 计算机科学与技术学院 1 第五讲 进程的同步 一、实验概述 1
实验名称 进程的同步 2
实验目的 (1)使用EOS 的信号量,编程解决生产者—消费者问题,理解进程同步的意义; (2)调试跟踪 EOS 信号量的工作过程,理解进程同步的原理; (3)修改 EOS 的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理
实验类型 验证型和设计型实验 4
实验内容 (1)准备实验; (2)使用 EOS 的信号量解决生产者-消费者问题; (3)调试 EOS 信号量的工作过程; 创建信号量 等待释放信号量 等待信号量(不阻塞) 释放信号量(不唤醒) 等待信号量(阻塞) 释放信号量(唤醒) (4)修改 EOS 的信号量算法
二、实验环境 (1)OSLab 集成实验环境; (2)EOS 操作系统; (2)C 语言
三、实验过程 1
设计思路和流程图 2 图3
需要解决的问题及解答 (1) 生产者在生产了13号产品后本来要继续生产14号产品,可此时生产者为什么必须等待消费者消费了4号产品后,才能生产14号产品呢
生产者和消费者是怎样使用同步对象来实现该同步过程的呢
答:因为临界资源的访问限制,程序中限定了缓冲池的大小为10,只有缓冲池有空余时生产者才能向里边放产品,同时只有缓冲池有产品时消费者才能向外取东西
当生产者生产了13号产品后,共生产了从0到13的14个产品,但是只消费了从0到3的4个产品,所以缓冲池中的10个缓冲区就都被占用了,所以不能继续生产