操作系统
实 验 报 告
课程名称 操作系统实验 课程编号 0906553 实验项目名称 进程的同步 学号 年级 姓名 专业 计算机科学与技术 学生所在学院 计算机科学与技术学院 指导教师 实验室名称地点
哈尔滨工程大学
计算机科学与技术学院
进程的同步
一.实验概述
实验名称:进程的同步
实验目的:
使用 EOS 的信号量,编程解决生产者—消费者问题,理解进程同步的意义;
调试跟踪 EOS 信号量的工作过程,理解进程同步的原理;
修改 EOS 的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。
实验类型:验证+设计
实验内容:
准备实验
使用 EOS 的信号量解决生产者-消费者问题
调试 EOS 信号量的工作过程
修改 EOS 的信号量算法
二.实验环境
操作系统:windows XP
编译器:Tevalaton OS Lab
语言:C
三.实验过程
1.设计思路和流程图
2.实验过程
1)准备实验,启动OS Lab,新建一个EOS Kernel项目 Kernel项目中生成的SDK文件覆盖到ROS应用程序项目文件夹中的SDK文件夹
2)使用pc.c文件中的源代码替换之前创建的EOS应用程序项目中EOSApp.c文件中的代码
3)信号量结构体(SEMAPHORE)中的各个成员变量是由 API 函数 CreateSemaphore 的对应参数初始化的。
创建信号量,启动调试EOS应用程序,在OS Lab弹出的调试异常对话框中选择
EmptySemaphoreHandle = CreateSemaphore(BUFFER_SIZE, BUFFER_SIZE, NULL);
4)启动调试逐语句调试进入
5)在semaphore.c文件的顶部查找到 PsInitializeSemaphore 函数的定义,在此函数的第一行代码处添加一个断点,继续调试,,到断点处中断。观察PsInitializeSemaphore 函数中用来初始化信号量结构体成 员的值,应该和传入CreateSemaphor函数的参数值是一致的;
6)逐过程单步调试 PsInitializeSemaphore函数执行的过程,查看信号量结构体被初始化的过程。 打开“调用堆栈”窗口,查看函数的调用层次;
7)等待信号量(不阻塞),删除所有的断点(防止有些断点影响后面的调试), 在 eosapp.c 文件的 Producer 函数中,等待 Empty信号量的代码行添加一个断点;
WaitForSingleObject(EmptySemaphoreHandle, INFINITE);
8)继续调试,到断点处中断,WaitForSingleObject 函数最终会调用内核中的PsWaitForSemaphore函数完成等待操作。所以, 在 semaphore.c 文件中 PsWaitForSemaphore 函数的第一行添加一个断点。
在断点处中断后,逐过程调试,直到完成 PsWaitForSemaphore 函数中的所有操作。可以看到此次执行并没有 进行等待,只是将 Empty 信号量的计数减少了 1(由 10 变为了 9)就返回了;
9)释放信号量(不阻塞),生产者和消费者刚开始执行时,用来放产品的缓冲区都是空的,所以生产者在第一次调用 WaitForSingleObject 函数等待 Empty 信号量时,应该不需要阻塞就可以立即返回;
删除所有的断点(防止有些断点影响后面的调试),在 eosapp.c 文件的 Producer 函数中,等待 Empty 信号量的代码行添加一个断点;
WaitForSingleObject(EmptySemaphoreHandle, INFINITE);
10)继续调试,到断点处中断,WaitForSingleObject 函数最终会调用内核中的PsWaitForSemaphore函数完成等待操作。所以, 在 semaphore.c 文件中 PsWaitForSemaphore 函数的第一行添加一个断点;
11)继续调试,在断点处中断,逐过程单步调试,,直到完成 PsWaitForSemaphore 函数中的所有操作。可以看到此次执行并没有 进行等待,只是将 Empty 信号量的计数减少了 1(由 10 变为了 9)就返回了;
12)释放信号量(不唤醒),删除所有的断点(防止有些断点影响后面的调试), 在 eosapp.c 文件的Producer函数中,释放Full信号量的代码行添加一个断点。
ReleaseSemaphore(FullSemaphoreHandl
您可能关注的文档
- 解决带电粒子在有界磁场中运动的临界问题的两种方法介绍.doc
- 解决公众面前说话紧张的各种方法总结介绍.doc
- 解剖复习介绍.doc
- 解剖计划3介绍.doc
- lookup的经典查找方式介绍.docx
- 并解释中国的Phillips曲线介绍.docx
- 单选判断简答介绍.docx
- 解剖考卷及答案介绍.doc
- 非营养物质代谢总结介绍.docx
- 肥胖与营养介绍.docx
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
原创力文档

文档评论(0)