信号量机制解决互斥与同步问题信号量机制信号量(semaphore).pptVIP

信号量机制解决互斥与同步问题信号量机制信号量(semaphore).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信号量机制解决互斥与同步问题信号量机制信号量(semaphore)

互斥与同步 操作系统实验2 赵静:1座机电话号码1@ 内容 一、信号量机制解决互斥与同步问题 实验:P/V信号量的编程实现 二、管程机制解决互斥与同步问题 实验:管程机制的编程实现 一、信号量机制解决互斥与同步问题 信号量机制 信号量(semaphore)机制 解决并发进程同步的工具 P操作表示同步进程发出的检测信号量操作,检测是否能够使用临界资源 V操作表示访问完临界资源的进程通知等待进程已经完成了临界资源的访问,将临界资源释放。 经典互斥与同步问题回顾 生产者-消费者问题 读者-写者问题 哲学家进餐问题 生产者-消费者问题 生产者P: Wait empty ; Wait mutex ; Buffer in nextp; in: in+1 mod n; Signal mutex ; Signal full ; 消费者C: Wait full ; Wait mutex ; netxc buffer out ; out: out+1 mod n; Signal mutex ; Signal empty ; mutex,full,empty:semaphore mutex : 1; full: 0; empty: n; 读者-写者问题 读者优先 读者R: Wait rmutex ; rcount++; if rcount 1 Wait wmutex ; Signal rmutex ; Read_Action ; Wait rmutex ; rcount--; if rcount 0 Signal wmutex ; Signal rmutex ; 写者W: Wait wmutex ; Write_Action ; Signal wmutex ; rmutex,wmutex:semaphore rmutex : 1;wmutex : 1; rcount:int rcount: 0; 哲学家进餐问题 哲学家i i 0,1..5 thinking ; Wait fork[i] ; Wait fork[ i+1 mod 5] eating ; Signal fork[i] ; Signal fork[ i+1 mod 5] array of fork[]:semaphore fork[] : 1,1,1,1,1 ; 思考,怎么解决 死锁问题 ? 同步对象 同步对象是指Windows/Linux中用于实现同步与互斥的实体, 包括互斥量 Mutex 、信号量 Semaphore 、临界区 Critical Section 和事件 Events 等。 本实验中使用到信号量、互斥量和临界区三个同步对象。 实验方案设计 以读者-写者 读者优先 为例: 1.创建若干线程分别模拟读者操作和写者操作 2.读线程间和写线程间对各自局部共享资源的访问修改采用 Mutex对象,结合WaitForSingleObject 保证互斥操作。 3.读线程与写线程争用全局临界资源采用临界区 Critical Seciton 。 4.统管读写线程的线程采用WaitForMultipleObjects 保证等待所有的线程结束。 创建线程函数 CreateThread 功能:该函数创建一个在调用进程的地址空间中执行的线程。 若函数调用成功,返回值为新线程的句柄;若函数调用失败, 返回值为NULL。 格式: HANDLE CreateThread LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlag, LPDWORD lpThreadId ; 参数说明: lpThreadAttributes—指向一个LPSECURITY_ATTRIBUTES 新线程的安全性描述符 。 dwStackSize—定义原始堆栈大小。 lpStartAddress—指向使用LPTHRAED_START_ROUTINE类型定义的函数。 lpParamiter—定义一个给进程传递参数的指针。 dwCreationFlags—定义控制线程创建的附加标志。 lpThread—保存线程标志符 32位 退出线程函数 ExitThread 功能:该函数结束一个线程 格式:VOID ExitThread DWORD dwExitCode ; 参数说明: dwExitCode—调用线程的退出代码 创建互斥量函数 CreateMu

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档