第一范文网 - 专业文章范例文档资料分享平台

操作系统实验五

来源:用户分享 时间:2025/7/6 19:35:06 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

操作系统

实 验 报 告

课程名称 实验项目名称 学号 姓名 学生所在学院 操作系统实验 操作系统实验报告物理存储器与进程逻辑地址空间的管理 2011 型钢 班级 专业 指导教师

实验室名称地点 哈尔滨工程大学

一、实验概述

1. 实验名称

进程的同步 2. 实验目的

1.使用EOS的信号量,编程解决生产者—消费者问题,理解进程同步的意义。

2.调试跟踪EOS信号量的工作过程,理解进程同步的原理。

3.修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。 3. 实验类型

验证

二、实验环境

OS Lab

三、实验过程

3.1 准备实验

按照下面的步骤准备本次实验: 1. 启动OS Lab。

2. 新建一个EOS Kernel项目。

3. 生成EOS Kernel项目,从而在该项目文件夹中生成SDK文件夹。 4. 新建一个EOS应用程序项目。

5. 使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。 3.2 使用EOS的信号量解决生产者-消费者问题 按照下面的步骤查看生产者-消费者同步执行的过程:

1. 使用pc.c文件中的源代码,替换之前创建的EOS应用程序项目中EOSApp.c文件内的源代码。

2. 按F7生成修改后的EOS应用程序项目。

3. 按F5启动调试。OS Lab会首先弹出一个调试异常对话框。 4. 在调试异常对话框中选择“否”,继续执行。

5. 立即激活虚拟机窗口查看生产者-消费者同步执行的过程。

6. 待应用程序执行完毕后,结束此次调试。 3.3 调试EOS信号量的工作过程 3.3.1 创建信号量

按照下面的步骤调试信号量创建的过程:

1. 按F5启动调试EOS应用项目。OS Lab会首先弹出一个调试异常对话框。 2. 在调试异常对话框中选择\是\,调试会中断。 3. 在main函数中创建Empty信号量的代码行(第77行)

EmptySemaphoreHandle=CreateSemaphore(BUFFER_SIZE, BUFFER_SIZE, NULL); 添加一个断点。

4. 按F5继续调试,到此断点处中断。

5. 按F11调试进入CreateSemaphore函数。可以看到此API函数只是调用了EOS内核中的PsCreateSemaphoreObject函数来创建信号量对象。

6. 按F11调试进入semaphore.c文件中的PsCreateSemaphoreObject函数。在此函数中,会在EOS内核管理的内存中创建一个信号量对象(分配一块内存),而初始化信号量对象中各个

成员的操作是在PsInitializeSemaphore函数中完成的。

7. 在semaphore.c文件的顶部查找到PsInitializeSemaphore函数的定义(第19行),在此函数的第一行(第39行)代码处添加一个断点。

8. 按F5继续调试,到断点处中断。观察PsInitializeSemaphore函数中用来初始化信号量结构体成员的值,应该和传入CreateSemaphore函数的参数值是一致的。

9. 按F10单步调试PsInitializeSemaphore函数执行的过程,查看信号量结构体被初始化的过程。打开\调用堆栈\窗口,查看函数的调用层次。

搜索更多关于: 操作系统实验五 的文档
操作系统实验五.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7hf3w5yn447916095eiv3gyk618jli0083d_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top