下载此文档

操作系统 实验 进程的同步.doc


文档分类:IT计算机 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
操作系统
实验报告
课程名称
操作系统实验
课程编号
0906553
实验项目名称
进程的同步
学号
年级
姓名
专业
学生所在学院
指导教师
实验室名称地点

哈尔滨工程大学
计算机科学与技术学院
第四讲进程的同步
一、实验概述
1. 实验名称
进程的同步
2. 实验目的
l 使用EOS的信号量,编程解决生产者—消费者问题,理解进程同步的意义。
l 调试跟踪EOS信号量的工作过程,理解进程同步的原理。
l 修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。
3. 实验类型
验证+设计
4. 实验内容
(1)准备实验
(2)使用EOS的信号量解决生产者-消费者问题
(3)调试EOS信号量的工作过程
(4)修改EOS的信号量算法
二、实验环境
EOS操作系统和OS Lab集成实验环境,主要运用了C语言。
三、实验过程
3. 需要解决的问题及解答
(1)P143,生产者在生产了13号产品后本来要继续生产14号产品,可此时生产者为什么必须等待消费者消费了4号产品后,才能生产14号产品呢?生产者和消费者是怎样使用同步对象来实现该同步过程的呢?
这是因为临界资源的限制。临界资源就像产品仓库,只有“产品仓库”空闲生产者才能生产东西,有权向里面放东西。因此它必须要等到消费者,取走产品,临界资源空闲时,才能继续生产14号产品。
(2)P147-四思考与练****2. 绘制ps/。
函数开始
开始原子操作
信号量减一
信号量小于0?
线程进入阻塞队列
原子操作完成
函数结束
函数开始
开始原子操作
记录当前信号量的值
Semaphore->Count+ReleaseCount>Semmaphore->MaxinCount
信号量加1
Semaphore->Count<=0?
从阻塞队列唤醒线程
返回Status=STATUS SUCESS
返回Status=STAUS SEMAPHOR LINIT EXCEECED
函数结束
5. 源程序并附上注释
#include ""
VOID
PsInitializeSemaphore(
IN PSEMAPHORE Semaphore,
IN LONG InitialCount,
IN LONG MaximumCount
)
/*++
功能描述:初始化信号量结构体。
参数:Semaphore -- 要初始化的信号量结构体指针。
InitialCount -- 信号量的初始值,不能小于 0 且不能大于 MaximumCount。
MaximumCount -- 信号量的最大值,必须大于 0。
返回值:无。
{ASSERT(InitialCount >= 0 && InitialCount <= MaximumCount && MaximumCount > 0);
Semaphore->Count = InitialCount;
Semaphore->MaximumCount = MaximumCount;
ListInitializeHead(&Semaphore->WaitListHead);}
STATUS
PsWaitForSemaphore(IN PSEMAPHORE Semaphore,IN INT Milliseconds,IN STATUS i )
/*++
功能描述:信号量的 Wait 操作(P 操作)。
参数:Semaphore -- Wait 操作的信号量对象。
Milliseconds -- 等待超时上限,单位毫秒。返回值:
ESS。
--*/
{BOOL IntState;
ASSERT(KeGetIntNesting() == 0); // 中断环境下不能调用此函数。
IntState = KeEnableInterrupts(FALSE); // 开始原子操作,禁止中断。
// 目前仅实现了标准记录型信号量,不支持超时唤醒功能,所以 PspWait 函数的第二个参数的值只能是 INFINITE。
if(Semaphore->Count > 0)
{ Semaphore->Count--;
i=ESS;}
else {i=PspWait(&Semaphore->WaitListHead,Milliseconds );}
KeEnableInterrupts(IntState); // 原子操作完成,恢复中断。

操作系统 实验 进程的同步 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人2112770869
  • 文件大小556 KB
  • 时间2018-07-14