任务间通信
被考次数: 1次
被考频率: 低频率
答错率:    55%
知识难度:
考试要求: 掌握     
知识路径:  > 嵌入式系统软件基础知识  > 嵌入式操作系统基础知识  > 处理器管理  > 任务间通信(共享内存、消息、邮箱、管道、信号等)


本知识点历年真题试卷分布
>> 试题列表    
 

 
       任务间通信是指任务之间为了协调工作,需要相互交换数据和控制信息。任务之间的通信可以分为两种类型:
       .低级通信:只能传递状态和整数值等控制信息。例如,用来实现任务间同步与互斥的信号量机制和信号机制都是一种低级通信方式。这种方式的优点是速度快。缺点是传送的信息量非常少,如果要传递较多信息,就得进行多次通信。
       .高级通信:能够传送任意数量的数据,主要包括三类:共享内存、消息传递和管道。
       共享内存
       共享内存指的是各个任务共享它们地址空间当中的某些部分,在此区域,可以任意读写和使用任意的数据结构,把它看成是一个通用的缓冲区。一组任务向共享内存中写入数据,另一组任务从中读出数据,通过这种方式来实现它们之间的信息交换。
       在有些嵌入式操作系统中,不区分系统空间和用户空间,整个系统只有一个地址空间,即物理内存空间,系统程序和各个任务都能直接对所有的内存单元进行随意地访问。在这种方式下,内存数据的共享就变得更加容易了,如下图所示。
       
       多个任务共享内存空间
       在使用共享内存来传送数据的时候,通常要与某种任务间互斥机制结合起来,以免发生竞争条件的现象,确保数据传送的顺利进行。
       消息传递
       消息是内存空间中一段长度可变的缓冲区,其长度和内容均由用户定义。从操作系统的角度来看,所有的消息都是单纯的字节流,既没有确切的格式,也没有特定的含义。对消息内容的解释是由应用来完成的,应用根据自定义的消息格式,将消息解释成特定的含义,如某种类型的数据、数据块的指针或空。
       消息传递指的是任务与任务之间通过发送和接收消息来交换信息。
       消息机制由操作系统来维护,包括定义寻址方式、认证协议、消息的数量等。一般提供两个基本的操作:send操作,用来发送一条消息;receive操作,用来接收一条消息。如果两个任务想要利用消息机制来进行通信,它们首先要在两者之间建立一个通信链路,然后就可以使用send和receive操作来发送和接受消息。
       任务之间的通信方式可以分为直接通信和间接通信两种。
       (1)直接通信。在直接通信方式下,通信双方必须明确知道与之通信的对象。采用类似下面的通信原语:
       .send(P,message):发送一条消息给任务P;
       .receive(Q,message):从任务Q那里接收一条消息。如果没有收到消息,可以阻塞起来等待消息的到来,也可以立即返回。
       在通信双方之间存在一条通信链路,该链路具有如下特征:
       .通信链路是自动建立的,由操作系统来维护;
       .每条链路只涉及一对相互通信的任务,每对任务之间仅存在一条链路;
       .通信链路可以是单向或双向的。
       (2)间接通信。在间接通信方式下,通信双方不需要指出消息的来源或去向,而是通过共享的邮箱(mailbox)来发送和接收消息,每个邮箱都有一个唯一的标识。采用类似下面的通信原语:
       .send(A,message):发送一条消息给邮箱A;
       .receive(A,message):从邮箱A接收一条消息。
       间接通信的特点:
       .对于一对任务,只有当它们共享一个公共邮箱时才能进行通信;
       .一个邮箱可以被多个任务访问,每对任务也可以使用多个邮箱来通信;
       .通信可以是单向或双向的。
       邮箱只能存放单条消息,它提供了一种低开销的消息传递机制,其状态只有两种:空或满。另外一种间接通信机制是消息队列。它与邮箱是类似的,但可以同时存放若干条消息,提供了一种任务间缓冲通信的方法。如下图所示,发送消息的任务将消息放入队列,而接收消息的任务则将消息从队列中取出。
       
       消息队列示意图
       管道
       管道通信由UNIX首创,由于其有效性,后来的一些系统相继引入了管道技术。管道通信以文件系统为基础,所谓管道即连接两个任务之间的一个打开的共享文件,专用于任务之间的数据通信。发送任务从管道的一端写入数据流,接收任务从管道的另一端按先进先出的顺序读出数据流。管道的读写操作即为普通的文件读写操作,数据流的长度和格式没有限制。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有