操作系统实验报告实验一

操作系统实验报告实验一

ID:35226579

大小:225.32 KB

页数:23页

时间:2019-03-22

操作系统实验报告实验一_第1页
操作系统实验报告实验一_第2页
操作系统实验报告实验一_第3页
操作系统实验报告实验一_第4页
操作系统实验报告实验一_第5页
资源描述:

《操作系统实验报告实验一》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、计算机操作系统实验报告一、实验一“生产者-消费者”问题二、实验目的:通过对“生产者-消费者”问题编程实现,了解线程创建、同步信号量、互斥信号量、临界区的创建和使用。了解线程互斥和同步机制。了解PV原语和信号量在线程互斥和同步机制中的运用。三、实验内容有界缓冲区内设有5个存储单位,放入/取出的数据项设定为1~5这5个整形数。要求每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者/消费者标识符四、分析设计实验陈述:1、基础知识:本实验用到几个API函数:CreatThread,CreatMutex,CreatSemaphore,WaitForSingleOb

2、ject,ReleaseSemaphore,ReleaseMutex,InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection这些函数的作用:      CreatThread:创建一个线程,该线程在调用进程的地址空间中执     CreatMutex:产生一个命名的或者匿名的互斥量对象。WaitForSingleObject(对应p操作)锁上互斥锁,ReleaseMutex(对应v操作)打开互斥锁。   CreateSemaphore:创建一个命名的或者匿名的信号对象。信号量可以看作是在互斥量上的一个扩展。

3、  WaitForSingleObject:使程序处于等待状态,直到信号量(或互斥量)hHandle出现或者超过规定的等待最长时间,信号量出现指信号量大于或等于1,互斥量出现指打开互斥锁。在返回之前将信号量减1或者锁上互斥锁。  ReleaseSemaphore:将所指信号量加上指定大小的一个量,执行成功,则返回非0值。  ReleaseMutex:用来打开互斥量,即将互斥量加1。成功调用则返回0。  InitializeCriticalSection:该函数初始化临界区对象。  EnterCriticalSection:该函数用于等待指定临界区对象的所有权。当调用线程被赋予所有权时,

4、该函数返回。        LeaveCriticalSection:该函数释放指定的临界区对象的所有权。五、测试数据设计及测试结果分析已知测试用例文件输入的文件时:5thread1P5.000000thread2P4.000000thread3P2.000000thread4C6.00000056thread5P7.000000thread6P1.000000thread7C3.000000132生产者6发送生产请求信号.生产者6开始在缓冲区0生产产品.生产者6完成生产过程:缓冲区【0】:6生成者3发送生产请求信号.生产者3开始在缓冲区1生产产品.生产者3完成生产过程:缓冲区【1】:

5、3消费者7请求消费1产品消费者7请求消费1产品生产者2发送生成者请求信号.生产者2开始在缓冲区2生产产品生产者2完成生产过程:缓冲区【2】:2生产者1发送生产请求信号.生产者1开始在缓冲区3生产产品.生产者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发送生产请求信号.生产者5开始在缓冲区1生产产品生产者5完成生产过程缓冲区【1】:5消费者4请求消费

6、5产品消费者4请求消费5产品缓冲区【1】:-1消费者4请求消费6产品消费者4开始消费6产品消费者4成功消费6:缓冲区【0】:-1六、流程图实验程序的结构图(流程图);创建“生产者”线程输入数据缓冲区是否阻塞N创建“消费者”线程Y“生产者”等待,“消费者”取出缓冲区数据“生产者”生产产品后被唤醒缓冲区是否为空“消费者”阻塞NY七、程序运行结果八、实验体会通过这次实验了解到生产者-消费者问题是一个经典的进程同步问题,以及在其中使用信号量机制,生产者与消费者问题要求我们设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中提供消费者线程消费,而消费者线程

7、从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区,当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。这次生产者和消费者问题的实验,不但加深了我对操作系统中多线程机制的理解和认识,更让我认识到知识的掌握,仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能更好的理解和分析问题。九、源程序文件#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。