- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
进程同步实验报告
操作系统
实 验 报 告
课程名称
操作系统实验
实验项目名称
进程的同步
学号
班级姓名
专业
计算机科学与技术
学生所在学院
计算机科学与技术学院
指导教师
实验室名称地点
计算机基础第七实验室 21B475
哈尔滨工程大学
计算机科学与技术学院
一、实验概述
1. 实验名称
进程的同步
2. 实验目的
⑴使用EOS的信号量,编程解决生产者—消费者问题,理解进程同步的意义。
⑵调试跟踪EOS信号量的工作过程,理解进程同步的原理。
⑶修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。?
3. 实验类型
验证+设计
4. 实验内容
⑴准备实验
⑵使用EOS的信号量解决生产者-消费者问题
⑶调试EOS信号量的工作过程
①创建信号量
②等待释放信号量
③等待信号量(不阻塞)
④释放信号量(不唤醒)
⑤等待信号量(阻塞)
⑥释放信号量(唤醒)
⑷修改EOS的信号量算法
二、实验环境
WindowsXP + EOS集成实验环境
三、实验过程
1. 设计思路和流程图
准备实验使用
准备实验
使用EOS的信号量解决生产者-消费者问题
调试EOS信号量的工作过程
创建信号量
释放信号量(唤醒)
等待信号量(阻塞)
释放信号量(不唤醒)
等待信号量(不阻塞)
等待释放信号量
修改EOS的信号量算法
结束实验
图4-1.整体试验流程图
main函数开始
main函数开始
创建Mutex对象
创建Empty信号量对象
创建Full信
号量对象
创建生产者线程
创建消费者线程
等待生产者线程和消费者线程结束
关闭句柄
main函数结束
Producer函数开始
生产完毕?
等待Empty信号量对象
等待Mutex对象
生产一个产品,占用一个缓冲区
循环向后移动缓冲区指针
释放Mutex对象
释放Full信号量对象
等待500毫秒
Producer函数结束
Consumer函数开始
消费完毕毕?
等待Full信号量对象
等待Mutex对象
消费一个产品,清空一个缓冲区
循环向后移动缓冲区指针
释放Mutex对象
释放Empty信号量对象
前10个产品?
等待2000毫秒
等待100毫秒
Consumer函数结束
图4-2.Main函数流程图、生产者消费、消费者流程图
2. 算法实现
3. 需要解决的问题及解答
(1). 思考在ps/semaphore.c文件内的PsWaitForSemaphore和PsReleaseSemaphore函数中,为什么要使用原子操作?
答:在执行等待信号量和释放信号量的时候,是不允许cpu响应外部中断的,如果此时cpu响应了外部中断,会产生不可预料的结果,无法正常完成原子操作。
(2). 绘制ps/semaphore.c文件内PsWaitForSemaphore和PsReleaseSemaphore函数的流程图。
(3). P143生产者在生产了13号产品后本来要继续生产14号产品,可此时生产者为什么必须等待消费者消费了4号产品后,才能生产14号产品呢?生产者和消费者是怎样使用同步对象来实现该同步过程的呢?
答:这是因为临界资源的限制。临界资源就像产品仓库,只有“产品仓库”空闲生产者才能生产东西,有权向里面放东西。所以它必须等到消费者,取走产品,“产品空间”(临界资源)空闲时,才继续生产14号产品。
(4). 根据本实验3.3.2节中设置断点和调试的方法,自己设计一个类似的调试方案来验证消费者线程在消费24号产品时会被阻塞,直到生产者线程生产了24号产品后,消费者线程才被唤醒并继续执行的过程。
答:可以按照下面的步骤进行调试
(1) 删除所有的断点。
(2) 按F5启动调试。OS Lab会首先弹出一个调试异常对话框。
(3) 在调试异常对话框中选择“是”,调试会中断。
(4) 在Consumer函数中等待Full信号量的代码行(第173行) WaitForSingleObject(FullSemaphoreHandle, INFINITE); 添加一个断点。
(5) 在“断点”窗口(按Alt+F9打开)中此断点的名称上点击右键。
(6) 在弹出的快捷菜单中选择“条件”。
(7) 在“断点条件”对话框(按F1获得帮助)的表达式编辑框中,输入表达式“i == 24”。
(8) 点击“断点条件”对话框中的“确定”按钮。
(9) 按F5继续调试。只有当消费者线程尝试消费24号产品时才会在该条件断点处中断。
4. 主要数据结构、实现代码及其说明
修
您可能关注的文档
- 管理会计学——上海交通大学Chapter_1总 论.ppt
- 管理者培训技巧.pdf
- 第四讲_景观生态学数学方法.ppt
- 粗暴执法行为诱因和对策.pdf
- 粤 传 媒:关于召开2010年第三次临时股东大会通知 2010-12-01.pdf
- 金蝶KIS标准版固定资产计提折旧将剩余期间固定资产都折旧完处理方法.pdf
- 精子计数板实用方法与分类.doc
- 粒子群优化算法种群规模选择.pdf
- 粤教版七上第4单元第三课+养成良好学习习惯(共12张PPT).ppt
- 第六章 盆栽花卉栽培技术.ppt
- 2025江浙沪居民睡眠健康小调研报告.pdf
- 毕业论文的开题报告范文.docx
- 团委活动方案(拓展).docx
- 汽车智能驾驶行业深度报告:端到端与AI共振,智驾平权开启新时代.pdf
- 小核酸行业深度:技术平台和适应症不断验证,迎来销售和临床密集兑现期-华福证券-2025.3.31-65页.docx
- 医药生物行业医疗AI专题报告二多组学篇AI技术驱动精准诊断实现重要突破-25031440页.docx
- CXO行业系列报告三寒冬已过行业需求逐步回暖-25031430页.docx
- 全国租赁市场报告2025年3月_可搜索.pdf
- 玩具行业“情绪经济”专题:创新玩法+IP赋能,重新定义玩具-华鑫证券-2025.docx
- 医疗保健行业PCAB抑制剂药物深度报告抑酸药物市场空间广阔PCAB抑制剂大有可为-25.pdf
文档评论(0)