- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2011061324张耀(第五讲进程的同步)
操作系统
实 验 报 告
课程名称 操作系统实验 课程编号 0906553 实验项目名称 进程的同步 学号 2011061324 年级 2011 姓名 张耀 专业 计算机科学与技术 学生所在学院 计算机科学与技术 指导教师 印桂生 实验室名称地点 21B276
哈尔滨工程大学
计算机科学与技术学院
第五讲 进程的同步
一、实验概述
1. 实验名称
进程的同步
2. 实验目的
(1)使用EOS 的信号量,编程解决生产者—消费者问题,理解进程同步的意义;
(2)调试跟踪 EOS 信号量的工作过程,理解进程同步的原理;
(3)修改EOS 的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。
3. 实验类型
验证型和设计型实验
4. 实验内容
(1)准备实验
(2)使用 EOS 的信号量解决生产者-消费者问题
(3)调试 EOS 信号量的工作过程建信号量等待释放信号量等待信号量(不阻塞)释放信号量(不唤醒)等待信号量(阻塞)释放信号量(唤醒)修改 EOS 的信号量算法
(1)OSLab集成实验环境;
(2)EOS操作系统;
(2)C语言。
三、实验过程
1. 设计思路和流程图
图3.1.1
2. 需要解决的问题及解答
(1) 生产者在生产了13号产品后本来要继续生产14号产品,可此时生产者为什么必须等待消费者消费了4号产品后,才能生产14号产品呢?生产者和消费者是怎样使用同步对象来实现该同步过程的呢?
答:因为临界资源的访问限制,程序中限定了缓冲池的大小为10,只有缓冲池有空余时生产者才能向里边放产品,同时只有缓冲池有产品时消费者才能向外取东西。当生产者生产了13号产品后,共生产了从0到13的14个产品,但是只消费了从0到3的4个产品,所以缓冲池中的10个缓冲区就都被占用了,所以不能继续生产14号产品,而要等到消费者消费掉一个产品后,缓冲池有空余位置,才能继续生产14号产品。当生产者线程生产了13号产品后,此时Full信号量的值为10,而Empty信号量的值为0,此时若生产者线程要再生产一个产品,先对Empty减1,此时Empty值小于零,生产者线程进入等待队列;而此时若有一个消费者线程要消费一个产品,先对Full减1,此时Full值为9,大于0,如果没有线程占用缓冲池,消费者可以消费一个产品。这样,生产者和消费者就能实现同步过程了。
生产者线程和消费者线程是如何使用Mutex、Empty信号量和 Full信号量来实现同步的?在两个线程函数中对这三个同步对象的操作能够改变顺序吗?
答:Mutex、Empty、Full三个信号量的初始值分别为1、10、0,当存在一个生产者线程访问缓冲池时,首先对Empty减1,如果大于0,则说明还有剩余缓冲区可以让生产者放入产品,否则生产者线程进入等待队列;再对Mutex减1,如果大于等于0,则说明没有线程占用缓冲池,否则生产者线程进入等待队列。生产完产品后,对Mutex加1,解除封锁;再对Full加1,说明生产了一个产品占用了一个缓冲区。消费者线程同理,对信号量的操作顺序与生产者线程相反。不能对这三个同步对象的操作改变顺序,否则可能造成死锁。
(3)思考在ps/semaphore.c文件内的PsWaitForSemaphore和PsReleaseSemaphore函数中,为什么要使用原子操作?
答:在执行PsWaitForSemaphore和PsReleaseSemaphore函数的时候,不允许cpu响应外部中断,如果此时cpu响应了外部中断,会产生不可预料的结果,无法正常完成函数的功能。
(4)绘制ps/semaphore.c文件内PsWaitForSemaphore和PsReleaseSemaphore函数的流程图。
PsWaitForSemaphore流程图:
图 3.2.1
PsReleaseSemaphore函数的流程图:
图 3.2.2
(5)根据本实验3.3.2节中设置断点和调试的方法,自己设计一个类似的调试方案来验证消费者线程在消费24号产品时会被阻塞,直到生产者线程生产了24号产品后,消费者线程才被唤醒并继续执行的过程。
答:调试方案如下:
① 删除所有的断点。
② 按F5启动调试。OS Lab会首先弹出一个调试异常对话框。
③ 在调试异常对话框中选择“是”,调试会中断。
④ 在Consumer函数中等待Full信号量的代码行(第173行) WaitForSingleObject(FullSemaphoreHandle, INFINITE);
添加一个断点。
⑤ 在“断点”窗口(按Alt
您可能关注的文档
- (试卷)三年级上册词语搭配练习.doc
- 01-中国劳动法-英语专业词汇与短语-201411.docx
- 015-251传染病导学案(苏教版).docx
- 016-252威胁健康的主要疾病导学案(苏教版).docx
- (理综)梅州市2013届高三总复习质检试卷(二).doc
- (全)化学考试题型辅导2014.doc
- 08年西工大材科真题.doc
- 02第一节物质的分类.doc
- 10《机械制造工艺基础》期终考试试题(A).doc
- 0836英语科技文选2010年4月份历年真题.doc
- Unit 6 Get Close to Nauture Lesson 22 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 23 -课件-2025-2026学年度北京版英语四年级上册.pptx
- 2025食品饮料行业AI转型白皮书-2025食品饮料行业数智化转型领先实践.pdf
- Unit 7 Be Together Lesson 24 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 25 -课件-2025-2026学年度北京版英语四年级上册.pptx
- Unit 7 Be Together Lesson 26 -课件-2025-2026学年度北京版英语四年级上册.pptx
- 2025年广州体育职业技术学院单招职业倾向性考试题库完美版.docx
- 软件公司员工考勤异常处理.doc
- 2025年土地登记代理人之土地登记相关法律知识题库500道及完整答案【有一套】.docx
- 2025年四平职业大学单招职业适应性考试题库含答案.docx
最近下载
- IPC-2221C-EN TOC2023印制版设计通用标准 Generic Standard on Printed Board Design.pdf VIP
- 2022-2023新版人教版初中九年级化学上册(全册)课件.ppt
- 人教版物理九年级全册分层作业设计.doc
- 九上语文必背内容.docx VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 人教版初中九年级化学下册全册完整课件.ppt VIP
- 新高考语文64篇古诗文理解性默写汇编(含答案).docx VIP
- 物流工作流程及出入庫管理流程图.doc VIP
- 危化品安全数据表.doc VIP
- 丰田沟通技巧报联商培训讲义.pptx VIP
文档评论(0)