完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
嵌入式系统设计师学习笔记十五:进程管理⑥
任务间的通信 任务之间为了协调工作,需要相互交换数据和控制信息。 任务之间的通信可以分为两种类型: ①低级通信:只能传递状态和整数值等控制信息,例如信号量机制,异步信号机制等 ②高级通信:能够传输任意数量的数据,主要有三类:共享内存、消息传递和管道。 共享内存: 各个任务共享其地址空间中的某些部分,在此区域,可以任意读写和使用任意的数据结构,把它看成一个通用的缓冲区。 使用共享内存来传送数据时,通常需和任务间的互斥机制结合起来,以免产生竞争条件,确保数据顺利传送。 消息传递: 消息:内存空间中一段长度可变的缓冲区,其长度和内容均可以由用户定义,其内容可以是实际的数据、数据块的指针或空。 对消息内容的解释由应用程序完成。 ①从操作系统观点看,消息没有定义的格式,所有的消息都是字节流,没有特定的含义。 ②从应用观点看,根据应用定义的消息格式,消息被解释成特定的含义。 应用可以只把消息当成一个标志,这时消息机制用于实现同步。 消息传递: 任务与任务之间通过发送和接收信息来交换信息。 消息机制由操作系统来维护,包括定义寻址方式、认证协议、消息的数量等。 一般提供2个基本操作:任务间的通信方式: 直接通信:在通讯过程中双方必须明确地知道(命名)彼此: Send(P,message) —— 发送一个消息到任务P Receive(Q,message)—— 从任务Q接收一个消息 间接通信:通信双方不需要指出消息的来源或去向,而通过中间机制来通信。 如: send(A,message)—— 发送一个消息给邮箱A receive(A,message)—— 从邮箱A接收一个消息 一些操作系统内核把消息进一步分为:邮箱和消息队列。 邮箱仅能存放单条消息,它提供了一种低开销的机制来传送信息。每个邮箱可以保存一条大小为若干字节的消息。 消息队列可存放若干消息,提供了一种任务间缓冲通信的方法,间接通信方式。 消息队列状态图: 管道(pipe) 管道是提供非结构化数据交换和实现任务间同步的内核对象。在传统的实现中,管道是单向数据交换设施。 ①数据在管道内像一个非结构字节流,按FIFO的次序从管道中读出。 ②当管道空时,阻塞读者,当管道满时,阻塞写者。 管道允许有多个读者和写者。 管道的状态图: 管道与消息队列的区别: ①管道不存储多个消息,它存储的数据时非结构化的字节流; ②管道中的数据严格地遵循先进先出的顺序; ③管道支持选择(select)操作,而消息队列不支持。 |
|
|
|
嵌入式系统设计师学习笔记十五:进程管理⑥
任务间的通信 任务之间为了协调工作,需要相互交换数据和控制信息。 任务之间的通信可以分为两种类型: ①低级通信:只能传递状态和整数值等控制信息,例如信号量机制,异步信号机制等 ②高级通信:能够传输任意数量的数据,主要有三类:共享内存、消息传递和管道。 共享内存: 各个任务共享其地址空间中的某些部分,在此区域,可以任意读写和使用任意的数据结构,把它看成一个通用的缓冲区。 使用共享内存来传送数据时,通常需和任务间的互斥机制结合起来,以免产生竞争条件,确保数据顺利传送。 消息传递: 消息:内存空间中一段长度可变的缓冲区,其长度和内容均可以由用户定义,其内容可以是实际的数据、数据块的指针或空。 对消息内容的解释由应用程序完成。 ①从操作系统观点看,消息没有定义的格式,所有的消息都是字节流,没有特定的含义。 ②从应用观点看,根据应用定义的消息格式,消息被解释成特定的含义。 应用可以只把消息当成一个标志,这时消息机制用于实现同步。 消息传递: 任务与任务之间通过发送和接收信息来交换信息。 消息机制由操作系统来维护,包括定义寻址方式、认证协议、消息的数量等。 一般提供2个基本操作:任务间的通信方式: 直接通信:在通讯过程中双方必须明确地知道(命名)彼此: Send(P,message) —— 发送一个消息到任务P Receive(Q,message)—— 从任务Q接收一个消息 间接通信:通信双方不需要指出消息的来源或去向,而通过中间机制来通信。 如: send(A,message)—— 发送一个消息给邮箱A receive(A,message)—— 从邮箱A接收一个消息 一些操作系统内核把消息进一步分为:邮箱和消息队列。 邮箱仅能存放单条消息,它提供了一种低开销的机制来传送信息。每个邮箱可以保存一条大小为若干字节的消息。 消息队列可存放若干消息,提供了一种任务间缓冲通信的方法,间接通信方式。 消息队列状态图: 管道(pipe) 管道是提供非结构化数据交换和实现任务间同步的内核对象。在传统的实现中,管道是单向数据交换设施。 ①数据在管道内像一个非结构字节流,按FIFO的次序从管道中读出。 ②当管道空时,阻塞读者,当管道满时,阻塞写者。 管道允许有多个读者和写者。 管道的状态图: 管道与消息队列的区别: ①管道不存储多个消息,它存储的数据时非结构化的字节流; ②管道中的数据严格地遵循先进先出的顺序; ③管道支持选择(select)操作,而消息队列不支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
778 浏览 0 评论
1149 浏览 1 评论
2527 浏览 5 评论
2859 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1066浏览 3评论
190浏览 2评论
453浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 12:46 , Processed in 1.253800 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号