实时操作系统应用技术 课件 RTOS-第04章-同步与通信.pptx

实时操作系统应用技术 课件 RTOS-第04章-同步与通信.pptx

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

RTOS本章导引:在RTOS中,每个线程作为独立的个体,接受内核调度器的调度运行。但是,线程之间不是完全不联系的,其联系的方式就是同步与通信。只有掌握同步与通信的编程方法,才能编写出较为完整的程序,RTOS中主要的同步与通信手段有事件与消息队列,它们是RTOS提供给应用编程的重要工具,这个内容是RTOS下进行应用程序开发需要重点掌握的内容之一。在多线程的工程中,还会涉及到对共享资源的排他使用问题,RTOS提供了信号量与互斥量来协调多线程下的共享资源的排他使用,它们也同步与通信范畴。本章给出事件、消息队列、信号量及互斥量的含义、应用场合、操作函数以及编程举例,第9章再简明剖析其运行机制第4章同步与通信

4.1RTOS中同步与通信基本概念RTOS4.2事件4.3消息队列4.4信号量4.5互斥量第4章同步与通信的应用方法4.6本章小结第1页共45页

RTOS4.1RTOS中同步与通信基本概念在百米比赛起点,运动员正在等待发令枪响,一旦发令枪响,运动员立即起跑,这就是一种同步。当一个人采摘苹果放入篮子中,另外一个人只要见到篮子中有苹果,就取出加工,这也是一种同步。RTOS中也有类似的机制应用于线程之间,或者中断服务例程与线程之间。第2页共45页

RTOS4.1.1同步的含义与通信手段同步:为了实现各线程之间的合作和无冲突的运行,一个线程的运行过程就需要和其他线程进行配合,线程之间的配合过程称为同步。线程间的同步过程通常是由某种条件来触发的,所以同步也称为条件同步。通信手段:为了实现线程之间的同步,RTOS提供了灵活多样的通信手段,如事件、消息队列、信号量、互斥量等等,它们适合不同的场合。第3页共45页

RTOS1.从是否需要通信数据的角度看1)如果只发同步信号,不需要数据,可使用事件、信号量、互斥量。同步信号为多个信号的逻辑运算结果时,一般使用事件作为同步手段。2)如果既有同步功能,又能传输数据,可使用消息队列。2.从产生与使用数据速度的角度看若产生数据的速度快于处理速度,就会有未处理的数据堆积,这种情况下只能使用有缓冲功能的通信手段,如消息队列。但是,产生数据的速度总平均应该慢于处理速度,否则消息队列会溢出。第4页共45页

RTOS4.1.2同步类型(难点)在RTOS中,有中断与线程之间的同步、两个线程之间的同步、两个以上线程同步一个线程、多个线程相互同步等同步类型。1.中断和线程之间的同步一般是中断服务例程发出同步信号,处于阻塞状态的线程等着这个信号。一旦这个信号发出,处于阻塞状态的线程就会从阻塞状态变为就绪状态,接受RTOS内核的调度。2.两个线程之间的同步两个线程之间的同步分为单向同步(用得多)和双向同步(实现产销平衡)。第5页共45页

RTOS3.两个以上线程同步+一个线程(了解)当需要由两个以上线程来同步一个线程时,简单的通信方式难以实现,可采用事件按“逻辑与”来实现,此时被同步线程的执行次数不超过各个同步线程中发出信号最少的线程的执行次数。4.多个线程相互同步(了解)多个线程相互同步可以将若干相关线程的运行频度保持一致,每个相关线程在运行到同步点时都必须等待其他线程,只有全部相关线程都到达同步点,才可以按优先级顺序依次离开同步点,从而达到相关线程的运行频度保持一致的目的。第6页共45页

RTOS4.2.1事件的含义及应用场合4.2事件事件:当某个线程需要等待另一线程(或中断)的信号才能继续工作,这个信号被称为事件。若需要将两个及两个以上的信号进行某种逻辑运算,用逻辑运算的结果作为同步控制信号时,也是事件。应用场合:事件可以实现一个线程(或中断服务例程)控制另一个线程,多个信号也可以进行逻辑运算后形成一个事件。事件发出后,等待事件的线程将从阻塞状态变为就绪状态。第7页共45页

RTOS4.2.2事件的常用函数1.创建事件函数(event_create)第8页共45页

RTOS2.获取事件函数event_recv()第9页共45页

RTOS3.发送事件函数event_send()第10页共45页

4.2.3事件编程举例:通过事件实现中断和线程通信1.事件样例程序的功能事件编程实例见“..\03-Software\CH04-Syn-Comm\Event-ISR”文件夹。该工程给出了利用事件进行中断与线程同步的实例,其功能为:1)用户串口中断为收到一个字节产生中断,在“isr.c”文件的中断服务例程UART_User_Handler中,进行接收组帧;2)当串口接收到一个完整的数据帧(帧头3A+四位数据+帧尾0D0A),发送一个事件(起名为

文档评论(0)

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

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

1亿VIP精品文档

相关文档