您好,欢迎访问三七文档
西安邮电大学通信与信息工程学院操作系统实验报告专业班级:xxxxxx学生姓名:xx学号(班内序号):xxxxxxx2016年4月14日——————————————————————————装订线————————————————————————————————1、实验目的1)回顾系统进程、线程的有关概念,加深对Windows2000线程的理解。2)了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对P、V原语以及利用P、V原语进行进程间同步与互斥操作的理解。2、实验内容和步骤(1).生产者消费者问题步骤1:创建一个“Win32ConsolApplication”工程,然后拷贝清单3-1中的程序,编译成可执行文件。步骤2:在“命令提示符”窗口运行步骤1中生成的可执行文件。运行结果:范例:E:\课程\os课\os实验\程序\os11\debugos31(假设编译生成的可执行文件是os31.exe)步骤3:仔细阅读源程序,找出创建线程的WINDOWSAPI函数,回答下列问题:线程的第一个执行函数是什么(从哪里开始执行)?它位于创建线程的API函数的第几个参数中?生产者线程的第一个执行函数是Producer(),消费者第一个执行函数是Consumer(),他们分别位于API函数的第3个参数中。步骤4:修改清单3-1中的程序,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。运行结果:从中你可以得出什么结论:当生产者多余消费者的时候,生产者生产多个的时候消费者才会去消费。当生产者少于消费者的时候,生产者基本每生产一个,消费者就消费一个。步骤5:修改清单3-1中的程序,按程序注释中的说明修改信号量EmptySemaphore的初始化方法,看看结果有何不同。运行结果:将资源EmptySemaphore的初始值设置为0,也就是一开始两个资源都不能获取,导致无论是生产者还是消费的P操作都无法取到资源,只能一直等待,所以窗口不输出任何东西,表示的含义是生产者和消费者均在等待EmptySemaphore资源的释放。步骤6:根据步骤4的结果,并查看MSDN,回答下列问题1)CreateMutex中有几个参数,各代表什么含义。有三个参数。分别是:LPSECURITY_ATTRIBUTESlpMutexAttributes,//指向安全属性的指针BOOLbInitialOwner,//初始化互斥对象的所有者LPCTSTRlpName//指向互斥对象名的指针2)CreateSemaphore中有几个参数,各代表什么含义,信号量的初值在第几个参数中。有四个参数,分别是:lpSemaphoreAttributesSECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByValAsLong,并传递零值)——表示采用不允许继承的默认描述符。该参数定义了信号量的安全特性lInitialCountLong,设置信号量的初始计数。可设置零到lMaximumCount之间的一个值lMaximumCountLong,设置信号量的最大计数lpNameString,指定信号量对象的名称。用vbNullString可创建一个未命名的信号量对象。如果已经存在拥有这个名字的一个信号量,就直接打开现成的信号量。这个名字可能不与一个现有的互斥体、事件、可等待计时器或文件映射的名称相符3)程序中P、V原语所对应的实际WindowsAPI函数是什么,写出这几条语句。P操作:WaitForSingleObject(EmptySemaphore,INFINITE);//p(empty);WaitForSingleObject(Mutex,INFINITE);//p(mutex);V操作:ReleaseMutex(Mutex);//V(mutex);ReleaseSemaphore(FullSemaphore,1,NULL);//V(full);4)CreateMutex能用CreateSemaphore替代吗?尝试修改程序3-1,将信号量Mutex完全用CreateSemaphore及相关函数实现。写出要修改的语句:根据网上查找的资料,在一般情况下,CreateMutex和CreateSemaphore是可以替换的,但在一些特殊情况是不可以的。原语句:Mutex=CreateMutex(NULL,FALSE,NULL);更改后:EmptySemaphore=CreateSemaphore(NULL,1,1,NULL);将这个信号量的初始值设置为1,最大值设置为1,既可达到互斥信号量的作用。(2).读者写者问题根据实验(1)中所熟悉的P、V原语对应的实际WindowsAPI函数,并参考教材中读者、写者问题的算法原理,尝试利用WindowsAPI函数实现第一类读者写者问题(读者优先)。第一类读者-写者问题:读者优先除非有写者在写文件,否则没有一个读者需要等待。分析思想:读者到:1)无读者、写者,新读者可以读2)有写者等,但有其它读者正在读,则新读者也可以读3)有写者写,新读者等写者到:1)无读者,新写者可以写2)有读者,新写者等待3)有其它写者,新写者等待3、实验结论重新深入认识了线程进程的同步与互斥。了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对P、V原语以及利用P、V原语进行进程间同步与互斥操作的理解。感觉这节课收获很多。指导教师评语:实验成绩:指导(辅导)教师:——————————————————————————装订线————————————————————————————————
本文标题:操作系统实验报告2
链接地址:https://www.777doc.com/doc-2381233 .html