1.MPCI层中定义了许多对通讯信息包处理的函数的接口,是为了保证无论在网络通讯方式还是共享内存方式的情况下,都能向上层提供统一的接口
吗?
2.看到RTEMS的文档里在这一节提到了对"全局对象"的访问。我理解为,虽然有多种全局对象,如semaphore、partition等等,
但整体抽象出来都是不同节点间通信的问题,是否可以最终理解为是对节点间通信包的处理,即收包和发包?
3.对于松耦合结构中,不同节点间可以采用网络的方式进行通讯。在这种情况下,MPCI层实现的通讯功能是否等同于RTEMS中已有的
Network功能?因为感觉两者都是在进行节点间网络的通信,都是同样的发包收包的过程。
在网络通讯的情况下,MPCI层的功能和Network功能区别在哪里,应用场景有什么区别?这个地方我纠结了一个下午还是没能弄的很清晰。
RTEMS中的MPSL是一种基于共享内存或采用消息传递的通信方式的结构。它是一个层次化的结构,由MPCI(MultiProcessor
Communication Interface)接口层、共享内存和消息传递实现层与硬件相关实现层3部分组成。MPCI接口层为上层应用服务组件提
供一套基于包的消息传递接口,而具体实现上可以选择基于共享内存或基于消息传递等两种方式。但是在紧耦合系统中,各个处理器使用共享内存进行通信,在这
种系统中,MPCI将通信报文放在共享内存中就可以实现处理器期间的通信。松耦合系统中,各个处理器可以使用除共享存储区以外的手段进行通信,譬如消息
传递。在混合耦合系统中,处理器节点可以同时使用共享内存和通信链接进行通信,但是一个计算机结点有可能不能同时使用两种手段通信。
RTEMS 系统中一个处理器子系统被称为一个系统结点。每个结点将会由应用设计者分配一个唯一的结点编号。一般来说RTEMS结点的编号是从1开始的
连续整数。结点编号、结点和最大结点数目maximum_nodes都在多处理器结点配置表中定义。maximum_nodes的数值以及全局对象数目
maximum_global_objects都应该根据系统需要尽可能的小。多个处理器上的任务分派是由程序员在系统设计时确定的。目前系统还不支持
任务在多个处理器上的动态分配。
RTEMS在多处理器的应用中将对象区分为本地对象和全局对象。对本地对象的访问与单处理器情况下相同,直接调用本地内核层提供的功能完成操作;而全局
对象的设置是为多处理器间通信服务的,对全局对象的访问则会调用多处理器支持层的接口完成远程任务之间的交互。
MPSL使应用软件对系统结构的逻辑视图是统一、透明的,允许运行在不同处理器上的任务之间使用信号量、消息队列、内存块等与单处理器兼容的调用接口进
行同步、互斥操作和数据交换。这种透明设计便于开发者的使用,增强了应用的可移植性,降低了多处理器上应用开发的复杂性。但是相对于操作本地对象,操作
远程对象的过程相对复杂一些,需要向远程发送请求,等待回应,唤醒远程结点的通信服务器线程,让其进入等待队列。因此这类操作的开销相对大一些,如果过
于频繁地进行此类操作的话,系统性能就会明显下降。
> 1.MPCI层中定义了许多对通讯信息包处理的函数的接口,是为了保证无论在网络通讯方式还是共享内存方式的情况下,都能向上层提供统一的接口
> 吗?
可以这样理解。
> 2.看到RTEMS的文档里在这一节提到了对"全局对象"的访问。我理解为,虽然有多种全局对象,如semaphore、partition等等,
> 但整体抽象出来都是不同节点间通信的问题,是否可以最终理解为是对节点间通信包的处理,即收包和发包?
我觉得这样理解有点问题,我觉得这是不同的范畴,semaphore、partition等全局变量是操作系统的里面任务通讯的范畴,而
MPCI的收包以及发包,那是MPCI的自身的实现方式而已。不知道你的意思应该是想说:不同节点间通信的实现实际就是包的收发,也就是MPCI接口层
为上层应用服务组件提供一套基于包的消息传递接口。
> 3.对于松耦合结构中,不同节点间可以采用网络的方式进行通讯。在这种情况下,MPCI层实现的通讯功能是否等同于RTEMS中已有的
> Network功能?因为感觉两者都是在进行节点间网络的通信,都是同样的发包收包的过程。
> 在网络通讯的情况下,MPCI层的功能和Network功能区别在哪里,应用场景有什么区别?这个地方我纠结了一个下午还是没能弄的很清晰。
MPCI层的功能和Network功能,两者应该没有必然的联系的,两者的包没有什么关系。MPCI层只是MPSL的接口层而已,其实现上可以共享内存
方式或者消息通讯(网络来实现),要是需要网络来实现,那RTEMS是必须要实现网络功能的,那是前提。
看了你的三个问题,我觉得你混淆了接口及接口的实现上这两者。
由于不能贴图片,所以有些不好解释,希望对你有用啦。
On 9月7日, 上午9时46分, julyon <jul...@126.com> wrote:
> RTEMS目前支持的多处理器系统不但包括传统的紧耦合系统与松耦合系统,还对混合耦合系统、异构系统以及混合异构系统都提供了强而有力的支持。在
> RTEMS的多处理器系统中,应用软件开发者可以将包括任务、信号量、消息队列、事件、信号和内存块这样一些对象设计为全局对象。各个处理器节点上的任
> 务可以访问这些全局变量。RTEMS 自动判断被存取的对象处于本地结点上还是处于其他结点上。简单的说,RTEMS允许整个多处理器系统的软硬件在逻
> 辑上表现为一个系统。而这一切的实现主要是依靠在用户层和内核层之间的多处理器支持层(MultiProcessor Support Layer,
> MPSL)。
>
> RTEMS中的MPSL是一种基于共享内存或采用消息传递的通信方式的结构。它是一个层次化的结构,由MPCI(MultiProcessor
> Communication Interface)接口层、共享内存和消息传递实现层与硬件相关实现层3部分组成。MPCI接口层为上层应用服务组件提
> 供一套基于包的消息传递接口,而具体实现上可以选择基于共享内存或基于消息传递等两种方式。但是在紧耦合系统中,各个处理器使用共享内存进行通信,在这
> 种系统中,MPCI将通信报文放在共享内存中就可以实现处理器期间的通信。松耦合系统中,各个处理器可以使用除共享存储区以外的手段进行通信,譬如消息
> 传递。在混合耦合系统中,处理器节点可以同时使用共享内存和通信链接进行通信,但是一个计算机结点有可能不能同时使用两种手段通信。
> RTEMS 系统中一个处理器子系统被称为一个系统结点。每个结点将会由应用设计者分配一个唯一的结点编号。一般来说RTEMS结点的编号是从1开始的
> 连续整数。结点编号、结点和最大结点数目maximum_nodes都在多处理器结点配置表中定义。maximum_nodes的数值以及全局对象数目
> maximum_global_objects都应该根据系统需要尽可能的小。多个处理器上的任务分派是由程序员在系统设计时确定的。目前系统还不支持
> 任务在多个处理器上的动态分配。
> RTEMS在多处理器的应用中将对象区分为本地对象和全局对象。对本地对象的访问与单处理器情况下相同,直接调用本地内核层提供的功能完成操作;而全局
> 对象的设置是为多处理器间通信服务的,对全局对象的访问则会调用多处理器支持层的接口完成远程任务之间的交互。
>
> MPSL使应用软件对系统结构的逻辑视图是统一、透明的,允许运行在不同处理器上的任务之间使用信号量、消息队列、内存块等与单处理器兼容的调用接口进
> 行同步、互斥操作和数据交换。这种透明设计便于开发者的使用,增强了应用的可移植性,降低了多处理器上应用开发的复杂性。但是相对于操作本地对象,操作
> 远程对象的过程相对复杂一些,需要向远程发送请求,等待回应,唤醒远程结点的通信服务器线程,让其进入等待队列。因此这类操作的开销相对大一些,如果过
> 于频繁地进行此类操作的话,系统性能就会明显下降。
>
这些资料我已经看过了,只是有些地方看的不太明白,所以还需要多复习几遍,谢谢你提供资料给我。
> > 1.MPCI层中定义了许多对通讯信息包处理的函数的接口,是为了保证无论在网络通讯方式还是共享内存方式的情况下,都能向上层提供统一的接口
> > 吗?
>
> 可以这样理解。
>
> > 2.看到RTEMS的文档里在这一节提到了对"全局对象"的访问。我理解为,虽然有多种全局对象,如semaphore、partition等等,
> > 但整体抽象出来都是不同节点间通信的问题,是否可以最终理解为是对节点间通信包的处理,即收包和发包?
>
> 我觉得这样理解有点问题,我觉得这是不同的范畴,semaphore、partition等全局变量是操作系统的里面任务通讯的范畴,而
> MPCI的收包以及发包,那是MPCI的自身的实现方式而已。不知道你的意思应该是想说:不同节点间通信的实现实际就是包的收发,也就是MPCI接口层
> 为上层应用服务组件提供一套基于包的消息传递接口。
我想表达的就是这个意思。
>
> > 3.对于松耦合结构中,不同节点间可以采用网络的方式进行通讯。在这种情况下,MPCI层实现的通讯功能是否等同于RTEMS中已有的
> > Network功能?因为感觉两者都是在进行节点间网络的通信,都是同样的发包收包的过程。
> > 在网络通讯的情况下,MPCI层的功能和Network功能区别在哪里,应用场景有什么区别?这个地方我纠结了一个下午还是没能弄的很清晰。
>
> MPCI层的功能和Network功能,两者应该没有必然的联系的,两者的包没有什么关系。MPCI层只是MPSL的接口层而已,其实现上可以共享内存
> 方式或者消息通讯(网络来实现),要是需要网络来实现,那RTEMS是必须要实现网络功能的,那是前提。
>
我现在就是想实现一个简单的松耦合结构的MPCI层,使不同节点间能够以消息通讯的方式进行通讯就可以了,但确实是一直纠结于接口和接口的实现
上,举个例子,看是否能够这样去理解。
我在实现void _MPCI_Send_response_packet的时候,接口必然是不变的,在实现接口的方法上,采用Network里面
的包的发送函数,这样理解对吗?
> 看了你的三个问题,我觉得你混淆了接口及接口的实现上这两者。
最近一直在看代码,头有点晕了,呵呵
> 由于不能贴图片,所以有些不好解释,希望对你有用啦。
你觉得方便的话,可以直接往我邮箱里面发图片,没问题的。当然有已经实现的demo是最好了,不过一般要源码的人都会被BS成偷懒的人,呵呵。十分感
谢你的回帖,谢谢了。
http://groups.google.com/group/rtems-chinese-user-group/web?hl=zh-CN
这样就可以制作完整的html页面了。
或者做成doc/pdf 然后再文件区上传。
On 9月7日, 上午9时46分, julyon <jul...@126.com> wrote: