第六章 进程间互斥、同步与通信.pptVIP

  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文档。上传文档
查看更多
第六章 进程间互斥、同步与通信 授课教师:付勇智 fuyongzhi@swfc.edu.cn 西南林学院 基础部数理教研室 问题纲要 间接制约和直接制约是什么? 什么是临界区? 什么是信号量? 什么是同步、互斥? 如何应用信号量实现同步和互斥? 信号量在Windows编程中是如何实现的? 进程并发运行所带来的问题 由于系统资源的共享性,并发进程的执行结果失去了封闭性和可再现性。 满足Bernstein条件的并发进程能够保持封闭性,但是Bernstein条件限制太过严格,不符合大多数实际环境的需要。 因而,OS需要寻求一种机制,满足进程间共享资源的需要。 进程间通信IPC 在两个或多个进程间传递信息或共享数据的机制,称之为进程间通信(Inter-Process Communication) UNIX操作系统中的管道技术(Pipe)就是一种IPC 在IPC的过程中,主要要解决两类问题:互斥和同步 互斥的需要 临界区(Critical Section) 临界资源:一次仅允许一个进程使用的资源称为临界资源。 临界区:进程中对于临界资源访问的程序段称为临界区。 间接制约:由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的现象,称为由共享公有资源造成的并发进程执行速度的间接制约,简称间接制约。 互斥(Mutual Exclusion) 互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致他们不能同时进入临界区称为互斥。 互斥方案应满足的4个条件 任何两个进程不能同时处于临界区 不应对CPU的数目和速度做任何假设 临界区外的进程不得阻塞其他进程 不得使进程在临界区外无休止地等待 互斥的实现方案 关中断 锁变量 严格轮换法 Peterson方案 TSL硬件指令(Intel平台为BTS指令) 信号量 管程 消息传递 关中断 处理机的调度都是由中断所引起的(主要是定时器中断) 如果进入临界区前将所有外部中断屏蔽,则在运行临界区时将不会响应所有外部中断事件,也就不可能发生进程切换,待进程执行完临界区后再开中断。 缺点:交由用户进程管理中断的开关是非常不安全的,一旦用户程序关中断后忘记打开,则整个系统将无法响应外部事件而崩溃;另外,在多处理器系统中,关中断也仅屏蔽本处理器的中断响应,对其他处理器中运行的进程无法屏蔽。 因而通常中断屏蔽都由OS进行管理,由OS使用它来保证一些核心操作的不可中断性。 锁变量 int lock=0; //初始情况下没有进程进入临界区 Processi() { while (lock==1) ; //当其他进程在临界区工作时,忙等待 lock=1; //设置锁变量,防止其他进程进入 critical_section(); //进行临界区相关操作 lock=0; //退出临界区后解锁,使其他进程可以进入 non_critical_section(); } 严格轮转法 Peterson方案 TSL指令(测试与设置指令) 信号量(semaphore) 信号量使E.W.Dijkstra在1965年提出的一种方法,他建议引入一个新的变量类型,称作信号量。信号量是一个整数,其值可以为0或某个正整数,分别表示不可进入临界区以及能够进入的进程数目。 信号量:是一个仅能由同步原语对其进行操作的整型变量。 原语(原子操作):操作过程不可中断,必须以一个整体进行执行地系统基本操作 对于信号量操作的原语只有两个:UP和DOWN DOWN原语(P操作) (1)若信号量S大于0,则将S减1,P操作返回,该进程继续执行 (2)若信号量S等于0,则将进程挂入S的等待队列,将进程设置为阻塞状态,并转调度程序 UP原语(V操作) (1)若信号量S的等待队列中有等待进程,则取队首进程,将其置为就绪状态并返回。 (2)否则信号量S加1,并放回 生产者-消费者问题 问题描述:两个进程共享一个公共的固定大小的缓冲区。其中的一个,生产者,将信息放入缓冲区;另一个,消费者,从缓冲区中取出信息。 当缓冲区已满,而此时生产者还想向其中放入一个新的信息则让生产者睡眠,待消费者从缓冲区取走一个或多个信息时再唤醒它。 当消费者试图从缓冲区中取信息而发现缓冲区为空时,它就睡眠,直到生产者向其中放入一些消息再将其唤醒。 生产者过程 消费者过程 直接制约与同步 一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发进程间的直接制约。 异步环境下的一组并发进程,因直接制约而互相发送消息而进行相互合作、相互等待,使得各进程按一定的速度执行的过程称为进程间的同步。 生产者-消费者问题信号量定义 #define N 100 semaphore mutex=1; //互斥信号量 semaphore empty

文档评论(0)

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

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

1亿VIP精品文档

相关文档