实时操作系统同步-互斥和通信.ppt

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

嵌入式实时操作系统 及应用开发;主要内容; 并发的进程之间的协作包括如下类型: 进程互斥 多个进程不能同时使用同一个资源,某个进程使用该资源时,其他进程必须等待。保证各个进程不同时进入临界区,有效访问临界资源。 进程同步 多个进程的调用存在时序关系,某些进程的执行必须先于另一些进程。保证进程运行的合理顺。 进程通信 多个进程之间传递消息。 互斥和同步是进程并发的两个要素; ISR x;进程互斥与同步;考虑一个支持单用户单处理器、多道程序设计系统 将其当作一个共享过程,载入到所有应用程序公用的全局存储区中。这样每个应用程序都能使用这个过程,由于每个应用程序只需使用echo过程的一个副本,从而节省空间 进程间共享主存是非常有用的,它允许进程间有效而紧密的交互,有利于进程的相互通信。但是,共享??可能会带来一些问题; getchar();P1;在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包括: 信号量(semaphore),用于互斥与同步 事件(组)(event group),用于同步 异步信号(asynchronous signal),用于同步 邮箱(mailbox)、消息队列(message queue),用于消息通信 管道(pipe),提供非结构化数据交换和实现同步 ;忙等待模型 持续检查一个变量,直到它可用为止 睡眠-唤醒模型 通过PV原语操作保证进程间的互斥 消息传递模型 通过消息传送系统实现多进程之间的互斥;第一节 信号量;临界资源和临界区;进程P1和P2共享同一打印机资源,其操作流程如下: p1: entry code?使用打印机?exit code p2: entry code?使用打印机?exit code 系统打印机即为——临界资源 P1和p2的访问临界资源打印机的代码即为——临界区;;临界区的进入准则 空闲让进:临界资源空闲时,允许进程进入临界区 忙着等待:临界资源正在被访问时,其他需要进入临界区的进程必须等待 有限等待:保证进程在有效的时间内进入临界区,避免“死等” 让权等待:当进程不能进入临界区时,应立即释放处理机,以免其它进程“忙等”;进程互斥进入临界区的实现方法 硬件方法 禁止中断 在进程进入临界区之后,禁止该进程中断 专用机器指令 TS指令,Swap指令 软件方法 信号量和PV操作 ;信号量是一个数据结构,其定义如下: struct semaphore { int value; struct PCB * queue; } 信号量semaphore包括一个整型值和一个等待队列。信号量只能通过P原语和V原语访问。;什么是信号量;P 原语—— P(S) S := S - 1; 如果 S =0,则表示有资源,该进程继续执行; 如果 S 0,则表示已无资源,执行原语的进程被置成阻塞状态,并使其在 S 信号量的队列中等待,直至其他进程在 S 上执行 V 操作释放它为止 ;P原语;P原语操作原型 void wait (semaphore s) // { s.value = s.value – 1; if (s.value 0) block(s.queue);//阻塞进程 };V 原语—— V(S) S := S + 1 如果 S 0,则该进程继续执行 如果 S =0,说明有进程被挂起,则唤醒一阻塞进程,即从S信号量的等待队列首摘下一个PCB,将其置为就绪状态,执行 V(S) 者继续执行 P操作可能会引起进程的阻塞,V操作不会引起本身进程状态的变化,但可能唤醒其他进程,使其从阻塞状态转变到就绪状态;V原语;V原语操作原型 void signal (semaphore s) { s.value = s.value + 1; if (s.value =0) wakup(s.queue);//唤醒进程 };P原语的作用 申请临界资源,如果该资源正被其他进程使用,则等待。 V原语的作用 释放临界资源,如有其他进程等待该资源,则唤醒。 使用PV原语可以解决进程的互斥和同步;;哲学家就餐问题; ; ;为克服死锁危险,可以再另买5跟筷子 (一个更卫生的解决方案) 或者教会哲学家仅用一跟筷子吃面 另一种方法是,考虑增加一位服务员,他只允许4位哲学家同时坐上餐桌吃

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档