生产者与消费者问题0

生产者与消费者问题0

ID:860016

大小:171.03 KB

页数:18页

时间:2017-09-21

生产者与消费者问题0_第1页
生产者与消费者问题0_第2页
生产者与消费者问题0_第3页
生产者与消费者问题0_第4页
生产者与消费者问题0_第5页
资源描述:

《生产者与消费者问题0》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统课程设计报告题目:生产者与消费者问题班级:$$$$$$$$$$学号:0804010214姓名:$$$$$指导教师$$$$$2010-1-13一、题目(生产者与消费者问题)1.课程设计题目分析题目分析:生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。要求设计在同一个进程地址空间内执行的两个进程。生产者进程生产物品,然后将物品放置在一个空缓冲区中供消费者进程消费。消费者进程从缓冲区中获得物品,然后释放缓冲区。当生产者进程生产物品时,如果没

2、有空缓冲区可用,那么生产者进程必须等待消费者进程释放出一个空缓冲区。当消费者进程消费物品时,如果没有满的缓冲区,那么消费者进程将被阻塞,直到新的物品被生产出来。功能要求:根据进程同步机制,编写一个解决上述问题的程序,可显示缓冲池状态、放数据、取数据等过程。键盘输入进程数和缓冲区数目,可调度生产者、消费者的活动及显示进程的当前状态。为实现进程互斥的进入自己的临界区,所有同步机制都应遵循以下四条准则:(1)空闲让进,(2)忙着等待,(3)有限等待(4)让权等待。2.数据结构(1)CreateThread

3、l功能——创建一个在调用进程的地址空间中执行的线程l格式HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,DWORDdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,LPVOIDlpParamiter,DWORDdwCreationFlags,LpdwordlpThread);l参数说明lpThreadAttributes——指向一个LPSECURITY_ATTRIBUTES(新线程的

4、安全性描述符)。dwStackSize——定义原始堆栈大小。lpStartAddress——指向使用LPTHRAED_START_ROUTINE类型定义的函数。lpParamiter——定义一个给进程传递参数的指针。dwCreationFlags——定义控制线程创建的附加标志。lpThread——保存线程标志符(32位)(2)CreateMutexl功能——创建一个命名或匿名的互斥量对象l格式HANDLECreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttribut

5、es,BOOLbInitialOwner,LPCTSTRlpName);l参数说明lpMutexAttributes——必须取值NULL。bInitialOwner——指示当前线程是否马上拥有该互斥量(即马上加锁)。lpName——互斥量名称。(3)CreateSemaphorel功能——创建一个命名或匿名的信号量对象l格式HANDLECreateSemaphore(LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,LONGlInitialCount,LONGlM

6、aximumCount,LPCTSTRlpName);l参数说明lpSemaphoreAttributes——必须取值NULL。lInitialCount——信号量的初始值。该值大于0,但小于lMaximumCount指定的最大值。lMaximumCount——信号量的最大值。lpName——信号量名称。(4)WaitForSingleObjectl功能——使程序处于等待状态,直到信号量hHandle出现(即其值大于等于1)或超过规定的等待时间l格式DWORDWaitForSingleObject(

7、HANDLEhHandle,DWORDdwMilliseconds);l参数说明hHandle——信号量指针。dwMilliseconds——等待的最长时间(INFINITE为无限等待)。(5)ReleaseSemaphorel功能——对指定信号量加上一个指定大小的量。成功执行则返回非0值l格式BOOLReleaseSemaphore(HANDLEhSemaphore,LONGlReleaseCount,LPLONGlppreviousCount);l参数说明hSemaphore——信号量指针。lR

8、eleaseCount——信号量的增量。lppreviousCount——保存信号量当前值。(6)ReleaseMutexl功能——打开互斥锁,即把互斥量加1。成功调用则返回0l格式BOOLReleaseMutex(HANDLEhMutex);l参数说明hMutex——互斥量指针。(7)InitializeCriticalSectionl功能——初始化临界区对象l格式VOIDInitializeCriticalSection(LPCRITICAL_SECTIONlpC

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

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

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