管程机制的编程实现一.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
管程机制的编程实现一

二、管程机制解决互斥与同步问题 管程的定义 管程的定义: 一组数据结构和数据结构上的一组相关操作被称为管程。 管程(monitor):新的同步机制 用管程解决同步问题比用信号量解决同步问题更加简单。 管程机制作为同步工具,便于在高级语言编程中实现。 管程的组成 管程由4部分组成: 管程的名称 局部于管程内部的共享数据结构说明 对该数据结构进行操作的一组过程 对局部于管程内部的共享数据设置初始的语句 管程的结构 管程只有一个入口和一个出口 并发进程在管程外等待调用管程中的过程 如果进程在管程中不能访问临界资源,则在管程中阻塞 等待访问完临界资源的进程将其唤醒 利用管程实现进程同步的工具 在通过管程实现进程同步时,必须设置同步工具。 1.wait 2.Signal 3.condition 条件变量也是一种抽象的数据结构类型,对条件变量的操作仅仅是wait和Signal。一个进程被阻塞或挂起的原因可能有多个,因此在管程中可以设置多个条件变量,形式为: Var x, y:condition 对条件变量的操作: x.wait x.signal 条件变量 条件变量是利用线程间共享的全局变量进行同步 的一种机制,主要包括两个动作:一个线程等待条件 变量的条件成立而挂起;另一个线程使条件成立 (给出条件成立信号)。为了防止竞争,条件变量的 使用总是和一个互斥锁结合在一起。 管程的关键的要素是: 1. 一个互斥量,让所有的线程互斥地访问管程保护的变量 2. 若干个条件变量,表示相应的条件,可用于阻塞线程 实验内容 题目1:用管程机制实现读者-写者问题(写者优先)程序。 题目2:用管程机制实现读者-写者问题,读者最大数目 限制为20(读者优先/写者优先均可)。 题目3:用管程机制量实现哲学家进餐问题,要求解决死锁问题。 题目4:江安北和江安南有一座小桥,小桥中间宽两边窄,中间每次最多允许两人通过,两边每次最多允许一人通过,使用管程机制实现过此桥的程序。 创建线程函数 pthread_create 功能:类Unix操作系统(Unix、Linux、Mac OS X等) 的创建线程的函数。 格式:int pthread_create(pthread_t *tidp,    pthread_attr *attr,    void *(*start_trn)(void *),    void *arg); 参数说明: tidp——指向线程标识符的指针。 attr——设置线程属性。 start_trn——线程运行函数的起始地址。 arg——运行函数的参数。 返回值:若线程创建成功,则返回0。若线程创建失败, 则返回出错编号。 召回线程函数 pthread_join 功能:等待一个线程的结束。 格式: int pthread_join(pthread_t thread, void **retval); 参数说明: thread——线程标识符,即线程ID。 retval——用户定义的指针,用来存储被等待线程的返回值。 返回值:0代表成功。 失败,返回的则是错误号。 说明:pthread_join()函数,以阻塞的方式等待thread指定的 线程结束。当函数返回时,被等待线程的资源被收回。 如果进程已经结束,那么该函数会立即返回。 锁定互斥量函数 pthread_mutex_lock 功能:给互斥量加锁。 格式: int pthread_mutex_lock(pthread_mutex_t *mutex); 参数说明: mutex——互斥信号量指针。 返回值:在成功完成之后会返回零。其他任何返回值都表示 出现了错误。 说明:当pthread_mutex_lock()返回时,该互斥锁已被锁定。 线程调用该函数让互斥锁上锁,如果该互斥锁已被另一个线程 锁定和拥有,则调用该线程将阻塞,直到该互斥锁变为可用为 止。类似于我们的P操作。 互斥与同步 操作系统实验2 赵静:1215052241@ 内容 一、信号量机制解决互斥与同步问题 实验:P/V信号量的编程实现 二、管程机制解决互斥与同步问题 实验:管程机制的编程实现 一、信号量机制解决互斥与同步问题 信号量机制 信号量(semaphore)机制 解决并发进程同步的工具 P操作表示同步进程发出的检测信号量操作,检测是否能够使用临界资源 V操作表示访问完临界资源的进程通知等待进程已经完成了临界资源的访问,将临界资源释放。 经典互斥与同步问题回顾 生产者-消费者问题 读者-写者问题 哲学家进餐问题 生产者-消费者问题 生产者P:

文档评论(0)

wangyueyue + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档