1 / 23
文档名称:

操作系统实验报告实验一.doc

格式:doc   大小:194KB   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验报告实验一.doc

上传人:ipod0a 2019/1/12 文件大小:194 KB

下载得到文件列表

操作系统实验报告实验一.doc

文档介绍

文档介绍:计算机操作系统实验报告一、实验一“生产者-消费者”问题二、实验目的: 通过对“生产者-消费者”问题编程实现,了解线程创建、同步信号量、互斥信号量、临界区的创建和使用。了解线程互斥和同步机制。了解PV原语和信号量在线程互斥和同步机制中的运用。三、实验内容有界缓冲区内设有5个存储单位,放入/取出的数据项设定为1~5这5个整形数。要求每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者/消费者标识符四、分析设计实验陈述:1、基础知识:本实验用到几个API函数:CreatThread,CreatMutex,CreatSemaphore,WaitForSingleObject,ReleaseSemaphore,ReleaseMutex,InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection这些函数的作用:      CreatThread:创建一个线程,该线程在调用进程的地址空间中执     CreatMutex:产生一个命名的或者匿名的互斥量对象。WaitForSingleObject(对应p操作)锁上互斥锁,ReleaseMutex(对应v操作)打开互斥锁。   CreateSemaphore:创建一个命名的或者匿名的信号对象。信号量可以看作是在互斥量上的一个扩展。  WaitForSingleObject:使程序处于等待状态,直到信号量(或互斥量)hHandle出现或者超过规定的等待最长时间,信号量出现指信号量大于或等于1,互斥量出现指打开互斥锁。在返回之前将信号量减1或者锁上互斥锁。  ReleaseSemaphore:将所指信号量加上指定大小的一个量,执行成功,则返回非0值。  ReleaseMutex:用来打开互斥量,即将互斥量加1。成功调用则返回0。  InitializeCriticalSection:该函数初始化临界区对象。  EnterCriticalSection:该函数用于等待指定临界区对象的所有权。当调用线程被赋予所有权时,该函数返回。        LeaveCriticalSection:该函数释放指定的临界区对象的所有权。五、测试数据设计及测试结果分析已知测试用例文件输入的文件时: 6 开始在缓冲区 0 6 完成生产过程:缓冲区【0】:6生成者 3 3 开始在缓冲区 1 3 完成生产过程:缓冲区【1】: 3消费者 7请求消费 1 产品消费者 7请求消费 1 产品生产者 2开始在缓冲区 2生产产品生产者 2完成生产过程:缓冲区【2】:2生产者 1开始在缓冲区 1完成生产过程:缓冲区【3】:1消费者 7开始消费 1产品消费者 7成功消费 1:缓冲区【3】:-1消费者 7请求消费 3产品消费者 7开始消费 3产品消费者 7成功消费3:缓冲区【1】:-1消费者 7请求消费 2产品消费者 7开始消费 2产品消费者 7成功消费2:缓冲区【2】:-1消费者4请求消费 5产品生产者 5 开始在缓冲区1生产产品生产者5完成生产过程缓冲区【1】:5消费者 4请求消费 5产品消费者4请求消费 5产品缓冲区【1】:-1消费者 4请求消费 6产品消费者4开始消费 6产品消费者4成功消费 6:缓冲区【0】:-1六、流程图实验程序的结构图(流程图);创建“生产者”线程输入数据缓冲区是否阻塞N创建“消费者”线程Y“生产者”等待,“消费者”取出缓冲区数据“生产者”生产产品后被唤醒缓冲区是否为空“消费者”阻塞NY七、程序运行结果八、实验体会通过这次实验了解到生产者-消费者问题是一个经典的进程同步问题,以及在其中使用信号量机制,生产者与消费者问题要求我们设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中提供消费者线程消费,而消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区,当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。这次生产者和消费者问题的实验,不但加深了我对操作系统中多线程机制的理解和认识,更让我认识到知识的掌握,仅靠学****